|
|
@@ -125,4 +125,73 @@ def gen_object_instance_node_group():
|
|
|
ng.links.new(input=ob_node.outputs["Geometry"], output=out.inputs["Object Instance"])
|
|
|
inp.location = (-200, 0)
|
|
|
out.location = ( 200, 0)
|
|
|
- return ng
|
|
|
+ return ng
|
|
|
+
|
|
|
+def gen_import_obj_node_group():
|
|
|
+ import bpy
|
|
|
+ from bpy import data, types
|
|
|
+ from math import pi as PI
|
|
|
+ tree=bpy.data.node_groups.new("Import OBJ","GeometryNodeTree")
|
|
|
+ tree.is_modifier=True
|
|
|
+ tree.interface.new_socket(name="Path",description="Path to a OBJ file",in_out="INPUT",socket_type="NodeSocketString")
|
|
|
+ tree.interface.new_socket(name="Geometry",description="",in_out="OUTPUT",socket_type="NodeSocketGeometry")
|
|
|
+ Group_Input = tree.nodes.new("NodeGroupInput")
|
|
|
+ Group_Output = tree.nodes.new("NodeGroupOutput")
|
|
|
+ Import_OBJ = tree.nodes.new("GeometryNodeImportOBJ")
|
|
|
+ Realize_Instances = tree.nodes.new("GeometryNodeRealizeInstances")
|
|
|
+ Rotate_Instances = tree.nodes.new("GeometryNodeRotateInstances")
|
|
|
+ Rotate_Instances.inputs[2].default_value=[PI/2,0.0, 0.0] # assume standard axes
|
|
|
+ tree.links.new(Group_Input.outputs[0],Import_OBJ.inputs[0])
|
|
|
+ tree.links.new(Rotate_Instances.outputs[0],Realize_Instances.inputs[0])
|
|
|
+ tree.links.new(Realize_Instances.outputs[0],Group_Output.inputs[0])
|
|
|
+ tree.links.new(Import_OBJ.outputs[0],Rotate_Instances.inputs[0])
|
|
|
+ try:
|
|
|
+ from .utilities import SugiyamaGraph
|
|
|
+ SugiyamaGraph(tree, 4)
|
|
|
+ except: # there should not ever be a user error if this fails
|
|
|
+ pass
|
|
|
+ return tree
|
|
|
+
|
|
|
+def gen_simple_flip_modifier():
|
|
|
+ import bpy
|
|
|
+ from bpy import data, types
|
|
|
+ tree=bpy.data.node_groups.new("Simple Flip","GeometryNodeTree")
|
|
|
+ tree.is_modifier=True
|
|
|
+ tree.interface.new_socket(name="Geometry",description="",in_out="OUTPUT",socket_type="NodeSocketGeometry")
|
|
|
+ tree.interface.new_socket(name="Geometry",description="",in_out="INPUT",socket_type="NodeSocketGeometry")
|
|
|
+ tree.interface.new_socket(name="Flip X",description="",in_out="INPUT",socket_type="NodeSocketBool")
|
|
|
+ tree.interface.new_socket(name="Flip Y",description="",in_out="INPUT",socket_type="NodeSocketBool")
|
|
|
+ tree.interface.new_socket(name="Flip Z",description="",in_out="INPUT",socket_type="NodeSocketBool")
|
|
|
+ Group_Input = tree.nodes.new("NodeGroupInput")
|
|
|
+ Group_Output = tree.nodes.new("NodeGroupOutput")
|
|
|
+ Set_Position = tree.nodes.new("GeometryNodeSetPosition")
|
|
|
+ Position = tree.nodes.new("GeometryNodeInputPosition")
|
|
|
+ Combine_XYZ = tree.nodes.new("ShaderNodeCombineXYZ")
|
|
|
+ Map_Range = tree.nodes.new("ShaderNodeMapRange")
|
|
|
+ Map_Range_001 = tree.nodes.new("ShaderNodeMapRange")
|
|
|
+ Map_Range_002 = tree.nodes.new("ShaderNodeMapRange")
|
|
|
+ Map_Range.inputs[3].default_value = 1.0
|
|
|
+ Map_Range_001.inputs[3].default_value = 1.0
|
|
|
+ Map_Range_002.inputs[3].default_value = 1.0
|
|
|
+ Map_Range.inputs[4].default_value = -1.0
|
|
|
+ Map_Range_001.inputs[4].default_value = -1.0
|
|
|
+ Map_Range_002.inputs[4].default_value = -1.0
|
|
|
+ Vector_Math = tree.nodes.new("ShaderNodeVectorMath")
|
|
|
+ Vector_Math.operation = "MULTIPLY"
|
|
|
+ tree.links.new(Set_Position.outputs[0],Group_Output.inputs[0])
|
|
|
+ tree.links.new(Group_Input.outputs[0],Set_Position.inputs[0])
|
|
|
+ tree.links.new(Group_Input.outputs[1],Map_Range.inputs[0])
|
|
|
+ tree.links.new(Map_Range.outputs[0],Combine_XYZ.inputs[0])
|
|
|
+ tree.links.new(Map_Range_001.outputs[0],Combine_XYZ.inputs[1])
|
|
|
+ tree.links.new(Map_Range_002.outputs[0],Combine_XYZ.inputs[2])
|
|
|
+ tree.links.new(Group_Input.outputs[2],Map_Range_001.inputs[0])
|
|
|
+ tree.links.new(Group_Input.outputs[3],Map_Range_002.inputs[0])
|
|
|
+ tree.links.new(Combine_XYZ.outputs[0],Vector_Math.inputs[1])
|
|
|
+ tree.links.new(Position.outputs[0],Vector_Math.inputs[0])
|
|
|
+ tree.links.new(Vector_Math.outputs[0],Set_Position.inputs[2])
|
|
|
+ try:
|
|
|
+ from .utilities import SugiyamaGraph
|
|
|
+ SugiyamaGraph(tree, 4)
|
|
|
+ except: # there should not ever be a user error if this fails
|
|
|
+ pass
|
|
|
+ return tree
|