diff options
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/startup/bl_operators/__init__.py | 2 | ||||
-rw-r--r-- | release/scripts/startup/bl_operators/geometry_nodes.py (renamed from release/scripts/startup/bl_operators/simulation.py) | 27 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_node.py | 11 | ||||
-rw-r--r-- | release/scripts/startup/nodeitems_builtins.py | 51 |
4 files changed, 65 insertions, 26 deletions
diff --git a/release/scripts/startup/bl_operators/__init__.py b/release/scripts/startup/bl_operators/__init__.py index eff88c835e7..71b2de41d9e 100644 --- a/release/scripts/startup/bl_operators/__init__.py +++ b/release/scripts/startup/bl_operators/__init__.py @@ -31,6 +31,7 @@ _modules = [ "console", "constraint", "file", + "geometry_nodes", "image", "mesh", "node", @@ -42,7 +43,6 @@ _modules = [ "rigidbody", "screen_play_rendered_anim", "sequencer", - "simulation", "userpref", "uvcalc_follow_active", "uvcalc_lightmap", diff --git a/release/scripts/startup/bl_operators/simulation.py b/release/scripts/startup/bl_operators/geometry_nodes.py index 0981baa5941..bd6ab36eafb 100644 --- a/release/scripts/startup/bl_operators/simulation.py +++ b/release/scripts/startup/bl_operators/geometry_nodes.py @@ -19,23 +19,34 @@ import bpy -class NewSimulation(bpy.types.Operator): - """Create a new simulation data block and edit it in the opened simulation editor""" +class NewGeometryNodeTree(bpy.types.Operator): + """Create a new geometry node tree""" - bl_idname = "simulation.new" - bl_label = "New Simulation" + bl_idname = "node.new_geometry_node_tree" + bl_label = "New Geometry Node Tree" bl_options = {'REGISTER', 'UNDO'} @classmethod def poll(cls, context): - return context.area.type == 'NODE_EDITOR' and context.space_data.tree_type == 'SimulationNodeTree' + return context.area.type == 'NODE_EDITOR' and context.space_data.tree_type == 'GeometryNodeTree' def execute(self, context): - simulation = bpy.data.simulations.new("Simulation") - context.space_data.simulation = simulation + group = bpy.data.node_groups.new("Geometry Node Group", 'GeometryNodeTree') + group.inputs.new('NodeSocketGeometry', "Geometry") + group.outputs.new('NodeSocketGeometry', "Geometry") + input_node = group.nodes.new('NodeGroupInput') + output_node = group.nodes.new('NodeGroupOutput') + output_node.is_active_output = True + + input_node.location.x = -200 - input_node.width + output_node.location.x = 200 + + group.links.new(output_node.inputs[0], input_node.outputs[0]) + + context.space_data.node_tree = group return {'FINISHED'} classes = ( - NewSimulation, + NewGeometryNodeTree, ) diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index c0c38c02c63..4cd38831cdf 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -151,13 +151,10 @@ class NODE_HT_header(Header): if snode_id: layout.prop(snode_id, "use_nodes") - elif snode.tree_type == 'SimulationNodeTree': - row = layout.row(align=True) - row.prop(snode, "simulation", text="") - row.operator("simulation.new", text="", icon='ADD') - simulation = snode.simulation - if simulation: - row.prop(snode.simulation, "use_fake_user", text="") + elif snode.tree_type == 'GeometryNodeTree': + NODE_MT_editor_menus.draw_collapsible(context, layout) + layout.separator_spacer() + layout.template_ID(snode, "node_tree", new="node.new_geometry_node_tree") else: # Custom node tree is edited as independent ID block diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index 8d2b6198fd5..67103489b39 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -58,11 +58,11 @@ class TextureNodeCategory(SortedNodeCategory): context.space_data.tree_type == 'TextureNodeTree') -class SimulationNodeCategory(SortedNodeCategory): +class GeometryNodeCategory(SortedNodeCategory): @classmethod def poll(cls, context): return (context.space_data.type == 'NODE_EDITOR' and - context.space_data.tree_type == 'SimulationNodeTree') + context.space_data.tree_type == 'GeometryNodeTree') # menu entry for node group tools @@ -77,11 +77,11 @@ node_tree_group_type = { 'CompositorNodeTree': 'CompositorNodeGroup', 'ShaderNodeTree': 'ShaderNodeGroup', 'TextureNodeTree': 'TextureNodeGroup', - 'SimulationNodeTree': 'SimulationNodeGroup', + 'GeometryNodeTree': 'GeometryNodeGroup', } -# generic node group items generator for shader, compositor, simulation and texture node groups +# generic node group items generator for shader, compositor, geometry and texture node groups def node_group_items(context): if context is None: return @@ -483,10 +483,41 @@ def not_implemented_node(idname): return NodeItem(idname, label=label) -simulation_node_categories = [ - # Simulation Nodes - SimulationNodeCategory("SIM_GROUP", "Group", items=node_group_items), - SimulationNodeCategory("SIM_LAYOUT", "Layout", items=[ +geometry_node_categories = [ + # Geometry Nodes + GeometryNodeCategory("GEO_INPUT", "Input", items=[ + NodeItem("GeometryNodeObjectInfo"), + ]), + GeometryNodeCategory("GEO_MESH", "Mesh", items=[ + NodeItem("GeometryNodeTriangulate"), + NodeItem("GeometryNodeEdgeSplit"), + NodeItem("GeometryNodeTransform"), + NodeItem("GeometryNodeBoolean"), + NodeItem("GeometryNodeSubdivisionSurface"), + ]), + GeometryNodeCategory("GEO_SCATTERING", "Scattering", items=[ + NodeItem("GeometryNodePointDistribute"), + NodeItem("GeometryNodePointInstance"), + ]), + GeometryNodeCategory("GEO_MATH", "Misc", items=[ + NodeItem("ShaderNodeMapRange"), + NodeItem("ShaderNodeClamp"), + NodeItem("ShaderNodeMath"), + NodeItem("ShaderNodeValToRGB"), + NodeItem("ShaderNodeVectorMath"), + NodeItem("ShaderNodeSeparateRGB"), + NodeItem("ShaderNodeCombineRGB"), + NodeItem("ShaderNodeSeparateXYZ"), + NodeItem("ShaderNodeCombineXYZ"), + NodeItem("FunctionNodeBooleanMath"), + NodeItem("FunctionNodeFloatCompare"), + NodeItem("FunctionNodeCombineStrings"), + NodeItem("FunctionNodeRandomFloat"), + NodeItem("ShaderNodeValue"), + NodeItem("FunctionNodeGroupInstanceID"), + ]), + GeometryNodeCategory("GEO_GROUP", "Group", items=node_group_items), + GeometryNodeCategory("GEO_LAYOUT", "Layout", items=[ NodeItem("NodeFrame"), NodeItem("NodeReroute"), ]), @@ -497,14 +528,14 @@ def register(): nodeitems_utils.register_node_categories('SHADER', shader_node_categories) nodeitems_utils.register_node_categories('COMPOSITING', compositor_node_categories) nodeitems_utils.register_node_categories('TEXTURE', texture_node_categories) - nodeitems_utils.register_node_categories('SIMULATION', simulation_node_categories) + nodeitems_utils.register_node_categories('GEOMETRY', geometry_node_categories) def unregister(): nodeitems_utils.unregister_node_categories('SHADER') nodeitems_utils.unregister_node_categories('COMPOSITING') nodeitems_utils.unregister_node_categories('TEXTURE') - nodeitems_utils.unregister_node_categories('SIMULATION') + nodeitems_utils.unregister_node_categories('GEOMETRY') if __name__ == "__main__": |