From ab694440155075f4ddc2b31e9aac37926cf0ea79 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 23 Dec 2022 22:31:34 -0600 Subject: [PATCH 001/286] feat: initial material->python setup --- material_to_python.py | 185 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 material_to_python.py diff --git a/material_to_python.py b/material_to_python.py new file mode 100644 index 0000000..7522587 --- /dev/null +++ b/material_to_python.py @@ -0,0 +1,185 @@ +import bpy +import os + +#node input sockets that are messy to set default values for +dont_set_defaults = {'NodeSocketCollection', + 'NodeSocketGeometry', + 'NodeSocketImage', + 'NodeSocketMaterial', + 'NodeSocketObject', + 'NodeSocketTexture', + 'NodeSocketVirtual'} + +def execute(self, material_name): + #validate material name + if material_name not in bpy.data.materials: + return {'FINISHED'} + + print("_________________________________") + #set up addon file + ng = bpy.data.materials[material_name].node_tree + ng_name = ng.name.lower().replace(' ', '_') + class_name = ng.name.replace(" ", "") + """ + dir = bpy.path.abspath("//") + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blender file before using " + "NodeToPython!")) + return {'CANCELLED'} + addon_dir = os.path.join(dir, "addons") + if not os.path.exists(addon_dir): + os.mkdir(addon_dir) + file = open(f"{addon_dir}/{mat_ng_name}_addon.py", "w") + """ + #file = open("/home/Documents/Repos/NodeToPython/test.py", "w") + + """Sets up bl_info and imports Blender""" + def header(): + print("bl_info = {\n") + print(f"\t\"name\" : \"{ng.name}\",\n") + print("\t\"author\" : \"Node To Python\",\n") + print("\t\"version\" : (1, 0, 0),\n") + print(f"\t\"blender\" : {bpy.app.version},\n") + print("\t\"location\" : \"Object\",\n") + print("\t\"category\" : \"Object\"\n") + print("}\n") + print("\n") + print("import bpy\n") + print("\n") + header() + + """Creates the class and its variables""" + def init_class(): + print(f"class {class_name}(bpy.types.Operator):\n") + print(f"\tbl_idname = \"object.{ng_name}\"\n") + print(f"\tbl_label = \"{ng.name}\"\n") + print("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") + print("\n") + init_class() + + print("\tdef execute(self, context):\n") + + def process_mat_node_group(node_group, level): + ng_name = node_group.name.lower().replace(' ', '_') + + outer = "\t"*level + inner = "\t"*(level + 1) + + #initialize node group + print(f"{outer}#initialize {ng_name} node group\n") + print(f"{outer}def {ng_name}_node_group():\n") + print((f"{inner}{ng_name}" + f"= bpy.data.node_groups.new(" + f"type = \"ShaderNodeGroup\", " + f"name = \"{node_group.name}\")\n")) + print("\n") + + #initialize nodes + print(f"{inner}#initialize {ng_name} nodes\n") + + for node in node_group.nodes: + if node.bl_idname == 'ShaderNodeGroup': + process_mat_node_group(node.node_tree, level + 1) + #create node + node_name = node.name.lower() + node_name = node_name.replace(' ', '_').replace('.', '_') + print(f"{inner}#node {node.name}\n") + print((f"{inner}{node_name} " + f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) + print((f"{inner}{node_name}.location " + f"= ({node.location.x}, {node.location.y})\n")) + print((f"{inner}{node_name}.width, {node_name}.height " + f"= {node.width}, {node.height}\n")) + if node.label: + print(f"{inner}{node_name}.label = \"{node.label}\"\n") + + for i, input in enumerate(node.inputs): + if input.bl_idname not in dont_set_defaults: + dv = None + if input.bl_idname == 'NodeSocketColor': + col = input.default_value + dv = f"({col[0]}, {col[1]}, {col[2]}, {col[3]})" + elif "Vector" in input.bl_idname: + vector = input.default_value + dv = f"({vector[0]}, {vector[1]}, {vector[2]})" + elif input.bl_idname == 'NodeSocketString': + dv = f"\"\"" + else: + #TODO: fix this later + if input.bl_idname != 'NodeSocketShader': + dv = input.default_value + if dv is not None: + print(f"{inner}#{input.identifier}\n") + print((f"{inner}{node_name}" + f".inputs[{i}]" + f".default_value = {dv}\n")) + + #initialize links + if node_group.links: + print(f"{inner}#initialize {ng_name} links\n") + for link in node_group.links: + input_node = link.from_node.name.lower() + input_node = input_node.replace(' ', '_').replace('.', '_') + input_socket = link.from_socket + + """ + Blender's socket dictionary doesn't guarantee + unique keys, which has caused much wailing and + gnashing of teeth. This is a quick fix that + doesn't run quick + """ + for i, item in enumerate(link.from_node.outputs.items()): + if item[1] == input_socket: + input_idx = i + break + + output_node = link.to_node.name.lower() + output_node = output_node.replace(' ', '_').replace('.', '_') + output_socket = link.to_socket + + for i, item in enumerate(link.to_node.inputs.items()): + if item[1] == output_socket: + output_idx = i + break + + print((f"{inner}#{input_node}.{input_socket.name} " + f"-> {output_node}.{output_socket.name}\n")) + print((f"{inner}{ng_name}.links.new({input_node}" + f".outputs[{input_idx}], " + f"{output_node}.inputs[{output_idx}])\n")) + print(f"{outer}{ng_name}_node_group()\n") + + process_mat_node_group(ng, 2) + print("\t\treturn {'FINISHED'}\n\n") + + """Create the function that adds the addon to the menu""" + def create_menu_func(): + print("def menu_func(self, context):\n") + print(f"\tself.layout.operator({class_name}.bl_idname)\n") + print("\n") + create_menu_func() + + """Create the register function""" + def create_register(): + print("def register():\n") + print(f"\tbpy.utils.register_class({class_name})\n") + print("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") + print("\n") + create_register() + + """Create the unregister function""" + def create_unregister(): + print("def unregister():\n") + print(f"\tbpy.utils.unregister_class({class_name})\n") + print("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") + print("\n") + create_unregister() + + """Create the main function""" + def create_main(): + print("if __name__ == \"__main__\":\n") + print("\tregister()") + create_main() + +execute(None, "Material") \ No newline at end of file From 81fb0436b900b0ee57a2222cc7bd1c07499444c9 Mon Sep 17 00:00:00 2001 From: Carlsu~ <104013959+carls3d@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:26:32 +0100 Subject: [PATCH 002/286] Added quick dropdown menu Added a dropdown menu for choosing which node tree to convert. Located in a new panel 'Node To Python' in the nodes space --- node_to_python.py | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/node_to_python.py b/node_to_python.py index abf834a..8c34c71 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -462,14 +462,62 @@ def create_main(): file.close() return {'FINISHED'} +class NodeToPythonMenu(bpy.types.Menu): + bl_idname = "NodeToPythonMenu" + bl_label = "" + + @classmethod + def poll(cls, context): + return not (False) + + def draw(self, context): + geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] + + layout = self.layout.column_flow(columns=1) + layout.operator_context = "INVOKE_DEFAULT" + for i in range(len(geo_node_groups)): + op = layout.operator(NodeToPython.bl_idname, text=geo_node_groups[i].name) + op.node_group_name = geo_node_groups[i].name + +class NodeToPythonPanel(bpy.types.Panel): + bl_label = 'Node To Python' + bl_idname = 'NodeToPythonPanel' + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = 'NodeToPython' + + @classmethod + def poll(cls, context): + return not (False) + + def draw_header(self, context): + layout = self.layout + + def draw(self, context): + geo_node_groups_exist = len([node for node in bpy.data.node_groups if node.type == 'GEOMETRY']) > 0 + menu_text = 'Nodes' + + layout = self.layout + col = layout.column() + row = col.row() + row.enabled = geo_node_groups_exist # Disables menu when len of geometry nodes is 0 + row.alignment = 'Expand'.upper() + row.operator_context = "INVOKE_DEFAULT" if True else "EXEC_DEFAULT" + row.menu('NodeToPythonMenu', text=menu_text) + def menu_func(self, context): self.layout.operator(NodeToPython.bl_idname, text=NodeToPython.bl_label) def register(): + bpy.utils.register_class(NodeToPythonMenu) + bpy.utils.register_class(NodeToPythonPanel) bpy.utils.register_class(NodeToPython) bpy.types.VIEW3D_MT_object.append(menu_func) def unregister(): + bpy.utils.unregister_class(NodeToPythonMenu) + bpy.utils.unregister_class(NodeToPythonPanel) bpy.utils.unregister_class(NodeToPython) bpy.types.VIEW3D_MT_object.remove(menu_func) From 147a1efe823e0c8662cd68fee6f0db3a15c1da42 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 2 Jan 2023 21:27:18 -0600 Subject: [PATCH 003/286] Revert "docs: update README" This reverts commit 7d448b03c73fab16160868130740dc272ee5d9fb. --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 88341e6..b2d79df 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ A Blender add-on to create add-ons! This script will take your Geometry Node gro It automatically handles node layout, default values, sub-node groups, naming, and more! -I think Geometry Nodes is a powerful tool that's fairly accessible to people. I wanted to make scripting node groups easier for add-on creators in cases when Python is needed, as you don't need to recreate the whole node tree from scratch to do things like +I think Geometry Nodes is a powerful tool that's fairly accessible to people, and I wanted to create a lightweight, faster way of distributing them than just passing around blend files. It also makes scripting Geometry Nodes easier for add-on creators in cases when Python is needed, as you don't need to recreate the whole node tree from scratch to do things like * `for` loops * different node trees for different versions or settings * interfacing with other parts of the software. @@ -34,14 +34,15 @@ Download `node_to_python.py`, and install it to Blender like other add-ons. Then * Automatically format code to be PEP8 compliant ## Potential Issues -* As of version 1.2.1, the add-on will not set default values for +* This should work on Unix-like systems (macOS, Linux), but I haven't tested it on Windows yet. If you use Windows, please let me know if it does! +* As of version 1.0.0, the add-on will not set default values for * Collections * Images * Materials * Objects * Textures - as they won't exist in every blend file. I plan on implementing these soon. + as they won't exist in every blend file. In the future, I may have the script automatically recreate these assets, espcially with materials. ## Bug Reports and Suggestions @@ -51,7 +52,5 @@ When submitting an issue, please include * Your operating system * A short description of what you were trying to accomplish, or steps to reproduce the issue -If you don't mind sharing a blend file, that helps a lot! - Suggestions for how to improve the add-on are more than welcome! From da4ea05931cb5a22b9574e2543526338e737dd82 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 2 Jan 2023 21:33:44 -0600 Subject: [PATCH 004/286] style: ui code style updates --- node_to_python.py | 71 +++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index 8c34c71..99c3f3d 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,16 +2,12 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 0, 0), + "version": (2, 0, 0), "blender": (3, 0, 0), - "location": "Object", - "category": "Object", + "location": "Node", + "category": "Node", } - -"""TODO: compositing node tree""" -# https://blender.stackexchange.com/questions/62701/modify-nodes-in-compositing-nodetree-using-python - import bpy import os @@ -158,7 +154,7 @@ 'ShaderNodeRGBCurve'} class NodeToPython(bpy.types.Operator): - bl_idname = "object.node_to_python" + bl_idname = "node.node_to_python" bl_label = "Node to Python" bl_options = {'REGISTER', 'UNDO'} @@ -463,63 +459,60 @@ def create_main(): return {'FINISHED'} class NodeToPythonMenu(bpy.types.Menu): - bl_idname = "NodeToPythonMenu" - bl_label = "" - + bl_idname = "NODE_MT_node_to_python" + bl_label = "Node To Python" + @classmethod def poll(cls, context): - return not (False) + return True def draw(self, context): geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] - + layout = self.layout.column_flow(columns=1) - layout.operator_context = "INVOKE_DEFAULT" - for i in range(len(geo_node_groups)): - op = layout.operator(NodeToPython.bl_idname, text=geo_node_groups[i].name) - op.node_group_name = geo_node_groups[i].name + layout.operator_context = 'INVOKE_DEFAULT' + for geo_ng in geo_node_groups: + op = layout.operator(NodeToPython.bl_idname, text=geo_ng.name) + op.node_group_name = geo_ng.name class NodeToPythonPanel(bpy.types.Panel): - bl_label = 'Node To Python' - bl_idname = 'NodeToPythonPanel' + bl_label = "Node To Python" + bl_idname = "NODE_PT_node_to_python" bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' bl_context = '' - bl_category = 'NodeToPython' + bl_category = "NodeToPython" @classmethod def poll(cls, context): - return not (False) - + return True + def draw_header(self, context): layout = self.layout def draw(self, context): - geo_node_groups_exist = len([node for node in bpy.data.node_groups if node.type == 'GEOMETRY']) > 0 - menu_text = 'Nodes' - layout = self.layout col = layout.column() row = col.row() - row.enabled = geo_node_groups_exist # Disables menu when len of geometry nodes is 0 - row.alignment = 'Expand'.upper() - row.operator_context = "INVOKE_DEFAULT" if True else "EXEC_DEFAULT" - row.menu('NodeToPythonMenu', text=menu_text) + + # Disables menu when len of geometry nodes is 0 + geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] + geo_node_groups_exist = len(geo_node_groups) > 0 + row.enabled = geo_node_groups_exist + + row.alignment = 'EXPAND' + row.operator_context = 'INVOKE_DEFAULT' + row.menu("NODE_MT_node_to_python", text="Geometry Node Groups") -def menu_func(self, context): - self.layout.operator(NodeToPython.bl_idname, text=NodeToPython.bl_label) +classes = [NodeToPythonMenu, NodeToPythonPanel, NodeToPython] def register(): - bpy.utils.register_class(NodeToPythonMenu) - bpy.utils.register_class(NodeToPythonPanel) - bpy.utils.register_class(NodeToPython) - bpy.types.VIEW3D_MT_object.append(menu_func) + for cls in classes: + bpy.utils.register_class(cls) def unregister(): - bpy.utils.unregister_class(NodeToPythonMenu) - bpy.utils.unregister_class(NodeToPythonPanel) - bpy.utils.unregister_class(NodeToPython) - bpy.types.VIEW3D_MT_object.remove(menu_func) + for cls in classes: + bpy.utils.unregister_class(cls) if __name__ == "__main__": register() \ No newline at end of file From 71f08157a85bc2d7c336168a8f6710684f165aaa Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 2 Jan 2023 21:36:12 -0600 Subject: [PATCH 005/286] fix: updated bl_info for correct version --- node_to_python.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index abf834a..85d30ee 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,16 +2,12 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 0, 0), + "version": (1, 2, 1), "blender": (3, 0, 0), - "location": "Object", - "category": "Object", + "location": "Node", + "category": "Node", } - -"""TODO: compositing node tree""" -# https://blender.stackexchange.com/questions/62701/modify-nodes-in-compositing-nodetree-using-python - import bpy import os From ec92a1b087285f25d2340d0c68df8dd3320b8416 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:43:52 -0600 Subject: [PATCH 006/286] feat: material update addon fluff --- material_to_python.py | 391 ++++++++++++++++++++++++------------------ 1 file changed, 220 insertions(+), 171 deletions(-) diff --git a/material_to_python.py b/material_to_python.py index 7522587..6ac2a9c 100644 --- a/material_to_python.py +++ b/material_to_python.py @@ -7,179 +7,228 @@ 'NodeSocketImage', 'NodeSocketMaterial', 'NodeSocketObject', + 'NodeSocketShader', 'NodeSocketTexture', 'NodeSocketVirtual'} + +curve_nodes = {'ShaderNodeFloatCurve', + 'ShaderNodeVectorCurve', + 'ShaderNodeRGBCurve'} + +class MaterialToPython(bpy.types.Operator): + bl_idname = "node.material_to_python" + bl_label = "Material to Python" + bl_options = {'REGISTER', 'UNDO'} + + material_name: bpy.props.StringProperty(name="Node Group") + + def execute(self, context): + if self.material_name not in bpy.data.materials: + return {'FINISHED'} -def execute(self, material_name): - #validate material name - if material_name not in bpy.data.materials: + #set up addon file + ng = bpy.data.materials[self.material_name].node_tree + ng_name = ng.name.lower().replace(' ', '_') + class_name = ng.name.replace(" ", "") + + dir = bpy.path.abspath("//") + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blender file before using " + "NodeToPython!")) + return {'CANCELLED'} + addon_dir = os.path.join(dir, "addons") + if not os.path.exists(addon_dir): + os.mkdir(addon_dir) + file = open(f"{addon_dir}/{ng_name}_addon.py", "w") + + """Sets up bl_info and imports Blender""" + def header(): + file.write("bl_info = {\n") + file.write(f"\t\"name\" : \"{ng.name}\",\n") + file.write("\t\"author\" : \"Node To Python\",\n") + file.write("\t\"version\" : (1, 0, 0),\n") + file.write(f"\t\"blender\" : {bpy.app.version},\n") + file.write("\t\"location\" : \"Object\",\n") + file.write("\t\"category\" : \"Object\"\n") + file.write("}\n") + file.write("\n") + file.write("import bpy\n") + file.write("\n") + header() + + """Creates the class and its variables""" + def init_class(): + file.write(f"class {class_name}(bpy.types.Operator):\n") + file.write(f"\tbl_idname = \"object.{ng_name}\"\n") + file.write(f"\tbl_label = \"{ng.name}\"\n") + file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") + file.write("\n") + init_class() + + file.write("\tdef execute(self, context):\n") + + def process_mat_node_group(node_group, level): + ng_name = node_group.name.lower().replace(' ', '_') + + outer = "\t"*level + inner = "\t"*(level + 1) + + #initialize node group + file.write(f"{outer}#initialize {ng_name} node group\n") + file.write(f"{outer}def {ng_name}_node_group():\n") + file.write((f"{inner}{ng_name}" + f"= bpy.data.node_groups.new(" + f"type = \"ShaderNodeGroup\", " + f"name = \"{node_group.name}\")\n")) + file.write("\n") + + #initialize nodes + file.write(f"{inner}#initialize {ng_name} nodes\n") + + for node in node_group.nodes: + if node.bl_idname == 'ShaderNodeGroup': + process_mat_node_group(node.node_tree, level + 1) + #create node + node_name = node.name.lower() + node_name = node_name.replace(' ', '_').replace('.', '_') + file.write(f"{inner}#node {node.name}\n") + file.write((f"{inner}{node_name} " + f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) + file.write((f"{inner}{node_name}.location " + f"= ({node.location.x}, {node.location.y})\n")) + file.write((f"{inner}{node_name}.width, {node_name}.height " + f"= {node.width}, {node.height}\n")) + if node.label: + file.write(f"{inner}{node_name}.label = \"{node.label}\"\n") + + for i, input in enumerate(node.inputs): + if input.bl_idname not in dont_set_defaults: + dv = None + if input.bl_idname == 'NodeSocketColor': + col = input.default_value + dv = f"({col[0]}, {col[1]}, {col[2]}, {col[3]})" + elif "Vector" in input.bl_idname: + vector = input.default_value + dv = f"({vector[0]}, {vector[1]}, {vector[2]})" + elif input.bl_idname == 'NodeSocketString': + dv = f"\"\"" + else: + dv = input.default_value + if dv is not None: + file.write(f"{inner}#{input.identifier}\n") + file.write((f"{inner}{node_name}" + f".inputs[{i}]" + f".default_value = {dv}\n")) + + #initialize links + if node_group.links: + file.write(f"{inner}#initialize {ng_name} links\n") + for link in node_group.links: + input_node = link.from_node.name.lower() + input_node = input_node.replace(' ', '_').replace('.', '_') + input_socket = link.from_socket + + """ + Blender's socket dictionary doesn't guarantee + unique keys, which has caused much wailing and + gnashing of teeth. This is a quick fix that + doesn't run quick + """ + for i, item in enumerate(link.from_node.outputs.items()): + if item[1] == input_socket: + input_idx = i + break + + output_node = link.to_node.name.lower() + output_node = output_node.replace(' ', '_').replace('.', '_') + output_socket = link.to_socket + + for i, item in enumerate(link.to_node.inputs.items()): + if item[1] == output_socket: + output_idx = i + break + + file.write((f"{inner}#{input_node}.{input_socket.name} " + f"-> {output_node}.{output_socket.name}\n")) + file.write((f"{inner}{ng_name}.links.new({input_node}" + f".outputs[{input_idx}], " + f"{output_node}.inputs[{output_idx}])\n")) + file.write(f"{outer}{ng_name}_node_group()\n") + + process_mat_node_group(ng, 2) + file.write("\t\treturn {'FINISHED'}\n\n") + + """Create the function that adds the addon to the menu""" + def create_menu_func(): + file.write("def menu_func(self, context):\n") + file.write(f"\tself.layout.operator({class_name}.bl_idname)\n") + file.write("\n") + create_menu_func() + + """Create the register function""" + def create_register(): + file.write("def register():\n") + file.write(f"\tbpy.utils.register_class({class_name})\n") + file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") + file.write("\n") + create_register() + + """Create the unregister function""" + def create_unregister(): + file.write("def unregister():\n") + file.write(f"\tbpy.utils.unregister_class({class_name})\n") + file.write("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") + file.write("\n") + create_unregister() + + """Create the main function""" + def create_main(): + file.write("if __name__ == \"__main__\":\n") + file.write("\tregister()") + create_main() + + file.close() return {'FINISHED'} + +class NodeToPythonPanel(bpy.types.Panel): + bl_label = "Node To Python" + bl_idname = "NODE_PT_node_to_python" + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = "NodeToPython" + + @classmethod + def poll(cls, context): + return True - print("_________________________________") - #set up addon file - ng = bpy.data.materials[material_name].node_tree - ng_name = ng.name.lower().replace(' ', '_') - class_name = ng.name.replace(" ", "") - """ - dir = bpy.path.abspath("//") - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blender file before using " - "NodeToPython!")) - return {'CANCELLED'} - addon_dir = os.path.join(dir, "addons") - if not os.path.exists(addon_dir): - os.mkdir(addon_dir) - file = open(f"{addon_dir}/{mat_ng_name}_addon.py", "w") - """ - #file = open("/home/Documents/Repos/NodeToPython/test.py", "w") - - """Sets up bl_info and imports Blender""" - def header(): - print("bl_info = {\n") - print(f"\t\"name\" : \"{ng.name}\",\n") - print("\t\"author\" : \"Node To Python\",\n") - print("\t\"version\" : (1, 0, 0),\n") - print(f"\t\"blender\" : {bpy.app.version},\n") - print("\t\"location\" : \"Object\",\n") - print("\t\"category\" : \"Object\"\n") - print("}\n") - print("\n") - print("import bpy\n") - print("\n") - header() - - """Creates the class and its variables""" - def init_class(): - print(f"class {class_name}(bpy.types.Operator):\n") - print(f"\tbl_idname = \"object.{ng_name}\"\n") - print(f"\tbl_label = \"{ng.name}\"\n") - print("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") - print("\n") - init_class() - - print("\tdef execute(self, context):\n") - - def process_mat_node_group(node_group, level): - ng_name = node_group.name.lower().replace(' ', '_') - - outer = "\t"*level - inner = "\t"*(level + 1) - - #initialize node group - print(f"{outer}#initialize {ng_name} node group\n") - print(f"{outer}def {ng_name}_node_group():\n") - print((f"{inner}{ng_name}" - f"= bpy.data.node_groups.new(" - f"type = \"ShaderNodeGroup\", " - f"name = \"{node_group.name}\")\n")) - print("\n") - - #initialize nodes - print(f"{inner}#initialize {ng_name} nodes\n") - - for node in node_group.nodes: - if node.bl_idname == 'ShaderNodeGroup': - process_mat_node_group(node.node_tree, level + 1) - #create node - node_name = node.name.lower() - node_name = node_name.replace(' ', '_').replace('.', '_') - print(f"{inner}#node {node.name}\n") - print((f"{inner}{node_name} " - f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) - print((f"{inner}{node_name}.location " - f"= ({node.location.x}, {node.location.y})\n")) - print((f"{inner}{node_name}.width, {node_name}.height " - f"= {node.width}, {node.height}\n")) - if node.label: - print(f"{inner}{node_name}.label = \"{node.label}\"\n") - - for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults: - dv = None - if input.bl_idname == 'NodeSocketColor': - col = input.default_value - dv = f"({col[0]}, {col[1]}, {col[2]}, {col[3]})" - elif "Vector" in input.bl_idname: - vector = input.default_value - dv = f"({vector[0]}, {vector[1]}, {vector[2]})" - elif input.bl_idname == 'NodeSocketString': - dv = f"\"\"" - else: - #TODO: fix this later - if input.bl_idname != 'NodeSocketShader': - dv = input.default_value - if dv is not None: - print(f"{inner}#{input.identifier}\n") - print((f"{inner}{node_name}" - f".inputs[{i}]" - f".default_value = {dv}\n")) - - #initialize links - if node_group.links: - print(f"{inner}#initialize {ng_name} links\n") - for link in node_group.links: - input_node = link.from_node.name.lower() - input_node = input_node.replace(' ', '_').replace('.', '_') - input_socket = link.from_socket - - """ - Blender's socket dictionary doesn't guarantee - unique keys, which has caused much wailing and - gnashing of teeth. This is a quick fix that - doesn't run quick - """ - for i, item in enumerate(link.from_node.outputs.items()): - if item[1] == input_socket: - input_idx = i - break - - output_node = link.to_node.name.lower() - output_node = output_node.replace(' ', '_').replace('.', '_') - output_socket = link.to_socket - - for i, item in enumerate(link.to_node.inputs.items()): - if item[1] == output_socket: - output_idx = i - break - - print((f"{inner}#{input_node}.{input_socket.name} " - f"-> {output_node}.{output_socket.name}\n")) - print((f"{inner}{ng_name}.links.new({input_node}" - f".outputs[{input_idx}], " - f"{output_node}.inputs[{output_idx}])\n")) - print(f"{outer}{ng_name}_node_group()\n") - - process_mat_node_group(ng, 2) - print("\t\treturn {'FINISHED'}\n\n") - - """Create the function that adds the addon to the menu""" - def create_menu_func(): - print("def menu_func(self, context):\n") - print(f"\tself.layout.operator({class_name}.bl_idname)\n") - print("\n") - create_menu_func() - - """Create the register function""" - def create_register(): - print("def register():\n") - print(f"\tbpy.utils.register_class({class_name})\n") - print("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") - print("\n") - create_register() - - """Create the unregister function""" - def create_unregister(): - print("def unregister():\n") - print(f"\tbpy.utils.unregister_class({class_name})\n") - print("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") - print("\n") - create_unregister() - - """Create the main function""" - def create_main(): - print("if __name__ == \"__main__\":\n") - print("\tregister()") - create_main() - -execute(None, "Material") \ No newline at end of file + def draw_header(self, context): + layout = self.layout + + def draw(self, context): + layout = self.layout + col = layout.column() + row = col.row() + + # Disables menu when len of geometry nodes is 0 + geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] + geo_node_groups_exist = len(geo_node_groups) > 0 + row.enabled = geo_node_groups_exist + + row.alignment = 'EXPAND' + row.operator_context = 'INVOKE_DEFAULT' + row.menu("NODE_MT_node_to_python", text="Geometry Node Groups") + +classes = [NodeToPythonMenu, NodeToPythonPanel, NodeToPython] + +def register(): + for cls in classes: + bpy.utils.register_class(cls) + +def unregister(): + for cls in classes: + bpy.utils.unregister_class(cls) + +if __name__ == "__main__": + register() \ No newline at end of file From ebd080e2faf3bbbb7fe7f1cba5381038d595ed33 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:53:14 -0600 Subject: [PATCH 007/286] fix: wouldn't properly handle node groups with periods in the name --- node_to_python.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index 85d30ee..04699bb 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 2, 1), + "version": (1, 2, 2), "blender": (3, 0, 0), "location": "Node", "category": "Node", @@ -153,6 +153,9 @@ 'ShaderNodeVectorCurve', 'ShaderNodeRGBCurve'} +def cleanup_string(string: str): + return string.lower().replace(' ', '_').replace('.', '_') + class NodeToPython(bpy.types.Operator): bl_idname = "object.node_to_python" bl_label = "Node to Python" @@ -164,8 +167,8 @@ def execute(self, context): if self.node_group_name not in bpy.data.node_groups: return {'FINISHED'} ng = bpy.data.node_groups[self.node_group_name] - ng_name = ng.name.lower().replace(' ', '_') - class_name = ng.name.replace(" ", "") + ng_name = cleanup_string(ng.name) + class_name = ng.name.replace(" ", "").replace('.', "") dir = bpy.path.abspath("//") if not dir or dir == "": self.report({'ERROR'}, @@ -205,7 +208,7 @@ def init_class(): file.write("\tdef execute(self, context):\n") def process_node_group(node_group, level): - ng_name = node_group.name.lower().replace(' ', '_') + ng_name = cleanup_string(node_group.name) outer = "\t"*level #outer indentation inner = "\t"*(level + 1) #inner indentation @@ -271,8 +274,7 @@ def process_node_group(node_group, level): file.write("\n") #create node - node_name = node.name.lower() - node_name = node_name.replace(' ', '_').replace('.', '_') + node_name = cleanup_string(node.name) file.write(f"{inner}#node {node.name}\n") file.write((f"{inner}{node_name} " f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) @@ -387,8 +389,7 @@ def process_node_group(node_group, level): if node_group.links: file.write(f"{inner}#initialize {ng_name} links\n") for link in node_group.links: - input_node = link.from_node.name.lower() - input_node = input_node.replace(' ', '_').replace('.', '_') + input_node = cleanup_string(link.from_node.name) input_socket = link.from_socket """ @@ -402,8 +403,7 @@ def process_node_group(node_group, level): input_idx = i break - output_node = link.to_node.name.lower() - output_node = output_node.replace(' ', '_').replace('.', '_') + output_node = cleanup_string(link.to_node.name) output_socket = link.to_socket for i, item in enumerate(link.to_node.inputs.items()): From 5d40641b4e0ec8db5d4f1a99b98f9dddbb893180 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 8 Jan 2023 23:04:37 -0600 Subject: [PATCH 008/286] feat: basic material recreation --- README.md | 3 + material_to_python.py | 287 +++++++++++++++++++++++++++++++++++------- node_to_python.py | 6 +- 3 files changed, 250 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index b2d79df..2a55cd8 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,9 @@ Download `node_to_python.py`, and install it to Blender like other add-ons. Then * Materials * Objects * Textures + * Scripts + * IES + * Filepaths as they won't exist in every blend file. In the future, I may have the script automatically recreate these assets, espcially with materials. diff --git a/material_to_python.py b/material_to_python.py index 6ac2a9c..88e92d0 100644 --- a/material_to_python.py +++ b/material_to_python.py @@ -1,6 +1,19 @@ import bpy +import mathutils import os +#node tree input sockets that have default properties +default_sockets = {'NodeSocketBool', + 'NodeSocketColor', + 'NodeSocketFloat', + 'NodeSocketInt', + 'NodeSocketVector'} + +#node tree input sockets that have min/max properties +value_sockets = {'NodeSocketInt', + 'NodeSocketFloat', + 'NodeSocketVector'} + #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', 'NodeSocketGeometry', @@ -11,10 +24,82 @@ 'NodeSocketTexture', 'NodeSocketVirtual'} +node_settings = { + #input + "ShaderNodeAmbientOcclusion" : ["samples", "inside", "only_local"], + "ShaderNodeAttribute" : ["attribute_type", "attribute_name"], + "ShaderNodeBevel" : ["samples"], + "ShaderNodeVertexColor" : ["layer_name"], + "ShaderNodeTangent" : ["direction_type", "axis"], + "ShaderNodeTexCoord" : ["from_instancer"], + "ShaderNodeUVMap" : ["from_instancer", "uv_map"], + "ShaderNodeWireframe" : ["use_pixel_size"], + + #output + "ShaderNodeOutputAOV" : ["name"], + "ShaderNodeOutputMaterial" : ["target"], + + #shader + "ShaderNodeBsdfGlass" : ["distribution"], + "ShaderNodeBsdfGlossy" : ["distribution"], + "ShaderNodeBsdfPrincipled" : ["distribution", "subsurface_method"], + "ShaderNodeBsdfRefraction" : ["distribution"], + "ShaderNodeSubsurfaceScattering" : ["falloff"], + + #texture + "ShaderNodeTexBrick" : ["offset", "offset_frequency", "squash", "squash_frequency"], + "ShaderNodeTexEnvironment" : ["interpolation", "projection", "image_user.frame_duration", "image_user.frame_start", "image_user.frame_offset", "image_user.use_cyclic", "image_user.use_auto_refresh"], + "ShaderNodeTexGradient" : ["gradient_type"], + "ShaderNodeTexIES" : ["mode"], + "ShaderNodeTexImage" : ["interpolation", "projection", "projection_blend", + "extension"], + "ShaderNodeTexMagic" : ["turbulence_depth"], + "ShaderNodeTexMusgrave" : ["musgrave_dimensions", "musgrave_type"], + "ShaderNodeTexNoise" : ["noise_dimensions"], + "ShaderNodeTexPointDensity" : ["point_source", "space", "radius", + "interpolation", "resolution", + "vertex_color_source"], + "ShaderNodeTexSky" : ["sky_type", "sun_direction", "turbidity", + "ground_albedo", "sun_disc", "sun_elevation", + "sun_rotation", "altitude", "air_density", + "dust_density", "ozone_density"], + "ShaderNodeTexVoronoi" : ["voronoi_dimensions", "feature", "distance"], + "ShaderNodeTexWave" : ["wave_type", "rings_direction", "wave_profile"], + "ShaderNodeTexWhiteNoise" : ["noise_dimensions"], + + #color + "ShaderNodeMix" : ["data_type", "clamp_factor", "factor_mode", "blend_type", + "clamp_result"], + + #vector + "ShaderNodeBump" : ["invert"], + "ShaderNodeDisplacement" : ["space"], + "ShaderNodeMapping" : ["vector_type"], + "ShaderNodeNormalMap" : ["space", "uv_map"], + "ShaderNodeVectorDisplacement" : ["space"], + "ShaderNodeVectorRotate" : ["rotation_type", "invert"], + "ShaderNodeVectorTransform" : ["vector_type", "convert_from", "convert_to"], + + #converter + "ShaderNodeClamp" : ["clamp_type"], + "ShaderNodeCombineColor" : ["mode"], + "ShaderNodeMapRange" : ["data_type", "interpolation_type", "clamp"], + "ShaderNodeMath" : ["operation", "use_clamp"], + "ShaderNodeSeparateColor" : ["mode"], + "ShaderNodeVectorMath" : ["operation"] +} + curve_nodes = {'ShaderNodeFloatCurve', 'ShaderNodeVectorCurve', 'ShaderNodeRGBCurve'} +def clean_string(string: str): + bad_chars = [' ', '.', '/'] + clean_str = string.lower() + for char in bad_chars: + clean_str = clean_str.replace(char, '_') + return clean_str + class MaterialToPython(bpy.types.Operator): bl_idname = "node.material_to_python" bl_label = "Material to Python" @@ -28,7 +113,7 @@ def execute(self, context): #set up addon file ng = bpy.data.materials[self.material_name].node_tree - ng_name = ng.name.lower().replace(' ', '_') + ng_name = clean_string(self.material_name) class_name = ng.name.replace(" ", "") dir = bpy.path.abspath("//") @@ -45,7 +130,7 @@ def execute(self, context): """Sets up bl_info and imports Blender""" def header(): file.write("bl_info = {\n") - file.write(f"\t\"name\" : \"{ng.name}\",\n") + file.write(f"\t\"name\" : \"{self.material_name}\",\n") file.write("\t\"author\" : \"Node To Python\",\n") file.write("\t\"version\" : (1, 0, 0),\n") file.write(f"\t\"blender\" : {bpy.app.version},\n") @@ -61,7 +146,7 @@ def header(): def init_class(): file.write(f"class {class_name}(bpy.types.Operator):\n") file.write(f"\tbl_idname = \"object.{ng_name}\"\n") - file.write(f"\tbl_label = \"{ng.name}\"\n") + file.write(f"\tbl_label = \"{self.material_name}\"\n") file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") file.write("\n") init_class() @@ -69,7 +154,9 @@ def init_class(): file.write("\tdef execute(self, context):\n") def process_mat_node_group(node_group, level): - ng_name = node_group.name.lower().replace(' ', '_') + ng_name = clean_string(node_group.name) + if level == 2: + ng_name = clean_string(self.material_name) outer = "\t"*level inner = "\t"*(level + 1) @@ -79,54 +166,155 @@ def process_mat_node_group(node_group, level): file.write(f"{outer}def {ng_name}_node_group():\n") file.write((f"{inner}{ng_name}" f"= bpy.data.node_groups.new(" - f"type = \"ShaderNodeGroup\", " + f"type = \"ShaderNodeTree\", " f"name = \"{node_group.name}\")\n")) file.write("\n") #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") + """ + The bl_idname for AOV output nodes is the name field. + I've been using these for the variable names, but if you don't name + the AOV node it just doesn't assign anything, so we need to do it + manually. + """ + unnamed_index = 0 for node in node_group.nodes: if node.bl_idname == 'ShaderNodeGroup': process_mat_node_group(node.node_tree, level + 1) #create node - node_name = node.name.lower() - node_name = node_name.replace(' ', '_').replace('.', '_') + node_name = clean_string(node.name) + if node_name == "": + node_name = f"node_{unnamed_index}" + unnamed_index += 1 + file.write(f"{inner}#node {node.name}\n") file.write((f"{inner}{node_name} " - f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) + f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) file.write((f"{inner}{node_name}.location " - f"= ({node.location.x}, {node.location.y})\n")) + f"= ({node.location.x}, {node.location.y})\n")) file.write((f"{inner}{node_name}.width, {node_name}.height " - f"= {node.width}, {node.height}\n")) + f"= {node.width}, {node.height}\n")) if node.label: file.write(f"{inner}{node_name}.label = \"{node.label}\"\n") + + #special nodes + if node.bl_idname in node_settings: + for setting in node_settings[node.bl_idname]: + attr = getattr(node, setting, None) + if attr: + if type(attr) == str: + attr = f"\'{attr}\'" + if type(attr) == mathutils.Vector: + attr = f"({attr[0]}, {attr[1]}, {attr[2]})" + file.write((f"{inner}{node_name}.{setting} " + f"= {attr}\n")) + elif node.bl_idname == 'ShaderNodeGroup': + file.write((f"{inner}{node_name}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) + elif node.bl_idname == 'ShaderNodeValToRGB': + color_ramp = node.color_ramp + file.write("\n") + file.write((f"{inner}{node_name}.color_ramp.color_mode = " + f"\'{color_ramp.color_mode}\'\n")) + file.write((f"{inner}{node_name}.color_ramp" + f".hue_interpolation = " + f"\'{color_ramp.hue_interpolation}\'\n")) + file.write((f"{inner}{node_name}.color_ramp.interpolation " + f"= '{color_ramp.interpolation}'\n")) + file.write("\n") + for i, element in enumerate(color_ramp.elements): + file.write((f"{inner}{node_name}_cre_{i} = " + f"{node_name}.color_ramp.elements" + f".new({element.position})\n")) + file.write((f"{inner}{node_name}_cre_{i}.alpha = " + f"{element.alpha}\n")) + col = element.color + r, g, b, a = col[0], col[1], col[2], col[3] + file.write((f"{inner}{node_name}_cre_{i}.color = " + f"({r}, {g}, {b}, {a})\n\n")) + elif node.bl_idname in curve_nodes: + file.write(f"{inner}#mapping settings\n") + mapping = f"{inner}{node_name}.mapping" + + extend = f"\'{node.mapping.extend}\'" + file.write(f"{mapping}.extend = {extend}\n") + tone = f"\'{node.mapping.tone}\'" + file.write(f"{mapping}.tone = {tone}\n") + + b_lvl = node.mapping.black_level + b_lvl_str = f"({b_lvl[0]}, {b_lvl[1]}, {b_lvl[2]})" + file.write((f"{mapping}.black_level = {b_lvl_str}\n")) + w_lvl = node.mapping.white_level + w_lvl_str = f"({w_lvl[0]}, {w_lvl[1]}, {w_lvl[2]})" + file.write((f"{mapping}.white_level = {w_lvl_str}\n")) - for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults: - dv = None - if input.bl_idname == 'NodeSocketColor': - col = input.default_value - dv = f"({col[0]}, {col[1]}, {col[2]}, {col[3]})" - elif "Vector" in input.bl_idname: - vector = input.default_value - dv = f"({vector[0]}, {vector[1]}, {vector[2]})" - elif input.bl_idname == 'NodeSocketString': - dv = f"\"\"" - else: - dv = input.default_value - if dv is not None: - file.write(f"{inner}#{input.identifier}\n") - file.write((f"{inner}{node_name}" - f".inputs[{i}]" - f".default_value = {dv}\n")) + min_x = node.mapping.clip_min_x + file.write(f"{mapping}.clip_min_x = {min_x}\n") + min_y = node.mapping.clip_min_y + file.write(f"{mapping}.clip_min_y = {min_y}\n") + max_x = node.mapping.clip_max_x + file.write(f"{mapping}.clip_max_x = {max_x}\n") + max_y = node.mapping.clip_max_y + file.write(f"{mapping}.clip_max_y = {max_y}\n") + + use_clip = node.mapping.use_clip + file.write(f"{mapping}.use_clip = {use_clip}\n") + + for i, curve in enumerate(node.mapping.curves): + file.write(f"{inner}#curve {i}\n") + curve_i = f"{node_name}_curve_{i}" + file.write((f"{inner}{curve_i} = " + f"{node_name}.mapping.curves[{i}]\n")) + for j, point in enumerate(curve.points): + point_j = f"{inner}{curve_i}_point_{j}" + + loc = point.location + file.write((f"{point_j} = " + f"{curve_i}.points.new" + f"({loc[0]}, {loc[1]})\n")) + + handle = f"\'{point.handle_type}\'" + file.write(f"{point_j}.handle_type = {handle}\n") + file.write(f"{inner}#update curve after changes") + file.write(f"{mapping}.update()\n") + + if node.bl_idname != 'NodeReroute': + def default_value(i, socket, list_name): + if socket.bl_idname not in dont_set_defaults: + dv = None + if socket.bl_idname == 'NodeSocketColor': + col = socket.default_value + dv = f"({col[0]}, {col[1]}, {col[2]}, {col[3]})" + elif "Vector" in socket.bl_idname: + vector = socket.default_value + dv = f"({vector[0]}, {vector[1]}, {vector[2]})" + elif socket.bl_idname == 'NodeSocketString': + dv = f"\"\"" + else: + dv = socket.default_value + if dv is not None: + file.write(f"{inner}#{socket.identifier}\n") + file.write((f"{inner}{node_name}" + f".{list_name}[{i}]" + f".default_value = {dv}\n")) + for i, input in enumerate(node.inputs): + default_value(i, input, "inputs") + """ + TODO: some shader nodes require you set the default value in the output. + this will need to be handled case by case it looks like though + + for i, output in enumerate(node.outputs): + default_value(i, output, "outputs") + """ #initialize links if node_group.links: file.write(f"{inner}#initialize {ng_name} links\n") for link in node_group.links: - input_node = link.from_node.name.lower() - input_node = input_node.replace(' ', '_').replace('.', '_') + input_node = clean_string(link.from_node.name) input_socket = link.from_socket """ @@ -140,8 +328,7 @@ def process_mat_node_group(node_group, level): input_idx = i break - output_node = link.to_node.name.lower() - output_node = output_node.replace(' ', '_').replace('.', '_') + output_node = clean_string(link.to_node.name) output_socket = link.to_socket for i, item in enumerate(link.to_node.inputs.items()): @@ -191,9 +378,24 @@ def create_main(): file.close() return {'FINISHED'} -class NodeToPythonPanel(bpy.types.Panel): - bl_label = "Node To Python" - bl_idname = "NODE_PT_node_to_python" +class SelectMaterialMenu(bpy.types.Menu): + bl_idname = "NODE_MT_npt_mat_selection" + bl_label = "Select Material" + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + for mat in bpy.data.materials: + op = layout.operator(MaterialToPython.bl_idname, text=mat.name) + op.material_name = mat.name + +class MaterialToPythonPanel(bpy.types.Panel): + bl_label = "Material to Python" + bl_idname = "NODE_PT_mat_to_python" bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' bl_context = '' @@ -208,19 +410,18 @@ def draw_header(self, context): def draw(self, context): layout = self.layout - col = layout.column() - row = col.row() + row = layout.row() - # Disables menu when len of geometry nodes is 0 - geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] - geo_node_groups_exist = len(geo_node_groups) > 0 - row.enabled = geo_node_groups_exist + # Disables menu when there are no materials + materials = [mat for mat in bpy.data.materials] + materials_exist = len(materials) > 0 + row.enabled = materials_exist row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_node_to_python", text="Geometry Node Groups") + row.menu("NODE_MT_npt_mat_selection", text="Materials") -classes = [NodeToPythonMenu, NodeToPythonPanel, NodeToPython] +classes = [MaterialToPythonPanel, MaterialToPython] def register(): for cls in classes: diff --git a/node_to_python.py b/node_to_python.py index 3cb309f..dfec67e 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -320,7 +320,7 @@ def process_node_group(node_group, level): file.write((f"{inner}{node_name}_cre_{i}.color = " f"({r}, {g}, {b}, {a})\n\n")) elif node.bl_idname in curve_nodes: - file.write(f"{inner}#mapping settings") + file.write(f"{inner}#mapping settings\n") mapping = f"{inner}{node_name}.mapping" extend = f"\'{node.mapping.extend}\'" @@ -348,7 +348,7 @@ def process_node_group(node_group, level): file.write(f"{mapping}.use_clip = {use_clip}\n") for i, curve in enumerate(node.mapping.curves): - file.write(f"{inner}#curve {i}") + file.write(f"{inner}#curve {i}\n") curve_i = f"{node_name}_curve_{i}" file.write((f"{inner}{curve_i} = " f"{node_name}.mapping.curves[{i}]\n")) @@ -476,7 +476,7 @@ def draw(self, context): op.node_group_name = geo_ng.name class NodeToPythonPanel(bpy.types.Panel): - bl_label = "Node To Python" + bl_label = "Geometry Nodes to Python" bl_idname = "NODE_PT_node_to_python" bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' From fb635be1cbaf9d4bac70244243e95498be84d020 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 21:55:28 -0600 Subject: [PATCH 009/286] refactor: geo_nodes logic now handled in separate file --- __init__.py | 49 +++++++ __pycache__/geo_nodes.cpython-310.pyc | Bin 0 -> 15522 bytes node_to_python.py => geo_nodes.py | 189 +++++++++++++------------- material_to_python.py => materials.py | 8 +- 4 files changed, 149 insertions(+), 97 deletions(-) create mode 100644 __init__.py create mode 100644 __pycache__/geo_nodes.cpython-310.pyc rename node_to_python.py => geo_nodes.py (77%) rename material_to_python.py => materials.py (99%) diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..513d9d3 --- /dev/null +++ b/__init__.py @@ -0,0 +1,49 @@ +bl_info = { + "name": "Node to Python", + "description": "Convert Blender node groups to a Python add-on!", + "author": "Brendan Parmer", + "version": (2, 0, 0), + "blender": (3, 0, 0), + "location": "Node", + "category": "Node", +} + +if "bpy" in locals(): + import importlib + importlib.reload(materials) + importlib.reload(geo_nodes) +else: + from . import materials + from . import geo_nodes + +import bpy + +class NodeToPythonMenu(bpy.types.Menu): + bl_idname = "NODE_MT_node_to_python" + bl_label = "Node To Python" + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + +classes = [NodeToPythonMenu, + geo_nodes.GeoNodesToPython, + geo_nodes.SelectGeoNodesMenu, + geo_nodes.GeoNodesToPythonPanel, + materials.MaterialToPython, + materials.SelectMaterialMenu, + materials.MaterialToPythonPanel] + +def register(): + for cls in classes: + bpy.utils.register_class(cls) +def unregister(): + for cls in classes: + bpy.utils.unregister_class(cls) + +if __name__ == "__main__": + register() \ No newline at end of file diff --git a/__pycache__/geo_nodes.cpython-310.pyc b/__pycache__/geo_nodes.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..300890bab1f23ffefccf9d5e5503ddaa2fed466e GIT binary patch literal 15522 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 Pv<{fU)GZxbfDir=EEW4c literal 0 HcmV?d00001 diff --git a/node_to_python.py b/geo_nodes.py similarity index 77% rename from node_to_python.py rename to geo_nodes.py index dfec67e..551ad84 100644 --- a/node_to_python.py +++ b/geo_nodes.py @@ -32,13 +32,13 @@ 'NodeSocketTexture', 'NodeSocketVirtual'} -node_settings = { +geo_node_settings = { #attribute - "GeometryNodeAttributeStatistic" : ["data_type", "domain"], - "GeometryNodeCaptureAttribute" : ["data_type", "domain"], - "GeometryNodeAttributeDomainSize" : ["component"], - "GeometryNodeStoreNamedAttribute" : ["data_type", "domain"], - "GeometryNodeAttributeTransfer" : ["data_type", "mapping"], + "GeometryNodeAttributeStatistic" : ["data_type", "domain"], + "GeometryNodeCaptureAttribute" : ["data_type", "domain"], + "GeometryNodeAttributeDomainSize" : ["component"], + "GeometryNodeStoreNamedAttribute" : ["data_type", "domain"], + "GeometryNodeAttributeTransfer" : ["data_type", "mapping"], #color "ShaderNodeMixRGB" : ["blend_type", "use_clamp"], @@ -46,104 +46,101 @@ "FunctionNodeSeparateColor" : ["mode"], #curve - "GeometryNodeCurveToPoints" : ["mode"], - "GeometryNodeFillCurve" : ["mode"], - "GeometryNodeFilletCurve" : ["mode"], - "GeometryNodeResampleCurve" : ["mode"], - "GeometryNodeSampleCurve" : ["data_type", "mode", - "use_all_curves"], - "GeometryNodeTrimCurve" : ["mode"], - "GeometryNodeSetCurveNormal" : ["mode"], - "GeometryNodeCurveHandleTypeSelection" : ["mode", "handle_type"], - "GeometryNodeSetCurveHandlePositions" : ["mode"], - "GeometryNodeCurveSetHandles" : ["mode", "handle_type"], - "GeometryNodeCurveSplineType" : ["spline_type"], + "GeometryNodeCurveToPoints" : ["mode"], + "GeometryNodeFillCurve" : ["mode"], + "GeometryNodeFilletCurve" : ["mode"], + "GeometryNodeResampleCurve" : ["mode"], + "GeometryNodeSampleCurve" : ["data_type", "mode", "use_all_curves"], + "GeometryNodeTrimCurve" : ["mode"], + "GeometryNodeSetCurveNormal" : ["mode"], + "GeometryNodeCurveHandleTypeSelection" : ["mode", "handle_type"], + "GeometryNodeSetCurveHandlePositions" : ["mode"], + "GeometryNodeCurveSetHandles" : ["mode", "handle_type"], + "GeometryNodeCurveSplineType" : ["spline_type"], #curve primitives - "GeometryNodeCurveArc" : ["mode"], - "GeometryNodeCurvePrimitiveBezierSegment" : ["mode"], - "GeometryNodeCurvePrimitiveCircle" : ["mode"], - "GeometryNodeCurvePrimitiveLine" : ["mode"], - "GeometryNodeCurvePrimitiveQuadrilateral" : ["mode"], + "GeometryNodeCurveArc" : ["mode"], + "GeometryNodeCurvePrimitiveBezierSegment" : ["mode"], + "GeometryNodeCurvePrimitiveCircle" : ["mode"], + "GeometryNodeCurvePrimitiveLine" : ["mode"], + "GeometryNodeCurvePrimitiveQuadrilateral" : ["mode"], #geometry - "GeometryNodeDeleteGeometry" : ["domain", "mode"], + "GeometryNodeDeleteGeometry" : ["domain", "mode"], "GeometryNodeDuplicateElements" : ["domain"], - "GeometryNodeProximity" : ["target_element"], - "GeometryNodeMergeByDistance" : ["mode"], - "GeometryNodeRaycast" : ["data_type", "mapping"], - "GeometryNodeSampleIndex" : ["data_type", "domain", "clamp"], - "GeometryNodeSampleNearest" : ["domain"], - "GeometryNodeSeparateGeometry" : ["domain"], + "GeometryNodeProximity" : ["target_element"], + "GeometryNodeMergeByDistance" : ["mode"], + "GeometryNodeRaycast" : ["data_type", "mapping"], + "GeometryNodeSampleIndex" : ["data_type", "domain", "clamp"], + "GeometryNodeSampleNearest" : ["domain"], + "GeometryNodeSeparateGeometry" : ["domain"], #input - "GeometryNodeCollectionInfo" : ["transform_space"], - "GeometryNodeObjectInfo" : ["transform_space"], - "GeometryNodeInputNamedAttribute" : ["data_type"], + "GeometryNodeCollectionInfo" : ["transform_space"], + "GeometryNodeObjectInfo" : ["transform_space"], + "GeometryNodeInputNamedAttribute" : ["data_type"], #mesh - "GeometryNodeExtrudeMesh" : ["mode"], - "GeometryNodeMeshBoolean" : ["operation"], - "GeometryNodeMeshToPoints" : ["mode"], - "GeometryNodeMeshToVolume" : ["resolution_mode"], - "GeometryNodeSampleNearestSurface" : ["data_type"], - "GeometryNodeSampleUVSurface" : ["data_type"], - "GeometryNodeSubdivisionSurface" : ["uv_smooth", "boundary_smooth"], - "GeometryNodeTriangulate" : ["quad_method", "ngon_method"], - "GeometryNodeScaleElements" : ["domain", "scale_mode"], + "GeometryNodeExtrudeMesh" : ["mode"], + "GeometryNodeMeshBoolean" : ["operation"], + "GeometryNodeMeshToPoints" : ["mode"], + "GeometryNodeMeshToVolume" : ["resolution_mode"], + "GeometryNodeSampleNearestSurface" : ["data_type"], + "GeometryNodeSampleUVSurface" : ["data_type"], + "GeometryNodeSubdivisionSurface" : ["uv_smooth", "boundary_smooth"], + "GeometryNodeTriangulate" : ["quad_method", "ngon_method"], + "GeometryNodeScaleElements" : ["domain", "scale_mode"], #mesh primitives - "GeometryNodeMeshCone" : ["fill_type"], - "GeometryNodeMeshCylinder" : ["fill_type"], - "GeometryNodeMeshCircle" : ["fill_type"], - "GeometryNodeMeshLine" : ["mode"], + "GeometryNodeMeshCone" : ["fill_type"], + "GeometryNodeMeshCylinder" : ["fill_type"], + "GeometryNodeMeshCircle" : ["fill_type"], + "GeometryNodeMeshLine" : ["mode"], #output - "GeometryNodeViewer" : ["domain"], + "GeometryNodeViewer" : ["domain"], #point - "GeometryNodeDistributePointsInVolume" : ["mode"], - "GeometryNodeDistributePointsOnFaces" : ["distribute_method"], - "GeometryNodePointsToVolume" : ["resolution_mode"], + "GeometryNodeDistributePointsInVolume" : ["mode"], + "GeometryNodeDistributePointsOnFaces" : ["distribute_method"], + "GeometryNodePointsToVolume" : ["resolution_mode"], #text "GeometryNodeStringToCurves" : ["overflow", "align_x", "align_y", "pivot_mode"], #texture - "ShaderNodeTexBrick" : ["offset", "offset_frequency", "squash", - "squash_frequency"], - "ShaderNodeTexGradient" : ["gradient_type"], - "GeometryNodeImageTexture" : ["interpolation", "extension"], - "ShaderNodeTexMagic" : ["turbulence_depth"], - "ShaderNodeTexNoise" : ["noise_dimensions"], - "ShaderNodeTexVoronoi" : ["voronoi_dimensions", "feature", "distance"], - "ShaderNodeTexWave" : ["wave_type", "bands_direction", - "wave_profile"], - "ShaderNodeTexWhiteNoise" : ["noise_dimensions"], + "ShaderNodeTexBrick" : ["offset", "offset_frequency", "squash", + "squash_frequency"], + "ShaderNodeTexGradient" : ["gradient_type"], + "GeometryNodeImageTexture" : ["interpolation", "extension"], + "ShaderNodeTexMagic" : ["turbulence_depth"], + "ShaderNodeTexNoise" : ["noise_dimensions"], + "ShaderNodeTexVoronoi" : ["voronoi_dimensions", "feature", "distance"], + "ShaderNodeTexWave" : ["wave_type", "bands_direction", "wave_profile"], + "ShaderNodeTexWhiteNoise" : ["noise_dimensions"], #utilities - "GeometryNodeAccumulateField" : ["data_type", "domain"], - "FunctionNodeAlignEulerToVector" : ["axis", "pivot_axis"], - "FunctionNodeBooleanMath" : ["operation"], - "ShaderNodeClamp" : ["clamp_type"], - "FunctionNodeCompare" : ["data_type", "operation", "mode"], - "GeometryNodeFieldAtIndex" : ["data_type", "domain"], - "FunctionNodeFloatToInt" : ["rounding_mode"], - "GeometryNodeFieldOnDomain" : ["data_type", "domain" ], - "ShaderNodeMapRange" : ["data_type", "interpolation_type", - "clamp"], - "ShaderNodeMath" : ["operation", "use_clamp"], - "FunctionNodeRandomValue" : ["data_type"], - "FunctionNodeRotateEuler" : ["type", "space"], - "GeometryNodeSwitch" : ["input_type"], + "GeometryNodeAccumulateField" : ["data_type", "domain"], + "FunctionNodeAlignEulerToVector" : ["axis", "pivot_axis"], + "FunctionNodeBooleanMath" : ["operation"], + "ShaderNodeClamp" : ["clamp_type"], + "FunctionNodeCompare" : ["data_type", "operation", "mode"], + "GeometryNodeFieldAtIndex" : ["data_type", "domain"], + "FunctionNodeFloatToInt" : ["rounding_mode"], + "GeometryNodeFieldOnDomain" : ["data_type", "domain" ], + "ShaderNodeMapRange" : ["data_type", "interpolation_type", "clamp"], + "ShaderNodeMath" : ["operation", "use_clamp"], + "FunctionNodeRandomValue" : ["data_type"], + "FunctionNodeRotateEuler" : ["type", "space"], + "GeometryNodeSwitch" : ["input_type"], #uv "GeometryNodeUVUnwrap" : ["method"], #vector - "ShaderNodeVectorMath" : ["operation"], - "ShaderNodeVectorRotate" : ["rotation_type", "invert"], + "ShaderNodeVectorMath" : ["operation"], + "ShaderNodeVectorRotate" : ["rotation_type", "invert"], #volume "GeometryNodeVolumeToMesh" : ["resolution_mode"] @@ -156,9 +153,9 @@ def cleanup_string(string: str): return string.lower().replace(' ', '_').replace('.', '_') -class NodeToPython(bpy.types.Operator): - bl_idname = "node.node_to_python" - bl_label = "Node to Python" +class GeoNodesToPython(bpy.types.Operator): + bl_idname = "node.geo_nodes_to_python" + bl_label = "Geo Node to Python" bl_options = {'REGISTER', 'UNDO'} node_group_name: bpy.props.StringProperty(name="Node Group") @@ -286,8 +283,8 @@ def process_node_group(node_group, level): file.write(f"{inner}{node_name}.label = \"{node.label}\"\n") #special nodes - if node.bl_idname in node_settings: - for setting in node_settings[node.bl_idname]: + if node.bl_idname in geo_node_settings: + for setting in geo_node_settings[node.bl_idname]: attr = getattr(node, setting, None) if attr: if type(attr) == str: @@ -458,26 +455,27 @@ def create_main(): file.close() return {'FINISHED'} -class NodeToPythonMenu(bpy.types.Menu): - bl_idname = "NODE_MT_node_to_python" - bl_label = "Node To Python" +class SelectGeoNodesMenu(bpy.types.Menu): + bl_idname = "NODE_MT_ntp_geo_nodes_selection" + bl_label = "Select Geo Nodes" @classmethod def poll(cls, context): return True def draw(self, context): - geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] - layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' + + geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] + for geo_ng in geo_node_groups: - op = layout.operator(NodeToPython.bl_idname, text=geo_ng.name) + op = layout.operator(GeoNodesToPython.bl_idname, text=geo_ng.name) op.node_group_name = geo_ng.name -class NodeToPythonPanel(bpy.types.Panel): +class GeoNodesToPythonPanel(bpy.types.Panel): bl_label = "Geometry Nodes to Python" - bl_idname = "NODE_PT_node_to_python" + bl_idname = "NODE_PT_geo_nodes_to_python" bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' bl_context = '' @@ -496,15 +494,17 @@ def draw(self, context): row = col.row() # Disables menu when len of geometry nodes is 0 - geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] + geo_node_groups = [node + for node in bpy.data.node_groups + if node.type == 'GEOMETRY'] geo_node_groups_exist = len(geo_node_groups) > 0 row.enabled = geo_node_groups_exist row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_node_to_python", text="Geometry Node Groups") - -classes = [NodeToPythonMenu, NodeToPythonPanel, NodeToPython] + row.menu("NODE_MT_ntp_geo_nodes_selection", text="Geometry Nodes") +""" +classes = [SelectGeoNodesMenu, GeoNodesToPythonPanel, GeoNodesToPython] def register(): for cls in classes: @@ -515,4 +515,5 @@ def unregister(): bpy.utils.unregister_class(cls) if __name__ == "__main__": - register() \ No newline at end of file + register() +""" \ No newline at end of file diff --git a/material_to_python.py b/materials.py similarity index 99% rename from material_to_python.py rename to materials.py index 88e92d0..0c4a887 100644 --- a/material_to_python.py +++ b/materials.py @@ -413,7 +413,7 @@ def draw(self, context): row = layout.row() # Disables menu when there are no materials - materials = [mat for mat in bpy.data.materials] + materials = bpy.data.materials materials_exist = len(materials) > 0 row.enabled = materials_exist @@ -421,7 +421,8 @@ def draw(self, context): row.operator_context = 'INVOKE_DEFAULT' row.menu("NODE_MT_npt_mat_selection", text="Materials") -classes = [MaterialToPythonPanel, MaterialToPython] +""" +classes = [MaterialToPythonPanel, MaterialToPython, SelectMaterialMenu] def register(): for cls in classes: @@ -432,4 +433,5 @@ def unregister(): bpy.utils.unregister_class(cls) if __name__ == "__main__": - register() \ No newline at end of file + register() +""" \ No newline at end of file From d7d2edf3647db13ff6c18a4edfe3e4149550682d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 22:01:59 -0600 Subject: [PATCH 010/286] refactor: added utils module for common functionality --- geo_nodes.py | 19 +++++++++++-------- materials.py | 25 ++++++++++++------------- utils.py | 6 ++++++ 3 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 utils.py diff --git a/geo_nodes.py b/geo_nodes.py index 551ad84..a684b01 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -11,6 +11,12 @@ import bpy import os +if "bpy" in locals(): + import importlib + importlib.reload(utils) +else: + from . import utils + #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', 'NodeSocketColor', @@ -150,9 +156,6 @@ 'ShaderNodeVectorCurve', 'ShaderNodeRGBCurve'} -def cleanup_string(string: str): - return string.lower().replace(' ', '_').replace('.', '_') - class GeoNodesToPython(bpy.types.Operator): bl_idname = "node.geo_nodes_to_python" bl_label = "Geo Node to Python" @@ -164,7 +167,7 @@ def execute(self, context): if self.node_group_name not in bpy.data.node_groups: return {'FINISHED'} ng = bpy.data.node_groups[self.node_group_name] - ng_name = cleanup_string(ng.name) + ng_name = utils.clean_string(ng.name) class_name = ng.name.replace(" ", "").replace('.', "") dir = bpy.path.abspath("//") if not dir or dir == "": @@ -205,7 +208,7 @@ def init_class(): file.write("\tdef execute(self, context):\n") def process_node_group(node_group, level): - ng_name = cleanup_string(node_group.name) + ng_name = utils.clean_string(node_group.name) outer = "\t"*level #outer indentation inner = "\t"*(level + 1) #inner indentation @@ -271,7 +274,7 @@ def process_node_group(node_group, level): file.write("\n") #create node - node_name = cleanup_string(node.name) + node_name = utils.clean_string(node.name) file.write(f"{inner}#node {node.name}\n") file.write((f"{inner}{node_name} " f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) @@ -386,7 +389,7 @@ def process_node_group(node_group, level): if node_group.links: file.write(f"{inner}#initialize {ng_name} links\n") for link in node_group.links: - input_node = cleanup_string(link.from_node.name) + input_node = utils.clean_string(link.from_node.name) input_socket = link.from_socket """ @@ -400,7 +403,7 @@ def process_node_group(node_group, level): input_idx = i break - output_node = cleanup_string(link.to_node.name) + output_node = utils.clean_string(link.to_node.name) output_socket = link.to_socket for i, item in enumerate(link.to_node.inputs.items()): diff --git a/materials.py b/materials.py index 0c4a887..13229aa 100644 --- a/materials.py +++ b/materials.py @@ -2,6 +2,12 @@ import mathutils import os +if "bpy" in locals(): + import importlib + importlib.reload(utils) +else: + from . import utils + #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', 'NodeSocketColor', @@ -93,13 +99,6 @@ 'ShaderNodeVectorCurve', 'ShaderNodeRGBCurve'} -def clean_string(string: str): - bad_chars = [' ', '.', '/'] - clean_str = string.lower() - for char in bad_chars: - clean_str = clean_str.replace(char, '_') - return clean_str - class MaterialToPython(bpy.types.Operator): bl_idname = "node.material_to_python" bl_label = "Material to Python" @@ -113,7 +112,7 @@ def execute(self, context): #set up addon file ng = bpy.data.materials[self.material_name].node_tree - ng_name = clean_string(self.material_name) + ng_name = utils.clean_string(self.material_name) class_name = ng.name.replace(" ", "") dir = bpy.path.abspath("//") @@ -154,9 +153,9 @@ def init_class(): file.write("\tdef execute(self, context):\n") def process_mat_node_group(node_group, level): - ng_name = clean_string(node_group.name) + ng_name = utils.clean_string(node_group.name) if level == 2: - ng_name = clean_string(self.material_name) + ng_name = utils.clean_string(self.material_name) outer = "\t"*level inner = "\t"*(level + 1) @@ -184,7 +183,7 @@ def process_mat_node_group(node_group, level): if node.bl_idname == 'ShaderNodeGroup': process_mat_node_group(node.node_tree, level + 1) #create node - node_name = clean_string(node.name) + node_name = utils.clean_string(node.name) if node_name == "": node_name = f"node_{unnamed_index}" unnamed_index += 1 @@ -314,7 +313,7 @@ def default_value(i, socket, list_name): if node_group.links: file.write(f"{inner}#initialize {ng_name} links\n") for link in node_group.links: - input_node = clean_string(link.from_node.name) + input_node = utils.clean_string(link.from_node.name) input_socket = link.from_socket """ @@ -328,7 +327,7 @@ def default_value(i, socket, list_name): input_idx = i break - output_node = clean_string(link.to_node.name) + output_node = utils.clean_string(link.to_node.name) output_socket = link.to_socket for i, item in enumerate(link.to_node.inputs.items()): diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..6afff6b --- /dev/null +++ b/utils.py @@ -0,0 +1,6 @@ +def clean_string(string: str): + bad_chars = [' ', '.', '/'] + clean_str = string.lower() + for char in bad_chars: + clean_str = clean_str.replace(char, '_') + return clean_str \ No newline at end of file From 1c6bead625146f9103b16b697cdb68a2ea6f49b0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 22:06:44 -0600 Subject: [PATCH 011/286] style: removed unused logic that was commented out --- geo_nodes.py | 16 +--------------- materials.py | 17 +---------------- 2 files changed, 2 insertions(+), 31 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index a684b01..f65e2b0 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -505,18 +505,4 @@ def draw(self, context): row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_ntp_geo_nodes_selection", text="Geometry Nodes") -""" -classes = [SelectGeoNodesMenu, GeoNodesToPythonPanel, GeoNodesToPython] - -def register(): - for cls in classes: - bpy.utils.register_class(cls) - -def unregister(): - for cls in classes: - bpy.utils.unregister_class(cls) - -if __name__ == "__main__": - register() -""" \ No newline at end of file + row.menu("NODE_MT_ntp_geo_nodes_selection", text="Geometry Nodes") \ No newline at end of file diff --git a/materials.py b/materials.py index 13229aa..e4e3157 100644 --- a/materials.py +++ b/materials.py @@ -418,19 +418,4 @@ def draw(self, context): row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_npt_mat_selection", text="Materials") - -""" -classes = [MaterialToPythonPanel, MaterialToPython, SelectMaterialMenu] - -def register(): - for cls in classes: - bpy.utils.register_class(cls) - -def unregister(): - for cls in classes: - bpy.utils.unregister_class(cls) - -if __name__ == "__main__": - register() -""" \ No newline at end of file + row.menu("NODE_MT_npt_mat_selection", text="Materials") \ No newline at end of file From f610177b368e85b24ffd9d343beefc4a6fcd759c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 22:28:14 -0600 Subject: [PATCH 012/286] docs: update README --- README.md | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 2a55cd8..d5a9bbc 100644 --- a/README.md +++ b/README.md @@ -9,43 +9,53 @@ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ## About -A Blender add-on to create add-ons! This script will take your Geometry Node group and convert it into a legible Python script. +A Blender add-on to create add-ons! This script will take your Geometry Nodes or Materials and convert them into legible Python add-ons! It automatically handles node layout, default values, sub-node groups, naming, and more! -I think Geometry Nodes is a powerful tool that's fairly accessible to people, and I wanted to create a lightweight, faster way of distributing them than just passing around blend files. It also makes scripting Geometry Nodes easier for add-on creators in cases when Python is needed, as you don't need to recreate the whole node tree from scratch to do things like +I think Blender's node-based editors are powerful, yet accessible tools, and I wanted to make scripting them for add-on creators. Combining Python with node based setups allows you to do things that would otherwise be tedious or impossible, such as * `for` loops * different node trees for different versions or settings * interfacing with other parts of the software. -NodeToPython is compatible with Blender 3.0-3.4 +NodeToPython recreates the node networks for you, so you can focus on the good stuff. ## Supported Versions -Blender 3.0 - 3.4 +NodeToPython v2.0 is compatible with Blender 3.0 - 3.4 on Windows, macOS, and Linux. I generally try to update the addon to handle new nodes around the beta release of each update. -* Once the 3.5 beta drops, I'll start adding nodes from that release +## Installation +1. Download the .zip file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) +2. In Blender, navigate to `Edit > Preferences > Add-ons` +3. Click Install, and find where you downloaded the zip file. Then hit the `Install Add-on` button, and you're done! -## Installation and Usage -Download `node_to_python.py`, and install it to Blender like other add-ons. Then, go to `Object > Node to Python`, and type in the name of your node group. It will then save an add-on to where your blend file is stored. +## Usage +Once you've installed the add-on, you'll see a new tab to the side of a Node Editor. + +In the tab, there's panels to create add-ons for Geometry Nodes and Materials, each with a drop-down menu. + +Just select the one you want, and soon a python file will be created in an `addons` folder located in the folder where your blend file is. + +From here, you can install it like a regular add-on. ## Future -* Expansion to Shader and Compositing nodes +* Expansion to Compositing nodes * Copy over referenced assets in the scene (Collections, Objects, Materials, Textures, etc.) * Automatically format code to be PEP8 compliant ## Potential Issues -* This should work on Unix-like systems (macOS, Linux), but I haven't tested it on Windows yet. If you use Windows, please let me know if it does! -* As of version 1.0.0, the add-on will not set default values for +* As of version 2.0.0, the add-on will not set default values for * Collections * Images * Materials * Objects * Textures * Scripts - * IES + * IES files * Filepaths - as they won't exist in every blend file. In the future, I may have the script automatically recreate these assets, espcially with materials. + as they won't exist in every blend file. I'm expecting to support some of these in the future. + + There are a few nodes that don't set their default values like other ones, though these should also soon be supported. ## Bug Reports and Suggestions @@ -53,7 +63,7 @@ When submitting an issue, please include * Your version of Blender * Your operating system -* A short description of what you were trying to accomplish, or steps to reproduce the issue - -Suggestions for how to improve the add-on are more than welcome! +* A short description of what you were trying to accomplish, or steps to reproduce the issue. +* Sample blend files are more than welcome! +Suggestions for how to improve the add-on are more than welcome! \ No newline at end of file From 5c7be170a6a9c1305ad71baa68e7950428eb0cd6 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 22:38:36 -0600 Subject: [PATCH 013/286] fix: properly imports utils file --- geo_nodes.py | 6 +----- materials.py | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index f65e2b0..2a6fba7 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -11,11 +11,7 @@ import bpy import os -if "bpy" in locals(): - import importlib - importlib.reload(utils) -else: - from . import utils +import utils #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', diff --git a/materials.py b/materials.py index e4e3157..ac87a53 100644 --- a/materials.py +++ b/materials.py @@ -2,11 +2,7 @@ import mathutils import os -if "bpy" in locals(): - import importlib - importlib.reload(utils) -else: - from . import utils +import .utils #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', From 2ca7a7e372dbc7b9de8bfabe8a575b2e24f22dab Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 22:39:47 -0600 Subject: [PATCH 014/286] fix: materials properly imports utils --- materials.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/materials.py b/materials.py index ac87a53..1d77999 100644 --- a/materials.py +++ b/materials.py @@ -2,7 +2,7 @@ import mathutils import os -import .utils +import utils #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', From ddda89c3053d47a82e579c0142eccc518248eb71 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 23:46:48 -0600 Subject: [PATCH 015/286] feat: addon now creates material as well as shader node group --- geo_nodes.py | 4 ++-- materials.py | 46 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 2a6fba7..606ee9a 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -11,7 +11,7 @@ import bpy import os -import utils +from . import utils #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', @@ -358,7 +358,7 @@ def process_node_group(node_group, level): handle = f"\'{point.handle_type}\'" file.write(f"{point_j}.handle_type = {handle}\n") - file.write(f"{inner}#update curve after changes") + file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping}.update()\n") if node.bl_idname != 'NodeReroute': diff --git a/materials.py b/materials.py index 1d77999..9d1ba87 100644 --- a/materials.py +++ b/materials.py @@ -2,7 +2,7 @@ import mathutils import os -import utils +from . import utils #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', @@ -108,6 +108,11 @@ def execute(self, context): #set up addon file ng = bpy.data.materials[self.material_name].node_tree + if ng is None: + self.report({'ERROR'}, + ("NodeToPython: This doesn't seem to be a valid " + "material. Is Use Nodes selected?")) + return {'CANCELLED'} ng_name = utils.clean_string(self.material_name) class_name = ng.name.replace(" ", "") @@ -148,10 +153,19 @@ def init_class(): file.write("\tdef execute(self, context):\n") + def create_material(): + file.write((f"\t\tmat = bpy.data.materials.new(" + f"name = \"{self.material_name}\")\n")) + file.write(f"\t\tmat.use_nodes = True\n") + create_material() + def process_mat_node_group(node_group, level): ng_name = utils.clean_string(node_group.name) - if level == 2: + ng_label = node_group.name + + if level == 2: #outermost node group ng_name = utils.clean_string(self.material_name) + ng_label = self.material_name outer = "\t"*level inner = "\t"*(level + 1) @@ -159,11 +173,15 @@ def process_mat_node_group(node_group, level): #initialize node group file.write(f"{outer}#initialize {ng_name} node group\n") file.write(f"{outer}def {ng_name}_node_group():\n") - file.write((f"{inner}{ng_name}" - f"= bpy.data.node_groups.new(" - f"type = \"ShaderNodeTree\", " - f"name = \"{node_group.name}\")\n")) - file.write("\n") + + if level == 2: #outermost node group + file.write(f"{inner}{ng_name} = mat.node_tree\n") + else: + file.write((f"{inner}{ng_name}" + f"= bpy.data.node_groups.new(" + f"type = \"ShaderNodeTree\", " + f"name = \"{ng_label}\")\n")) + file.write("\n") #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") @@ -177,7 +195,8 @@ def process_mat_node_group(node_group, level): unnamed_index = 0 for node in node_group.nodes: if node.bl_idname == 'ShaderNodeGroup': - process_mat_node_group(node.node_tree, level + 1) + if node.node_tree is not None: + process_mat_node_group(node.node_tree, level + 1) #create node node_name = utils.clean_string(node.name) if node_name == "": @@ -206,9 +225,10 @@ def process_mat_node_group(node_group, level): file.write((f"{inner}{node_name}.{setting} " f"= {attr}\n")) elif node.bl_idname == 'ShaderNodeGroup': - file.write((f"{inner}{node_name}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) + if node.node_tree is not None: + file.write((f"{inner}{node_name}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp = node.color_ramp file.write("\n") @@ -273,7 +293,7 @@ def process_mat_node_group(node_group, level): handle = f"\'{point.handle_type}\'" file.write(f"{point_j}.handle_type = {handle}\n") - file.write(f"{inner}#update curve after changes") + file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping}.update()\n") if node.bl_idname != 'NodeReroute': @@ -336,9 +356,11 @@ def default_value(i, socket, list_name): file.write((f"{inner}{ng_name}.links.new({input_node}" f".outputs[{input_idx}], " f"{output_node}.inputs[{output_idx}])\n")) + file.write(f"{outer}{ng_name}_node_group()\n") process_mat_node_group(ng, 2) + file.write("\t\treturn {'FINISHED'}\n\n") """Create the function that adds the addon to the menu""" From a29af8f5de51c428317c2d65ec9897e156b795c9 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 9 Jan 2023 23:50:19 -0600 Subject: [PATCH 016/286] fix: issue where deleted node groups would still be referenced --- geo_nodes.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 606ee9a..cdbcfcd 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -222,7 +222,8 @@ def process_node_group(node_group, level): file.write(f"{inner}#initialize {ng_name} nodes\n") for node in node_group.nodes: if node.bl_idname == 'GeometryNodeGroup': - process_node_group(node.node_tree, level + 1) + if node.node_tree is not None: + process_node_group(node.node_tree, level + 1) elif node.bl_idname == 'NodeGroupInput': file.write(f"{inner}#{ng_name} inputs\n") for i, input in enumerate(node.outputs): @@ -291,9 +292,10 @@ def process_node_group(node_group, level): file.write((f"{inner}{node_name}.{setting} " f"= {attr}\n")) elif node.bl_idname == 'GeometryNodeGroup': - file.write((f"{inner}{node_name}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) + if node.node_tree is not None: + file.write((f"{inner}{node_name}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp = node.color_ramp file.write("\n") From c6d303560298ff24f4f1806f3953781551fdd315 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 10 Jan 2023 00:06:06 -0600 Subject: [PATCH 017/286] fix: curves not updating --- node_to_python.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index 04699bb..c3e5988 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -320,7 +320,7 @@ def process_node_group(node_group, level): file.write((f"{inner}{node_name}_cre_{i}.color = " f"({r}, {g}, {b}, {a})\n\n")) elif node.bl_idname in curve_nodes: - file.write(f"{inner}#mapping settings") + file.write(f"{inner}#mapping settings\n") mapping = f"{inner}{node_name}.mapping" extend = f"\'{node.mapping.extend}\'" @@ -348,7 +348,7 @@ def process_node_group(node_group, level): file.write(f"{mapping}.use_clip = {use_clip}\n") for i, curve in enumerate(node.mapping.curves): - file.write(f"{inner}#curve {i}") + file.write(f"{inner}#curve {i}\n") curve_i = f"{node_name}_curve_{i}" file.write((f"{inner}{curve_i} = " f"{node_name}.mapping.curves[{i}]\n")) @@ -362,7 +362,7 @@ def process_node_group(node_group, level): handle = f"\'{point.handle_type}\'" file.write(f"{point_j}.handle_type = {handle}\n") - file.write(f"{inner}#update curve after changes") + file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping}.update()\n") if node.bl_idname != 'NodeReroute': From da0d57f7cedc92ce45008fb7f42b2e05f71f6650 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:21:23 -0600 Subject: [PATCH 018/286] fix: inputs would be set for each group input node --- node_to_python.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index c3e5988..8f7ca3c 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 2, 2), + "version": (1, 2, 4), "blender": (3, 0, 0), "location": "Node", "category": "Node", @@ -222,12 +222,14 @@ def process_node_group(node_group, level): f"name = \"{node_group.name}\")\n")) file.write("\n") + inputs_set = False + #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") for node in node_group.nodes: if node.bl_idname == 'GeometryNodeGroup': process_node_group(node.node_tree, level + 1) - elif node.bl_idname == 'NodeGroupInput': + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: file.write(f"{inner}#{ng_name} inputs\n") for i, input in enumerate(node.outputs): if input.bl_idname != "NodeSocketVirtual": @@ -264,6 +266,7 @@ def process_node_group(node_group, level): f"{socket.max_value}\n")) file.write("\n") file.write("\n") + inputs_set = True elif node.bl_idname == 'NodeGroupOutput': file.write(f"{inner}#{ng_name} outputs\n") for output in node.inputs: From 428ebeda8dc3f6c60695bc704e572a86d41b71d0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:42:29 -0600 Subject: [PATCH 019/286] feat: added default attribute names, descriptions, and hide value to group inputs --- node_to_python.py | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index c3e5988..120c7c4 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 2, 2), + "version": (1, 2, 4), "blender": (3, 0, 0), "location": "Node", "category": "Node", @@ -222,12 +222,14 @@ def process_node_group(node_group, level): f"name = \"{node_group.name}\")\n")) file.write("\n") + inputs_set = False + #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") for node in node_group.nodes: if node.bl_idname == 'GeometryNodeGroup': process_node_group(node.node_tree, level + 1) - elif node.bl_idname == 'NodeGroupInput': + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: file.write(f"{inner}#{ng_name} inputs\n") for i, input in enumerate(node.outputs): if input.bl_idname != "NodeSocketVirtual": @@ -235,8 +237,8 @@ def process_node_group(node_group, level): file.write((f"{inner}{ng_name}.inputs.new" f"(\"{input.bl_idname}\", " f"\"{input.name}\")\n")) - if input.bl_idname in default_sockets: - socket = node_group.inputs[i] + socket = node_group.inputs[i] + if input.bl_idname in default_sockets: if input.bl_idname == 'NodeSocketColor': col = socket.default_value r, g, b, a = col[0], col[1], col[2], col[3] @@ -251,19 +253,42 @@ def process_node_group(node_group, level): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".default_value = {dv}\n")) - if input.bl_idname in value_sockets: - #min value + + #min value + if hasattr(socket, "min_value"): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".min_value = " f"{socket.min_value}\n")) - #max value + #max value + if hasattr(socket, "max_value"): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".max_value = " f"{socket.max_value}\n")) + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".default_attribute_name = \"" + f"{socket.default_attribute_name}" + f"\"\n")) + #description + if socket.description != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".description = " + f"\"{socket.description}\"\n")) + #hide value + if socket.hide_value is True: + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".hide_value = " + f"{socket.hide_value}\n")) file.write("\n") file.write("\n") + inputs_set = True elif node.bl_idname == 'NodeGroupOutput': file.write(f"{inner}#{ng_name} outputs\n") for output in node.inputs: From 18c65605b0f8b7b5aae1decee94b381e2d5dc436 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:45:37 -0600 Subject: [PATCH 020/286] feat: added descriptions and hide values to group outputs --- node_to_python.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index 120c7c4..79c065b 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -223,7 +223,8 @@ def process_node_group(node_group, level): file.write("\n") inputs_set = False - + outputs_set = False + #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") for node in node_group.nodes: @@ -289,14 +290,31 @@ def process_node_group(node_group, level): file.write("\n") file.write("\n") inputs_set = True - elif node.bl_idname == 'NodeGroupOutput': + + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: file.write(f"{inner}#{ng_name} outputs\n") - for output in node.inputs: + for i, output in enumerate(node.inputs): if output.bl_idname != 'NodeSocketVirtual': file.write((f"{inner}{ng_name}.outputs" f".new(\"{output.bl_idname}\", " f"\"{output.name}\")\n")) + + socket = node_group.outputs[i] + #description + if socket.description != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".description = " + f"\"{socket.description}\"\n")) + #hide value + if socket.hide_value is True: + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".hide_value = " + f"{socket.hide_value}\n")) + file.write("\n") + outputs_set = True #create node node_name = cleanup_string(node.name) From 553d7b61dcbfe760d6eb7b1619a69be079e55e2f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:52:54 -0600 Subject: [PATCH 021/286] feat: added default attribute names and attribute domains to outputs --- node_to_python.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index 79c065b..a38f867 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -303,15 +303,30 @@ def process_node_group(node_group, level): #description if socket.description != "": file.write((f"{inner}{ng_name}" - f".inputs[{i}]" + f".outputs[{i}]" f".description = " f"\"{socket.description}\"\n")) #hide value if socket.hide_value is True: file.write((f"{inner}{ng_name}" - f".inputs[{i}]" + f".outputs[{i}]" f".hide_value = " f"{socket.hide_value}\n")) + + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".default_attribute_name = \"" + f"{socket.default_attribute_name}" + f"\"\n")) + #attribute domain + if hasattr(socket, "attribute_domain"): + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".attribute_domain = " + f"\'{socket.attribute_domain}\'\n")) file.write("\n") outputs_set = True From a42adbc29bd72354f4296922eb90eeb9f30283a7 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:55:32 -0600 Subject: [PATCH 022/286] feat: updated versioning --- node_to_python.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node_to_python.py b/node_to_python.py index 55730e1..af8acac 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 2, 4), + "version": (1, 3, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", From f91ef2ce9dfa091387bc1ae80f721f1e5743be83 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 00:58:56 -0600 Subject: [PATCH 023/286] feat: geo node input/output update --- geo_nodes.py | 73 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index cdbcfcd..bfa2a00 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -218,13 +218,16 @@ def process_node_group(node_group, level): f"name = \"{node_group.name}\")\n")) file.write("\n") + inputs_set = False + outputs_set = False + #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") for node in node_group.nodes: if node.bl_idname == 'GeometryNodeGroup': if node.node_tree is not None: process_node_group(node.node_tree, level + 1) - elif node.bl_idname == 'NodeGroupInput': + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: file.write(f"{inner}#{ng_name} inputs\n") for i, input in enumerate(node.outputs): if input.bl_idname != "NodeSocketVirtual": @@ -232,8 +235,8 @@ def process_node_group(node_group, level): file.write((f"{inner}{ng_name}.inputs.new" f"(\"{input.bl_idname}\", " f"\"{input.name}\")\n")) - if input.bl_idname in default_sockets: - socket = node_group.inputs[i] + socket = node_group.inputs[i] + if input.bl_idname in default_sockets: if input.bl_idname == 'NodeSocketColor': col = socket.default_value r, g, b, a = col[0], col[1], col[2], col[3] @@ -248,27 +251,81 @@ def process_node_group(node_group, level): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".default_value = {dv}\n")) - if input.bl_idname in value_sockets: - #min value + + #min value + if hasattr(socket, "min_value"): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".min_value = " f"{socket.min_value}\n")) - #max value + #max value + if hasattr(socket, "max_value"): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".max_value = " f"{socket.max_value}\n")) + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".default_attribute_name = \"" + f"{socket.default_attribute_name}" + f"\"\n")) + #description + if socket.description != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".description = " + f"\"{socket.description}\"\n")) + #hide value + if socket.hide_value is True: + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".hide_value = " + f"{socket.hide_value}\n")) file.write("\n") file.write("\n") - elif node.bl_idname == 'NodeGroupOutput': + inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: file.write(f"{inner}#{ng_name} outputs\n") - for output in node.inputs: + for i, output in enumerate(node.inputs): if output.bl_idname != 'NodeSocketVirtual': file.write((f"{inner}{ng_name}.outputs" f".new(\"{output.bl_idname}\", " f"\"{output.name}\")\n")) + + socket = node_group.outputs[i] + #description + if socket.description != "": + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".description = " + f"\"{socket.description}\"\n")) + #hide value + if socket.hide_value is True: + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".hide_value = " + f"{socket.hide_value}\n")) + + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".default_attribute_name = \"" + f"{socket.default_attribute_name}" + f"\"\n")) + #attribute domain + if hasattr(socket, "attribute_domain"): + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".attribute_domain = " + f"\'{socket.attribute_domain}\'\n")) file.write("\n") + outputs_set = True #create node node_name = utils.clean_string(node.name) From 5ae1843e306933330ee8ecf2ee6e70416af89b60 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 01:28:47 -0600 Subject: [PATCH 024/286] style: deleted unused sets --- geo_nodes.py | 5 ----- materials.py | 12 ------------ 2 files changed, 17 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index bfa2a00..0aa3779 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -20,11 +20,6 @@ 'NodeSocketInt', 'NodeSocketVector'} -#node tree input sockets that have min/max properties -value_sockets = {'NodeSocketInt', - 'NodeSocketFloat', - 'NodeSocketVector'} - #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', 'NodeSocketGeometry', diff --git a/materials.py b/materials.py index 9d1ba87..4a0eb8f 100644 --- a/materials.py +++ b/materials.py @@ -4,18 +4,6 @@ from . import utils -#node tree input sockets that have default properties -default_sockets = {'NodeSocketBool', - 'NodeSocketColor', - 'NodeSocketFloat', - 'NodeSocketInt', - 'NodeSocketVector'} - -#node tree input sockets that have min/max properties -value_sockets = {'NodeSocketInt', - 'NodeSocketFloat', - 'NodeSocketVector'} - #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', 'NodeSocketGeometry', From b5149b389b330c355ce90e3035536d88df3f5869 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 01:49:00 -0600 Subject: [PATCH 025/286] refactor: create_header moved to utils --- geo_nodes.py | 33 +++++++++++++-------------------- materials.py | 22 ++++------------------ utils.py | 39 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 54 insertions(+), 40 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 0aa3779..6d1deee 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -149,42 +149,35 @@ class GeoNodesToPython(bpy.types.Operator): bl_idname = "node.geo_nodes_to_python" - bl_label = "Geo Node to Python" + bl_label = "Geo Nodes to Python" bl_options = {'REGISTER', 'UNDO'} - node_group_name: bpy.props.StringProperty(name="Node Group") + geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def execute(self, context): - if self.node_group_name not in bpy.data.node_groups: - return {'FINISHED'} - ng = bpy.data.node_groups[self.node_group_name] + #find node group to replicate + ng = bpy.data.node_groups[self.geo_nodes_group_name] + + #set up names to use in generated addon ng_name = utils.clean_string(ng.name) class_name = ng.name.replace(" ", "").replace('.', "") + + #find base directory to save new addon dir = bpy.path.abspath("//") if not dir or dir == "": self.report({'ERROR'}, ("NodeToPython: Save your blend file before using " "NodeToPython!")) return {'CANCELLED'} + + #save in /addons/ subdirectory addon_dir = os.path.join(dir, "addons") if not os.path.exists(addon_dir): os.mkdir(addon_dir) file = open(f"{addon_dir}/{ng_name}_addon.py", "w") - """Sets up bl_info and imports Blender""" - def header(): - file.write("bl_info = {\n") - file.write(f"\t\"name\" : \"{ng.name}\",\n") - file.write("\t\"author\" : \"Node To Python\",\n") - file.write("\t\"version\" : (1, 0, 0),\n") - file.write(f"\t\"blender\" : {bpy.app.version},\n") - file.write("\t\"location\" : \"Object\",\n") - file.write("\t\"category\" : \"Object\"\n") - file.write("}\n") - file.write("\n") - file.write("import bpy\n") - file.write("\n") - header() + #Sets up bl_info and imports the Blender API + utils.create_header(file, ng) """Creates the class and its variables""" def init_class(): @@ -195,7 +188,7 @@ def init_class(): file.write("\n") init_class() - """Construct the execute function""" + #Construct the execute function file.write("\tdef execute(self, context):\n") def process_node_group(node_group, level): diff --git a/materials.py b/materials.py index 4a0eb8f..e522ad2 100644 --- a/materials.py +++ b/materials.py @@ -91,16 +91,15 @@ class MaterialToPython(bpy.types.Operator): material_name: bpy.props.StringProperty(name="Node Group") def execute(self, context): - if self.material_name not in bpy.data.materials: - return {'FINISHED'} - - #set up addon file + #find node group to replicate ng = bpy.data.materials[self.material_name].node_tree if ng is None: self.report({'ERROR'}, ("NodeToPython: This doesn't seem to be a valid " "material. Is Use Nodes selected?")) return {'CANCELLED'} + + #set up names to use in generated addon ng_name = utils.clean_string(self.material_name) class_name = ng.name.replace(" ", "") @@ -115,20 +114,7 @@ def execute(self, context): os.mkdir(addon_dir) file = open(f"{addon_dir}/{ng_name}_addon.py", "w") - """Sets up bl_info and imports Blender""" - def header(): - file.write("bl_info = {\n") - file.write(f"\t\"name\" : \"{self.material_name}\",\n") - file.write("\t\"author\" : \"Node To Python\",\n") - file.write("\t\"version\" : (1, 0, 0),\n") - file.write(f"\t\"blender\" : {bpy.app.version},\n") - file.write("\t\"location\" : \"Object\",\n") - file.write("\t\"category\" : \"Object\"\n") - file.write("}\n") - file.write("\n") - file.write("import bpy\n") - file.write("\n") - header() + utils.create_header(file, ng) """Creates the class and its variables""" def init_class(): diff --git a/utils.py b/utils.py index 6afff6b..50bb856 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,41 @@ -def clean_string(string: str): +import bpy +import typing + +def clean_string(string: str) -> str: + """ + Cleans up a string for use as a variable or file name + + Parameters: + string (str): The input string + + Returns: + str: The input string with nasty characters converted to underscores + """ + bad_chars = [' ', '.', '/'] clean_str = string.lower() for char in bad_chars: clean_str = clean_str.replace(char, '_') - return clean_str \ No newline at end of file + return clean_str + +def create_header(file: typing.TextIO, node_group): + """ + Sets up the bl_info and imports the Blender API + + Parameters: + file (typing.TextIO): the file for the generated add-on + node_group: the node group object we're converting into an add-on + """ + + file.write("bl_info = {\n") + file.write(f"\t\"name\" : \"{node_group.name}\",\n") + file.write("\t\"author\" : \"Node To Python\",\n") + file.write("\t\"version\" : (1, 0, 0),\n") + file.write(f"\t\"blender\" : {bpy.app.version},\n") + file.write("\t\"location\" : \"Object\",\n") + file.write("\t\"category\" : \"Object\"\n") + file.write("}\n") + file.write("\n") + file.write("import bpy\n") + file.write("\n") + From c1964e8614f891fb0785bafb123ae219d87b124d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 02:55:02 -0600 Subject: [PATCH 026/286] refactor: init_operator, make_indents, and create_node moved to utils --- geo_nodes.py | 55 ++++++++++++----------------------- materials.py | 36 +++-------------------- utils.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 98 insertions(+), 74 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 6d1deee..ce6e2c8 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -176,26 +176,15 @@ def execute(self, context): os.mkdir(addon_dir) file = open(f"{addon_dir}/{ng_name}_addon.py", "w") - #Sets up bl_info and imports the Blender API utils.create_header(file, ng) + utils.init_operator(file, class_name, ng_name, ng.name) - """Creates the class and its variables""" - def init_class(): - file.write(f"class {class_name}(bpy.types.Operator):\n") - file.write(f"\tbl_idname = \"object.{ng_name}\"\n") - file.write(f"\tbl_label = \"{ng.name}\"\n") - file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") - file.write("\n") - init_class() - - #Construct the execute function file.write("\tdef execute(self, context):\n") def process_node_group(node_group, level): ng_name = utils.clean_string(node_group.name) - outer = "\t"*level #outer indentation - inner = "\t"*(level + 1) #inner indentation + outer, inner = utils.make_indents(level) #initialize node group file.write(f"{outer}#initialize {ng_name} node group\n") @@ -315,18 +304,10 @@ def process_node_group(node_group, level): file.write("\n") outputs_set = True + unnamed_idx = 0 #create node - node_name = utils.clean_string(node.name) - file.write(f"{inner}#node {node.name}\n") - file.write((f"{inner}{node_name} " - f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) - file.write((f"{inner}{node_name}.location " - f"= ({node.location.x}, {node.location.y})\n")) - file.write((f"{inner}{node_name}.width, {node_name}.height " - f"= {node.width}, {node.height}\n")) - if node.label: - file.write(f"{inner}{node_name}.label = \"{node.label}\"\n") - + node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name) + #special nodes if node.bl_idname in geo_node_settings: for setting in geo_node_settings[node.bl_idname]: @@ -334,37 +315,37 @@ def process_node_group(node_group, level): if attr: if type(attr) == str: attr = f"\'{attr}\'" - file.write((f"{inner}{node_name}.{setting} " + file.write((f"{inner}{node_var}.{setting} " f"= {attr}\n")) elif node.bl_idname == 'GeometryNodeGroup': if node.node_tree is not None: - file.write((f"{inner}{node_name}.node_tree = " + file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp = node.color_ramp file.write("\n") - file.write((f"{inner}{node_name}.color_ramp.color_mode = " + file.write((f"{inner}{node_var}.color_ramp.color_mode = " f"\'{color_ramp.color_mode}\'\n")) - file.write((f"{inner}{node_name}.color_ramp" + file.write((f"{inner}{node_var}.color_ramp" f".hue_interpolation = " f"\'{color_ramp.hue_interpolation}\'\n")) - file.write((f"{inner}{node_name}.color_ramp.interpolation " + file.write((f"{inner}{node_var}.color_ramp.interpolation " f"= '{color_ramp.interpolation}'\n")) file.write("\n") for i, element in enumerate(color_ramp.elements): - file.write((f"{inner}{node_name}_cre_{i} = " - f"{node_name}.color_ramp.elements" + file.write((f"{inner}{node_var}_cre_{i} = " + f"{node_var}.color_ramp.elements" f".new({element.position})\n")) - file.write((f"{inner}{node_name}_cre_{i}.alpha = " + file.write((f"{inner}{node_var}_cre_{i}.alpha = " f"{element.alpha}\n")) col = element.color r, g, b, a = col[0], col[1], col[2], col[3] - file.write((f"{inner}{node_name}_cre_{i}.color = " + file.write((f"{inner}{node_var}_cre_{i}.color = " f"({r}, {g}, {b}, {a})\n\n")) elif node.bl_idname in curve_nodes: file.write(f"{inner}#mapping settings\n") - mapping = f"{inner}{node_name}.mapping" + mapping = f"{inner}{node_var}.mapping" extend = f"\'{node.mapping.extend}\'" file.write(f"{mapping}.extend = {extend}\n") @@ -392,9 +373,9 @@ def process_node_group(node_group, level): for i, curve in enumerate(node.mapping.curves): file.write(f"{inner}#curve {i}\n") - curve_i = f"{node_name}_curve_{i}" + curve_i = f"{node_var}_curve_{i}" file.write((f"{inner}{curve_i} = " - f"{node_name}.mapping.curves[{i}]\n")) + f"{node_var}.mapping.curves[{i}]\n")) for j, point in enumerate(curve.points): point_j = f"{inner}{curve_i}_point_{j}" @@ -423,7 +404,7 @@ def process_node_group(node_group, level): dv = input.default_value if dv is not None: file.write(f"{inner}#{input.identifier}\n") - file.write((f"{inner}{node_name}" + file.write((f"{inner}{node_var}" f".inputs[{i}]" f".default_value = {dv}\n")) file.write("\n") diff --git a/materials.py b/materials.py index e522ad2..d2d843e 100644 --- a/materials.py +++ b/materials.py @@ -115,15 +115,7 @@ def execute(self, context): file = open(f"{addon_dir}/{ng_name}_addon.py", "w") utils.create_header(file, ng) - - """Creates the class and its variables""" - def init_class(): - file.write(f"class {class_name}(bpy.types.Operator):\n") - file.write(f"\tbl_idname = \"object.{ng_name}\"\n") - file.write(f"\tbl_label = \"{self.material_name}\"\n") - file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") - file.write("\n") - init_class() + utils.init_operator(file, class_name, ng_name, self.material_name) file.write("\tdef execute(self, context):\n") @@ -141,8 +133,7 @@ def process_mat_node_group(node_group, level): ng_name = utils.clean_string(self.material_name) ng_label = self.material_name - outer = "\t"*level - inner = "\t"*(level + 1) + outer, inner = utils.make_indents(level) #initialize node group file.write(f"{outer}#initialize {ng_name} node group\n") @@ -160,32 +151,13 @@ def process_mat_node_group(node_group, level): #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") - """ - The bl_idname for AOV output nodes is the name field. - I've been using these for the variable names, but if you don't name - the AOV node it just doesn't assign anything, so we need to do it - manually. - """ - unnamed_index = 0 + unnamed_idx = 0 for node in node_group.nodes: if node.bl_idname == 'ShaderNodeGroup': if node.node_tree is not None: process_mat_node_group(node.node_tree, level + 1) - #create node - node_name = utils.clean_string(node.name) - if node_name == "": - node_name = f"node_{unnamed_index}" - unnamed_index += 1 - file.write(f"{inner}#node {node.name}\n") - file.write((f"{inner}{node_name} " - f"= {ng_name}.nodes.new(\"{node.bl_idname}\")\n")) - file.write((f"{inner}{node_name}.location " - f"= ({node.location.x}, {node.location.y})\n")) - file.write((f"{inner}{node_name}.width, {node_name}.height " - f"= {node.width}, {node.height}\n")) - if node.label: - file.write(f"{inner}{node_name}.label = \"{node.label}\"\n") + node_name, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) #special nodes if node.bl_idname in node_settings: diff --git a/utils.py b/utils.py index 50bb856..875a164 100644 --- a/utils.py +++ b/utils.py @@ -1,5 +1,5 @@ import bpy -import typing +from typing import TextIO, Tuple def clean_string(string: str) -> str: """ @@ -18,17 +18,17 @@ def clean_string(string: str) -> str: clean_str = clean_str.replace(char, '_') return clean_str -def create_header(file: typing.TextIO, node_group): +def create_header(file: TextIO, node_tree: bpy.types.NodeTree): """ Sets up the bl_info and imports the Blender API Parameters: - file (typing.TextIO): the file for the generated add-on - node_group: the node group object we're converting into an add-on + file (TextIO): the file for the generated add-on + node_tree (bpy.types.NodeTree): the node group object we're converting into an add-on """ file.write("bl_info = {\n") - file.write(f"\t\"name\" : \"{node_group.name}\",\n") + file.write(f"\t\"name\" : \"{node_tree.name}\",\n") file.write("\t\"author\" : \"Node To Python\",\n") file.write("\t\"version\" : (1, 0, 0),\n") file.write(f"\t\"blender\" : {bpy.app.version},\n") @@ -39,3 +39,74 @@ def create_header(file: typing.TextIO, node_group): file.write("import bpy\n") file.write("\n") +def init_operator(file: TextIO, name: str, idname: str, label: str): + """ + Initializes the add-on's operator + + Parameters: + file (TextIO): the file for the generated add-on + name (str): name for the class + idname (str): name for the operator + label (str): appearence inside Blender + """ + file.write(f"class {name}(bpy.types.Operator):\n") + file.write(f"\tbl_idname = \"object.{idname}\"\n") + file.write(f"\tbl_label = \"{label}\"\n") + file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") + file.write("\n") + +def make_indents(level: int) -> Tuple[str, str]: + """ + Returns strings with the correct number of indentations + given the level in the function. + + Node groups need processed recursively, + so there can sometimes be functions in functions. + + Parameters: + level (int): base number of indentations need + + Returns: + outer (str): a basic level of indentation for a node group. + inner (str): a level of indentation beyond outer + """ + outer = "\t"*level + inner = "\t"*(level + 1) + return outer, inner + +def create_node(node: bpy.types.Node, file: TextIO, inner: str, node_tree_var: str, unnamed_idx: int = 0) -> Tuple[str, int]: + """ + Initializes a new node with location, dimension, and label info + + Parameters: + node (bpy.types.Node): node to be copied + file (TextIO): file containing the generated add-on + inner (str): indentation level for this logic + node_tree_var (str): variable name for the node tree + + Returns: + node_var (str): variable name for the node + unnamed_idx (int): unnamed index. if a node doesn't have a name, this will be used + """ + + file.write(f"{inner}#node {node.name}\n") + + node_var = clean_string(node.name) + if node_var == "": + node_var = f"node_{unnamed_idx}" + unnamed_idx += 1 + + file.write((f"{inner}{node_var} " + f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) + + #location + file.write((f"{inner}{node_var}.location " + f"= ({node.location.x}, {node.location.y})\n")) + #dimensions + file.write((f"{inner}{node_var}.width, {node_var}.height " + f"= {node.width}, {node.height}\n")) + #label + if node.label: + file.write(f"{inner}{node_var}.label = \"{node.label}\"\n") + + return node_var, unnamed_idx \ No newline at end of file From f2d12cd26dd92ca689345b6621a4dd658379b5b3 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 03:01:45 -0600 Subject: [PATCH 027/286] feat: more comprehensive string cleaning function --- geo_nodes.py | 2 +- utils.py | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index ce6e2c8..a982d8a 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -306,7 +306,7 @@ def process_node_group(node_group, level): unnamed_idx = 0 #create node - node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name) + node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) #special nodes if node.bl_idname in geo_node_settings: diff --git a/utils.py b/utils.py index 875a164..c2e171d 100644 --- a/utils.py +++ b/utils.py @@ -1,4 +1,5 @@ import bpy +import re from typing import TextIO, Tuple def clean_string(string: str) -> str: @@ -12,11 +13,8 @@ def clean_string(string: str) -> str: str: The input string with nasty characters converted to underscores """ - bad_chars = [' ', '.', '/'] clean_str = string.lower() - for char in bad_chars: - clean_str = clean_str.replace(char, '_') - return clean_str + return re.sub(r"[^a-zA-Z0-9_]", '_', clean_str) def create_header(file: TextIO, node_tree: bpy.types.NodeTree): """ @@ -86,7 +84,7 @@ def create_node(node: bpy.types.Node, file: TextIO, inner: str, node_tree_var: s Returns: node_var (str): variable name for the node - unnamed_idx (int): unnamed index. if a node doesn't have a name, this will be used + unnamed_idx (int): unnamed index. if a node doesn't have a name, this will be used to give it a variable name """ file.write(f"{inner}#node {node.name}\n") From 5ce0cb4dc784ad517354592fd9ea9602144cce13 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 03:11:41 -0600 Subject: [PATCH 028/286] refactor: moved set_settings_defaults to utils --- geo_nodes.py | 13 +++---------- materials.py | 41 ++++++++++++++++------------------------- utils.py | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 50 insertions(+), 40 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index a982d8a..6e22bbf 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -308,16 +308,9 @@ def process_node_group(node_group, level): #create node node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) - #special nodes - if node.bl_idname in geo_node_settings: - for setting in geo_node_settings[node.bl_idname]: - attr = getattr(node, setting, None) - if attr: - if type(attr) == str: - attr = f"\'{attr}\'" - file.write((f"{inner}{node_var}.{setting} " - f"= {attr}\n")) - elif node.bl_idname == 'GeometryNodeGroup': + utils.set_settings_defaults(node, geo_node_settings, file, inner, node_var) + + if node.bl_idname == 'GeometryNodeGroup': if node.node_tree is not None: file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" diff --git a/materials.py b/materials.py index d2d843e..149da6e 100644 --- a/materials.py +++ b/materials.py @@ -157,48 +157,39 @@ def process_mat_node_group(node_group, level): if node.node_tree is not None: process_mat_node_group(node.node_tree, level + 1) - node_name, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) + node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) - #special nodes - if node.bl_idname in node_settings: - for setting in node_settings[node.bl_idname]: - attr = getattr(node, setting, None) - if attr: - if type(attr) == str: - attr = f"\'{attr}\'" - if type(attr) == mathutils.Vector: - attr = f"({attr[0]}, {attr[1]}, {attr[2]})" - file.write((f"{inner}{node_name}.{setting} " - f"= {attr}\n")) - elif node.bl_idname == 'ShaderNodeGroup': + utils.set_settings_defaults(node, node_settings, file, inner, node_var) + + if node.bl_idname == 'ShaderNodeGroup': if node.node_tree is not None: - file.write((f"{inner}{node_name}.node_tree = " + file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp = node.color_ramp file.write("\n") - file.write((f"{inner}{node_name}.color_ramp.color_mode = " + file.write((f"{inner}{node_var}.color_ramp.color_mode = " f"\'{color_ramp.color_mode}\'\n")) - file.write((f"{inner}{node_name}.color_ramp" + file.write((f"{inner}{node_var}.color_ramp" f".hue_interpolation = " f"\'{color_ramp.hue_interpolation}\'\n")) - file.write((f"{inner}{node_name}.color_ramp.interpolation " + file.write((f"{inner}{node_var}.color_ramp.interpolation " f"= '{color_ramp.interpolation}'\n")) file.write("\n") for i, element in enumerate(color_ramp.elements): - file.write((f"{inner}{node_name}_cre_{i} = " - f"{node_name}.color_ramp.elements" + file.write((f"{inner}{node_var}_cre_{i} = " + f"{node_var}.color_ramp.elements" f".new({element.position})\n")) - file.write((f"{inner}{node_name}_cre_{i}.alpha = " + file.write((f"{inner}{node_var}_cre_{i}.alpha = " f"{element.alpha}\n")) col = element.color r, g, b, a = col[0], col[1], col[2], col[3] - file.write((f"{inner}{node_name}_cre_{i}.color = " + file.write((f"{inner}{node_var}_cre_{i}.color = " f"({r}, {g}, {b}, {a})\n\n")) elif node.bl_idname in curve_nodes: file.write(f"{inner}#mapping settings\n") - mapping = f"{inner}{node_name}.mapping" + mapping = f"{inner}{node_var}.mapping" extend = f"\'{node.mapping.extend}\'" file.write(f"{mapping}.extend = {extend}\n") @@ -226,9 +217,9 @@ def process_mat_node_group(node_group, level): for i, curve in enumerate(node.mapping.curves): file.write(f"{inner}#curve {i}\n") - curve_i = f"{node_name}_curve_{i}" + curve_i = f"{node_var}_curve_{i}" file.write((f"{inner}{curve_i} = " - f"{node_name}.mapping.curves[{i}]\n")) + f"{node_var}.mapping.curves[{i}]\n")) for j, point in enumerate(curve.points): point_j = f"{inner}{curve_i}_point_{j}" @@ -258,7 +249,7 @@ def default_value(i, socket, list_name): dv = socket.default_value if dv is not None: file.write(f"{inner}#{socket.identifier}\n") - file.write((f"{inner}{node_name}" + file.write((f"{inner}{node_var}" f".{list_name}[{i}]" f".default_value = {dv}\n")) for i, input in enumerate(node.inputs): diff --git a/utils.py b/utils.py index c2e171d..66eddf3 100644 --- a/utils.py +++ b/utils.py @@ -1,4 +1,6 @@ import bpy +import mathutils + import re from typing import TextIO, Tuple @@ -10,11 +12,11 @@ def clean_string(string: str) -> str: string (str): The input string Returns: - str: The input string with nasty characters converted to underscores + clean_str: The input string with nasty characters converted to underscores """ - clean_str = string.lower() - return re.sub(r"[^a-zA-Z0-9_]", '_', clean_str) + clean_str = re.sub(r"[^a-zA-Z0-9_]", '_', string.lower()) + return clean_str def create_header(file: TextIO, node_tree: bpy.types.NodeTree): """ @@ -72,7 +74,8 @@ def make_indents(level: int) -> Tuple[str, str]: inner = "\t"*(level + 1) return outer, inner -def create_node(node: bpy.types.Node, file: TextIO, inner: str, node_tree_var: str, unnamed_idx: int = 0) -> Tuple[str, int]: +def create_node(node: bpy.types.Node, file: TextIO, inner: str, + node_tree_var: str, unnamed_idx: int = 0) -> Tuple[str, int]: """ Initializes a new node with location, dimension, and label info @@ -107,4 +110,27 @@ def create_node(node: bpy.types.Node, file: TextIO, inner: str, node_tree_var: s if node.label: file.write(f"{inner}{node_var}.label = \"{node.label}\"\n") - return node_var, unnamed_idx \ No newline at end of file + return node_var, unnamed_idx + +def set_settings_defaults(node: bpy.types.Node, settings: dict, file: TextIO, + inner: str, node_var: str): + """ + Sets the defaults for any settings a node may have + + Parameters: + node (bpy.types.Node): the node object we're copying settings from + settings (dict): a predefined dictionary of all settings every node has + file (TextIO): file we're generating the add-on into + inner (str): indentation level + node_var (str): name of the variable we're using for the node in our add-on + """ + if node.bl_idname in settings: + for setting in settings[node.bl_idname]: + attr = getattr(node, setting, None) + if attr: + if type(attr) == str: + attr = f"\'{attr}\'" + if type(attr) == mathutils.Vector: + attr = f"({attr[0]}, {attr[1]}, {attr[2]})" + file.write((f"{inner}{node_var}.{setting} " + f"= {attr}\n")) \ No newline at end of file From bb537e772d19f6f2cd3a44b9b28111859a6054d9 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 03:22:50 -0600 Subject: [PATCH 029/286] refactor: moved special color ramp and curve node logic to utils) --- geo_nodes.py | 66 ++---------------------------------- materials.py | 66 ++---------------------------------- utils.py | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 97 insertions(+), 130 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 6e22bbf..4e7eb4d 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -316,71 +316,9 @@ def process_node_group(node_group, level): f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': - color_ramp = node.color_ramp - file.write("\n") - file.write((f"{inner}{node_var}.color_ramp.color_mode = " - f"\'{color_ramp.color_mode}\'\n")) - file.write((f"{inner}{node_var}.color_ramp" - f".hue_interpolation = " - f"\'{color_ramp.hue_interpolation}\'\n")) - file.write((f"{inner}{node_var}.color_ramp.interpolation " - f"= '{color_ramp.interpolation}'\n")) - file.write("\n") - for i, element in enumerate(color_ramp.elements): - file.write((f"{inner}{node_var}_cre_{i} = " - f"{node_var}.color_ramp.elements" - f".new({element.position})\n")) - file.write((f"{inner}{node_var}_cre_{i}.alpha = " - f"{element.alpha}\n")) - col = element.color - r, g, b, a = col[0], col[1], col[2], col[3] - file.write((f"{inner}{node_var}_cre_{i}.color = " - f"({r}, {g}, {b}, {a})\n\n")) + utils.color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: - file.write(f"{inner}#mapping settings\n") - mapping = f"{inner}{node_var}.mapping" - - extend = f"\'{node.mapping.extend}\'" - file.write(f"{mapping}.extend = {extend}\n") - tone = f"\'{node.mapping.tone}\'" - file.write(f"{mapping}.tone = {tone}\n") - - b_lvl = node.mapping.black_level - b_lvl_str = f"({b_lvl[0]}, {b_lvl[1]}, {b_lvl[2]})" - file.write((f"{mapping}.black_level = {b_lvl_str}\n")) - w_lvl = node.mapping.white_level - w_lvl_str = f"({w_lvl[0]}, {w_lvl[1]}, {w_lvl[2]})" - file.write((f"{mapping}.white_level = {w_lvl_str}\n")) - - min_x = node.mapping.clip_min_x - file.write(f"{mapping}.clip_min_x = {min_x}\n") - min_y = node.mapping.clip_min_y - file.write(f"{mapping}.clip_min_y = {min_y}\n") - max_x = node.mapping.clip_max_x - file.write(f"{mapping}.clip_max_x = {max_x}\n") - max_y = node.mapping.clip_max_y - file.write(f"{mapping}.clip_max_y = {max_y}\n") - - use_clip = node.mapping.use_clip - file.write(f"{mapping}.use_clip = {use_clip}\n") - - for i, curve in enumerate(node.mapping.curves): - file.write(f"{inner}#curve {i}\n") - curve_i = f"{node_var}_curve_{i}" - file.write((f"{inner}{curve_i} = " - f"{node_var}.mapping.curves[{i}]\n")) - for j, point in enumerate(curve.points): - point_j = f"{inner}{curve_i}_point_{j}" - - loc = point.location - file.write((f"{point_j} = " - f"{curve_i}.points.new" - f"({loc[0]}, {loc[1]})\n")) - - handle = f"\'{point.handle_type}\'" - file.write(f"{point_j}.handle_type = {handle}\n") - file.write(f"{inner}#update curve after changes\n") - file.write(f"{mapping}.update()\n") + utils.curve_node_settings(node, file, inner, node_var) if node.bl_idname != 'NodeReroute': for i, input in enumerate(node.inputs): diff --git a/materials.py b/materials.py index 149da6e..4ad6188 100644 --- a/materials.py +++ b/materials.py @@ -167,71 +167,9 @@ def process_mat_node_group(node_group, level): f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': - color_ramp = node.color_ramp - file.write("\n") - file.write((f"{inner}{node_var}.color_ramp.color_mode = " - f"\'{color_ramp.color_mode}\'\n")) - file.write((f"{inner}{node_var}.color_ramp" - f".hue_interpolation = " - f"\'{color_ramp.hue_interpolation}\'\n")) - file.write((f"{inner}{node_var}.color_ramp.interpolation " - f"= '{color_ramp.interpolation}'\n")) - file.write("\n") - for i, element in enumerate(color_ramp.elements): - file.write((f"{inner}{node_var}_cre_{i} = " - f"{node_var}.color_ramp.elements" - f".new({element.position})\n")) - file.write((f"{inner}{node_var}_cre_{i}.alpha = " - f"{element.alpha}\n")) - col = element.color - r, g, b, a = col[0], col[1], col[2], col[3] - file.write((f"{inner}{node_var}_cre_{i}.color = " - f"({r}, {g}, {b}, {a})\n\n")) + utils.color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: - file.write(f"{inner}#mapping settings\n") - mapping = f"{inner}{node_var}.mapping" - - extend = f"\'{node.mapping.extend}\'" - file.write(f"{mapping}.extend = {extend}\n") - tone = f"\'{node.mapping.tone}\'" - file.write(f"{mapping}.tone = {tone}\n") - - b_lvl = node.mapping.black_level - b_lvl_str = f"({b_lvl[0]}, {b_lvl[1]}, {b_lvl[2]})" - file.write((f"{mapping}.black_level = {b_lvl_str}\n")) - w_lvl = node.mapping.white_level - w_lvl_str = f"({w_lvl[0]}, {w_lvl[1]}, {w_lvl[2]})" - file.write((f"{mapping}.white_level = {w_lvl_str}\n")) - - min_x = node.mapping.clip_min_x - file.write(f"{mapping}.clip_min_x = {min_x}\n") - min_y = node.mapping.clip_min_y - file.write(f"{mapping}.clip_min_y = {min_y}\n") - max_x = node.mapping.clip_max_x - file.write(f"{mapping}.clip_max_x = {max_x}\n") - max_y = node.mapping.clip_max_y - file.write(f"{mapping}.clip_max_y = {max_y}\n") - - use_clip = node.mapping.use_clip - file.write(f"{mapping}.use_clip = {use_clip}\n") - - for i, curve in enumerate(node.mapping.curves): - file.write(f"{inner}#curve {i}\n") - curve_i = f"{node_var}_curve_{i}" - file.write((f"{inner}{curve_i} = " - f"{node_var}.mapping.curves[{i}]\n")) - for j, point in enumerate(curve.points): - point_j = f"{inner}{curve_i}_point_{j}" - - loc = point.location - file.write((f"{point_j} = " - f"{curve_i}.points.new" - f"({loc[0]}, {loc[1]})\n")) - - handle = f"\'{point.handle_type}\'" - file.write(f"{point_j}.handle_type = {handle}\n") - file.write(f"{inner}#update curve after changes\n") - file.write(f"{mapping}.update()\n") + utils.curve_node_settings(node, file, inner, node_var) if node.bl_idname != 'NodeReroute': def default_value(i, socket, list_name): diff --git a/utils.py b/utils.py index 66eddf3..e501119 100644 --- a/utils.py +++ b/utils.py @@ -121,7 +121,7 @@ def set_settings_defaults(node: bpy.types.Node, settings: dict, file: TextIO, node (bpy.types.Node): the node object we're copying settings from settings (dict): a predefined dictionary of all settings every node has file (TextIO): file we're generating the add-on into - inner (str): indentation level + inner (str): indentation node_var (str): name of the variable we're using for the node in our add-on """ if node.bl_idname in settings: @@ -133,4 +133,95 @@ def set_settings_defaults(node: bpy.types.Node, settings: dict, file: TextIO, if type(attr) == mathutils.Vector: attr = f"({attr[0]}, {attr[1]}, {attr[2]})" file.write((f"{inner}{node_var}.{setting} " - f"= {attr}\n")) \ No newline at end of file + f"= {attr}\n")) + +def color_ramp_settings(node: bpy.types.Node, file: TextIO, inner: str, + node_var: str): + """ + node (bpy.types.Node): node object we're copying settings from + file (TextIO): file we're generating the add-on into + inner (str): indentation + node_var (str): name of the variable we're using for the color ramp + """ + + color_ramp = node.color_ramp + #settings + file.write((f"{inner}{node_var}.color_ramp.color_mode = " + f"\'{color_ramp.color_mode}\'\n")) + file.write((f"{inner}{node_var}.color_ramp.hue_interpolation = " + f"\'{color_ramp.hue_interpolation}\'\n")) + file.write((f"{inner}{node_var}.color_ramp.interpolation " + f"= '{color_ramp.interpolation}'\n")) + file.write("\n") + + #key points + for i, element in enumerate(color_ramp.elements): + file.write((f"{inner}{node_var}_cre_{i} = " + f"{node_var}.color_ramp.elements" + f".new({element.position})\n")) + file.write((f"{inner}{node_var}_cre_{i}.alpha = " + f"{element.alpha}\n")) + col = element.color + r, g, b, a = col[0], col[1], col[2], col[3] + file.write((f"{inner}{node_var}_cre_{i}.color = " + f"({r}, {g}, {b}, {a})\n\n")) + +def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, node_var: str): + """ + Sets defaults for Float, Vector, and Color curves + + Parameters: + node (bpy.types.Node): curve node we're copying settings from + file (TextIO): file we're generating the add-on into + inner (str): indentation + node_var (str): variable name for the add-on's curve node + """ + + #mapping settings + file.write(f"{inner}#mapping settings\n") + mapping = f"{inner}{node_var}.mapping" + + extend = f"\'{node.mapping.extend}\'" + file.write(f"{mapping}.extend = {extend}\n") + tone = f"\'{node.mapping.tone}\'" + file.write(f"{mapping}.tone = {tone}\n") + + b_lvl = node.mapping.black_level + b_lvl_str = f"({b_lvl[0]}, {b_lvl[1]}, {b_lvl[2]})" + file.write((f"{mapping}.black_level = {b_lvl_str}\n")) + w_lvl = node.mapping.white_level + w_lvl_str = f"({w_lvl[0]}, {w_lvl[1]}, {w_lvl[2]})" + file.write((f"{mapping}.white_level = {w_lvl_str}\n")) + + min_x = node.mapping.clip_min_x + file.write(f"{mapping}.clip_min_x = {min_x}\n") + min_y = node.mapping.clip_min_y + file.write(f"{mapping}.clip_min_y = {min_y}\n") + max_x = node.mapping.clip_max_x + file.write(f"{mapping}.clip_max_x = {max_x}\n") + max_y = node.mapping.clip_max_y + file.write(f"{mapping}.clip_max_y = {max_y}\n") + + use_clip = node.mapping.use_clip + file.write(f"{mapping}.use_clip = {use_clip}\n") + + #create curves + for i, curve in enumerate(node.mapping.curves): + file.write(f"{inner}#curve {i}\n") + curve_i = f"{node_var}_curve_{i}" + file.write((f"{inner}{curve_i} = " + f"{node_var}.mapping.curves[{i}]\n")) + for j, point in enumerate(curve.points): + point_j = f"{inner}{curve_i}_point_{j}" + + loc = point.location + file.write((f"{point_j} = " + f"{curve_i}.points.new" + f"({loc[0]}, {loc[1]})\n")) + + handle = f"\'{point.handle_type}\'" + file.write(f"{point_j}.handle_type = {handle}\n") + + #update curve + file.write(f"{inner}#update curve after changes\n") + file.write(f"{mapping}.update()\n") \ No newline at end of file From c4339b01f88c9fe4794ca8478f1d9a814ef8d2c1 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 03:25:24 -0600 Subject: [PATCH 030/286] style: cleaned up curve node code --- utils.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/utils.py b/utils.py index e501119..29d3ae1 100644 --- a/utils.py +++ b/utils.py @@ -181,18 +181,23 @@ def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, node_var file.write(f"{inner}#mapping settings\n") mapping = f"{inner}{node_var}.mapping" + #extend extend = f"\'{node.mapping.extend}\'" file.write(f"{mapping}.extend = {extend}\n") + #tone tone = f"\'{node.mapping.tone}\'" file.write(f"{mapping}.tone = {tone}\n") + #black level b_lvl = node.mapping.black_level b_lvl_str = f"({b_lvl[0]}, {b_lvl[1]}, {b_lvl[2]})" file.write((f"{mapping}.black_level = {b_lvl_str}\n")) + #white level w_lvl = node.mapping.white_level w_lvl_str = f"({w_lvl[0]}, {w_lvl[1]}, {w_lvl[2]})" file.write((f"{mapping}.white_level = {w_lvl_str}\n")) + #minima and maxima min_x = node.mapping.clip_min_x file.write(f"{mapping}.clip_min_x = {min_x}\n") min_y = node.mapping.clip_min_y @@ -202,6 +207,7 @@ def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, node_var max_y = node.mapping.clip_max_y file.write(f"{mapping}.clip_max_y = {max_y}\n") + #use_clip use_clip = node.mapping.use_clip file.write(f"{mapping}.use_clip = {use_clip}\n") @@ -209,19 +215,17 @@ def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, node_var for i, curve in enumerate(node.mapping.curves): file.write(f"{inner}#curve {i}\n") curve_i = f"{node_var}_curve_{i}" - file.write((f"{inner}{curve_i} = " - f"{node_var}.mapping.curves[{i}]\n")) + file.write((f"{inner}{curve_i} = {node_var}.mapping.curves[{i}]\n")) for j, point in enumerate(curve.points): point_j = f"{inner}{curve_i}_point_{j}" loc = point.location - file.write((f"{point_j} = " - f"{curve_i}.points.new" - f"({loc[0]}, {loc[1]})\n")) + file.write((f"{point_j} = {curve_i}.points.new({loc[0]}, {loc[1]})\n")) handle = f"\'{point.handle_type}\'" file.write(f"{point_j}.handle_type = {handle}\n") #update curve file.write(f"{inner}#update curve after changes\n") - file.write(f"{mapping}.update()\n") \ No newline at end of file + file.write(f"{mapping}.update()\n") + From cfbe293f9fe1323c71e43c401cd21776e84e1a20 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 03:36:50 -0600 Subject: [PATCH 031/286] refactor: a few conversion functions for different types of objects --- materials.py | 6 ++--- utils.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/materials.py b/materials.py index 4ad6188..4730e41 100644 --- a/materials.py +++ b/materials.py @@ -177,10 +177,10 @@ def default_value(i, socket, list_name): dv = None if socket.bl_idname == 'NodeSocketColor': col = socket.default_value - dv = f"({col[0]}, {col[1]}, {col[2]}, {col[3]})" + dv = utils.vec4_to_py_str(col) elif "Vector" in socket.bl_idname: - vector = socket.default_value - dv = f"({vector[0]}, {vector[1]}, {vector[2]})" + vec = socket.default_value + dv = utils.vec3_to_py_str(vec) elif socket.bl_idname == 'NodeSocketString': dv = f"\"\"" else: diff --git a/utils.py b/utils.py index 29d3ae1..2d17bd3 100644 --- a/utils.py +++ b/utils.py @@ -18,6 +18,54 @@ def clean_string(string: str) -> str: clean_str = re.sub(r"[^a-zA-Z0-9_]", '_', string.lower()) return clean_str +def enum_to_py_str(enum: str) -> str: + """ + Converts an enum into a string usuable in the add-on + + Parameters: + enum (str): enum to be converted + + Returns: + (str): converted string + """ + return f"\'{enum}\'" + +def str_to_py_str(string: str) -> str: + """ + Converts a regular string into one usuable in the add-on + + Parameters: + string (str): string to be converted + + Returns: + (str): converted string + """ + return f"\"{string}\"" + +def vec3_to_py_str(vec: mathutils.Vector) -> str: + """ + Converts a 3D vector to a string usable by the add-on + + Parameters: + vec (mathutils.Vector): a 3d vector + + Returns: + (str): string version + """ + return f"({vec[0]}, {vec[1]}, {vec[2]})" + +def vec4_to_py_str(vec: mathutils.Vector) -> str: + """ + Converts a 4D vector to a string usable by the add-on + + Parameters: + vec (mathutils.Vector): a 4d vector + + Returns: + (str): string version + """ + return f"({vec[0]}, {vec[1]}, {vec[2]}, {vec[3]})" + def create_header(file: TextIO, node_tree: bpy.types.NodeTree): """ Sets up the bl_info and imports the Blender API @@ -166,7 +214,8 @@ def color_ramp_settings(node: bpy.types.Node, file: TextIO, inner: str, file.write((f"{inner}{node_var}_cre_{i}.color = " f"({r}, {g}, {b}, {a})\n\n")) -def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, node_var: str): +def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, + node_var: str): """ Sets defaults for Float, Vector, and Color curves @@ -229,3 +278,19 @@ def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, node_var file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping}.update()\n") +def set_input_defaults(node: bpy.typesNode, dont_set_defaults: dict, + file: TextIO, inner: str, node_var: str): + for i, input in enumerate(node.inputs): + if input.bl_idname not in dont_set_defaults: + if input.bl_idname == 'NodeSocketColor': + dv = vec4_to_py_str(input.default_value) + elif "Vector" in input.bl_idname: + dv = vec3_to_py_str(input.default_value) + elif input.bl_idname == 'NodeSocketString': + dv = f"\"{input.default_value}\"" + else: + dv = input.default_value + if dv is not None: + file.write(f"{inner}#{input.identifier}\n") + file.write((f"{inner}{node_var}.inputs[{i}].default_value = " + f"{dv}\n")) \ No newline at end of file From ef2b7fbe06cbda2b0f4fb0daf2eaee11cab9aec1 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 03:39:20 -0600 Subject: [PATCH 032/286] refactor: input defaults moved to utils --- geo_nodes.py | 20 ++------------------ materials.py | 30 ++---------------------------- utils.py | 29 +++++++++++++++-------------- 3 files changed, 19 insertions(+), 60 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 4e7eb4d..264626d 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -320,24 +320,8 @@ def process_node_group(node_group, level): elif node.bl_idname in curve_nodes: utils.curve_node_settings(node, file, inner, node_var) - if node.bl_idname != 'NodeReroute': - for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults: - if input.bl_idname == 'NodeSocketColor': - col = input.default_value - dv = f"({col[0]}, {col[1]}, {col[2]}, {col[3]})" - elif "Vector" in input.bl_idname: - vector = input.default_value - dv = f"({vector[0]}, {vector[1]}, {vector[2]})" - elif input.bl_idname == 'NodeSocketString': - dv = f"\"\"" - else: - dv = input.default_value - if dv is not None: - file.write(f"{inner}#{input.identifier}\n") - file.write((f"{inner}{node_var}" - f".inputs[{i}]" - f".default_value = {dv}\n")) + utils.set_input_defaults(node, dont_set_defaults, file, inner, + node_var) file.write("\n") #initialize links diff --git a/materials.py b/materials.py index 4730e41..c68f552 100644 --- a/materials.py +++ b/materials.py @@ -171,34 +171,8 @@ def process_mat_node_group(node_group, level): elif node.bl_idname in curve_nodes: utils.curve_node_settings(node, file, inner, node_var) - if node.bl_idname != 'NodeReroute': - def default_value(i, socket, list_name): - if socket.bl_idname not in dont_set_defaults: - dv = None - if socket.bl_idname == 'NodeSocketColor': - col = socket.default_value - dv = utils.vec4_to_py_str(col) - elif "Vector" in socket.bl_idname: - vec = socket.default_value - dv = utils.vec3_to_py_str(vec) - elif socket.bl_idname == 'NodeSocketString': - dv = f"\"\"" - else: - dv = socket.default_value - if dv is not None: - file.write(f"{inner}#{socket.identifier}\n") - file.write((f"{inner}{node_var}" - f".{list_name}[{i}]" - f".default_value = {dv}\n")) - for i, input in enumerate(node.inputs): - default_value(i, input, "inputs") - """ - TODO: some shader nodes require you set the default value in the output. - this will need to be handled case by case it looks like though - - for i, output in enumerate(node.outputs): - default_value(i, output, "outputs") - """ + utils.set_input_defaults(node, dont_set_defaults, file, inner, + node_var) #initialize links if node_group.links: diff --git a/utils.py b/utils.py index 2d17bd3..e2180a9 100644 --- a/utils.py +++ b/utils.py @@ -280,17 +280,18 @@ def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, def set_input_defaults(node: bpy.typesNode, dont_set_defaults: dict, file: TextIO, inner: str, node_var: str): - for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults: - if input.bl_idname == 'NodeSocketColor': - dv = vec4_to_py_str(input.default_value) - elif "Vector" in input.bl_idname: - dv = vec3_to_py_str(input.default_value) - elif input.bl_idname == 'NodeSocketString': - dv = f"\"{input.default_value}\"" - else: - dv = input.default_value - if dv is not None: - file.write(f"{inner}#{input.identifier}\n") - file.write((f"{inner}{node_var}.inputs[{i}].default_value = " - f"{dv}\n")) \ No newline at end of file + if node.bl_idname != 'NodeReroute': + for i, input in enumerate(node.inputs): + if input.bl_idname not in dont_set_defaults: + if input.bl_idname == 'NodeSocketColor': + default_val = vec4_to_py_str(input.default_value) + elif "Vector" in input.bl_idname: + default_val = vec3_to_py_str(input.default_value) + elif input.bl_idname == 'NodeSocketString': + default_val = str_to_py_str(input.default_value) + else: + default_val = input.default_value + if default_val is not None: + file.write(f"{inner}#{input.identifier}\n") + file.write((f"{inner}{node_var}.inputs[{i}].default_value" + f" = {default_val}\n")) \ No newline at end of file From be850ae0f5188f4b16a179d06161bde77393695b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 04:06:39 -0600 Subject: [PATCH 033/286] refactor: links initialization moved to utils --- geo_nodes.py | 103 +++++++++++++++++++-------------------------------- materials.py | 52 +++++++------------------- utils.py | 37 +++++++++++++++++- 3 files changed, 88 insertions(+), 104 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 264626d..a674529 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -181,38 +181,43 @@ def execute(self, context): file.write("\tdef execute(self, context):\n") - def process_node_group(node_group, level): - ng_name = utils.clean_string(node_group.name) + #set to keep track of already created node trees + node_trees = {} + + def process_geo_nodes_group(node_tree, level): + node_tree_var = utils.clean_string(node_tree.name) outer, inner = utils.make_indents(level) #initialize node group - file.write(f"{outer}#initialize {ng_name} node group\n") - file.write(f"{outer}def {ng_name}_node_group():\n") - file.write((f"{inner}{ng_name}" + file.write(f"{outer}#initialize {node_tree_var} node group\n") + file.write(f"{outer}def {node_tree_var}_node_group():\n") + file.write((f"{inner}{node_tree_var}" f"= bpy.data.node_groups.new(" f"type = \"GeometryNodeTree\", " - f"name = \"{node_group.name}\")\n")) + f"name = \"{node_tree.name}\")\n")) file.write("\n") inputs_set = False outputs_set = False #initialize nodes - file.write(f"{inner}#initialize {ng_name} nodes\n") - for node in node_group.nodes: + file.write(f"{inner}#initialize {node_tree_var} nodes\n") + for node in node_tree.nodes: if node.bl_idname == 'GeometryNodeGroup': - if node.node_tree is not None: - process_node_group(node.node_tree, level + 1) + node_nt = node.node_tree + if node_nt is not None and node_nt not in node_trees: + process_geo_nodes_group(node_nt, level + 1) + node_trees.add(node_nt) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - file.write(f"{inner}#{ng_name} inputs\n") + file.write(f"{inner}#{node_tree_var} inputs\n") for i, input in enumerate(node.outputs): if input.bl_idname != "NodeSocketVirtual": file.write(f"{inner}#input {input.name}\n") - file.write((f"{inner}{ng_name}.inputs.new" + file.write((f"{inner}{node_tree_var}.inputs.new" f"(\"{input.bl_idname}\", " f"\"{input.name}\")\n")) - socket = node_group.inputs[i] + socket = node_tree.inputs[i] if input.bl_idname in default_sockets: if input.bl_idname == 'NodeSocketColor': col = socket.default_value @@ -225,39 +230,39 @@ def process_node_group(node_group, level): dv = socket.default_value #default value - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".inputs[{i}]" f".default_value = {dv}\n")) #min value if hasattr(socket, "min_value"): - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".inputs[{i}]" f".min_value = " f"{socket.min_value}\n")) #max value if hasattr(socket, "max_value"): - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".inputs[{i}]" f".max_value = " f"{socket.max_value}\n")) #default attribute name if hasattr(socket, "default_attribute_name"): if socket.default_attribute_name != "": - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".inputs[{i}]" f".default_attribute_name = \"" f"{socket.default_attribute_name}" f"\"\n")) #description if socket.description != "": - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".inputs[{i}]" f".description = " f"\"{socket.description}\"\n")) #hide value if socket.hide_value is True: - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".inputs[{i}]" f".hide_value = " f"{socket.hide_value}\n")) @@ -266,23 +271,23 @@ def process_node_group(node_group, level): inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - file.write(f"{inner}#{ng_name} outputs\n") + file.write(f"{inner}#{node_tree_var} outputs\n") for i, output in enumerate(node.inputs): if output.bl_idname != 'NodeSocketVirtual': - file.write((f"{inner}{ng_name}.outputs" + file.write((f"{inner}{node_tree_var}.outputs" f".new(\"{output.bl_idname}\", " f"\"{output.name}\")\n")) - socket = node_group.outputs[i] + socket = node_tree.outputs[i] #description if socket.description != "": - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".outputs[{i}]" f".description = " f"\"{socket.description}\"\n")) #hide value if socket.hide_value is True: - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".outputs[{i}]" f".hide_value = " f"{socket.hide_value}\n")) @@ -290,14 +295,14 @@ def process_node_group(node_group, level): #default attribute name if hasattr(socket, "default_attribute_name"): if socket.default_attribute_name != "": - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".outputs[{i}]" f".default_attribute_name = \"" f"{socket.default_attribute_name}" f"\"\n")) #attribute domain if hasattr(socket, "attribute_domain"): - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{node_tree_var}" f".outputs[{i}]" f".attribute_domain = " f"\'{socket.attribute_domain}\'\n")) @@ -306,9 +311,12 @@ def process_node_group(node_group, level): unnamed_idx = 0 #create node - node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) + node_var, unnamed_idx = utils.create_node(node, file, inner, + node_tree_var, + unnamed_idx) - utils.set_settings_defaults(node, geo_node_settings, file, inner, node_var) + utils.set_settings_defaults(node, geo_node_settings, file, + inner, node_var) if node.bl_idname == 'GeometryNodeGroup': if node.node_tree is not None: @@ -322,46 +330,13 @@ def process_node_group(node_group, level): utils.set_input_defaults(node, dont_set_defaults, file, inner, node_var) - file.write("\n") - #initialize links - if node_group.links: - file.write(f"{inner}#initialize {ng_name} links\n") - for link in node_group.links: - input_node = utils.clean_string(link.from_node.name) - input_socket = link.from_socket - - """ - Blender's socket dictionary doesn't guarantee - unique keys, which has caused much wailing and - gnashing of teeth. This is a quick fix that - doesn't run quick - """ - for i, item in enumerate(link.from_node.outputs.items()): - if item[1] == input_socket: - input_idx = i - break - - output_node = utils.clean_string(link.to_node.name) - output_socket = link.to_socket - - for i, item in enumerate(link.to_node.inputs.items()): - if item[1] == output_socket: - output_idx = i - break - - file.write((f"{inner}#{input_node}.{input_socket.name} " - f"-> {output_node}.{output_socket.name}\n")) - file.write((f"{inner}{ng_name}.links.new({input_node}" - f".outputs[{input_idx}], " - f"{output_node}.inputs[{output_idx}])\n")) + utils.init_links(node_tree, file, inner, node_tree_var) #create node group - file.write("\n") - file.write(f"{outer}{ng_name}_node_group()\n") - file.write("\n") + file.write(f"\n{outer}{node_tree_var}_node_group()\n\n") - process_node_group(ng, 2) + process_geo_nodes_group(ng, 2) file.write("\t\treturn {'FINISHED'}\n\n") diff --git a/materials.py b/materials.py index c68f552..49d826e 100644 --- a/materials.py +++ b/materials.py @@ -125,9 +125,11 @@ def create_material(): file.write(f"\t\tmat.use_nodes = True\n") create_material() - def process_mat_node_group(node_group, level): - ng_name = utils.clean_string(node_group.name) - ng_label = node_group.name + node_trees = {} + + def process_node_group(node_tree, level): + ng_name = utils.clean_string(node_tree.name) + ng_label = node_tree.name if level == 2: #outermost node group ng_name = utils.clean_string(self.material_name) @@ -152,10 +154,12 @@ def process_mat_node_group(node_group, level): file.write(f"{inner}#initialize {ng_name} nodes\n") unnamed_idx = 0 - for node in node_group.nodes: + for node in node_tree.nodes: if node.bl_idname == 'ShaderNodeGroup': - if node.node_tree is not None: - process_mat_node_group(node.node_tree, level + 1) + node_nt = node.node_tree + if node_nt is not None and node_nt not in node_trees: + process_node_group(node_nt, level + 1) + node_trees.add(node_nt) node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) @@ -174,41 +178,11 @@ def process_mat_node_group(node_group, level): utils.set_input_defaults(node, dont_set_defaults, file, inner, node_var) - #initialize links - if node_group.links: - file.write(f"{inner}#initialize {ng_name} links\n") - for link in node_group.links: - input_node = utils.clean_string(link.from_node.name) - input_socket = link.from_socket - - """ - Blender's socket dictionary doesn't guarantee - unique keys, which has caused much wailing and - gnashing of teeth. This is a quick fix that - doesn't run quick - """ - for i, item in enumerate(link.from_node.outputs.items()): - if item[1] == input_socket: - input_idx = i - break - - output_node = utils.clean_string(link.to_node.name) - output_socket = link.to_socket - - for i, item in enumerate(link.to_node.inputs.items()): - if item[1] == output_socket: - output_idx = i - break - - file.write((f"{inner}#{input_node}.{input_socket.name} " - f"-> {output_node}.{output_socket.name}\n")) - file.write((f"{inner}{ng_name}.links.new({input_node}" - f".outputs[{input_idx}], " - f"{output_node}.inputs[{output_idx}])\n")) + utils.init_links(node_tree, file, inner, ng_name) - file.write(f"{outer}{ng_name}_node_group()\n") + file.write(f"\n{outer}{ng_name}_node_group()\n\n") - process_mat_node_group(ng, 2) + process_node_group(ng, 2) file.write("\t\treturn {'FINISHED'}\n\n") diff --git a/utils.py b/utils.py index e2180a9..0764b67 100644 --- a/utils.py +++ b/utils.py @@ -294,4 +294,39 @@ def set_input_defaults(node: bpy.typesNode, dont_set_defaults: dict, if default_val is not None: file.write(f"{inner}#{input.identifier}\n") file.write((f"{inner}{node_var}.inputs[{i}].default_value" - f" = {default_val}\n")) \ No newline at end of file + f" = {default_val}\n")) + file.write("\n") + +def init_links(node_tree: bpy.types.NodeTree, file: TextIO, inner: str, + node_tree_var: str): + if node_tree.links: + file.write(f"{inner}#initialize {node_tree_var} links\n") + for link in node_tree.links: + input_node = clean_string(link.from_node.name) + input_socket = link.from_socket + + """ + Blender's socket dictionary doesn't guarantee + unique keys, which has caused much wailing and + gnashing of teeth. This is a quick fix that + doesn't run quick + """ + for i, item in enumerate(link.from_node.outputs.items()): + if item[1] == input_socket: + input_idx = i + break + + output_node = clean_string(link.to_node.name) + output_socket = link.to_socket + + for i, item in enumerate(link.to_node.inputs.items()): + if item[1] == output_socket: + output_idx = i + break + + file.write((f"{inner}#{input_node}.{input_socket.name} " + f"-> {output_node}.{output_socket.name}\n")) + file.write((f"{inner}{node_tree_var}.links.new({input_node}" + f".outputs[{input_idx}], " + f"{output_node}.inputs[{output_idx}])\n")) + From 3a6a6c96dc55975a983636948729cde168b78a6e Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 04:16:06 -0600 Subject: [PATCH 034/286] refactor: moved menu, register, unregister, and main func creation into utils --- geo_nodes.py | 32 ++++------------------------ materials.py | 38 +++++++-------------------------- utils.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 59 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index a674529..95d23c6 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -340,34 +340,10 @@ def process_geo_nodes_group(node_tree, level): file.write("\t\treturn {'FINISHED'}\n\n") - """Create the function that adds the addon to the menu""" - def create_menu_func(): - file.write("def menu_func(self, context):\n") - file.write(f"\tself.layout.operator({class_name}.bl_idname)\n") - file.write("\n") - create_menu_func() - - """Create the register function""" - def create_register(): - file.write("def register():\n") - file.write(f"\tbpy.utils.register_class({class_name})\n") - file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") - file.write("\n") - create_register() - - """Create the unregister function""" - def create_unregister(): - file.write("def unregister():\n") - file.write(f"\tbpy.utils.unregister_class({class_name})\n") - file.write("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") - file.write("\n") - create_unregister() - - """Create the main function""" - def create_main(): - file.write("if __name__ == \"__main__\":\n") - file.write("\tregister()") - create_main() + utils.create_menu_func(file, class_name) + utils.create_register_func(file, class_name) + utils.create_unregister_func(file, class_name) + utils.create_main_func(file, class_name) file.close() return {'FINISHED'} diff --git a/materials.py b/materials.py index 49d826e..ae7380a 100644 --- a/materials.py +++ b/materials.py @@ -127,7 +127,7 @@ def create_material(): node_trees = {} - def process_node_group(node_tree, level): + def process_mat_node_group(node_tree, level): ng_name = utils.clean_string(node_tree.name) ng_label = node_tree.name @@ -158,7 +158,7 @@ def process_node_group(node_tree, level): if node.bl_idname == 'ShaderNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: - process_node_group(node_nt, level + 1) + process_mat_node_group(node_nt, level + 1) node_trees.add(node_nt) node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) @@ -182,38 +182,14 @@ def process_node_group(node_tree, level): file.write(f"\n{outer}{ng_name}_node_group()\n\n") - process_node_group(ng, 2) + process_mat_node_group(ng, 2) file.write("\t\treturn {'FINISHED'}\n\n") - """Create the function that adds the addon to the menu""" - def create_menu_func(): - file.write("def menu_func(self, context):\n") - file.write(f"\tself.layout.operator({class_name}.bl_idname)\n") - file.write("\n") - create_menu_func() - - """Create the register function""" - def create_register(): - file.write("def register():\n") - file.write(f"\tbpy.utils.register_class({class_name})\n") - file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") - file.write("\n") - create_register() - - """Create the unregister function""" - def create_unregister(): - file.write("def unregister():\n") - file.write(f"\tbpy.utils.unregister_class({class_name})\n") - file.write("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") - file.write("\n") - create_unregister() - - """Create the main function""" - def create_main(): - file.write("if __name__ == \"__main__\":\n") - file.write("\tregister()") - create_main() + utils.create_menu_func(file, class_name) + utils.create_register_func(file, class_name) + utils.create_unregister_func(file, class_name) + utils.create_main_func(file, class_name) file.close() return {'FINISHED'} diff --git a/utils.py b/utils.py index 0764b67..5c18856 100644 --- a/utils.py +++ b/utils.py @@ -299,6 +299,16 @@ def set_input_defaults(node: bpy.typesNode, dont_set_defaults: dict, def init_links(node_tree: bpy.types.NodeTree, file: TextIO, inner: str, node_tree_var: str): + """ + Create all the links between nodes + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're copying + file (TextIO): file we're generating the add-on into + inner (str): indentation + node_tree_var (str): variable name we're using for the copied node tree + """ + if node_tree.links: file.write(f"{inner}#initialize {node_tree_var} links\n") for link in node_tree.links: @@ -330,3 +340,52 @@ def init_links(node_tree: bpy.types.NodeTree, file: TextIO, inner: str, f".outputs[{input_idx}], " f"{output_node}.inputs[{output_idx}])\n")) +def create_menu_func(file: TextIO, name: str): + """ + Creates the menu function + + Parameters: + file (TextIO): file we're generating the add-on into + name (str): name of the generated operator class + """ + + file.write("def menu_func(self, context):\n") + file.write(f"\tself.layout.operator({name}.bl_idname)\n") + file.write("\n") + +def create_register_func(file: TextIO, name: str): + """ + Creates the register function + + Parameters: + file (TextIO): file we're generating the add-on into + name (str): name of the generated operator class + """ + file.write("def register():\n") + file.write(f"\tbpy.utils.register_class({name})\n") + file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") + file.write("\n") + +def create_unregister_func(file: TextIO, name: str): + """ + Creates the unregister function + + Parameters: + file (TextIO): file we're generating the add-on into + name (str): name of the generated operator class + """ + file.write("def unregister():\n") + file.write(f"\tbpy.utils.unregister_class({name})\n") + file.write("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") + file.write("\n") + +def create_main_func(file: TextIO, name: str): + """ + Creates the main function + + Parameters: + file (TextIO): file we're generating the add-on into + name (str): name of the generated operator class + """ + file.write("if __name__ == \"__main__\":\n") + file.write("\tregister()") \ No newline at end of file From d2f4272d28e473f2da304c2a711360e9b6b1b348 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 05:00:19 -0600 Subject: [PATCH 035/286] fix: a few import errors and other bugs --- __pycache__/utils.cpython-310.pyc | Bin 0 -> 11991 bytes geo_nodes.py | 56 +++++++++++-------------- materials.py | 65 +++++++++++++++--------------- utils.py | 29 ++++++------- 4 files changed, 68 insertions(+), 82 deletions(-) create mode 100644 __pycache__/utils.cpython-310.pyc diff --git a/__pycache__/utils.cpython-310.pyc b/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df5fe1d1c26eb03315a92f3aa8eb3f00bffbb6b7 GIT binary patch literal 11991 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 literal 0 HcmV?d00001 diff --git a/geo_nodes.py b/geo_nodes.py index 95d23c6..26e2717 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -1,17 +1,7 @@ -bl_info = { - "name": "Node to Python", - "description": "Convert Geometry Node Groups to a Python add-on", - "author": "Brendan Parmer", - "version": (2, 0, 0), - "blender": (3, 0, 0), - "location": "Node", - "category": "Node", -} - import bpy import os -from . import utils +from .utils import * #node tree input sockets that have default properties default_sockets = {'NodeSocketBool', @@ -156,11 +146,11 @@ class GeoNodesToPython(bpy.types.Operator): def execute(self, context): #find node group to replicate - ng = bpy.data.node_groups[self.geo_nodes_group_name] + nt = bpy.data.node_groups[self.geo_nodes_group_name] #set up names to use in generated addon - ng_name = utils.clean_string(ng.name) - class_name = ng.name.replace(" ", "").replace('.', "") + nt_var = clean_string(nt.name) + class_name = nt.name.replace(" ", "").replace('.', "") #find base directory to save new addon dir = bpy.path.abspath("//") @@ -174,20 +164,20 @@ def execute(self, context): addon_dir = os.path.join(dir, "addons") if not os.path.exists(addon_dir): os.mkdir(addon_dir) - file = open(f"{addon_dir}/{ng_name}_addon.py", "w") + file = open(f"{addon_dir}/{nt_var}_addon.py", "w") - utils.create_header(file, ng) - utils.init_operator(file, class_name, ng_name, ng.name) + create_header(file, nt) + init_operator(file, class_name, nt_var, nt.name) file.write("\tdef execute(self, context):\n") #set to keep track of already created node trees - node_trees = {} + node_trees = set() def process_geo_nodes_group(node_tree, level): - node_tree_var = utils.clean_string(node_tree.name) + node_tree_var = clean_string(node_tree.name) - outer, inner = utils.make_indents(level) + outer, inner = make_indents(level) #initialize node group file.write(f"{outer}#initialize {node_tree_var} node group\n") @@ -311,11 +301,11 @@ def process_geo_nodes_group(node_tree, level): unnamed_idx = 0 #create node - node_var, unnamed_idx = utils.create_node(node, file, inner, + node_var, unnamed_idx = create_node(node, file, inner, node_tree_var, unnamed_idx) - utils.set_settings_defaults(node, geo_node_settings, file, + set_settings_defaults(node, geo_node_settings, file, inner, node_var) if node.bl_idname == 'GeometryNodeGroup': @@ -324,27 +314,27 @@ def process_geo_nodes_group(node_tree, level): f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': - utils.color_ramp_settings(node, file, inner, node_var) + color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: - utils.curve_node_settings(node, file, inner, node_var) + curve_node_settings(node, file, inner, node_var) - utils.set_input_defaults(node, dont_set_defaults, file, inner, + set_input_defaults(node, dont_set_defaults, file, inner, node_var) - utils.init_links(node_tree, file, inner, node_tree_var) + init_links(node_tree, file, inner, node_tree_var) #create node group file.write(f"\n{outer}{node_tree_var}_node_group()\n\n") - process_geo_nodes_group(ng, 2) + process_geo_nodes_group(nt, 2) file.write("\t\treturn {'FINISHED'}\n\n") - utils.create_menu_func(file, class_name) - utils.create_register_func(file, class_name) - utils.create_unregister_func(file, class_name) - utils.create_main_func(file, class_name) - + create_menu_func(file, class_name) + create_register_func(file, class_name) + create_unregister_func(file, class_name) + create_main_func(file) + file.close() return {'FINISHED'} @@ -364,7 +354,7 @@ def draw(self, context): for geo_ng in geo_node_groups: op = layout.operator(GeoNodesToPython.bl_idname, text=geo_ng.name) - op.node_group_name = geo_ng.name + op.geo_nodes_group_name = geo_ng.name class GeoNodesToPythonPanel(bpy.types.Panel): bl_label = "Geometry Nodes to Python" diff --git a/materials.py b/materials.py index ae7380a..1206802 100644 --- a/materials.py +++ b/materials.py @@ -1,8 +1,7 @@ import bpy -import mathutils import os -from . import utils +from .utils import * #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', @@ -92,16 +91,16 @@ class MaterialToPython(bpy.types.Operator): def execute(self, context): #find node group to replicate - ng = bpy.data.materials[self.material_name].node_tree - if ng is None: + nt = bpy.data.materials[self.material_name].node_tree + if nt is None: self.report({'ERROR'}, ("NodeToPython: This doesn't seem to be a valid " "material. Is Use Nodes selected?")) return {'CANCELLED'} #set up names to use in generated addon - ng_name = utils.clean_string(self.material_name) - class_name = ng.name.replace(" ", "") + mat_var = clean_string(self.material_name) + class_name = nt.name.replace(" ", "") dir = bpy.path.abspath("//") if not dir or dir == "": @@ -112,10 +111,10 @@ def execute(self, context): addon_dir = os.path.join(dir, "addons") if not os.path.exists(addon_dir): os.mkdir(addon_dir) - file = open(f"{addon_dir}/{ng_name}_addon.py", "w") + file = open(f"{addon_dir}/{mat_var}_addon.py", "w") - utils.create_header(file, ng) - utils.init_operator(file, class_name, ng_name, self.material_name) + create_header(file, nt) + init_operator(file, class_name, mat_var, self.material_name) file.write("\tdef execute(self, context):\n") @@ -125,33 +124,33 @@ def create_material(): file.write(f"\t\tmat.use_nodes = True\n") create_material() - node_trees = {} + node_trees = set() def process_mat_node_group(node_tree, level): - ng_name = utils.clean_string(node_tree.name) - ng_label = node_tree.name + nt_var = clean_string(node_tree.name) + nt_name = node_tree.name if level == 2: #outermost node group - ng_name = utils.clean_string(self.material_name) - ng_label = self.material_name + nt_var = clean_string(self.material_name) + nt_name = self.material_name - outer, inner = utils.make_indents(level) + outer, inner = make_indents(level) #initialize node group - file.write(f"{outer}#initialize {ng_name} node group\n") - file.write(f"{outer}def {ng_name}_node_group():\n") + file.write(f"{outer}#initialize {nt_var} node group\n") + file.write(f"{outer}def {nt_var}_node_group():\n") if level == 2: #outermost node group - file.write(f"{inner}{ng_name} = mat.node_tree\n") + file.write(f"{inner}{nt_var} = mat.node_tree\n") else: - file.write((f"{inner}{ng_name}" + file.write((f"{inner}{nt_var}" f"= bpy.data.node_groups.new(" f"type = \"ShaderNodeTree\", " - f"name = \"{ng_label}\")\n")) + f"name = \"{nt_name}\")\n")) file.write("\n") #initialize nodes - file.write(f"{inner}#initialize {ng_name} nodes\n") + file.write(f"{inner}#initialize {nt_var} nodes\n") unnamed_idx = 0 for node in node_tree.nodes: @@ -161,9 +160,9 @@ def process_mat_node_group(node_tree, level): process_mat_node_group(node_nt, level + 1) node_trees.add(node_nt) - node_var, unnamed_idx = utils.create_node(node, file, inner, ng_name, unnamed_idx) + node_var, unnamed_idx = create_node(node, file, inner, nt_var, unnamed_idx) - utils.set_settings_defaults(node, node_settings, file, inner, node_var) + set_settings_defaults(node, node_settings, file, inner, node_var) if node.bl_idname == 'ShaderNodeGroup': if node.node_tree is not None: @@ -171,25 +170,25 @@ def process_mat_node_group(node_tree, level): f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': - utils.color_ramp_settings(node, file, inner, node_var) + color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: - utils.curve_node_settings(node, file, inner, node_var) + curve_node_settings(node, file, inner, node_var) - utils.set_input_defaults(node, dont_set_defaults, file, inner, + set_input_defaults(node, dont_set_defaults, file, inner, node_var) - utils.init_links(node_tree, file, inner, ng_name) + init_links(node_tree, file, inner, nt_var) - file.write(f"\n{outer}{ng_name}_node_group()\n\n") + file.write(f"\n{outer}{nt_var}_node_group()\n\n") - process_mat_node_group(ng, 2) + process_mat_node_group(nt, 2) file.write("\t\treturn {'FINISHED'}\n\n") - utils.create_menu_func(file, class_name) - utils.create_register_func(file, class_name) - utils.create_unregister_func(file, class_name) - utils.create_main_func(file, class_name) + create_menu_func(file, class_name) + create_register_func(file, class_name) + create_unregister_func(file, class_name) + create_main_func(file) file.close() return {'FINISHED'} diff --git a/utils.py b/utils.py index 5c18856..b66b7bb 100644 --- a/utils.py +++ b/utils.py @@ -42,7 +42,7 @@ def str_to_py_str(string: str) -> str: """ return f"\"{string}\"" -def vec3_to_py_str(vec: mathutils.Vector) -> str: +def vec3_to_py_str(vec) -> str: """ Converts a 3D vector to a string usable by the add-on @@ -54,7 +54,7 @@ def vec3_to_py_str(vec: mathutils.Vector) -> str: """ return f"({vec[0]}, {vec[1]}, {vec[2]})" -def vec4_to_py_str(vec: mathutils.Vector) -> str: +def vec4_to_py_str(vec) -> str: """ Converts a 4D vector to a string usable by the add-on @@ -66,7 +66,7 @@ def vec4_to_py_str(vec: mathutils.Vector) -> str: """ return f"({vec[0]}, {vec[1]}, {vec[2]}, {vec[3]})" -def create_header(file: TextIO, node_tree: bpy.types.NodeTree): +def create_header(file: TextIO, node_tree): """ Sets up the bl_info and imports the Blender API @@ -122,8 +122,8 @@ def make_indents(level: int) -> Tuple[str, str]: inner = "\t"*(level + 1) return outer, inner -def create_node(node: bpy.types.Node, file: TextIO, inner: str, - node_tree_var: str, unnamed_idx: int = 0) -> Tuple[str, int]: +def create_node(node, file: TextIO, inner: str, node_tree_var: str, + unnamed_idx: int = 0) -> Tuple[str, int]: """ Initializes a new node with location, dimension, and label info @@ -160,8 +160,8 @@ def create_node(node: bpy.types.Node, file: TextIO, inner: str, return node_var, unnamed_idx -def set_settings_defaults(node: bpy.types.Node, settings: dict, file: TextIO, - inner: str, node_var: str): +def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, + node_var: str): """ Sets the defaults for any settings a node may have @@ -183,7 +183,7 @@ def set_settings_defaults(node: bpy.types.Node, settings: dict, file: TextIO, file.write((f"{inner}{node_var}.{setting} " f"= {attr}\n")) -def color_ramp_settings(node: bpy.types.Node, file: TextIO, inner: str, +def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): """ node (bpy.types.Node): node object we're copying settings from @@ -214,8 +214,7 @@ def color_ramp_settings(node: bpy.types.Node, file: TextIO, inner: str, file.write((f"{inner}{node_var}_cre_{i}.color = " f"({r}, {g}, {b}, {a})\n\n")) -def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, - node_var: str): +def curve_node_settings(node, file: TextIO, inner: str, node_var: str): """ Sets defaults for Float, Vector, and Color curves @@ -278,8 +277,8 @@ def curve_node_settings(node: bpy.types.Node, file: TextIO, inner: str, file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping}.update()\n") -def set_input_defaults(node: bpy.typesNode, dont_set_defaults: dict, - file: TextIO, inner: str, node_var: str): +def set_input_defaults(node, dont_set_defaults: dict, file: TextIO, inner: str, + node_var: str): if node.bl_idname != 'NodeReroute': for i, input in enumerate(node.inputs): if input.bl_idname not in dont_set_defaults: @@ -297,8 +296,7 @@ def set_input_defaults(node: bpy.typesNode, dont_set_defaults: dict, f" = {default_val}\n")) file.write("\n") -def init_links(node_tree: bpy.types.NodeTree, file: TextIO, inner: str, - node_tree_var: str): +def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str): """ Create all the links between nodes @@ -379,13 +377,12 @@ def create_unregister_func(file: TextIO, name: str): file.write("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") file.write("\n") -def create_main_func(file: TextIO, name: str): +def create_main_func(file: TextIO): """ Creates the main function Parameters: file (TextIO): file we're generating the add-on into - name (str): name of the generated operator class """ file.write("if __name__ == \"__main__\":\n") file.write("\tregister()") \ No newline at end of file From e75c3839b3b4d4f53b89fd135722c02c1632d205 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 05:05:59 -0600 Subject: [PATCH 036/286] misc: removed pycache folder --- __pycache__/geo_nodes.cpython-310.pyc | Bin 15522 -> 0 bytes __pycache__/utils.cpython-310.pyc | Bin 11991 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __pycache__/geo_nodes.cpython-310.pyc delete mode 100644 __pycache__/utils.cpython-310.pyc diff --git a/__pycache__/geo_nodes.cpython-310.pyc b/__pycache__/geo_nodes.cpython-310.pyc deleted file mode 100644 index 300890bab1f23ffefccf9d5e5503ddaa2fed466e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15522 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 Pv<{fU)GZxbfDir=EEW4c diff --git a/__pycache__/utils.cpython-310.pyc b/__pycache__/utils.cpython-310.pyc deleted file mode 100644 index df5fe1d1c26eb03315a92f3aa8eb3f00bffbb6b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11991 zcmd5?&2t+^cE=0`1I*xqAVg85K1ZZ>N!S!*uas!5iXC|+?UuH(v`f;iQ(P;^5HlnJ zff%S~K#4Gr+QeI%Tyx5Y!!0?fO2z*|4ynp5e?TstYpRksS6?lNWm+`+Dyxhj)|Cf?VIVneJr#9rTvZ3(1 zx}oA%ZKrp&4Q)5Gkx^1k+SMJ+)weV!uOHLO|^=x5@tB%%%OFLTTf$_c|2z@cg|UG7SU67&bqU}nsIfs zs*5R%Ip>^5PsK<%-*zrArc*rrBF0|AV@58>voV)IFT1Cc5m$iMbiUzy z6FBD+2wElKqu!je;;f?g%n7|!=N0rWaPOk?>Ji*)&Q8nLbw3cz&UUB^H|U8@18kA}si^6A?%?s~Q3RVYf#Tl^jk zU&U|rmi1`IwVIu7FNn}G2p11{)zP2^&0oimqa&W@REUQLIpaKp6U+YB>p@0lyAs?b1~ z&`9R~Bqj1_IlO*t$J=$UZFX(3>xyf4y+&`>?F9a{2X5E%udREI`^bBDKiKg)*Lp#- z?bo{dVIe_-GszO!340~4DWXWzXl|#sJ8?#IUTHjZMxPf@ILaXP5z2!!PDbtjoVRjE z?h}X5u?PjIi47;G)bo3MF3pY=fYi3*T=hD~9}JIE7GWGNiD-Q{U8fY$@X7N)9U(N3%COa>m;u*t8DInC97btwYqBuJCePB z#JC{MwsqZ!FrUmV5nUmjeiOV%>g7;b6~yj`>YDW#RX!tDI8>@kuTK=JQ)e1x4-C*Sca(-Veq%Je@oUjgkQ!$yiZfJO zpkfilXKAXPrGnI#IG5D;RZ1ghd1FM&Hvq!4teN5>>Y+wTJv2H{ZS_F7Zi5IN|4}`I zhl%@VsKAJTz#l7$tf>Q~r4WlAq?0x+sb!Ly9;mH!O9Nzf3^JGW8%fPfYWbvANNU{X z6me{&{-?}e58Z%`7pcI_cD>ozf{N@oR&%%O33O5WciJvl3G3~5?;o!p*{-ch8w*~i zG2BFkkY2Xkjw@`kIFXhm&Q2(1t!{SrYr%fk^=oV)K*b0P!C2eEgLU;bTaYE|nY$tq z%?o=GDfP}c=6)gG$(z;(WglTzxa~FU020gS-rt>3@U^pk&7H+3OKAYbJLq$TvpnaXuTmAVlR(~hj zUiFsQKWz}l@=;iCT1%4GYlrF*aU8njTCHz)3$u)G`VwH+271R9F#3=x;r1%CPe2S?mW<{w;o>{{y{6BXO zY(jP@{v#Di&mBBISr@V&bEzSGX0pI%s17wZP`6YZdfNVT3}&K4?o#BH_|jSBqws_v zQHK|_39aL8fus(+NER{Q;=$X^Jy-f|ydpqIt<&o?h%`0HGA!AwK76a=Lj81w*KmCw zHO$b1mBnuM*Ca~cBNU`u;4k`cV}s@{SQ38TR)p23X_A*{j%g=eu4ffa7IfIAjWFPZ zeb9oAaRs~{ob-gP2t%`BNu-mMVAi!+jY<_+W6Cr;(6yuS$Bx`|_dV!%o{9$@Du%R* z#1_@GAdex;aDSL#jMEHL*tMUyFc)+%ev8hYf~MR|LCGoNbsDab@)oaAwMbRAj&+1X zVZPTP*>k}0&l{v-;y*$`D_~vb{bp*Y#bXB9>*LiUk$l>+f+M*(cHFy7uprsuDFe>02wegjY5_L(L>oTAY-3UyF|4%zP2XyJ z+sy{gG{Ffmnxgi4l6g)?xBlrS0$`)Uk4>lnjXk!VIutXrPftmc*#$&%x_erF}H zcI-Vwg&eN0fdbgYvu3+Z`T(&#$IhgLtY!e9i4E|KeSMkN&$>8-F!736$PUv`-2Fn0 zTKpQ0dzIXhDpY+fK5YQ3vafomqCHo8)^viMHLGvdcHHLnPCy9ET4EK%E0C3{$@-q{ zx(u90MkUO}m_y}xsO-blAdI0d(XmOW>f&2KBdrCAtw1g+>Tc@s+rvzNH|PW9!}L%e=;A)Kg#Mutkbba`zafc+ z<1&OZ&FzqO^t^%i5Q#pHXfmkD*oJCZZiB7>HuVK-5YjP@!5YA1e36EDYEr_9lTHQu zXR%zfZ%wk}xLbCw4R4wR!tU%_@n&P5+qL(Z-+m=gCd@?lY1g>BPcoZKu_e4+X33;w z)oC`!I@z#?F4orUfS;)i%EcD@WN~e9dIArdk5-;)$CgggaSB7a=8>--s}1SRLCOM; z7jcrt;Le!KVyR|zfYs1W6A_cs^n98j4lsCaFwR~N^p%MmQfup?40bs&{NuMR3GXxte5^(R*KErgoFKamL1~aFdLCD)Ck$M z?3_k#JtlHJ=8?a{K=z}|LP;qo8lD1t_AAPqqC$GqpJ=~8V(j~Xn()>sR;A6dkSu`% zNif(5!u9$n#pX{LXf5*9)yNbnFGhW7^pR;it`DY_W6!ZZhmBbPW7dL*LHyo(AEp3NS>UqBWr_0N?`y-{&={J- z{4sOR3|Y-5-|3NK2QReiwb|!punXfLN4lk%%hX{G>MTzE z#c_DI?Q$NNt)2Kb__S}->~?p@25y;|Ns=<+0(F~mIJ%`F?5C?Hf@Cu^M>}EpiyLS^ z;p~yMhsBAth6W{9IT;b=;#Gw?B&QLCdYv%CiwZM5NwqL-5lO1W@1Y2lW|)n}hiO2E ziU^hMP}vL>ds@&>jh39q`#%DSe;b8vlvFm5W2LE9(j@LMovQf-8BFt~u1Xc4y`*;e z6kck-5bp!Ygeo9Pk~&~jFhB|__D7K)SBd=-g+SI&qx@(~Va0$n6#QrMxyjCHEWR1( zaYs<3A_$5ET|&XqqAh}AOxh4vWf0jM+fM^EGpRwC0bPJi%_SI$EUe=gGD8Cxj0A&` zU@%A>L>SBjLy1Lv9D~kkL9TFSK%zh1n;jOCvE@Nwsy8<*CcU$R;#99OEG4~_L20Vj z9L^-Yrv@{l-XPDkDX_9^Kv|ZDvkXZJd2Uc1L9)6$O)a2vC59PP05Q*fXBc`xs!8CT zZ50{oO<+AWoa56a=*7V);LwJr2Xn2`aGo)pW-Qcub}*mNcRr%;xdToq;;iRdw01h_ zGs(E~gEMH0==k*Wr~eYK&AAZqRm>9?<-2nUO4hQ;8nGIBNV&$?&av(OZrihiHA|XP z8Q0ul)rH`E4>wXgY&ybbV?UNiS%>7qo8ci*DD>5dMR$`{MgKTsg$piRdg!%k(uj?Sw86CI1McEQuZg#f8E+CNX zU9G}al%;*hMkEY%Nj&&;pjnt7qez$^qXrC0LW!~Zeq1LCjMewUT)cDfF3u#><=#SF zZbsaq#{Aeestd=Ol{(E5?(E(hynz9Ee%PdY-f>z zzE%n$WEDPa+*)E-4X`%?n6(I&N3kcG>JdKmh4g4?9C?|#G>~ySo6ano&fI`fM7U~X zpVK4=hcn?$it^vyNU4=A05Zhuji; z)q^NQ2Nzr)WQT^5>L^dY!59q2U}7Ai4jyl`@+XYXWBfymFYx$#$qFN!=tpObOdO$ zw629^y5W%bOt4RqE~ZR+{{$Q*zJsE#Sy$hROl!Wzq~nMM!3snapW;B+(vR0H@y7(5 zeoR)TfJ+ggG0RVsccYXGD@=LGmgje$MO#W_HbRHwdf@K*VHRI|5P?Gjl?d=pFh{j0 zZ~I1h1d{RtUH^8R)r8;^M=M80AM@6STkfCA9Zz!rk@u++T(G^AYjKrX%t{1^ESCFo=WW$eu038Ah)b}A)^u>8#m zn@|48QM#n$0ZR{+KefuR^o6-~SW5CrzaH^b>WHQPy z7zqQBd&#zl6`~+nXK2JbvX8m4(|e47Z))^3_VQQk*aT54OIp;{X5v From 1c74bd9975c0d60f25fbc831f6bad8cbea0b8fd0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 05:22:50 -0600 Subject: [PATCH 037/286] fix: temporarily removed frame nodes --- README.md | 1 + geo_nodes.py | 2 ++ materials.py | 2 ++ 3 files changed, 5 insertions(+) diff --git a/README.md b/README.md index d5a9bbc..5fb0b97 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ From here, you can install it like a regular add-on. as they won't exist in every blend file. I'm expecting to support some of these in the future. There are a few nodes that don't set their default values like other ones, though these should also soon be supported. +* NodeToPython does not currently support Frame nodes, as they tend to mess up links when added. ## Bug Reports and Suggestions diff --git a/geo_nodes.py b/geo_nodes.py index 26e2717..69b8fb2 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -298,6 +298,8 @@ def process_geo_nodes_group(node_tree, level): f"\'{socket.attribute_domain}\'\n")) file.write("\n") outputs_set = True + elif node.bl_idname == 'NodeFrame': + continue unnamed_idx = 0 #create node diff --git a/materials.py b/materials.py index 1206802..2b08bc8 100644 --- a/materials.py +++ b/materials.py @@ -159,6 +159,8 @@ def process_mat_node_group(node_tree, level): if node_nt is not None and node_nt not in node_trees: process_mat_node_group(node_nt, level + 1) node_trees.add(node_nt) + elif node.bl_idname == 'NodeFrame': + continue node_var, unnamed_idx = create_node(node, file, inner, nt_var, unnamed_idx) From 60908bd8e424ab7cc0783f791be75fd223c1463c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 23:33:50 -0600 Subject: [PATCH 038/286] fix: node spacing and frames are now functional --- geo_nodes.py | 24 +++++++------- materials.py | 13 ++++---- utils.py | 91 ++++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 92 insertions(+), 36 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 69b8fb2..4e61ec1 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -193,6 +193,7 @@ def process_geo_nodes_group(node_tree, level): #initialize nodes file.write(f"{inner}#initialize {node_tree_var} nodes\n") + node_vars = {} for node in node_tree.nodes: if node.bl_idname == 'GeometryNodeGroup': node_nt = node.node_tree @@ -298,18 +299,14 @@ def process_geo_nodes_group(node_tree, level): f"\'{socket.attribute_domain}\'\n")) file.write("\n") outputs_set = True - elif node.bl_idname == 'NodeFrame': - continue - unnamed_idx = 0 #create node - node_var, unnamed_idx = create_node(node, file, inner, - node_tree_var, - unnamed_idx) - - set_settings_defaults(node, geo_node_settings, file, - inner, node_var) - + node_var, node_vars = create_node(node, file, inner, + node_tree_var, node_vars) + set_settings_defaults(node, geo_node_settings, file, inner, + node_var) + hide_sockets(node, file, inner, node_var) + if node.bl_idname == 'GeometryNodeGroup': if node.node_tree is not None: file.write((f"{inner}{node_var}.node_tree = " @@ -321,9 +318,10 @@ def process_geo_nodes_group(node_tree, level): curve_node_settings(node, file, inner, node_var) set_input_defaults(node, dont_set_defaults, file, inner, - node_var) - - init_links(node_tree, file, inner, node_tree_var) + node_var) + set_parents(node_tree, file, inner, node_vars) + set_locations(node_tree, file, inner, node_vars) + init_links(node_tree, file, inner, node_tree_var, node_vars) #create node group file.write(f"\n{outer}{node_tree_var}_node_group()\n\n") diff --git a/materials.py b/materials.py index 2b08bc8..b52fdf1 100644 --- a/materials.py +++ b/materials.py @@ -152,19 +152,19 @@ def process_mat_node_group(node_tree, level): #initialize nodes file.write(f"{inner}#initialize {nt_var} nodes\n") - unnamed_idx = 0 + node_vars = {} for node in node_tree.nodes: if node.bl_idname == 'ShaderNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: process_mat_node_group(node_nt, level + 1) node_trees.add(node_nt) - elif node.bl_idname == 'NodeFrame': - continue - node_var, unnamed_idx = create_node(node, file, inner, nt_var, unnamed_idx) + node_var, node_vars = create_node(node, file, inner, nt_var, + node_vars) set_settings_defaults(node, node_settings, file, inner, node_var) + hide_sockets(node, file, inner, node_var) if node.bl_idname == 'ShaderNodeGroup': if node.node_tree is not None: @@ -178,8 +178,9 @@ def process_mat_node_group(node_tree, level): set_input_defaults(node, dont_set_defaults, file, inner, node_var) - - init_links(node_tree, file, inner, nt_var) + set_parents(node_tree, file, inner, node_vars) + set_locations(node_tree, file, inner, node_vars) + init_links(node_tree, file, inner, nt_var, node_vars) file.write(f"\n{outer}{nt_var}_node_group()\n\n") diff --git a/utils.py b/utils.py index b66b7bb..9ebed86 100644 --- a/utils.py +++ b/utils.py @@ -123,7 +123,7 @@ def make_indents(level: int) -> Tuple[str, str]: return outer, inner def create_node(node, file: TextIO, inner: str, node_tree_var: str, - unnamed_idx: int = 0) -> Tuple[str, int]: + node_vars: dict) -> Tuple[str, dict]: """ Initializes a new node with location, dimension, and label info @@ -132,25 +132,29 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, file (TextIO): file containing the generated add-on inner (str): indentation level for this logic node_tree_var (str): variable name for the node tree + node_vars (dict): dictionary containing (bpy.types.Node, str) key-value + pairs, where the key is the node and the value its corresponding + variable name in the addon Returns: node_var (str): variable name for the node - unnamed_idx (int): unnamed index. if a node doesn't have a name, this will be used to give it a variable name + node_vars (dict): the updated variable name dictionary """ file.write(f"{inner}#node {node.name}\n") node_var = clean_string(node.name) if node_var == "": - node_var = f"node_{unnamed_idx}" - unnamed_idx += 1 + i = 0 + while node_var in node_vars: + node_var = f"unnamed_node_{i}" + i += 1 + + node_vars[node] = node_var file.write((f"{inner}{node_var} " f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) - #location - file.write((f"{inner}{node_var}.location " - f"= ({node.location.x}, {node.location.y})\n")) #dimensions file.write((f"{inner}{node_var}.width, {node_var}.height " f"= {node.width}, {node.height}\n")) @@ -158,7 +162,7 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, if node.label: file.write(f"{inner}{node_var}.label = \"{node.label}\"\n") - return node_var, unnamed_idx + return node_var, node_vars def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, node_var: str): @@ -183,9 +187,28 @@ def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, file.write((f"{inner}{node_var}.{setting} " f"= {attr}\n")) -def color_ramp_settings(node, file: TextIO, inner: str, - node_var: str): +def hide_sockets(node, file: TextIO, inner: str, node_var: str): + """ + Hide hidden sockets + + Parameters: + node (bpy.types.Node): node object we're copying socket settings from + file (TextIO): file we're generating the add-on into + inner (str): indentation string + node_var (str): name of the variable we're using for this node + """ + for i, socket in enumerate(node.inputs): + if socket.hide is True: + file.write(f"{inner}{node_var}.inputs[{i}].hide = True\n") + for i, socket in enumerate(node.outputs): + if socket.hide is True: + file.write(f"{inner}{node_var}.outputs[{i}].hide = True\n") + +def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): """ + Replicate a color ramp node + + Parameters node (bpy.types.Node): node object we're copying settings from file (TextIO): file we're generating the add-on into inner (str): indentation @@ -296,7 +319,40 @@ def set_input_defaults(node, dont_set_defaults: dict, file: TextIO, inner: str, f" = {default_val}\n")) file.write("\n") -def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str): +def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): + """ + Sets parents for all nodes, mostly used to put nodes in frames + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from + file (TextIO): file for the generated add-on + inner (str): indentation string + node_vars (dict): dictionary for (node, variable) name pairs + """ + for node in node_tree.nodes: + if node is not None and node.parent is not None: + node_var = node_vars[node] + parent_var = node_vars[node.parent] + file.write(f"{inner}{node_var}.parent = {parent_var}\n") + +def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): + """ + Set locations for all nodes + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from + file (TextIO): file for the generated add-on + inner (str): indentation string + node_vars (dict): dictionary for (node, variable) name pairs + """ + + for node in node_tree.nodes: + node_var = node_vars[node] + file.write((f"{inner}{node_var}.location " + f"= ({node.location.x}, {node.location.y})\n")) + +def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, + node_vars: dict): """ Create all the links between nodes @@ -305,12 +361,13 @@ def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str): file (TextIO): file we're generating the add-on into inner (str): indentation node_tree_var (str): variable name we're using for the copied node tree + node_vars (dict): dictionary containing node to variable name pairs """ if node_tree.links: file.write(f"{inner}#initialize {node_tree_var} links\n") for link in node_tree.links: - input_node = clean_string(link.from_node.name) + in_node_var = node_vars[link.from_node] input_socket = link.from_socket """ @@ -324,7 +381,7 @@ def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str): input_idx = i break - output_node = clean_string(link.to_node.name) + out_node_var = node_vars[link.to_node] output_socket = link.to_socket for i, item in enumerate(link.to_node.inputs.items()): @@ -332,11 +389,11 @@ def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str): output_idx = i break - file.write((f"{inner}#{input_node}.{input_socket.name} " - f"-> {output_node}.{output_socket.name}\n")) - file.write((f"{inner}{node_tree_var}.links.new({input_node}" + file.write((f"{inner}#{in_node_var}.{input_socket.name} " + f"-> {out_node_var}.{output_socket.name}\n")) + file.write((f"{inner}{node_tree_var}.links.new({in_node_var}" f".outputs[{input_idx}], " - f"{output_node}.inputs[{output_idx}])\n")) + f"{out_node_var}.inputs[{output_idx}])\n")) def create_menu_func(file: TextIO, name: str): """ From 2a986f71cef0d039f5722aceca4ed6e78778ce13 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 23:36:19 -0600 Subject: [PATCH 039/286] docs: updated README to reflect support for frame nodes --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 5fb0b97..d5a9bbc 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,6 @@ From here, you can install it like a regular add-on. as they won't exist in every blend file. I'm expecting to support some of these in the future. There are a few nodes that don't set their default values like other ones, though these should also soon be supported. -* NodeToPython does not currently support Frame nodes, as they tend to mess up links when added. ## Bug Reports and Suggestions From 9d14730d05cb2199a42889d5030ffb87e86b905f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 13 Jan 2023 23:56:45 -0600 Subject: [PATCH 040/286] feat: node colors now replicated --- geo_nodes.py | 3 +++ materials.py | 2 ++ utils.py | 25 +++++++++++++++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 4e61ec1..d584bd6 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -319,8 +319,11 @@ def process_geo_nodes_group(node_tree, level): set_input_defaults(node, dont_set_defaults, file, inner, node_var) + set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) + set_dimensions(node_tree, file, inner, node_vars) + init_links(node_tree, file, inner, node_tree_var, node_vars) #create node group diff --git a/materials.py b/materials.py index b52fdf1..04ae8d9 100644 --- a/materials.py +++ b/materials.py @@ -180,6 +180,8 @@ def process_mat_node_group(node_tree, level): node_var) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) + set_dimensions(node_tree, file, inner, node_vars) + init_links(node_tree, file, inner, nt_var, node_vars) file.write(f"\n{outer}{nt_var}_node_group()\n\n") diff --git a/utils.py b/utils.py index 9ebed86..28e3813 100644 --- a/utils.py +++ b/utils.py @@ -154,14 +154,14 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, file.write((f"{inner}{node_var} " f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) - - #dimensions - file.write((f"{inner}{node_var}.width, {node_var}.height " - f"= {node.width}, {node.height}\n")) #label if node.label: file.write(f"{inner}{node_var}.label = \"{node.label}\"\n") + #color + if node.use_custom_color: + file.write(f"{inner}{node_var}.use_custom_color = True\n") + file.write(f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") return node_var, node_vars def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, @@ -351,6 +351,23 @@ def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): file.write((f"{inner}{node_var}.location " f"= ({node.location.x}, {node.location.y})\n")) +def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): + """ + Set dimensions for all nodes + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from + file (TextIO): file for the generated add-on + inner (str): indentation string + node_vars (dict): dictionary for (node, variable) name pairs + """ + + for node in node_tree.nodes: + node_var = node_vars[node] + file.write((f"{inner}{node_var}.width, {node_var}.height " + f"= {node.width}, {node.height}\n")) + + def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, node_vars: dict): """ From a8ff077dde1ccfe412368b28334fa9efa9395704 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 14 Jan 2023 00:12:33 -0600 Subject: [PATCH 041/286] feat: nodes can now be muted --- utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/utils.py b/utils.py index 28e3813..1e5fb75 100644 --- a/utils.py +++ b/utils.py @@ -162,6 +162,11 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, if node.use_custom_color: file.write(f"{inner}{node_var}.use_custom_color = True\n") file.write(f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") + + #mute + if node.mute: + file.write(f"{inner}{node_var}.mute = True\n") + return node_var, node_vars def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, From 1dda44ecb1a550fa8b9aa935f327db7341d5e03a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 16 Jan 2023 19:14:15 -0600 Subject: [PATCH 042/286] feat: image saving and zipping --- geo_nodes.py | 15 ++++---- materials.py | 9 ++--- utils.py | 98 ++++++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 106 insertions(+), 16 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index d584bd6..276bb13 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -13,7 +13,7 @@ #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', 'NodeSocketGeometry', - 'NodeSocketImage', + #'NodeSocketImage', 'NodeSocketMaterial', 'NodeSocketObject', 'NodeSocketTexture', @@ -153,18 +153,18 @@ def execute(self, context): class_name = nt.name.replace(" ", "").replace('.', "") #find base directory to save new addon - dir = bpy.path.abspath("//") - if not dir or dir == "": + base_dir = bpy.path.abspath("//") + if not base_dir or base_dir == "": self.report({'ERROR'}, ("NodeToPython: Save your blend file before using " "NodeToPython!")) return {'CANCELLED'} #save in /addons/ subdirectory - addon_dir = os.path.join(dir, "addons") + addon_dir = os.path.join(base_dir, "addons", nt_var) if not os.path.exists(addon_dir): os.mkdir(addon_dir) - file = open(f"{addon_dir}/{nt_var}_addon.py", "w") + file = open(f"{addon_dir}/__init__.py", "w") create_header(file, nt) init_operator(file, class_name, nt_var, nt.name) @@ -318,7 +318,7 @@ def process_geo_nodes_group(node_tree, level): curve_node_settings(node, file, inner, node_var) set_input_defaults(node, dont_set_defaults, file, inner, - node_var) + node_var, addon_dir) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) @@ -339,6 +339,9 @@ def process_geo_nodes_group(node_tree, level): create_main_func(file) file.close() + + zip_addon(addon_dir) + return {'FINISHED'} class SelectGeoNodesMenu(bpy.types.Menu): diff --git a/materials.py b/materials.py index 04ae8d9..f72127a 100644 --- a/materials.py +++ b/materials.py @@ -6,7 +6,7 @@ #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', 'NodeSocketGeometry', - 'NodeSocketImage', + #'NodeSocketImage', 'NodeSocketMaterial', 'NodeSocketObject', 'NodeSocketShader', @@ -108,10 +108,10 @@ def execute(self, context): ("NodeToPython: Save your blender file before using " "NodeToPython!")) return {'CANCELLED'} - addon_dir = os.path.join(dir, "addons") + addon_dir = os.path.join(dir, "addons", mat_var) if not os.path.exists(addon_dir): os.mkdir(addon_dir) - file = open(f"{addon_dir}/{mat_var}_addon.py", "w") + file = open(f"{addon_dir}/__init__.py", "w") create_header(file, nt) init_operator(file, class_name, mat_var, self.material_name) @@ -177,7 +177,7 @@ def process_mat_node_group(node_tree, level): curve_node_settings(node, file, inner, node_var) set_input_defaults(node, dont_set_defaults, file, inner, - node_var) + node_var, addon_dir) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) @@ -196,6 +196,7 @@ def process_mat_node_group(node_tree, level): create_main_func(file) file.close() + zip_addon(addon_dir) return {'FINISHED'} class SelectMaterialMenu(bpy.types.Menu): diff --git a/utils.py b/utils.py index 1e5fb75..9315c88 100644 --- a/utils.py +++ b/utils.py @@ -1,9 +1,13 @@ import bpy import mathutils +import os import re +import shutil from typing import TextIO, Tuple +image_dir_name = "imgs" + def clean_string(string: str) -> str: """ Cleans up a string for use as a variable or file name @@ -66,6 +70,20 @@ def vec4_to_py_str(vec) -> str: """ return f"({vec[0]}, {vec[1]}, {vec[2]}, {vec[3]})" +def img_to_py_str(img) -> str: + """ + Converts a Blender image into its string + + Paramters: + img (bpy.types.Image): a Blender image + + Returns: + (str): string version + """ + name = img.name + format = img.file_format.lower() + return f"{name}.{format}" + def create_header(file: TextIO, node_tree): """ Sets up the bl_info and imports the Blender API @@ -85,6 +103,7 @@ def create_header(file: TextIO, node_tree): file.write("}\n") file.write("\n") file.write("import bpy\n") + file.write("import os") file.write("\n") def init_operator(file: TextIO, name: str, idname: str, label: str): @@ -229,7 +248,6 @@ def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): file.write((f"{inner}{node_var}.color_ramp.interpolation " f"= '{color_ramp.interpolation}'\n")) file.write("\n") - #key points for i, element in enumerate(color_ramp.elements): file.write((f"{inner}{node_var}_cre_{i} = " @@ -305,22 +323,41 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping}.update()\n") -def set_input_defaults(node, dont_set_defaults: dict, file: TextIO, inner: str, - node_var: str): +def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, + node_var: str, addon_dir: str): + """ + Sets defaults for input sockets + + Parameters: + node (bpy.types.Node): node we're setting inputs for + dont_set_defaults (set): set of sockets we shouldn't attempt to set + default values for + file (TextIO): file we're generating the add-on into + inner (str): indentation + node_var (str): variable name we're using for the copied node + addon_dir (str): directory of the add-on, for if we need to save other + objects for the add-on + """ if node.bl_idname != 'NodeReroute': for i, input in enumerate(node.inputs): if input.bl_idname not in dont_set_defaults: + socket_var = f"{node_var}.inputs[{i}]" if input.bl_idname == 'NodeSocketColor': default_val = vec4_to_py_str(input.default_value) elif "Vector" in input.bl_idname: default_val = vec3_to_py_str(input.default_value) elif input.bl_idname == 'NodeSocketString': default_val = str_to_py_str(input.default_value) + elif input.bl_idname == 'NodeSocketImage': + img = input.default_value + save_image(img, addon_dir) + load_image(img, file, inner, f"{socket_var}.default_value") + default_val = None else: default_val = input.default_value if default_val is not None: file.write(f"{inner}#{input.identifier}\n") - file.write((f"{inner}{node_var}.inputs[{i}].default_value" + file.write((f"{inner}{socket_var}.default_value" f" = {default_val}\n")) file.write("\n") @@ -372,7 +409,6 @@ def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): file.write((f"{inner}{node_var}.width, {node_var}.height " f"= {node.width}, {node.height}\n")) - def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, node_vars: dict): """ @@ -464,4 +500,54 @@ def create_main_func(file: TextIO): file (TextIO): file we're generating the add-on into """ file.write("if __name__ == \"__main__\":\n") - file.write("\tregister()") \ No newline at end of file + file.write("\tregister()") + +def save_image(img, addon_dir: str): + """ + Saves an image to an image directory of the add-on + + Parameters: + img (bpy.types.Image): image to be saved + addon_dir (str): directory of the addon + """ + #create image dir if one doesn't exist + img_dir = os.path.join(addon_dir, image_dir_name) + if not os.path.exists(img_dir): + os.mkdir(img_dir) + + #save the image + img_str = img_to_py_str(img) + img_path = f"{img_dir}/{img_str}" + if not os.path.exists(img_path): + img.save_render(img_path) + +def load_image(img, file: TextIO, inner: str, img_var: str): + """ + Loads an image from the add-on into a blend file and assigns it + + Parameters: + img (bpy.types.Image): Blender image from the original node group + file (TextIO): file for the generated add-on + inner (str): indentation string + img_var (str): variable name to be used for the image + """ + img_str = img_to_py_str(img) + + file.write(f"{inner}#load image {img_str}\n") + file.write((f"{inner}base_dir = " + f"os.path.dirname(os.path.abspath(__file__))\n")) + file.write((f"{inner}image_path = " + f"os.path.join(base_dir, \"{image_dir_name}\", " + f"\"{img_str}\")\n")) + file.write((f"{inner}{img_var} = " + f"bpy.data.images.load(image_path, check_existing = True)\n")) + +def zip_addon(addon_dir: str): + """ + Zips up the addon and removes the directory + + Parameters: + addon_dir (str): path to the directory of the addon + """ + shutil.make_archive(addon_dir, "zip", addon_dir) + shutil.rmtree(addon_dir) \ No newline at end of file From f6632b253fc314aad3063283af0bcae445ee3b60 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 16 Jan 2023 19:31:03 -0600 Subject: [PATCH 043/286] fix: zip files now contain folder as their top level --- geo_nodes.py | 2 +- materials.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 276bb13..7a805a1 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -161,7 +161,7 @@ def execute(self, context): return {'CANCELLED'} #save in /addons/ subdirectory - addon_dir = os.path.join(base_dir, "addons", nt_var) + addon_dir = os.path.join(base_dir, "addons", nt_var, nt_var) if not os.path.exists(addon_dir): os.mkdir(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") diff --git a/materials.py b/materials.py index f72127a..495d345 100644 --- a/materials.py +++ b/materials.py @@ -108,7 +108,7 @@ def execute(self, context): ("NodeToPython: Save your blender file before using " "NodeToPython!")) return {'CANCELLED'} - addon_dir = os.path.join(dir, "addons", mat_var) + addon_dir = os.path.join(dir, "addons", mat_var, mat_var) if not os.path.exists(addon_dir): os.mkdir(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") From f804010965898bed15f57264b53898d83ec02563 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 16 Jan 2023 20:01:41 -0600 Subject: [PATCH 044/286] fix: image filenames extensions no longer doubled --- geo_nodes.py | 7 ++++--- materials.py | 10 +++++++--- utils.py | 10 +++++----- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 7a805a1..2f6951f 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -161,9 +161,10 @@ def execute(self, context): return {'CANCELLED'} #save in /addons/ subdirectory - addon_dir = os.path.join(base_dir, "addons", nt_var, nt_var) + zip_dir = os.path.join(base_dir, "addons", nt_var) + addon_dir = os.path.join(zip_dir, nt_var) if not os.path.exists(addon_dir): - os.mkdir(addon_dir) + os.makedirs(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") create_header(file, nt) @@ -340,7 +341,7 @@ def process_geo_nodes_group(node_tree, level): file.close() - zip_addon(addon_dir) + zip_addon(zip_dir) return {'FINISHED'} diff --git a/materials.py b/materials.py index 495d345..1c410fd 100644 --- a/materials.py +++ b/materials.py @@ -108,9 +108,10 @@ def execute(self, context): ("NodeToPython: Save your blender file before using " "NodeToPython!")) return {'CANCELLED'} - addon_dir = os.path.join(dir, "addons", mat_var, mat_var) + zip_dir = os.path.join(dir, "addons", mat_var) + addon_dir = os.path.join(zip_dir, mat_var) if not os.path.exists(addon_dir): - os.mkdir(addon_dir) + os.makedirs(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") create_header(file, nt) @@ -171,6 +172,9 @@ def process_mat_node_group(node_tree, level): file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) + elif node.bl_idname == 'ShaderNodeTexImage': + save_image(node.image, addon_dir) + load_image(node.image, file, inner, f"{node_var}.image") elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: @@ -196,7 +200,7 @@ def process_mat_node_group(node_tree, level): create_main_func(file) file.close() - zip_addon(addon_dir) + zip_addon(zip_dir) return {'FINISHED'} class SelectMaterialMenu(bpy.types.Menu): diff --git a/utils.py b/utils.py index 9315c88..b651d6a 100644 --- a/utils.py +++ b/utils.py @@ -80,7 +80,7 @@ def img_to_py_str(img) -> str: Returns: (str): string version """ - name = img.name + name = img.name.split('.', 1)[0] format = img.file_format.lower() return f"{name}.{format}" @@ -542,12 +542,12 @@ def load_image(img, file: TextIO, inner: str, img_var: str): file.write((f"{inner}{img_var} = " f"bpy.data.images.load(image_path, check_existing = True)\n")) -def zip_addon(addon_dir: str): +def zip_addon(zip_dir: str): """ Zips up the addon and removes the directory Parameters: - addon_dir (str): path to the directory of the addon + zip_dir (str): path to the top-level addon directory """ - shutil.make_archive(addon_dir, "zip", addon_dir) - shutil.rmtree(addon_dir) \ No newline at end of file + shutil.make_archive(zip_dir, "zip", zip_dir) + shutil.rmtree(zip_dir) \ No newline at end of file From 13e391c54be44df3eae0ed9bf849fece1700dd29 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 16 Jan 2023 20:27:05 -0600 Subject: [PATCH 045/286] fix: issue with base material node tree automatically adding two nodes --- materials.py | 3 +++ utils.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/materials.py b/materials.py index 1c410fd..fb3d646 100644 --- a/materials.py +++ b/materials.py @@ -143,6 +143,9 @@ def process_mat_node_group(node_tree, level): if level == 2: #outermost node group file.write(f"{inner}{nt_var} = mat.node_tree\n") + file.write(f"{inner}#start with a clean node tree\n") + file.write(f"{inner}for node in {nt_var}.nodes:\n") + file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") else: file.write((f"{inner}{nt_var}" f"= bpy.data.node_groups.new(" diff --git a/utils.py b/utils.py index b651d6a..542f2f0 100644 --- a/utils.py +++ b/utils.py @@ -340,7 +340,7 @@ def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, """ if node.bl_idname != 'NodeReroute': for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults: + if input.bl_idname not in dont_set_defaults and not input.is_linked: socket_var = f"{node_var}.inputs[{i}]" if input.bl_idname == 'NodeSocketColor': default_val = vec4_to_py_str(input.default_value) From a9fea3e13cda19d3e05d4c788ee707801379987a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 16 Jan 2023 20:39:47 -0600 Subject: [PATCH 046/286] fix: material add-on names now use the name of the material instead of the shader node tree --- geo_nodes.py | 2 +- materials.py | 2 +- utils.py | 52 ++++++++++++++++++++++++++++------------------------ 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 2f6951f..cdace52 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -167,7 +167,7 @@ def execute(self, context): os.makedirs(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") - create_header(file, nt) + create_header(file, nt.name) init_operator(file, class_name, nt_var, nt.name) file.write("\tdef execute(self, context):\n") diff --git a/materials.py b/materials.py index fb3d646..08d36bf 100644 --- a/materials.py +++ b/materials.py @@ -114,7 +114,7 @@ def execute(self, context): os.makedirs(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") - create_header(file, nt) + create_header(file, self.material_name) init_operator(file, class_name, mat_var, self.material_name) file.write("\tdef execute(self, context):\n") diff --git a/utils.py b/utils.py index 542f2f0..d04239b 100644 --- a/utils.py +++ b/utils.py @@ -84,17 +84,17 @@ def img_to_py_str(img) -> str: format = img.file_format.lower() return f"{name}.{format}" -def create_header(file: TextIO, node_tree): +def create_header(file: TextIO, name: str): """ Sets up the bl_info and imports the Blender API Parameters: file (TextIO): the file for the generated add-on - node_tree (bpy.types.NodeTree): the node group object we're converting into an add-on + name (str): name of the add-on """ file.write("bl_info = {\n") - file.write(f"\t\"name\" : \"{node_tree.name}\",\n") + file.write(f"\t\"name\" : \"{name}\",\n") file.write("\t\"author\" : \"Node To Python\",\n") file.write("\t\"version\" : (1, 0, 0),\n") file.write(f"\t\"blender\" : {bpy.app.version},\n") @@ -338,27 +338,30 @@ def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, addon_dir (str): directory of the add-on, for if we need to save other objects for the add-on """ - if node.bl_idname != 'NodeReroute': - for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults and not input.is_linked: - socket_var = f"{node_var}.inputs[{i}]" - if input.bl_idname == 'NodeSocketColor': - default_val = vec4_to_py_str(input.default_value) - elif "Vector" in input.bl_idname: - default_val = vec3_to_py_str(input.default_value) - elif input.bl_idname == 'NodeSocketString': - default_val = str_to_py_str(input.default_value) - elif input.bl_idname == 'NodeSocketImage': - img = input.default_value - save_image(img, addon_dir) - load_image(img, file, inner, f"{socket_var}.default_value") - default_val = None - else: - default_val = input.default_value - if default_val is not None: - file.write(f"{inner}#{input.identifier}\n") - file.write((f"{inner}{socket_var}.default_value" - f" = {default_val}\n")) + if node.bl_idname == 'NodeReroute': + return + + for i, input in enumerate(node.inputs): + if input.bl_idname not in dont_set_defaults and not input.is_linked: + socket_var = f"{node_var}.inputs[{i}]" + if input.bl_idname == 'NodeSocketColor': + default_val = vec4_to_py_str(input.default_value) + elif "Vector" in input.bl_idname: + default_val = vec3_to_py_str(input.default_value) + elif input.bl_idname == 'NodeSocketString': + default_val = str_to_py_str(input.default_value) + elif input.bl_idname == 'NodeSocketImage': + print("Input is linked: ", input.is_linked) + img = input.default_value + save_image(img, addon_dir) + load_image(img, file, inner, f"{socket_var}.default_value") + default_val = None + else: + default_val = input.default_value + if default_val is not None: + file.write(f"{inner}#{input.identifier}\n") + file.write((f"{inner}{socket_var}.default_value" + f" = {default_val}\n")) file.write("\n") def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): @@ -518,6 +521,7 @@ def save_image(img, addon_dir: str): #save the image img_str = img_to_py_str(img) img_path = f"{img_dir}/{img_str}" + print("Image Path: ", img_path) if not os.path.exists(img_path): img.save_render(img_path) From b35866cdf1d24f2b2a01ee85b9ec013bd00eac55 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 16 Jan 2023 20:56:36 -0600 Subject: [PATCH 047/286] fix: issue with non-existent images --- geo_nodes.py | 1 - materials.py | 1 - utils.py | 13 +++++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index cdace52..9e75917 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -13,7 +13,6 @@ #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', 'NodeSocketGeometry', - #'NodeSocketImage', 'NodeSocketMaterial', 'NodeSocketObject', 'NodeSocketTexture', diff --git a/materials.py b/materials.py index 08d36bf..90c28b5 100644 --- a/materials.py +++ b/materials.py @@ -6,7 +6,6 @@ #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketCollection', 'NodeSocketGeometry', - #'NodeSocketImage', 'NodeSocketMaterial', 'NodeSocketObject', 'NodeSocketShader', diff --git a/utils.py b/utils.py index d04239b..a0035eb 100644 --- a/utils.py +++ b/utils.py @@ -353,8 +353,9 @@ def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, elif input.bl_idname == 'NodeSocketImage': print("Input is linked: ", input.is_linked) img = input.default_value - save_image(img, addon_dir) - load_image(img, file, inner, f"{socket_var}.default_value") + if img is not None: + save_image(img, addon_dir) + load_image(img, file, inner, f"{socket_var}.default_value") default_val = None else: default_val = input.default_value @@ -513,6 +514,10 @@ def save_image(img, addon_dir: str): img (bpy.types.Image): image to be saved addon_dir (str): directory of the addon """ + + if img is None: + return + #create image dir if one doesn't exist img_dir = os.path.join(addon_dir, image_dir_name) if not os.path.exists(img_dir): @@ -535,6 +540,10 @@ def load_image(img, file: TextIO, inner: str, img_var: str): inner (str): indentation string img_var (str): variable name to be used for the image """ + + if img is None: + return + img_str = img_to_py_str(img) file.write(f"{inner}#load image {img_str}\n") From a960ae0d1c3b4c144363cb3ebc42feb0dce060ab Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 18 Jan 2023 11:50:42 -0600 Subject: [PATCH 048/286] docs: update README --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d5a9bbc..eb4f3a0 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,14 @@ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ## About -A Blender add-on to create add-ons! This script will take your Geometry Nodes or Materials and convert them into legible Python add-ons! +A Blender add-on to create add-ons! This addo-on will take your Geometry Nodes or Materials and convert them into legible Python add-ons! It automatically handles node layout, default values, sub-node groups, naming, and more! -I think Blender's node-based editors are powerful, yet accessible tools, and I wanted to make scripting them for add-on creators. Combining Python with node based setups allows you to do things that would otherwise be tedious or impossible, such as +I think Blender's node-based editors are powerful, yet accessible tools, and I wanted to make scripting them easier for add-on creators. Combining Python with node based setups allows you to do things that would otherwise be tedious or impossible, such as * `for` loops -* different node trees for different versions or settings -* interfacing with other parts of the software. +* creating different node trees for different versions or settings +* interfacing with other parts of the software or properties of an object NodeToPython recreates the node networks for you, so you can focus on the good stuff. @@ -45,7 +45,6 @@ From here, you can install it like a regular add-on. ## Potential Issues * As of version 2.0.0, the add-on will not set default values for * Collections - * Images * Materials * Objects * Textures From b6f5ba871c906c32f7db52aac916c98f61c21c3d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 20 Jan 2023 00:04:45 -0600 Subject: [PATCH 049/286] feat: copy image source, colorspace, and alpha mode --- geo_nodes.py | 2 +- materials.py | 2 +- utils.py | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 9e75917..8f09190 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -340,7 +340,7 @@ def process_geo_nodes_group(node_tree, level): file.close() - zip_addon(zip_dir) + #zip_addon(zip_dir) return {'FINISHED'} diff --git a/materials.py b/materials.py index 90c28b5..09b5893 100644 --- a/materials.py +++ b/materials.py @@ -202,7 +202,7 @@ def process_mat_node_group(node_tree, level): create_main_func(file) file.close() - zip_addon(zip_dir) + #zip_addon(zip_dir) return {'FINISHED'} class SelectMaterialMenu(bpy.types.Menu): diff --git a/utils.py b/utils.py index a0035eb..ff9c146 100644 --- a/utils.py +++ b/utils.py @@ -555,6 +555,17 @@ def load_image(img, file: TextIO, inner: str, img_var: str): file.write((f"{inner}{img_var} = " f"bpy.data.images.load(image_path, check_existing = True)\n")) + #copy image settings + #source + file.write(f"{inner}{img_var}.source = \'{img.source}\'\n") + + #color space settings + file.write((f"{inner}{img_var}.colorspace_settings.name = " + f"\'{img.colorspace_settings.name}\'\n")) + + #alpha mode + file.write(f"{inner}{img_var}.alpha_mode = \'{img.alpha_mode}\'\n") + def zip_addon(zip_dir: str): """ Zips up the addon and removes the directory From 90870cf975068f78dab7faac073fa5a4f585d9f0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 20 Jan 2023 00:25:40 -0600 Subject: [PATCH 050/286] feat: image user copying --- utils.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/utils.py b/utils.py index ff9c146..bbf358d 100644 --- a/utils.py +++ b/utils.py @@ -566,6 +566,30 @@ def load_image(img, file: TextIO, inner: str, img_var: str): #alpha mode file.write(f"{inner}{img_var}.alpha_mode = \'{img.alpha_mode}\'\n") +def image_user_settings(node, file: TextIO, inner: str, node_var: str): + """ + Replicate the image user + + Parameters + node (bpy.types.Node): node object we're copying settings from + file (TextIO): file we're generating the add-on into + inner (str): indentation + node_var (str): name of the variable we're using for the color ramp + """ + + if not hasattr(node, "image_user"): + raise ValueError("Node must have attribute \"image_user\"") + + img_usr = node.image_user + img_usr_var = f"{node_var}.image_user" + + img_usr_attrs = ["frame_current", "frame_duration", "frame_offset", + "frame_start", "tile", "use_auto_refresh", "use_cyclic"] + + for img_usr_attr in img_usr_attrs: + file.write((f"{inner}{img_usr_var}.{img_usr_attr} = " + f"{getattr(img_usr, img_usr_attr)}\n")) + def zip_addon(zip_dir: str): """ Zips up the addon and removes the directory From dcc5f5c9a9ce5300fa44aa2918b4851b487c77eb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 20 Jan 2023 00:38:43 -0600 Subject: [PATCH 051/286] feat: added environment texture and restricted image copying to single images --- materials.py | 13 +++++++++---- utils.py | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/materials.py b/materials.py index 09b5893..2fc56d7 100644 --- a/materials.py +++ b/materials.py @@ -79,7 +79,10 @@ curve_nodes = {'ShaderNodeFloatCurve', 'ShaderNodeVectorCurve', - 'ShaderNodeRGBCurve'} + 'ShaderNodeRGBCurve'} + +image_nodes = {'ShaderNodeTexEnvironment', + 'ShaderNodeTexImage'} class MaterialToPython(bpy.types.Operator): bl_idname = "node.material_to_python" @@ -174,9 +177,11 @@ def process_mat_node_group(node_tree, level): file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) - elif node.bl_idname == 'ShaderNodeTexImage': - save_image(node.image, addon_dir) - load_image(node.image, file, inner, f"{node_var}.image") + elif node.bl_idname in image_nodes: + img = node.image + if img.source in {'FILE', 'GENERATED', 'TILED'}: + save_image(img, addon_dir) + load_image(img, file, inner, f"{node_var}.image") elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: diff --git a/utils.py b/utils.py index bbf358d..cfa4255 100644 --- a/utils.py +++ b/utils.py @@ -568,7 +568,7 @@ def load_image(img, file: TextIO, inner: str, img_var: str): def image_user_settings(node, file: TextIO, inner: str, node_var: str): """ - Replicate the image user + Replicate the image user of an image node Parameters node (bpy.types.Node): node object we're copying settings from From 1e54f0cf77cfb1715943a19f838e7c46b46167f3 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 20 Jan 2023 00:50:53 -0600 Subject: [PATCH 052/286] fix: material class name no longer derives from node tree name --- materials.py | 3 ++- utils.py | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/materials.py b/materials.py index 2fc56d7..8f99f4c 100644 --- a/materials.py +++ b/materials.py @@ -102,7 +102,7 @@ def execute(self, context): #set up names to use in generated addon mat_var = clean_string(self.material_name) - class_name = nt.name.replace(" ", "") + class_name = clean_string(self.material_name, lower=False) dir = bpy.path.abspath("//") if not dir or dir == "": @@ -182,6 +182,7 @@ def process_mat_node_group(node_tree, level): if img.source in {'FILE', 'GENERATED', 'TILED'}: save_image(img, addon_dir) load_image(img, file, inner, f"{node_var}.image") + image_user_settings(node, file, inner, node_var) elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: diff --git a/utils.py b/utils.py index cfa4255..05e5c13 100644 --- a/utils.py +++ b/utils.py @@ -8,7 +8,7 @@ image_dir_name = "imgs" -def clean_string(string: str) -> str: +def clean_string(string: str, lower: bool = True) -> str: """ Cleans up a string for use as a variable or file name @@ -19,7 +19,9 @@ def clean_string(string: str) -> str: clean_str: The input string with nasty characters converted to underscores """ - clean_str = re.sub(r"[^a-zA-Z0-9_]", '_', string.lower()) + if lower: + string = string.lower() + clean_str = re.sub(r"[^a-zA-Z0-9_]", '_', string) return clean_str def enum_to_py_str(enum: str) -> str: @@ -556,6 +558,8 @@ def load_image(img, file: TextIO, inner: str, img_var: str): f"bpy.data.images.load(image_path, check_existing = True)\n")) #copy image settings + file.write(f"{inner}#set image settings\n") + #source file.write(f"{inner}{img_var}.source = \'{img.source}\'\n") From ae6e36b18aec4ec44b50d1bc7d6c267f71fc7731 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 20 Jan 2023 00:57:40 -0600 Subject: [PATCH 053/286] feat: zips addon again --- geo_nodes.py | 2 +- materials.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 8f09190..9e75917 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -340,7 +340,7 @@ def process_geo_nodes_group(node_tree, level): file.close() - #zip_addon(zip_dir) + zip_addon(zip_dir) return {'FINISHED'} diff --git a/materials.py b/materials.py index 8f99f4c..17d74d1 100644 --- a/materials.py +++ b/materials.py @@ -208,7 +208,7 @@ def process_mat_node_group(node_tree, level): create_main_func(file) file.close() - #zip_addon(zip_dir) + zip_addon(zip_dir) return {'FINISHED'} class SelectMaterialMenu(bpy.types.Menu): From 89ee0bb4d8082ac7e7954efe3af58469b4d01a35 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 14:17:24 -0600 Subject: [PATCH 054/286] feat: set defaults for some attributes if they exist in a blend file --- materials.py | 6 +++--- utils.py | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/materials.py b/materials.py index 17d74d1..4fa843a 100644 --- a/materials.py +++ b/materials.py @@ -4,10 +4,10 @@ from .utils import * #node input sockets that are messy to set default values for -dont_set_defaults = {'NodeSocketCollection', +dont_set_defaults = {#'NodeSocketCollection', 'NodeSocketGeometry', - 'NodeSocketMaterial', - 'NodeSocketObject', + #'NodeSocketMaterial', + #'NodeSocketObject', 'NodeSocketShader', 'NodeSocketTexture', 'NodeSocketVirtual'} diff --git a/utils.py b/utils.py index 05e5c13..5f41944 100644 --- a/utils.py +++ b/utils.py @@ -346,12 +346,20 @@ def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, for i, input in enumerate(node.inputs): if input.bl_idname not in dont_set_defaults and not input.is_linked: socket_var = f"{node_var}.inputs[{i}]" + + #colors if input.bl_idname == 'NodeSocketColor': default_val = vec4_to_py_str(input.default_value) + + #vector types elif "Vector" in input.bl_idname: default_val = vec3_to_py_str(input.default_value) + + #strings elif input.bl_idname == 'NodeSocketString': default_val = str_to_py_str(input.default_value) + + #images elif input.bl_idname == 'NodeSocketImage': print("Input is linked: ", input.is_linked) img = input.default_value @@ -359,6 +367,22 @@ def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, save_image(img, addon_dir) load_image(img, file, inner, f"{socket_var}.default_value") default_val = None + + #materials + elif input.bl_idname == 'NodeSocketMaterial': + in_file_inputs(input, file, inner, socket_var, "materials") + default_val = None + + #collections + elif input.bl_idname == 'NodeSocketCollection': + in_file_inputs(input, file, inner, socket_var, "collections") + default_val = None + + #objects + elif input.bl_idname == 'NodeSocketObject': + in_file_inputs(input, file, inner, socket_var, "objects") + default_val = None + else: default_val = input.default_value if default_val is not None: @@ -367,6 +391,23 @@ def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, f" = {default_val}\n")) file.write("\n") +def in_file_inputs(input, file: TextIO, inner: str, socket_var: str, type: str): + """ + Sets inputs for a node input if one already exists in the blend file + + Parameters: + input (bpy.types.NodeSocket): input socket we're setting the value for + file (TextIO): file we're writing the add-on into + inner (str): indentation string + socket_var (str): variable name we're using for the socket + type (str): from what section of bpy.data to pull the default value from + """ + + name = str_to_py_str(input.default_value.name) + file.write(f"{inner}if {name} in bpy.data.{type}:\n") + file.write((f"{inner}\t{socket_var}.default_value = " + f"bpy.data.{type}[{name}]\n")) + def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): """ Sets parents for all nodes, mostly used to put nodes in frames From 5807de02d27119714f478a7a741cf8f18a2671ab Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 14:19:12 -0600 Subject: [PATCH 055/286] feat: set defaults for textures if they exist in a blend file --- materials.py | 2 +- utils.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/materials.py b/materials.py index 4fa843a..411a92f 100644 --- a/materials.py +++ b/materials.py @@ -9,7 +9,7 @@ #'NodeSocketMaterial', #'NodeSocketObject', 'NodeSocketShader', - 'NodeSocketTexture', + #'NodeSocketTexture', 'NodeSocketVirtual'} node_settings = { diff --git a/utils.py b/utils.py index 5f41944..7eabffa 100644 --- a/utils.py +++ b/utils.py @@ -382,7 +382,12 @@ def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, elif input.bl_idname == 'NodeSocketObject': in_file_inputs(input, file, inner, socket_var, "objects") default_val = None - + + #textures + elif input.bl_idname == 'NodeSocketTexture': + in_file_inputs(input, file, inner, socket_var, "textures") + default_val = None + else: default_val = input.default_value if default_val is not None: From 3c96b43c7e2a3942a6671baadf6dbb3fd72f78cb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 14:30:22 -0600 Subject: [PATCH 056/286] refactor: dont_set_defaults set moved to utils.py --- geo_nodes.py | 11 +---------- materials.py | 12 +----------- utils.py | 11 +++++++---- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 9e75917..dc3ea13 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -10,14 +10,6 @@ 'NodeSocketInt', 'NodeSocketVector'} -#node input sockets that are messy to set default values for -dont_set_defaults = {'NodeSocketCollection', - 'NodeSocketGeometry', - 'NodeSocketMaterial', - 'NodeSocketObject', - 'NodeSocketTexture', - 'NodeSocketVirtual'} - geo_node_settings = { #attribute "GeometryNodeAttributeStatistic" : ["data_type", "domain"], @@ -317,8 +309,7 @@ def process_geo_nodes_group(node_tree, level): elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) - set_input_defaults(node, dont_set_defaults, file, inner, - node_var, addon_dir) + set_input_defaults(node, file, inner, node_var, addon_dir) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) diff --git a/materials.py b/materials.py index 411a92f..d3310df 100644 --- a/materials.py +++ b/materials.py @@ -3,15 +3,6 @@ from .utils import * -#node input sockets that are messy to set default values for -dont_set_defaults = {#'NodeSocketCollection', - 'NodeSocketGeometry', - #'NodeSocketMaterial', - #'NodeSocketObject', - 'NodeSocketShader', - #'NodeSocketTexture', - 'NodeSocketVirtual'} - node_settings = { #input "ShaderNodeAmbientOcclusion" : ["samples", "inside", "only_local"], @@ -188,8 +179,7 @@ def process_mat_node_group(node_tree, level): elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) - set_input_defaults(node, dont_set_defaults, file, inner, - node_var, addon_dir) + set_input_defaults(node, file, inner, node_var, addon_dir) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) diff --git a/utils.py b/utils.py index 7eabffa..a97713f 100644 --- a/utils.py +++ b/utils.py @@ -8,6 +8,11 @@ image_dir_name = "imgs" +#node input sockets that are messy to set default values for +dont_set_defaults = {'NodeSocketGeometry', + 'NodeSocketShader', + 'NodeSocketVirtual'} + def clean_string(string: str, lower: bool = True) -> str: """ Cleans up a string for use as a variable or file name @@ -325,15 +330,13 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping}.update()\n") -def set_input_defaults(node, dont_set_defaults: set, file: TextIO, inner: str, - node_var: str, addon_dir: str): +def set_input_defaults(node, file: TextIO, inner: str, node_var: str, + addon_dir: str): """ Sets defaults for input sockets Parameters: node (bpy.types.Node): node we're setting inputs for - dont_set_defaults (set): set of sockets we shouldn't attempt to set - default values for file (TextIO): file we're generating the add-on into inner (str): indentation node_var (str): variable name we're using for the copied node From 6376db868f826cd00085e9f43a3a248b9e647e11 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 19:25:48 -0600 Subject: [PATCH 057/286] fix: issue with no default value set --- utils.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/utils.py b/utils.py index a97713f..ea8d756 100644 --- a/utils.py +++ b/utils.py @@ -411,10 +411,11 @@ def in_file_inputs(input, file: TextIO, inner: str, socket_var: str, type: str): type (str): from what section of bpy.data to pull the default value from """ - name = str_to_py_str(input.default_value.name) - file.write(f"{inner}if {name} in bpy.data.{type}:\n") - file.write((f"{inner}\t{socket_var}.default_value = " - f"bpy.data.{type}[{name}]\n")) + if input.default_value is not None: + name = str_to_py_str(input.default_value.name) + file.write(f"{inner}if {name} in bpy.data.{type}:\n") + file.write((f"{inner}\t{socket_var}.default_value = " + f"bpy.data.{type}[{name}]\n")) def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): """ From 648e892b42cdc8225d4467b0841aaf6a64b51cdb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 19:55:26 -0600 Subject: [PATCH 058/286] feat: geo nodes node automatically apply to the object --- geo_nodes.py | 17 ++++++++++++++--- utils.py | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index dc3ea13..b63025d 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -141,7 +141,8 @@ def execute(self, context): #set up names to use in generated addon nt_var = clean_string(nt.name) - class_name = nt.name.replace(" ", "").replace('.', "") + class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), + lower = False) #find base directory to save new addon base_dir = bpy.path.abspath("//") @@ -317,11 +318,21 @@ def process_geo_nodes_group(node_tree, level): init_links(node_tree, file, inner, node_tree_var, node_vars) + file.write(f"{inner}return {node_tree_var}\n") + #create node group - file.write(f"\n{outer}{node_tree_var}_node_group()\n\n") + file.write((f"\n{outer}{node_tree_var} = " + f"{node_tree_var}_node_group()\n\n")) process_geo_nodes_group(nt, 2) + file.write(f"\t\tname = bpy.context.object.name\n") + file.write(f"\t\tobj = bpy.data.objects[name]\n") + mod_name = str_to_py_str(nt.name) + file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " + f"type = 'NODES')\n")) + file.write(f"\t\tmod.node_group = {nt_var}\n") + file.write("\t\treturn {'FINISHED'}\n\n") create_menu_func(file, class_name) @@ -331,7 +342,7 @@ def process_geo_nodes_group(node_tree, level): file.close() - zip_addon(zip_dir) + #zip_addon(zip_dir) return {'FINISHED'} diff --git a/utils.py b/utils.py index ea8d756..8de3d09 100644 --- a/utils.py +++ b/utils.py @@ -110,7 +110,7 @@ def create_header(file: TextIO, name: str): file.write("}\n") file.write("\n") file.write("import bpy\n") - file.write("import os") + file.write("import os\n") file.write("\n") def init_operator(file: TextIO, name: str, idname: str, label: str): From b8ced76113f8676d662a3d48b5c071c250f07d96 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 21:44:58 -0600 Subject: [PATCH 059/286] feat: settings for input geo nodes --- geo_nodes.py | 24 ++++++++++++++++++------ utils.py | 12 ++++++++++-- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index b63025d..26c632a 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -54,8 +54,15 @@ "GeometryNodeSeparateGeometry" : ["domain"], #input + "FunctionNodeInputBool" : ["boolean"], "GeometryNodeCollectionInfo" : ["transform_space"], + "FunctionNodeInputColor" : ["color"], + "FunctionNodeInputInt" : ["integer"], + "GeometryNodeInputMaterial" : ["material"], "GeometryNodeObjectInfo" : ["transform_space"], + "FunctionNodeInputString" : ["string"], + "ShaderNodeValue" : ["outputs[0].default_value"], + "FunctionNodeInputVector" : ["vector"], "GeometryNodeInputNamedAttribute" : ["data_type"], #mesh @@ -326,12 +333,17 @@ def process_geo_nodes_group(node_tree, level): process_geo_nodes_group(nt, 2) - file.write(f"\t\tname = bpy.context.object.name\n") - file.write(f"\t\tobj = bpy.data.objects[name]\n") - mod_name = str_to_py_str(nt.name) - file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " - f"type = 'NODES')\n")) - file.write(f"\t\tmod.node_group = {nt_var}\n") + def apply_modifier(): + #get object + file.write(f"\t\tname = bpy.context.object.name\n") + file.write(f"\t\tobj = bpy.data.objects[name]\n") + + #set modifier to the one we just created + mod_name = str_to_py_str(nt.name) + file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " + f"type = 'NODES')\n")) + file.write(f"\t\tmod.node_group = {nt_var}\n") + apply_modifier() file.write("\t\treturn {'FINISHED'}\n\n") diff --git a/utils.py b/utils.py index 8de3d09..08ad64d 100644 --- a/utils.py +++ b/utils.py @@ -212,9 +212,17 @@ def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, attr = getattr(node, setting, None) if attr: if type(attr) == str: - attr = f"\'{attr}\'" + attr = enum_to_py_str(attr) if type(attr) == mathutils.Vector: - attr = f"({attr[0]}, {attr[1]}, {attr[2]})" + attr = vec3_to_py_str(attr) + if type(attr) == mathutils.Color: + attr = vec4_to_py_str(attr) + if type(attr) == bpy.types.Material: + name = str_to_py_str(attr.name) + file.write((f"{inner}if {name} in bpy.data.materials:\n")) + file.write((f"{inner}\t{node_var}.{setting} = " + f"bpy.data.materials[{name}]\n")) + continue file.write((f"{inner}{node_var}.{setting} " f"= {attr}\n")) From e748ffa61fb989672146d86475b4493b64e36c23 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 22:01:55 -0600 Subject: [PATCH 060/286] feat: basic function for nodes that need outputs set --- geo_nodes.py | 3 +-- utils.py | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 26c632a..0b15cfb 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -61,7 +61,6 @@ "GeometryNodeInputMaterial" : ["material"], "GeometryNodeObjectInfo" : ["transform_space"], "FunctionNodeInputString" : ["string"], - "ShaderNodeValue" : ["outputs[0].default_value"], "FunctionNodeInputVector" : ["vector"], "GeometryNodeInputNamedAttribute" : ["data_type"], @@ -318,7 +317,7 @@ def process_geo_nodes_group(node_tree, level): curve_node_settings(node, file, inner, node_var) set_input_defaults(node, file, inner, node_var, addon_dir) - + set_output_defaults(node, file, inner, node_var) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) diff --git a/utils.py b/utils.py index 08ad64d..64f2760 100644 --- a/utils.py +++ b/utils.py @@ -215,7 +215,7 @@ def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, attr = enum_to_py_str(attr) if type(attr) == mathutils.Vector: attr = vec3_to_py_str(attr) - if type(attr) == mathutils.Color: + if type(attr) == bpy.types.bpy_prop_array: attr = vec4_to_py_str(attr) if type(attr) == bpy.types.Material: name = str_to_py_str(attr.name) @@ -425,6 +425,20 @@ def in_file_inputs(input, file: TextIO, inner: str, socket_var: str, type: str): file.write((f"{inner}\t{socket_var}.default_value = " f"bpy.data.{type}[{name}]\n")) +def set_output_defaults(node, file: TextIO, inner: str, node_var: str): + """ + Some output sockets need default values set. It's rather annoying + + Parameters: + node (bpy.types.Node): node for the output we're setting + file (TextIO): file we're generating the add-on into + inner (str): indentation string + node_var (str): variable name for the node we're setting output defaults for + """ + if node.bl_idname == 'ShaderNodeValue': + dv = node.outputs[0].default_value + file.write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) + def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): """ Sets parents for all nodes, mostly used to put nodes in frames From cda8090e883648931920b68950fc1d9f75e5a799 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 22:15:19 -0600 Subject: [PATCH 061/286] fix: issue with color defaults --- utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils.py b/utils.py index 64f2760..7b3ddb5 100644 --- a/utils.py +++ b/utils.py @@ -216,7 +216,7 @@ def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, if type(attr) == mathutils.Vector: attr = vec3_to_py_str(attr) if type(attr) == bpy.types.bpy_prop_array: - attr = vec4_to_py_str(attr) + attr = vec4_to_py_str(list(attr)) if type(attr) == bpy.types.Material: name = str_to_py_str(attr.name) file.write((f"{inner}if {name} in bpy.data.materials:\n")) @@ -449,11 +449,13 @@ def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): inner (str): indentation string node_vars (dict): dictionary for (node, variable) name pairs """ + file.write(f"{inner}#Set parents") for node in node_tree.nodes: if node is not None and node.parent is not None: node_var = node_vars[node] parent_var = node_vars[node.parent] file.write(f"{inner}{node_var}.parent = {parent_var}\n") + file.write("\n") def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): """ @@ -466,10 +468,12 @@ def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): node_vars (dict): dictionary for (node, variable) name pairs """ + file.write(f"{inner}#Set locations") for node in node_tree.nodes: node_var = node_vars[node] file.write((f"{inner}{node_var}.location " f"= ({node.location.x}, {node.location.y})\n")) + file.write("\n") def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): """ @@ -482,11 +486,13 @@ def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): node_vars (dict): dictionary for (node, variable) name pairs """ + file.write(f"{inner}Set dimensions") for node in node_tree.nodes: node_var = node_vars[node] file.write((f"{inner}{node_var}.width, {node_var}.height " f"= {node.width}, {node.height}\n")) - + file.write("\n") + def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, node_vars: dict): """ From 3fa45d2fca5b3c6dbffaba32552810579a791afb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 23:16:46 -0600 Subject: [PATCH 062/286] fix: variable names now checked for uniqueness --- geo_nodes.py | 24 +++++++++++++++-------- materials.py | 26 ++++++++++++++++--------- utils.py | 55 +++++++++++++++++++++++++++++++++++----------------- 3 files changed, 70 insertions(+), 35 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 0b15cfb..e9eff4c 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -173,8 +173,14 @@ def execute(self, context): #set to keep track of already created node trees node_trees = set() - def process_geo_nodes_group(node_tree, level): - node_tree_var = clean_string(node_tree.name) + #dictionary to keep track of node->variable name pairs + node_vars = {} + + #keeps track of all used variables + used_vars = set() + + def process_geo_nodes_group(node_tree, level, node_vars, used_vars): + node_tree_var = create_var(node_tree.name, used_vars) outer, inner = make_indents(level) @@ -192,12 +198,13 @@ def process_geo_nodes_group(node_tree, level): #initialize nodes file.write(f"{inner}#initialize {node_tree_var} nodes\n") - node_vars = {} + for node in node_tree.nodes: if node.bl_idname == 'GeometryNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: - process_geo_nodes_group(node_nt, level + 1) + process_geo_nodes_group(node_nt, level + 1, node_vars, + used_vars) node_trees.add(node_nt) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: file.write(f"{inner}#{node_tree_var} inputs\n") @@ -300,8 +307,8 @@ def process_geo_nodes_group(node_tree, level): outputs_set = True #create node - node_var, node_vars = create_node(node, file, inner, - node_tree_var, node_vars) + node_var = create_node(node, file, inner, node_tree_var, + node_vars, used_vars) set_settings_defaults(node, geo_node_settings, file, inner, node_var) hide_sockets(node, file, inner, node_var) @@ -329,8 +336,9 @@ def process_geo_nodes_group(node_tree, level): #create node group file.write((f"\n{outer}{node_tree_var} = " f"{node_tree_var}_node_group()\n\n")) + return used_vars - process_geo_nodes_group(nt, 2) + process_geo_nodes_group(nt, 2, node_vars, used_vars) def apply_modifier(): #get object @@ -353,7 +361,7 @@ def apply_modifier(): file.close() - #zip_addon(zip_dir) + zip_addon(zip_dir) return {'FINISHED'} diff --git a/materials.py b/materials.py index d3310df..b91c325 100644 --- a/materials.py +++ b/materials.py @@ -118,15 +118,23 @@ def create_material(): file.write(f"\t\tmat.use_nodes = True\n") create_material() + #set to keep track of already created node trees node_trees = set() - def process_mat_node_group(node_tree, level): - nt_var = clean_string(node_tree.name) - nt_name = node_tree.name + #dictionary to keep track of node->variable name pairs + node_vars = {} + + #keeps track of all used variables + used_vars = set() + + def process_mat_node_group(node_tree, level, node_vars, used_vars): if level == 2: #outermost node group - nt_var = clean_string(self.material_name) + nt_var = create_var(self.material_name, used_vars) nt_name = self.material_name + else: + nt_var = create_var(node_tree.name, used_vars) + nt_name = node_tree.name outer, inner = make_indents(level) @@ -154,11 +162,11 @@ def process_mat_node_group(node_tree, level): if node.bl_idname == 'ShaderNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: - process_mat_node_group(node_nt, level + 1) + process_mat_node_group(node_nt, level + 1, node_vars, used_vars) node_trees.add(node_nt) - node_var, node_vars = create_node(node, file, inner, nt_var, - node_vars) + node_var = create_node(node, file, inner, nt_var, node_vars, + used_vars) set_settings_defaults(node, node_settings, file, inner, node_var) hide_sockets(node, file, inner, node_var) @@ -179,7 +187,7 @@ def process_mat_node_group(node_tree, level): elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) - set_input_defaults(node, file, inner, node_var, addon_dir) + set_input_defaults(node, file, inner, node_var, addon_dir) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) @@ -188,7 +196,7 @@ def process_mat_node_group(node_tree, level): file.write(f"\n{outer}{nt_var}_node_group()\n\n") - process_mat_node_group(nt, 2) + process_mat_node_group(nt, 2, node_vars, used_vars) file.write("\t\treturn {'FINISHED'}\n\n") diff --git a/utils.py b/utils.py index 7b3ddb5..b361f0a 100644 --- a/utils.py +++ b/utils.py @@ -129,6 +129,29 @@ def init_operator(file: TextIO, name: str, idname: str, label: str): file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") file.write("\n") +def create_var(name: str, used_vars: set) -> str: + """ + Creates a unique variable name for a node tree + + Parameters: + name (str): basic string we'd like to create the variable name out of + used_vars (set): set containing all used variable names so far + + Returns: + clean_name (str): variable name for the node tree + """ + if name == "": + name = "unnamed" + clean_name = clean_string(name) + var = clean_name + i = 0 + while var in used_vars: + i += 1 + var = f"{clean_name}_{i}" + + used_vars.add(var) + return var + def make_indents(level: int) -> Tuple[str, str]: """ Returns strings with the correct number of indentations @@ -149,7 +172,7 @@ def make_indents(level: int) -> Tuple[str, str]: return outer, inner def create_node(node, file: TextIO, inner: str, node_tree_var: str, - node_vars: dict) -> Tuple[str, dict]: + node_vars: dict, used_vars: set) -> str: """ Initializes a new node with location, dimension, and label info @@ -158,24 +181,17 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, file (TextIO): file containing the generated add-on inner (str): indentation level for this logic node_tree_var (str): variable name for the node tree - node_vars (dict): dictionary containing (bpy.types.Node, str) key-value - pairs, where the key is the node and the value its corresponding - variable name in the addon + node_vars (dict): dictionary containing (bpy.types.Node, str) + pairs, with a Node and its corresponding variable name + used_vars (set): set of used variable names Returns: node_var (str): variable name for the node - node_vars (dict): the updated variable name dictionary """ file.write(f"{inner}#node {node.name}\n") - node_var = clean_string(node.name) - if node_var == "": - i = 0 - while node_var in node_vars: - node_var = f"unnamed_node_{i}" - i += 1 - + node_var = create_var(node.name, used_vars) node_vars[node] = node_var file.write((f"{inner}{node_var} " @@ -193,7 +209,7 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, if node.mute: file.write(f"{inner}{node_var}.mute = True\n") - return node_var, node_vars + return node_var def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, node_var: str): @@ -449,7 +465,7 @@ def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): inner (str): indentation string node_vars (dict): dictionary for (node, variable) name pairs """ - file.write(f"{inner}#Set parents") + file.write(f"{inner}#Set parents\n") for node in node_tree.nodes: if node is not None and node.parent is not None: node_var = node_vars[node] @@ -468,7 +484,7 @@ def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): node_vars (dict): dictionary for (node, variable) name pairs """ - file.write(f"{inner}#Set locations") + file.write(f"{inner}#Set locations\n") for node in node_tree.nodes: node_var = node_vars[node] file.write((f"{inner}{node_var}.location " @@ -486,13 +502,13 @@ def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): node_vars (dict): dictionary for (node, variable) name pairs """ - file.write(f"{inner}Set dimensions") + file.write(f"{inner}#sSet dimensions\n") for node in node_tree.nodes: node_var = node_vars[node] file.write((f"{inner}{node_var}.width, {node_var}.height " f"= {node.width}, {node.height}\n")) file.write("\n") - + def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, node_vars: dict): """ @@ -673,11 +689,14 @@ def image_user_settings(node, file: TextIO, inner: str, node_var: str): f"{getattr(img_usr, img_usr_attr)}\n")) def zip_addon(zip_dir: str): + pass """ Zips up the addon and removes the directory Parameters: zip_dir (str): path to the top-level addon directory """ + """ shutil.make_archive(zip_dir, "zip", zip_dir) - shutil.rmtree(zip_dir) \ No newline at end of file + shutil.rmtree(zip_dir) + """ \ No newline at end of file From 477605fb36dd537b25a6604a2d5aecc426a1af97 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jan 2023 23:54:40 -0600 Subject: [PATCH 063/286] docs: updated README to include current status on asset copying --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index eb4f3a0..d391830 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ ## About A Blender add-on to create add-ons! This addo-on will take your Geometry Nodes or Materials and convert them into legible Python add-ons! -It automatically handles node layout, default values, sub-node groups, naming, and more! +It automatically handles node layout, default values, subgroups, naming, colors, and more! I think Blender's node-based editors are powerful, yet accessible tools, and I wanted to make scripting them easier for add-on creators. Combining Python with node based setups allows you to do things that would otherwise be tedious or impossible, such as * `for` loops @@ -33,28 +33,28 @@ Once you've installed the add-on, you'll see a new tab to the side of a Node Edi In the tab, there's panels to create add-ons for Geometry Nodes and Materials, each with a drop-down menu. -Just select the one you want, and soon a python file will be created in an `addons` folder located in the folder where your blend file is. +Just select the one you want, and soon a zip file will be created in an `addons` folder located in the folder where your blend file is. From here, you can install it like a regular add-on. ## Future * Expansion to Compositing nodes -* Copy over referenced assets in the scene (Collections, Objects, Materials, Textures, etc.) +* Add all referenced assets to the Asset Library for use outside of the original blend file * Automatically format code to be PEP8 compliant ## Potential Issues * As of version 2.0.0, the add-on will not set default values for - * Collections - * Materials - * Objects - * Textures * Scripts * IES files * Filepaths + * UV maps +* Currently when setting default values for the following, the add-on must be run in the same blend file as the node group was created in to set the default, otherwise it will just set it to `None`: + * Materials + * Objects + * Collections + * Textures - as they won't exist in every blend file. I'm expecting to support some of these in the future. - - There are a few nodes that don't set their default values like other ones, though these should also soon be supported. +* In a future version, I plan on having the add-on adding all of the above to the Asset Library for reference ## Bug Reports and Suggestions From a134c845e93ea3c0ef10f45940b25c4a2f6e7200 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 22 Jan 2023 00:29:08 -0600 Subject: [PATCH 064/286] fix: geo nodes and materials are now stable --- materials.py | 11 +++++++---- utils.py | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/materials.py b/materials.py index b91c325..b03fa4d 100644 --- a/materials.py +++ b/materials.py @@ -10,7 +10,7 @@ "ShaderNodeBevel" : ["samples"], "ShaderNodeVertexColor" : ["layer_name"], "ShaderNodeTangent" : ["direction_type", "axis"], - "ShaderNodeTexCoord" : ["from_instancer"], + "ShaderNodeTexCoord" : ["object", "from_instancer"], "ShaderNodeUVMap" : ["from_instancer", "uv_map"], "ShaderNodeWireframe" : ["use_pixel_size"], @@ -35,11 +35,12 @@ "ShaderNodeTexMagic" : ["turbulence_depth"], "ShaderNodeTexMusgrave" : ["musgrave_dimensions", "musgrave_type"], "ShaderNodeTexNoise" : ["noise_dimensions"], - "ShaderNodeTexPointDensity" : ["point_source", "space", "radius", + "ShaderNodeTexPointDensity" : ["point_source", "object", "space", "radius", "interpolation", "resolution", "vertex_color_source"], "ShaderNodeTexSky" : ["sky_type", "sun_direction", "turbidity", - "ground_albedo", "sun_disc", "sun_elevation", + "ground_albedo", "sun_disc", "sun_size", + "sun_intensity", "sun_elevation", "sun_rotation", "altitude", "air_density", "dust_density", "ozone_density"], "ShaderNodeTexVoronoi" : ["voronoi_dimensions", "feature", "distance"], @@ -187,7 +188,9 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) - set_input_defaults(node, file, inner, node_var, addon_dir) + set_input_defaults(node, file, inner, node_var, addon_dir) + set_output_defaults(node, file, inner, node_var) + set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) diff --git a/utils.py b/utils.py index b361f0a..7a08447 100644 --- a/utils.py +++ b/utils.py @@ -239,6 +239,12 @@ def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, file.write((f"{inner}\t{node_var}.{setting} = " f"bpy.data.materials[{name}]\n")) continue + if type(attr) == bpy.types.Object: + name = str_to_py_str(attr.name) + file.write((f"{inner}if {name} in bpy.data.objects:\n")) + file.write((f"{inner}\t{node_var}.{setting} = " + f"bpy.data.objects[{name}]\n")) + continue file.write((f"{inner}{node_var}.{setting} " f"= {attr}\n")) @@ -451,8 +457,16 @@ def set_output_defaults(node, file: TextIO, inner: str, node_var: str): inner (str): indentation string node_var (str): variable name for the node we're setting output defaults for """ - if node.bl_idname == 'ShaderNodeValue': + output_default_nodes = {'ShaderNodeValue', + 'ShaderNodeRGB', + 'ShaderNodeNormal'} + + if node.bl_idname in output_default_nodes: dv = node.outputs[0].default_value + if node.bl_idname == 'ShaderNodeRGB': + dv = vec4_to_py_str(list(dv)) + if node.bl_idname == 'ShaderNodeNormal': + dv = vec3_to_py_str(dv) file.write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): From 7fd3b0e0cc69517e98751a4287547e27f3e39ab5 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 22 Jan 2023 16:29:52 -0600 Subject: [PATCH 065/286] docs: image showing new location --- img/location.png | Bin 0 -> 47953 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/location.png diff --git a/img/location.png b/img/location.png new file mode 100644 index 0000000000000000000000000000000000000000..98c8b797db8d2a989e14867ccb4e3d88c5ab6d50 GIT binary patch literal 47953 zcmZU*2RxVU8$SFkTgu2vG9pP7vJ=TFMM$!enN3PXR+%9rkrkmd>@7rAiiD7|M@Gs@ zMj5@w{XDC+9OoUPt);$|mV=f=B5gf!Tt$~eB6lN^ zHU&{r;x`=5pUChB`ITcQ^r-Ql7q!)G{C$U;s)5@Xmy2%K%`aP%Y@A)3tVOO^UbeP& zzGCa*HcM8mfES4nFH*j2ZSH30;>@FG=VVPfbJdwgT%1S49Dj(4AL0>}kQ0}Y6P4!C z*5pw>qbJgQFq}l@w+7ji?X>Cy&PgLTS|M!b-wME=L&VTp#DQUy_wR`WZ^wl%81&5}l zdIW1r-q=c{rKQzo{bnRSv4?8!-plpYinz_B?i@)-84C%Zf(71 zM=2w9z_zessW(pv6edh(z(f$hOk0>a zOK|8I8PNtFGrx9v2eAS(+|$|ruE2A>P_2h@H4P1ccY1N@!75l{f#{kqU%oicXs`#} zijLm?^|D8F>>hlceKCirsp++I<3;DP9?tG(rhV2Yrz|@(i{HrH`!sdPu|)au)vK!3 z)=$2OKGCH~$Vlz7uPMlCsVxd>YSJhxFK60rieq7`F41K}{dVkfSy`Eckt;*nH#e(2 zDRWN)(gg9#NjJGUd6(|8hYuen_Gz>h2)}so;zx2$G2U)e%+${ma3WUgslV3KLeDkw z&BM9jCI?FGM?|8Izb?qqoX#>iK-FCEEGI{5=gia;t+aIM#nDtjjbEk5beP?f@lV(_ zr;jsdm??05;cAwpGKq<^73Jl}1{_{=&5KD;#6&ZT(~u=kn48IVc5;|o$$Ex3ZWrmY z`JB}jb)5g=Im6YZ=`fviH6?*)-XlkLsYh^b(thgnqwnRR7nzxfyE;oL)7w9rFTG== zCa=9fand^o`&y^?_xEYKol@^dG|m_r?)a2@A@a;qEm@6In^Rk&n#b6s9N8;hy^4yB z4SM{T|5DOAWmI#lh<|SG7>mX$)5r_H>n!>C`OB)$`C>G7NjV#rUE;M8-$6@Do98m9 zQ1Druhv5gUW=D(BxVxuk`pE|eo@HgJT)S4%HGQ~FRC6W?myLhJ>ZQ31R?W@LF>E~` z6M^+pzIs*iUUamMfq`v|yol<72Ydnolsl!Ji;R<6T9)@P(b&eMoONBCney|9KGs&( zO=17EydkoQW0&~s+2M-x=VcF#&Dr9eQlI>xtN8U;Leui=+o(&IFK;H1Q&Eks{a(N( zsOjl3Z{EE5wJYa`6vfEq2M2qvzCMPy3y8phKWb}h8@(&8qT(>Cu)$3%$Z%n+LS6I0 zYR7IC?#(sr+RPL|<~&iyhrWI#zkdBXJ~jQt3)=bld1@M(TMr(vef;=QrSZ0Kb4gQ= zVXF4f%KWH|*UF`I(HM=uuFP|mA0MA+vy~`wpSMUf);~;p;lc$`I{$3rQj4{f`M5(i z+m@z#C)!k1aU2;Q3DVBY%*@TtZ>kf$(vKP#u+Q|p^zZD{ODw5V{4<%p(x|x6K6%5!Vt4Gp3j@bl z<4*|~Q5ElMsfY@hob`W@Ms-X;@@$hwnc&cH+UuL9$t$+qSCcf#CIoq>L(enIaW*QY zw;#>cCwq2iw98h4dh1rzqen?M<({*rST7S_*1oX zyK8$QCOqCJNNx!X47?o{=5W7yyw=#?C_6|`NcHU5m=k0#^n`dHG#giD*GGwOr;Z57 zu*=lv3)tAh&riOE?Ld8vKUGw8^r-E;iiwE{PxQM-?Y10?=Jv%#eNt!6p6yCo3G}B~ zTVHQ4b~txGCWco;WUFwqoFk*k+cQXfzizy8KmT0s*mJ$KqN1V(SH<;T9dBD(8|OzG zjXSyeBY$3EPEAcsdqSt#@yL#Yg@pxMxm)Ap$(jZEp9>4a-@k`#BBMNd;DP_BOnz>a z&w6=X()E-4OvLSAd-k4Ac011D6q1>_KSMJysHjMSScqV5pVvRW6pA@~68`Zy-``*g z$vSxS+cz3tUtcR5n{?0Rnd7HVtDBkeAi%`M#W{O|7bn}v{Hf^Q;7CQq$J^bDZMO|j zOILDsK2TX%$*^Mw%_FTHmLfShITv%UPxmY;2s#_7omOP4l(%7c%(T$Ew&`eXoBO^S zJTo!2cdwOBi(GYVa4yMF+*sjLyTiT-XB825^l69EbG?MVjwG5d>j9%Ol^cJ)YYQ^F zZ~UIn6yk4PaQ~6tDC)c6CBNKvg_@qe@s;QDrIGrOYl$gX0<(Ab_DuE^@3(hwXgG4m zxWut0w|b-JYoUBA-|pRMT^?UOxLS`abB2b766qp1wkv>Ud!EXbi*=VVYEeVp7gVl;Y zzsK0JjEbAaXCu=DRn*ihYWyfBzZC8*GRiKS-T3(APA;u3YCqG4IQTpgH3C4vD}AGL$kAy&z=ePy}Uw&=t>LhnCY(&bLx?J zpCr5e@A|B7$mw01Zw)aBh8}yW^>Ao()W72TY+6YZmS%>+?(vJ|I^*_T?U72s+z9qFTT)KWeI3KwOv=nYx{gmwl=gNpMvOABu?2G- zxxphS_^h4eh8$kzy()#{kbiC3$Z@dhRlhwig=(l;dQENM7BP>XR;N-Fb`5$hY;9_8 zPIOWsFLa0)HR>ADW)2*9<(ZBY`N*!vT!S)sV!ln8ei*+)wk8s4OVjQ(npSGxPXWDT zHTx23%wB)aw`_lMk}X=EdfDKlF>#_;09HmGr43(Le>aSpm)-U+ z0oU@ds5o5yKs9xKetry`oOf`lSxe*7)xv9gU8=+H-D46q$RiC84UmX6h)5q&jl|g4*xPsSl+4Y|`K-0P z-ILYNo@K#42WMpo#Y%ly4Oip)`SYi?zJ5?afw>wlJ%Pgg&hDUhUCLe*OArKtKQwKflV4 zus^@P@tJPFHq&>|N|%!Bz~%dT_BDp7kG~Cn-)v*Os(9kPxoN-?-F*@qTQ^n*|LztQ zW$5badfU`wU+P)3FSNEjU46du%xQB}(Bqn#EOq32TF+hZrXV3Fse5?H0+Fb+SXx=} zciKx5Yez=4jc4y(Dr9kXaVzSom60ttCAb{o1fh(}c>j@bPj1|PT7FZkwJT0%h4(2` z)w#vR2Bhq}4VwRLabUQXb)Y|L3=~+ta zc=;Hd-&nz~^6U;veC*Q8KFgAtLLKRf#l^D*>n z;cToi6CDa`fNkzrWEnZO?>D^}0aD?;nM&yRo;y^xUkYzvkwE zx?*L4mAHLY%rif(PG#oi0gDNnR|XPj zL6I$^L2N_!1>gP`67PAV--%kjp?Xj<4zYf(uNb3jAmj?{j1&4KeBsZc2KkE2)>DQzVBBHHL z``7Fs_tA$}o;@(VL8F$=DDB*LGcuB1VQo%%Wo6}PZZ{uN2F@8(>jL$bEp?%3Nuh$0905;za4{!LrFd=49Pn|E13kIAQ zv-!Z;_sWy)+qZ89d1jmBj~r=`N!U^yovmt+t!9S#6$1)rqsW_MW*^28!zTEAYaJ3f77N-lU~=z$GbpxaxueFHbH0KS@#olArc>Z*CHklaR6O8Ye}G2PV$D`PeSHfQIJCn=*%%rg-h|z47aLEIbTInCma{M8RQzUi zLXMyFHgS9ZidyMz6A#X?lV6*wLo4zcDK{Uz$NwdOMG->=)++ zUbOmv9lQq*p6>JGVqmz50qbEE7PSRey&`6?RLk7FsJl2x@d5_tNZym|K zpLEE|&078jS{mGzPGZsh;pMQ3C3ZSWGM|m#Hi@GP$m(GSt8TNIx~J-V2HuOhf8VOq(vji{@P4Ev&^S;Y z+6c~@a%aX@R@|e#M>rdAr3t=IKC%;?L3D`XeG%glv#HMKpUYek4nhnZ9HA)AC~ZT3 z7QavSS4g91wv`FcVAzQ&V=OX`=0 zUT-350lwpn=jadVppg1IAt%BfB%$C*62!nq?B{tZM1VkPg8vCb;rjCz65RE zc{_5~u?nK(yjmXE9@$mo7AfgZp}xF>S#`KARhdBN0GYQ?T+!!`G;;eguU~j5dxi4) zOkYjs^D|L*?~;-y2+)chiH_O-Xr_Ysez}K-hlL`4)NxUtHTU_$EzQl!=vvW>^Zcn` z6!=3xTQSci$1LO0ZHH_=5Y66v%HK6A`PNYshR;>rhlze*wrcgmkL#y(?oV1;ZLIxv zpDyk`Rm(!F8a05pPy!t6kDe@=N5& zPclc0iXyUYB{&3QG&qmk=uFG16-v#M%t?K6{}COsZWybGpISOf=;sorooVUmu4p`1 ziyz88{9w`VOly9#KRH_iX|}}ii(kzCa~9}|(wJsYL9c&iUA1hCFh`q?;#-Se;C(DT ziVA`ky=lJp>NP#RBHyR6;497cQ~Gbhsu0jYLxYw`Htus~^^J{uhY$B=u{fe9E?e(3 z6aCytG^?kPBqjH&pPVR&;H&^m63Ujsd9#(CfA^9G*H>}M8+=r36Xo*if!7=RM>w*2 zI3jaRBLXs;I(45GydjY}cvto4Uf1ES5OVYK^5Tep{ZS&^b@a{fg9|>4*?JkLQz8(m zApX)GJt93lo$>}qdgs+L;bsDqIef|z+ZXrbjzeB;x*wucev|Y+O)lsCJWI?}6j(KBaV+G&=yw0W7B_}i_L&L$` zZveg83vEuz96mhyKK@Xe_VO$`kV2%%Ru77N&C1OvoBm%4E4XBphWvV@rXrJa7F zJB*V(VkNMD{}zyylb^D8A_Us4k`r#&)UFomZ$HgbMB%sRf`eU{!sw@LW1_7A1w1q{ z5gf*LFby?NzExQu`c{S=P8;*Wc#A)nPJ4TM(Q7{p(0GA{iSzP2c40SyvPafr^ElXEG@!|XLVXyZ0+Y*v!Jjrd2<2UrF_BbrOy4Q zdiWfgN9#kjm$`joBHa!a1$~8kmo%h|UE3+yXS%{!8J-BoU644Md3hDA@2U7V=-=7?Q~KOKL5=;C|! zmEXUKEb)(#;8vJG&0E0?CPqi2-AX;P_D?BItIAljF?bIFW9?cp;?o9LX0r5WrUD z^pEk{T{PIL#qJB}Zf+qU67Po@WmC2;fatrWvYXNRC{6xmUQ*VAhe51 zvx6=l1!$@F>a47;hIyYt^CqB`bQ|;-JJKH{kjc*H+exqAy`urwNRSg)M9{65zJ1&? z&(EJK!rDVQT>mbk%F~>Y2dv)0M5}auoSl$qh|2Dgd`Ke}hg(JIii|{1{*gpQn!FdM zy3~mNVzH4!Qc}_)q1N?9Nvu*`ez1NfOUe^F4x{XnFXE1&etw$^Bm5JUpX>RV$6d?4 z%fLzx#*bh_0=KZ02v(O|njJU-u6;YeaASI;LXT~f#n9_pD;uk`A%ilTZ_Paowl?JF z=jTyWDHkhTMGNFf>K1fILJtXz0oY%qQsQ@REx(6ou#qvJ49;k9aP*+1{f55M|Sn5cn>7 zujSlO&C0i@DIELwWFofjk~2leqWE{MFof*HBj-!#+9Ev`#?6WRe)1$)a{+n@rNJt1 zMt1hwv(T#4C-zc}5a$i1xRT>bt18~A>MeFCVjS*U!LD#bQq%N|q% zL^(g6=#o}Yz;v{qTnLGl)CPP!|Cd=c^~%JD;~E>;Vr0BE*8HFj z|2dX{-$Cw}pY{FQn~}XUV&;%wXf2jy{{5lWM@2=*i*(@FDBrvM&Qg z&X&Xm^CZsQku1n~@?_Jqg)jVqsW;{Rl5PEN=6%v~_}AS}22LoyY-E&lH#0LcHJf%o z*_)G}Wl)q@N~;rekwXntTR)7^W4?4SW+W@F<675VPnJCO0`a!iQBI6O5Kic(r)>*9R|9q=d?y&ljo zRX>wA>No=zS43W(C>m{^{rfXdyrl3*XePKJ4GoP;!?hFyO%H%UrP)CUF7EC!H_M}K z3CRLHsr!u^J({i!3-VkZUm1Z00laAvrCr_t8iio3EpbT7JQf7h!Z`vfE9H^W%>f08 zjD<6nrW!`*MIkC5t;*6FvucRt04J6ofs8?qzWViOq~bP3MMd=8=-KKT8Yo;{T{WBD zi=HZ6{5Y@}e$2@wTw`aDzAMa))HOLjT0%Adhh&$pbmFzLTgA^_z zZ=3LDV||riaTxj3hH&fQ_t}n_KncSY&i(pTkH*4J$)EC;IXh(SJ6uONgkoqVH2L`W z$Q~RxU+YJ)h2UV?+t=gWC}iYQSnfZ7`LS=~xt zJS(fmpSk*9d3IY=Hb!zc;>G~)Z@#=Tk%pMWMFJG$AJP*3uNNS=u<#Ijke%)f(50mA zq`?`kt%DVk1+><8V`2gkl66QHy3d(W@&ghR6Hj;%un)2w?hT65DX*zwaxhcqj(1B) zblL}&10Pz-p^ z9sx6P?7#!%ryb@%YiX84$S=IRcW*`;hf|N!a}@E7n)b1yW7=K}LKOZV*n((zvB$21 zf5Uf5&;6cA@i&jVI94JM*<0#DrK&?TtQ+%@zC=P&hvv#mOL5>r)g4eBobv7rP`}T%KThly#?P+ zXpew3V!pApBEOAoxB4B@+7x7-cV$AWa(Teh%uqk64crIg!Rj?}DW@KOIgZttirGuw zKZzXYzjtw=vu|~eRus+h&KQlZA4h6qADoC5;6;|-w{M?CTyQWIvIKotYfnY%v)RGG z3_GB((2Wb^W4hj%QT6pIj~_pNJvhi6ylq#(N{bG2V8_$bqcP`9YwqniIR_pM82Pq( zg6Yf46pCweWH?UMf7e|q=ilr!sP=g^`9Kwmj4;8vrg;6N8Sq(k`q5K-(otH|TGqJtbgSKIAO4vxGtbtZnhd;NB`B9_x7g z=&v~UtM1I;$kUhN`25}yr#jz_1@0fcrS#~Z6co5XVF`>~8h^jzA7&KHK&tNZOJhwe zj{W7uXPf*WF%jhN`kzIIYxGCzMA^apLtQg2wzkDV7qEOVp4au&2Lupkl5kF*?(6p} zv31d8+kZ6p(<}UgqF@V9!s!Fk9wK{Xe28Ef5NgxOT<~7F=@EU(Tb;{bE5vNuc#;%- z2kcX9M&E=h=bFB%A7oZF|Bxih%CfiCq8W<#e$(a;AKqXGEyT8ZM)Vs*sH+xlqyIJc zddxUH+wsusS@XrEOzpSqZOjxA6Z1XeVQo7NT*LGoY)|%6NLme%xJW-~X|oG7hyaZG zHV;8>=fm-iyU6&$CS`dI+wD-yka>zHzXX9Lom{-p-u^^Xkcsj(XJfp{0wgx{BHCxq z1|GgX16oA>gtbS&M&qSXg%>c`6fGqwnUQ>G7wfEbf~iR z!w^1UT8Y*LaxUYXjfQlk-LYad-!h@U0;x1Nnw+;ZWQDCrNl6JMqy`*5k`;AmYR1pb z&cl3}aRDW@x+w%hp2@sU)HP{mPPBh>z}JAtC|7{OTwpOO%IGWixO;en^l~H~vvnaK zb5|a_-NxFbcrkH;I7w{ha!nf`)FnDD2b4kdSzB9UU|=92C&H_Nd=cujS9|&Vb=(^g zG5Y1emFX?L4tOE5KmBySZ)-1~LlfD`;HL|z=b68j@@KZOp(&%{awlnZ8jZxZl6K1gI#3hdsH zKmBgt07x$lNOtvNmZ)T+;FXZ;L8~Ifa=Sjr5&R>keR0o=z~^YP_{7B8$4j1-mvfvw zd-h@-7BGuLanseNB-Bp6efv)I#rC1~|Mk85bmb>)-ZQYHT)Er{*z2r&{Y;uI%j;`vLlQr%NmsR^{>r*g^V5Z+VJw~85}dkE zUZRcdfeTBjMn@5umF8OTwj(lBd8R2kzFut?KS&U|0Q8)&-W-VC$wxdnEm+!_;C3=O zz{bM3m`nEeaIA5gLTqeoXl8?-;%44cLNTGOl9d-{L#}!&?z{2I)TEvDBeSqffW!D# z)(saYu0T)7UqpM7pA_Ks_43PiO(jRNlmp5{8qWFtROyg_SgxykFC;D7N1l|h)kUN> z;Cbr%@u`GMnsa12f7iPP%gs-K>)UawjSEdmT6JuYD4pd(RPf`wQB&Z$GB=Digb)l+C-?>|X@+~5g?(`~_1|lE-@KcH-bY7= zk#@_L2G6NdD1*F`l4l*Ih4)<&89QOi7f{(*eQ}?u(mOBU!u(yC+|_sKPhKv4EI+k+ zU1|8BFhf8R6TXVtPcUH^UN0>|wq52?Gkdu>}y}r2#q}OYxWsadI=T!GH zu(AdP1dxY~%AglFuM6T;P}r#Ad|P{2{u<}WI(1*}TQsQ~GS~K%M(L{8wy`UA(uZ+> z4`%uPK_auwF1INDSfj1P2)fDI!?Tr^OJDC1RwVE)PJ6TpJI^_HHuk+XU}xyg&03`L z86PQ-5X)n0d1p0!s%tti?d&ziBuSDpGbQNbb70Jds zc~p}hGlm@|F!NmQ2+${tX)qMPqrt)1m|9Z83N=hNf>ZY68{JRl-+GkJM@0JpC#N31C5@1{z-$+ zc{UY>Mn<7%sM1fTC=iS~tPswFRpC_JUJPiEY5<=b$e5}B`lkufamlmusYld9Xcx|z z(?5F_y`Yb+p5{w0EMdD{&bdaL&47q~Vz)Y|Ixea@qJ0wM(v>-j_tdT_cu2IZgTzeb-9-TpJy(Y2`Y`m}9BQF`t4;;EBX zsdgMdS%<#78M}SC)4sS2+9LWOF|*es6fCSAGr*q1JmZ+$!){poXsx_9qR{QBL=P$S+L6|Lpq zJ^49w$VM|yoL8eO;+E((#;nUme+Gnqw}}Nml3`k7H9V>OR|+WdVneFv=Mt%{o|dBQ zr%Hw;DO7dR4mqX0hhKGhCk!w15{=_|Rv{Ns{%CzOj8)at3|IYYH83zRx3p9u<5R%z zkD}{cBNe!ZTW%{ni<%#XDXNo~`V{*5yas!FcfQy-?XR;cO>1dOdwB;L&6)0V9ERKE zUO8>MyK7pxk=0u*(`ynAtU9o!FnN?H2<_I>^Be&w_wl1{#hVj^C-76dUP@}a?MxU= zL3;khIW=2fYTBd{z1KU!)e=uX5LZ|K#dZeDCCW_Z%$P@&rWP&XwRJ$YG-Ia(r`9sC zpVPqXWS?g7b(|>d9qal>qkA<2>nc}56UJG$8Xdc`u#R`X{YbAQJ15&&`f<~g*OYBh z_N>dU6DJpUNFA1HhpjFrC+O+Zr{_=G*zd#I!;k>}&Gi|X5@BcltmXOr5U~#pP)*Cq z*wGJK^{MeN$ngs|AIt1Y%gA`+tk6pC5A@P&l>~5t3lThUVCHVqTCCZ$*9DN0X^%<8 z-HKGkF=6G?=cZE#)9k?IJ%r71X2v=CE_a zTUEiiQR|wddDvh>V^qj^H9SIJO5_{ccbAv;`Nyc9Wx6k~@(2BCOlLwQr>=kG`g7+G z@YQjCryEkF;e$twJ2NAaDF3k?D{f!n=q-BeoB99;2L97zt z?+keQbYh(qe{s9?<6`RnY12MRLUHPmIFi;zY~X+1aqYIsZd6~FbH=eW0oAndK|bv$ zc2M7t+UGVkyR)!yN!YV-;=DPbej65iBGjEZfDUpcaZ;IEIl)@pU24T-)kl={Sw2cU1FQ1I z+5GNO2T^uy6O%g$2?=WE;F%g4&DjZn{`m1%g_G91U~IV^ z5~38zbp$4RFiWosghxh4^RIr_x4L+7z=d%qItD`42YHMZve~(bG1fZYzDtM>Y7^Bq z&e!NB@CrDMK*KWZ+7%AMqEzq*mD_Cz(s#1& zWnmmwbAd%%F?9jWPn!8WVFxykKpA6W)?-y?bam%StJk*z%{PFT6f>_S7d9$7uJ`lv zZhtKFyIk#U5e1#`usT7ZZ66ujwbkN(&-E^bSnGM;zstTW-~zyfbPJjQWP(XZW2)tZ z0SL}a!hCe4^$1n+1nj>cqR@}}!`D;W(Q(Ghr}LQ((M-Y4hBpTTx9ygeK6mFJEGm#3 zp@F}B|Gplz5Vi<%Yy>)EbeA<gEeYC07_`GQ6Qx32f67NbO};^k z)q}%IOvl}o6PFzo7e@^a{e7Y|J-64~t(7G0rIsbC0HeRqtJpj zz%L{0&EdP_cHsXEySN=CXk<7GVO@I-tj&MwUvp9*TC%G3CF3wwDF~^Ap%p3~WoViT zw;1vqasNSEHx&Unc;0V<*i2%RDErPlPEDbuA zN`m?bcQN7fyz$Exp#dhJY_@V?+s0z9FE3n0V1EhE4MEnBu4<4@+TFmwK}H58)*e5= zjD*9&$tgST1JHCR2m?ZnJFW1WA41_lq1|#V7ReL2z}2!|Nz~zFbc}sQmdFe3DAp`lAGM26HVz9E0xV1#E=jT0p!|*r7xivog^? z4gD}WVkJJmeu$3jp%&rP1Hs(vDEkR{wY^o7pge1N-py*>I4g(W%Bal3q@mIR=NL){!L;W;VXZ> z=Zak!KZQ$X216@?(grsoVNwD=;Kfk=PmvFSh4Ffs`b;Asi zOCsU06HY$NU(|wsLy81w4L(@4vKhLQ%EgNr4H8fBCYTKgD;fB&6<}pt2OXtk?Muw=ZGj@4p&2%98o$&bY{6?<2 zROMh%cvyZ6yxN)K^JgDv2sRHQZf=%~c*OpcMr;x7A%sN2gLnzFFU}56{3*(pCeFK? z!4K?=2`ntU5^eu7MRA#yC7kr!3Upv!8o4~* zt5BLdB$(zlcAQq+8f%R_6~T2RG??oKHEvM9YbOo@G_)F9iO^OQ4-T-J0=>;p4Xp36 z8T%gITx_%zs}@|}FF@SjBi-kxgtkC!eet4T<&MS^aSyTD#zC%S=WAAvb)P@`?fBsx z%dIw3*DF^F%bGCI0yRuzo7I2nt(-WtUJM4+!AefJjR>j{U1XqsX2W<(BHZc13eB!b zGSx3;M^*D?P*^d%Mc97fSApaP_Hhojn9$|RoK!HY{rd4`JA{J0T1glk0#Bp_QwMBj zZJFl|x`yfM>N5R1X9ppLpyj@I=i)fy>_2|`)PKUmZK{)oDWu*a0eP8nuDatTgdBdR zkhl~y$RJC>wUd#ERYFYyVF&)o0=tUY4}bkkr;kP;c?t6+1U9gpDGB+>VTFgub%#onX{)ju?tM z(Mgbbg|jN|B?{o{2tPtYbkEXEe;9a8CSVC75mtIEaKxlzFz%GVp;ZNFIXH&c)1;&% z9A|_T23^{*2ANagkB+|hTM4mZ@`3u%x!?t4htkPXz7?>n^T=d!{Lb^!G@fJc@n#4g z`J=l5PxhRQjr(!3(^i6DpBrr8&e(G9+_`z_Mpwd-l%Thn(NTGKlo_0ZbIZ$6r5kWz ze(=(gZbCkR=ua>^(UyOx1D4bvVwv9fwg)Oz!d7W^I^tG$x>Vlk>FJS*jUdo38t8c- zZXzHEGuf$AbnvU?d9N-J27M^9C?rVUBVM`CRk!ce3eb95*Q)sU4yG4evz~yh8KZAq zAlxe0bd`n^Pz>N|l=1ES=B6zaGg6Pf7gu^zC6Ph0=U3tns*{p9@5jbkz$;8Rs=+QIPhI2z zOa-q|eqv*%oD%C#e#bh8sfTfACW&ef2G$};LKB7?49@*yS(A1#O~1@6Tp|359-k`o zGr;RIr_GsHb}RCAqPsp0;g#l1_xDlL(FN!}uP0y>GSdi*6jF`WF@f7!7l1u2D2iB= zc==^i3WAX8YQHXL=2mHZ$SOUAb9&^)FOs&+^X*Jbgzp3FB7LO%Pilk?Zk`x~LFVkU zv7;ehAT$8h7}=xe`?qb~8VK97W#kb`|C*c7!AesD{*&z^)Pc(&zOjp0kOO>X7ih62 zQ9RAauz-B{KJ1W*7Xbn;TtQ#!q9i4|Ny_ zRspjy$B$DJ7C8*Gc+EGkg){3cHv3Kd78r9_(c&04g!m;ClW<=W>9(JqdvhC3oJrs>mQ#2bj`F0U3@;aelpIZWi>Q7ll@KNs3Wwk$9wmY5iR94fvZ zK)D;0x~i%QE$|z#b)-jz;arWb1eo{nQP4_~X=fcNL5rfL*SU#6hS(fv&h?SqP$Y@X zf-Bo>`B&ib2+k@1B{5S&pfAG`WqTthfFcSc4wy{@8o9ubKqtnDERmUkYm$Q)ukcx0 zNik)7p`V%fN`3MsL^sxhrbLXv?Ny|@c*@;{BRr#BN)=V$rOCF3THO{7wX5^zizdof z&bjRUC$HyG;21#FGWJ%~>_A8n8Z;b>FlMii4qy9m6mCgeGAK|aa5V6D z-iKj*Gl>VY3Lsn$9M}dGLDkJog77#XlMrBmC;?t8c`c))AoGM%XAs)UgTCr^cKcwX z9-f`0_pdQ??`97k=DYX zUJ;@BrNA2fqI1cq9YIP!dc^!OXhBGu@D%!u%Am=U?6D_*{a6?z7Dfq-*R&q%+VLqK zX^G)$bk(n>=M9JE+fzJHq|Pn3=mCusoxnWc`0WZyk{O(yMBJm0*hh=0@=d=7DVK+N zp+aft>ob+b7?K$Vo9Mh$1(6dnVUdsshOL02h*(2Jt6;NXMaRG_k*}o+$nB|H7l@t$ z)vYJ|m<|k=+EGkXcy{%F(#F^gA-UlE!f~3YX-xaQx)k?AsILOkBiM_!YG2? zRjdkIGGRMxe^`mA0msxKRYKb1LT1{%v9VljIo(qXZU^TGSb^~E!A?ek_2T+~2UYH? zB@V(P2HEIlB1)evCYKfS0#jEgfl(#D$Ig4@YN(X4Nj!^ZcA^!4d3Yq_umyNARt&hT;T~r z+npIzxwRR03|3eAx7K^ZyLj|TbvOvb4ibRD!2qX~V7_C4OG7xzcNaXE7{;YuJHWl+Vc9j{_x z#fAewMN?F}n*rXGNALutd5j@9I@9NC5WqaA%-x#E1;-n` zny4S;cp%_-^3+s}2&?O2i{8#pUzP%1O*tz=Jl1@F z;X7Z{@%r^{NTBX;hwI=pTQ|qnpr?B5WWO!dvAL;9)bX?EGd-bproCt=YieqqJ$uHm zi_WNU!!jT}M15GE4zc|>yu`0CNE$lz*Zy{;pX! zahM6+J?yICIjb0+5sK;gF;#CBP<3s(M<7PdZ$XH}x=S!I9i^3+bw808WUyMv!>ui? zWQg$)=mPne-a|=)?Fq$#5P;$J-i|>6ICL?y5P%*}(`yO-230Ms2-|U0xO9B}*aZXy z)xw+)ab3pa=i|xZ!{Xvh|Gzn{_=okK587idGrNz)oXfk|!r}Gv-Clzd$M}%K!r1z~ zJU?P!btBxLo9OB3F^-I?o!j6_8|QhDI5V&*m`iXpM6Sd2j4$EGB;Q18L$ONiZ(F73fE@AP3<+JL~)P8U?A+vJw@|8LXK&I}v zpyAO`G5}^cCQ@J~LVH2*W`t#?*eIN^%%%xq3g}!`X{~2SNXRX8Uzo5!RKZkB%)Z(r zdr*Qhh&bWRxN%yCneeg0enl`IhYoEABf#8z6B8>K>V>JIY_cq8gS_KEfe?>V0;tKdm2wHQVu*e_T@cQCb068k#kKdMnJP8ZNY>z@=arrg%vZD4e+L6 zU;SZGNKBgQVihQRLxL7Yr62B#7Xots-11gb*FzqE{<7TjCYdPj7Y zc|>Y&#gM3h;FcQN+veN*KU_O|+&E zPA7sM1JJ}7!|Z=c#tO$+RTY!E_KcezNKc}l#UwWv2&F6rKMRdH7BL_M%=6r4N%-r# zG;>%XRPHbLio>;%Crs1<+M8)^sR&bT)?m~opFJ9SQ;A}1x9+INq{pX){nzFn8|7Il zlPfU?)b;VotK2n>zDv5rz(c;7|5m5dp@mid!8;Wvq}~ZsSSg#fHjZ*V`0>6{aduxt z!K_zk8X+f_ealEJ8UzUw3A^4f?BsW?cjQ+7q$NBYB=$oW=}dioTgz~6`+?DPkd+OP zQ*Yu#t$wWpbRx0>WF=y<(W$5C`8jzVX2RCvwK5z`3`Yg0$W*y+&67+DvTJ7fyd5`#v*YopwR;~!9{t<>cLv7i`r>+w#Ma^jdN8{LLB zpD)G}!epnf*Y>ljBspxa#3XFml9j2)Lh) z7wwoiCT3?~I1fZ)wKnbI+i~%I?l+F0pdflt)gE17;G_>e-viDd$N9 zSu&#lru z6RJAc8N(p&eSwtIdgo8oC7+8gM!prs-Mcr^Ws{%Qtx#Cm+~$R zA4`&Pt$o6NE-E3jeCpnUr0ztltEo_5zwBY|^l>Ngc*q~;e`Zdtb(VBlcD>x%wU9Z( z^`cwpl}p#yxx@wiu5r0f<32Kj*Ne3cx+mUraLsQOK}FBh&;EELtraYx?`rR$HuQZ! z#>P?ivrDPD&!1{pB1>CXSQNc`A#`9YW2yd<3}=swQt{L`&br@W%P0(B*tg+1CV19^ z1%^8Tg%1-nsM8G1)o-s@_UoJBm+s%QOTEN7AECo)Rag~PSp9M6{lmj-=zVg}x&*&K zr)rMLyPjZOK#n;Kw2d^dUC5I7mU+YH>ex&bN`2qe?(;pxa&UxTOrX!SmpEIqua>!h zweoH(+7nZJh%`9r2pc2uON;_f8|@JgfG4@gsh5?gv4Hr*{O{X>JLnZh2+9{pHwq?I z5Tj*HQt0IK%xX3hHd-_Waf-eQq;B&)s6jms-sAZNX0XA)B#)6nc0A7F$F+)P@(w>9 zGqgd(--*Zqd>t6O5#MqV9uuv@>R<;6vI>*|(W?EUNz##Ff}$g8P4AVTUk&w`DF7LX+1Y<+X@mT<53Ol`3=I>% z>&#!V0EJ50aQ_RiN08)rAqGn&;f_vU{GdB1jqa3)g;xXE3+yLEy$*$Cc!(pB(%+28BQPHTU`g8rW8BRCXZ+PcBf?jgGY~e4j5>?P$gsIkbR4qGm0BMWxM5D*cp1Yr%oO5=z6(l;e1hlZWjn6DEb$RF; z71`=oCxY;FeP=A<{%j)l-o4G4T`$fz!^X1%htbF-4^6^t?>38Yj`)&IU$7K5GiwUH4OyPBnEV!*r<75AXG7_ z#FlAa_wRp%)zsCyzZ>c)?mx1gw1RX(JfDN)TlrT-r+%w+-=nb?*Lu%h2@eaq(yN>~ z(r3#u*g+Q>`4}8ZbQ^exaecvpop2Gjmd$B}Uo@OA=?haX~9({MH zGGYK2*A?boLZm|7BcA!=v%Yu^^yKGJ1Lwc0FIcZ|Sk7{Gp@x9~fT2@9hf}|A&?4XV zf-b5?gT*Z#YPjJ@Bqzt`f6h&yLM0vX{4^2$F%}^Kei8(n>yCTFAul$RA8*9;I7*G8 zX*>q6T8RjHuF}5CTZo6Vz_`x@hG*{CD@;&pERSJ1dID_Wc@J!`Xr~oEd%hR;S*Mp% zI2#Y>w`2dezTEuC`_|QnRQ;H%au4;3&M>R);|OHsRz{KPr?t#>^FVj5U-QV#R+q}~z(;k@4IE`<~ffvSNv zBSzvdVZI5vPCeds>CZ1ac?_fWa2~1B9kl7T66b|a-%0vpScC3_$4z^}%MNETL9Qf7 zyX5p6lX_mgm_9@@SzlH?%Q0n`HC0$3)m`T?neb-=*$R)p$n21O)-vIv*?kx5xE9?* z_HZh=JKx8s*gnv(@FFi78)&3?M%n1fYXB7T@hBnU!9MBkXIb5H0xcqVs0pnGjyAuF zner_u-b?XPl^Xr11b+XHU7DP?i-is_~sTTdqn_Lg~PhF z2}4d++EqMU0rPe$6$f8)U+|+CZfer$I&ZA1gE>bk(os;k#onqqDnM1B?Y{kdl9@3R zNh*5hoLP}#AL;jE#-Tw9z2H2aDl?o@F>?$H57U3~lVu^Uy`j5_N10SEelqScIT)H| zds6(|)d+}7Jxh4v4A;w-FG)A?NQWZ(F4_X&Zg&N2CZwF#$OAO^c03A;==umuIpDo~ zKILrR_thV8^%9SKLPH+eJKqYZhUb$-oYuD^%Q2}#mNQ3%!P8(~V@%-tBArD2YTAn{ z_RnncNA7;^F`<`~UX1Jc`a(OoWQK?AU6Lewm60S_A%&9lJ1>p*eUIb+ zJN`e1=XpGJyT|u?U7vA&&hxx>u7BV#j&&VNyP;3_MQ+p^ zFw|O1S}HJp`4TTVOC3s*gzCzS?hckXs=iaFxIP2zk$Xfvdntcl=Ph(QXs^lYW47P>k`NSM3TyYnX>A+CqajKl2T8w&ZVmz9*n1 z#&B-?jvY&p&54?UjAZUttM@E@wF~gOI9bi zEaJga5JWmRPGJ@YiNtmE#yx&wBX!09e){+^_h1Fa=ETGX3d-leS?lv{O_yK2jNXh1 zJGAZMWV3FWV6Q-QMrGiH1gf1)nnZ1Gmjq+PbB>4XxgbUv9)Q!+8xP+MRL!= zO{I|KI|I2RPdO81K}%n180Oz*A+|f?z*10Sk=5@8k4`*?h#H8X9yn^bEfsjf$aUR$ zeGfoEUPoL-G*i^gM2a!RGhMG+gW8OUe>kXbikuI?Pa}19sa7BdA@GnM`g~2eH&i?X z2qCUdi1nzLd|=~117MN|srC%&+AQrc2+f+NT#{p2hsH1wCr)bU5_~j*H%K~sVMS4x zx&7$irbn}s_lB2LIt;n z@}3A{5EfEb^Ik+{@>o5&%E~9J*QE=q4d6y*UPjYt{+c4$B@fQGPRlyr1f1yx?hEnl#)!8*x`63^-$DNYQJTy0xWaN!}BMvto!-vxJv zjh(LQEuWkybxy$|CG$yDYOY=R(;XTbU63`G0Stl$H0N04bT|dcHYvJhOW$XZVA^U0 zXVX<5)#%C{nTrvMIF8~ixl_WX|0KF`g4UPfvnpZMju!kZ;Bg8GM}-Z17_qix(ol5f zCPyB4^fh_aRt!M!&fS(nz6huRht8uDM1kfY21PA?wT=cMlEk-&- zhHbAseQ#BrT#!9DzfHvI$TWXk>yU2o=A;`TKEtA21{23GnvKMNyPj%tA8s9wm?^}q zg?I-5q~O*o*15S@YPw-S-0|_x{GZ}UX~}7MVscscVkO98~60b(N~_m34F7@SQW*^=<8*+s9(Mp0uLHBNrh zC#Qr8HJ5p{kmPTCYOW(<-<6jn&2{X;ypipzs+AQ#iX%TLw1{0%+t8LRTZl)6xL=>r zq4@Ng^TRrK5{0kCy>i?Ulr)!q+S0pw&@YXv_`pHnm=ZU2>ybd}VLCOAE7Tx#vmC)= zqeG@n=98q6n?LiPgr%A(wC|C~8Ts_@SZ1{kmjpX;#sRs86aZ##sO8p=2M?;LrI!Yo zo@{=ialePL@kug|fgUh)6Xx+wawm+pEN=@Nj|1AGq@t zx0x|Hm<6zb+68u1Qf9Q3S##3E7`H=-Lz3s4&A*{j4WHCTe$KKU1n)Q0rD2KvR; zis4Rim86#`R}FFHxjUJo$t_XopVVg|{4dCf1j}!;2+UXHY*!WDbST2}#%+6Kp~CTo zU0n3T#ObI8##Pp-ltUvg^WN|OgF zC3QiU@Y_i4c~OlC8zZm0sC0DOORhhgyRF&^(S;cSUZrSa_6XqT5V=nYTB0n$qDU5}?;wOGNcb`h8&=|?`bAGSuBlYH5(87!;5l8_FcSy(CF;PlZ*sYY%2gM-IY2bl+7g31}(?2?j^257bwvd_p) zY=Ub-VWD_V`&((xh5OgPwH3H;;g@GC2>=RS%|3V#5j)Z+=c}&*r9`jVHM!Fp^KrmO zSuC>e-dhL*0z{^pgCZ~noY*#@2~mfP6@g**t^G2%rGpLAJ|0)NS$Xa-N*`jUp{+e= zCpr0h$>n?O_PGicBFxcf=J5pEtN0O`mK-Vt=0K{mOr!cmKGATfjdGu#%LODw592L3 z>VXis4nbp)#Ul$osMra?=KPZ_FybKy8r+`OPy_eDEflt55RNmTobxExf10G0jG*8_ zD0&AvEEbc>fuJ-n>up-Ws+Q%5{7c+BK#tuRM0EJXH;>e-#7zZ_6)JzCMrB>T$jZv< z3o6ds@b4&Mmfx@T0FaqGo~^_HcX?LeCP=FuH#B@Sct(inmCsNRU~e$q~3BEcoaf@z9+vE7|3RHCl$m- z4Jmoi<#wS9aNt4+M#RB41agPhEd8;F${p&bC63UO`HzgJ+*gF!MphKNJK44muAvD}H17?gNM zd`SgygvvnpZ}F+XFCBK9Cb zLb3eOh!7Ggr_WV1ac5ArgSYq$ud|)H4ujtt$jA@D0)UmNRr@ETQ$kB$wM~MFbmlN( zLnp#YUAHiGK;}tmxfuo7Igx$=P{5ugPR#|KeuAbgs$$_6agjEQSaA@;9MDVN8s0|$ znGA1ztaS|qL=TYf3jDK1MrlEXj}4>kzstVw0A^bR^2I!apqa20T>SnRJvFV>v?w8A zvMt-}CSjof0zLQ03{whXw}nfeRN2Hb&&zubDmR^#!&N3j7;Fz*E)PAo zsii{qSEI+2LeqhcEpfGHpy3u$pTo%xed!olki!fzUeR7?>M^7sHsNh+AKkjO%4`~o zjSx3M8%ntsJE?Ey&dP3XA3_s#Pwd)pufEgu%K|NMqNLe#b)J9&zDJ7Yg#yav?Myp|Ve z5+or9YJIUE=GiYMC`kE-MU2-bQYLidvf}K zlmj>mP;%Xhy+ZdD_PC(~l~FqL zV0~bBL#=|=AiLdM8t7~~ruzLh`6f5nqdE04?jR&zVk~W@C!++v;?I-e6HW&)=%7%* zUu&BhoN#(`Q3&6NKdR1dDB0l8zKd|J0T(aOaLF=9ZgcEuIUs@yhkf9o-b6FU`Dq4* zWG@h-w+c&-!dPvg5{Ndv^9z0B-@o4yWNYG?b(`ZK;58Vs?g_>KGv&(@ctgOBuf_0Q zU^J(80JO3!2)|1x=&!NKiQR&&@skg=HOZ19X^SvN=*?Eh@{0L%syR=jf_v}YarEOn;t>Ne5}3)%>B*>LnJUEY#_v- z57fIqlPA<_3}{9e_{K6irsdSYOh?a-h;P90iM0ftbp0^4o~_yC(Bn$yWfVPHjHbWJn&C-@|k@3BNahX|=u?RQ-l#*cXw-qHJc zG}gqooPZ%nPSKo)Fhh z{GoNg;4s@ZIard!HvajY0?p;{Cw*81MGe9WF+oWsrY7XWuSR;1Nl;L!FDcO%#cPv^ zq>NH#ZwaQ(H^E9k#zavK?^~VwjLUNQX%!L0>eCJ6V95loipnWRYQ&md*d1s#32X#| zDo_>F&jfJ5p|{@9of-(>3#$h3!V31CLDcs6IH8D@`%F%3%wnc!9~wZId=7&HB6l;> z)RMui@`*0(w!q3a>Km~T24sdx3-ByVYMJOf+pSyR?#A&?AV+uHeel>RUcC#m z3)bao4>hl6 z<0!LND>!RMVe_IJ98}7~B6Z#SHGEA%O_Sm6dA;yO09S{Is0if_W4F$l$e8SyjowY0 zYg%9Cx!U(V=8;bQH0tu8CP+lX*3G0~aNTEsKz)kEJ)=vR0i3{KIe&b{lBeI|<%VB( zZ2iNHE5dK`4i43XuUxG*timT-Ug@_dDQTaQrTM+KOf6;^C1Nsx{6)C8Xh@swG%ZF3 zdR|X$RePP2WNjxQ>#Npmn@~Naw&8x5P;#^OaO}Ik9Rgq0?yXIk{=6&JOn8Sv80J|P zwby^-CJPV7?p>y@4%0afhH>?Sw3;__y75+>&BT{?KX$#_H2-}1Ly5zsnf0SL=RXvU zohamO#T*@o;+dRwM$x;=`gERKvUtdRB>j~~o}fC*2AlALpAJ3JWoWaWZW0ml80sJW z9>*7MZSb;wQ`iUFi$34WH}Nq_`xVzQq#39bqKwC?V1-(q_@3*XgwzdAva zW2oIP3NZr9dMkD#VdFV1kFxIEo$6DcGI|%9vLmPK;5d|w71u>q$^LbhQ&F+v!M4Km zi&L1z(!)oAc(w})W~mQj*as$+%5+3kFu@w>>2;;?+~ZDeMeJWMAi04xvl#;hXiqIZ zzu_abDZoA%b@kwiu{XavnU^cKW_Z%kPX!-v>Q6vJfBkfkQ+NJQsx*ocg0?};C4XNi zrJ?vUyeEHseWZnsbnWKN%Y!PHfNBc5FA87(ojM9 zF>nH7M%=IBD&4}nrKb<@pMa1CG5{$+x*)U7pTThaHb-L3*q?&xD|-gF^*>f@k{`q` zDYz1GRW9%c(EG>U82A&>9ywA5&@YkVjgQ;-fB4hdew5?hxDwbZqv&e3pYs59H9io! zo|xFF=~;lz#5ju#=TW?#!RVf){7?P+(*J1SlKa&!)V#cBE?1wwR@VJRyAW{2``}aN zR602IfLsOG zEAc{6GnB!dx9jgGln&&G!s#kejjU|EA{Or{cBAinaf=;xu>2RkkPQbdcyYiA`X5Z> zh|V{dN7o0YurO2G_@mZ+u187yPZXKCjhd_sjk*u7g_}sB z084%WP62u>|6snpU5gj)M*zmY@~E-S@OdU&A&P+|OG+;aIq&_1ism*vwxM^!VHPsZ zuHQ#G!HB}NW{g`d%~1B&vX}s%nD=Z$KqS&h-B8i~+}$V~L3>g&e}c;GpMShSUTsnJR#6v8f{JjCq#CjqoeOQq0}Ix+bF!A>NfomD?FSB}RLdo?ouCFB@F z=Y%H+CV$Vm=I88*7Z)#YZHxoU1S8}fZMAj)&@eAF7PMh_qC38+8!_e|1PkuwADeg0@ zbf}`ebGd8%-T**7^6vh9H}Ac!m+YBh+i5*s>rm`f$uztF0k1wkfSA93b>09x>(qmo zEW?D0WojkG@uetGeXRK zqTl1PA0Wn(dKbQc()yv70eLAYCLi+3h@6n zp#`sbl*OJzVFmis#gr8`YQ5+ui7X0mP}A;RCOTx84010He~}LtrpF`sh>2iGp7o&5 zALwpt6xi^@^!qTC>fP=NSQ9GIo8&eJa;UYLKY5Eb7hi-oNqkGd)uPnFIsoLXZuC8% zeJzyw(-LUpSy8v3SpzZ_-`JdZo2`ofozu`>P43{W{yFW#=%DclwdxWtNeoU@zI<7F zoVSQXTjKEYixyOdDM#|~Srs)pI?u&Ge*!rWxMJ!PhEKJgmb8%pUyAY`O>SD_XfZyg zdfI7UTn%>6{p>q!H^Kh-27<>2l%j+Y59z}^m=~=*Z~i7^l&sxw1{Euw`)P{4FRoz{ zZb0O^1ajo5NTTRRmv;>?I>_-~hI6{e^yjY6{=td#_F;(LuXFl< zVP8(@3S=?^t5t|t%0Lx;$P8{L=>j3TIkfirF_8uCfE(yLyrgje9yO1P^aIbBX>An} z!$EBmTnUj3EVj?4Yl0kq3uso$w?sC*S1^LZ`tSiV#(?Is>@v;bFE9byLLeucf`KBt zS4o`iPc3krz&LRFS~wqI^=jL<8)5m6riZ8j^l&(n??Dy7e8As)#71(Z_vjM{j|@_F zhY=kxL@F>(AV;4NLveHv^kB8YD+d)kzR{@?BOvq^;I9$!DsBR)+l|_@_YxyTGTXyV z#`P)#1JQyIdO#BZEx5ugr_+O|6@m?O%vuC;{0dxHa6ky5esgkjAAtxP63lB*&ON&* zq~Yv}>KNTJI_FhN3}>^nNy*TGHfDjZ>w;OnH*N)S@PVhyU8|GM{TRV)a-XWw1OJOo ziD3+Hj15D6pJ>(lF;3Mavd>J_y2~QNLDxb!z3_H#ogB;Cc@VEp;M}2^>1JdMp#^3> z7~SZ?%)xr_H~1HY4Ea)G|7amh>;7Q1!?l1FQgpcZH5? zWt6H6p>rW{QP$ZL7|}m>{od(`*HdG3695QJ>~zjQISXBG+rFg1Hf|oC)JYevPwQbv z3Zln?c{SQ%8VYDjW!K_Vo7y`E}C6pc3g$XfCx4M{X#%k*a`}v zGoXwlk|bcO&LephJ7{eW>)>a^%QVE9tE@OuVhbvX=jhIotAS;fBdWm6neZ_=s*xvh zXD8bsWl$Qf%QbzAg*rGf-E2j`B0{%@3*>emHdH>>fvq?&dHzms(Xy|)EeLo=gduz& zL=lh~2WgOg2s6%AsOyu3ud==efG6xU&grpcn;%A@xW>#dtgw2!3jqjb^swcZIeBs| zG6#eNC^bPo006M$&}B5koIbhT9*o4B7MunmL(q;o6l@59#W>l78E%|t(*Uh$JDb$9 z+MA&SCg&KcJ@7xB)@o%}(}zhfaqJ*xnIXPlA|5X8xDMS&KiJn8Is4ge#93N^8WAr6 z#(pRmEiMC-Y!O21FWMc}bPRmwiOCcuWoL8RL3Y!%!i)tF0IsN@;0F8~yAwMH8hSFm z00Y+aHT`9EDJuyHoRab)&o9+*PT13r3#%G~B3T$l) zrrz@x6-bGVU4noDuwntAM)8-sw;xp%AtYDZDa*Riac6KegSl}~w z)&d>LthJ9`fWVIW58rLJ0ft+^zY+Y@KjNUoFqHLdv!fo~DtIp1i$C>SGa}bOuVusq{6r)CNeyIOi4bc#=`xX z#ngwGlDD$7+|hWY+*hXLsqFZ(fEUXS;0+P)!dNyY+b3K@-+3>*x5<~_=7P@C@s7f( zfC_NQ340feNKPN^?WA@>5Wv>`WeBlT)b6tv#y%m@hhY>6{y47oQjD%4vew64NI`Y%}$EeF+R>$axGqpUt*J)RyL2neS&k)BS ze9>6wemw=pEFg_Q$15!&*&67D79-uxM;>V!eiKIIJtcJ zMAl%N>U^JzOZm6td;UL5FpEMJ3CI&;-~Nf8$I3!GbhllAr0_5thtSq|V+9$vmg>@( zh~tLctFazWsGy~#)d-Do>I|>V`!Lod@CR~eI+D1Q#=d-o?fq|dL6xzqhZ9XCHuXhI zmv0{YvNvn33f~%gk>;lJwn20ncm1^=CUS)&eaOGbTg4AS9N--(xuyA zpk7!b*sIw%W;6T;6YvsOZuNFd-t*u`l7imH4@?FCjoXxmb_P`@A3RqWz^+^Hribu@kG$0KR>5vwvThEr}e(nf9F2xm8uk+4mMx4%d!!GEiQMIQyA4|H6lw zmGGR8S`jtUW|>%6PA3Z^wVbZ<_9~143-N_3bf|sbuw+}@J}sK~-SQssUG*Ov;{X1$ z#_y7r4Q~X;s5$KLL!pnkm5EO8e~}=ZP##YnV*}Nh(P2 zrO_V3vFYWo+n+2+Pd^ok_!I+9sCmwl-{S^gO&5Uu1N3bl{?7ydLp(sV{Yye1KkHJCW;RBE_XJIY<;KLh`i0ZnM|{`NU8?v+%NG$Ux1Iz+|0UDx z?w!^kXfXVtiriQ9J7QzT2xA@u#4(Is^9zfKBl*`?dq@!klBD{OL-=1N!zT1pfH`n( z<->+-R9u8ifV{1-cbitQCGg`K{2n>yDKVZ!+L{|iF$zu<|G2a{`gw}q4v z11h~}2>X_=SkbUk&lj~PG*ZO-Oe=VMm6dOmNJV-1(~CmVYnLp)dNQ632TPKv7w|&_ zZ^gdiv@7{r1H$xdaRr{B>5Kv=n#@Ze-&lc24q+au5CgQNWGqi1Cub~lZe#zMf6DL8 zB_|hy;QOOWZ|*8iTO@;gw9TYK2Fi*`1tT`JX5`=@(k-J9K$-tz@+i$B|36%S_Dd*6 z$tePOK>)6V(gkFO*z`aJ>xD5!PmS0pF+9U0j9htgYDXXk;iVHP14?42?<3@BA*i`X z=te0@tjv=xs_c~&i9GJ&B2IcpJU3=8r0Iq%x!XtY<9A5FV-CinOK2M+>IMki>XOv< zP_p!j{Qh(VJBd^Z-3e(mz#gGcNZ*V3n?GCtXmXYJZ2=kvTpFv9h=9l`Esz>7Fe8cjIG1*8$=9ETyN0jqR6=k+CEqq;`Z;nC0*%TnN&W-U}Tv zu^mJNMPGKNGv8MG5G{p>H938vXL&(@hh+sngongH<9|5`2=;tv^iW?eBl9bdvqUtB z8iqJ;MbhkG1Edtp`i6O^q*|KHN^wTN1{NqVjQlu&)hvUMs2g&*% zMx^+@$|~^EcE@~Ow%IAt1rgo%9<$?UXE7W7f=3HVo!1~J08TzI&v75Gm-`Qho!||u z1D0Yt3HFQuv_2497`(K22!c38iWBtz3%aVSSCRj4Z}bfe&{QT3$8S6dKvk5)0BFS^ z*N79!0TI;*XABF`DgqEi$B8QGQDH~cmi6neAtd7cilVtAR_0&@UPFa)7BBV&GW(}Y{nd&mJA zd_+z7`Uv!h3)%8;N=@+NF$NiOP!mQwEERuhgamK!iU{dt?q_RBG)B`Ub3c=_lkRd? z5t|fTAxMy8Cths9aV5uBVGjMw7jAepH6GENMEli}syoE*oo=0;px^y6Na)HQJr^0J z=KzApY!Yfq3|U|wxtw%eXtH0Q7FA75SkK5fw5goQo`d>~08S7ClYIqtSC&NZP|-qp zPA^CXk}$y~$6~=~GHN1|CYAe=+tgRXqk-1}@t_wZCz9Z(v8%_UV*fKxhhYvOT9Zl= zXhAM?G|<@M8=$KF8Sp!rH)@%*@3eU2U{kjGz*wE~)E!%tlXhnJX zTY8(URdH(pk_;`?IQ0jkw($)z)Y{X5IU#rgKpD+gn6frU^Bj->6RpF2eilsx(diSp ztfL7@oCM<4EOg*QO;2DbqEoFE|F(*(HgMk&3b7&x=}&ul!%CjP4pG6Z#1YdhZF=N2 zTtG4$#~IChL_%mkdit?u`UfsustGrE(d0};Gi5XPI`D!)vCS_e;G218KG9;s>}-Pb zLERJQ14}7ZH4l=lthj!aC`qBBA-A5O5;2u*we!1m`}S?^9LMfwH@1F9<%J#!y*#FV z_@-no!YxKWjD8OP3uF!jEn@y+G^JO_M-Mh6g|x3Ms^I(8aT~k=cL4xF|Kb7wqeSJzRr)HtYa z7N7KuEvcrNr@u+Yb}928%roC3@rK{v3YHBk4}v>xxci$=(_sZQJ}yNc9bLr@ddaB@ zMDy|3PLIvq5U~{r0dN7T6AHkN=L8AGCU9o@J8emdO}!ELlR;BlB=`oC$;JPF3Ebbn ze;C7loDpcAbHIk{h%Y9@7F)jB3lbV53O6FL#+Wm+^*@>{l&hI7W5O?q=FZD2Az;Po z)n@$+URxh|IE>o#*U^;B&lMc!qook#8AS>ehPcn4Nv9HftRe#n?$i_=nIp~nH?M+X zs$>wHoKhSkfC1j!)Bc#~JU#Oz!Je*kyT-4|+c!9Wi39Svh9g_jQmx=_3*oKj?v9cG z3%M*?>BOo{!xz*hVcSPYD!8`w(XTZb59(G>vqBQj|M%psAO zq+K|7?me7Yz6n1-lhSAI^6s8P)&CO**%iyTe`3b@V1T6a#{fBU@Ej38pk_rdCo?e% zfK;O8Jz@_QE*J>e6{0r%6oAC(n($nUa;oTIJ^rWe-v+yxZRViPqp3}M{w=}NFQY;eeYfcha zXIhV#P5)(tXW|_JzF01(RKy|(>asLFe|YyhFogUW3`(+5*Zs<$((#9zKEAyuB+TUJ zR8FkpAa94|)iR0{j0?>RhK0~S(^E+8f}smBvtlX#yE*?q=FDY3ku71>v>%;p|5qn` zF2s5o3h{v@6D(X(jFq(iLToR=`@Igtm3)Z7?LZ+w6+nVA|NgebT@q0iCp6u{TK~^4 z;MUQCS*4yBQVU)PapoJgrv|cC@uTsQOMh$c|K|qN62=RfJ6w-pL24jM?AY0N0NAin zh-N3|?|2E_oD_~dAO;lxr==OnkF_J;fy?Ai90UQZvXp=NPgA%}3w-4VE?=o62a;{3 zo~xu$U{W8w6g^j;rOuzhH;DD;@IgrNPNv)NUqfX|xg5<&ym;_XPw2CqnEu`m3~HhE z-$b~l_y?PTj&d1;CNh?^^{f0#Qm9u0S1iR=Lca`mbe|`}oVuQ;v z`J~f4&A#WI-zElzk6)dQ2j)#j-^Iive4CjsNlNC;qix{OKO%MJ7N^&<&F3#XXB57b zy6T&4lWo!Em0c4vh2axdQ~Q&WqkBe#Yx+m%JEz!QCq3y|;g_2HV82iDhr9INQcF0N zv9+!}e02GCs$P_RjZ?xgL56x~yxyc>G zXO%Uv-Zt}0tIAG-WmtHcS8xSo{IZ8%)!Xc0hGXcz_*Y4z@&7zyq1tVsIWaN8#m$X# zwOgd(7gIK$6K&zdA7z-`-@3GDov*Czk1uE6W-ItEVvSk4=n9M6{EntN>g2w|2UZ=I zm+`Cg*|I0_S@*x%r%oA$#bM$dw2tvwWNlwiZJ&yYO3;j3$*MAoVinij*_~fTuQOW7 zXUn_dgZ<~z###HN&w87+BQ)KPt!Z?*JaR8Cac0Iv@W6qpeXAVB=bhVXZIYCfH>{`V zBeZ0~3C(kd>M1$!NvvBCw zOQDQoZ)0~!gpAYckqpw0#;%D|cqc{@upG0d(|kcEp%g>e{25mf&)z1bzkaS?m}{4vSh2+-%EMhva0B}>N}u)5Wg8s!)0|c- zCta~4pX>Ir3{Bh@iO3U@KkNNfwY8Jt;&!U3tDAr_o57vj_4Qw~Qy`T-AdXbcEiIGn z-{@p@UHy#)DU@~1YAFqR4UZ(edjlgPQmku4mQb?Cn>-^lddrjBu}nyEe8P%C)G%{|S)Mm$fa@J(f(6PGZ!+XfryXK3T9!8hZPk&lW{=0pgbpo=!bbuX2~*}$4dF4Q}z|R*F#}H8%lTCt!3N% zJG%~AyON3{ZT%xhH7fLXD?$HRxbwt=4r5vz(TN`(cg>F2AKa*ladH|a43DdL3gj^z zziD1Pbzax9d_xux+8Y z1RMA<+TOR>DQGM=FfjD*lAQA9$$fv7y=H9Pda<_iTEXA$p{3Eq8TI5NS+6U4@L}Rk z1tv^tnwkkHn?c%KGZ-XlHzTq7xsn>?@-$OQXk(Y)vHYf8ftjH8yP}}Z|C~`}1J{{B zpFOE3rKPWtW5*+FTZh_UddAyhdT*pyrHPBe&&+P4laM^`a4Pt2U40rVG;Jc7!YK=x z;7C)ge8N!R3`EWiM21g{)w+)4^$lK-oDMb5>)lB9n1DiPT;fU2*ug;)t>8x>wQAub z1{3dX|B4tQz-raCkHA&2fgR8uNl86eKGeZII}`SGyCz|6GLGT87M7Ye*r+w4L)=ij zTZ(?~uoi@;brEm?xsU6;j|iZPaz%%XH`M^r=i~jg;wlC&Zq%5JC=RmRe0L+UN_o)!~0kvTw_cj9Gd&{Y^=O%YjZ3Lqo z9`YTgeR*;A;9*be{@A<`Kf8&E{#IxeZK3Py-&FGB28+v=L$2_Z69wKgf$8ATw)wGb zS;$vBJ#E=308<8Gg$0++AmgwV%dUlid%mg+Bz(_t_<$Y_B=SWpy^_XQYS4Jv{Li#7 zG5b_JTJ7}dRK2;cAwQwq;BXbokL&p|fG~EHgN=#``mP&HjJVb=H-d~J?4Wb@Y1m!z z=&4-HtO4whB01B&W-ELHNHgvWFcB7gpZVYI2+@fK!NfjPj$>VYn)|HjEQCs}utk52 zr29%hA%2YS&2#sVWj&@#C>(kkSx4PlIR{iDZC)FKRHrz+*4b=$cv!Ui`ugzmt@S4U znyx{Wg7POcvOb85QW`417k@8`eeNwAV`5}<(!jvLzrDWBGQC*wrWUNC(SAx`JbDx^ zp3!qZ)8@4?V~T|1ZoV(${gvDHtU!vw0vf-zZAJ=V3A6|&EbbjtqB-O+#&okS-M|yQ z{mw>#EJy=z_OUTQ$b%cNq;HNh=3=5V1)76{CBs!RpWoad4)87tPl!`P5a|=Z>qCgN z+d>Spe!@E||8*HYs?-+;@tWbM+5$EcEEdKmDN^=+EzbvzM+6%A1}aWaHS(T=3|QGS z#>qryKgD9F=6ocko+omDkjXvG#<+r&!W5}|BXe`bV@!<#f~X}SyfMK=0-i2nqr;`8 zaT}hKb>JDqgA+8KP#t~`;FL0u<{F)ExYmQCb0eeUfPF>#G6G_=vxT;JL>=Y$z#xd| zf$unD(eL(5T#S-yI!C{Y-SBE1QsY=BV&az0_DY~yQO+#iXVZ!s`LAPolpbpyYH4)5 z(UDs4AuGO}LV13?W$Mkk6tdE%K+O_7_j0Ymy?xzYq938dRmWY&EO%Y%LH<0Cf$Hzx zTbGueA=w)fQ^N}vOaUTyn)khPf4l#v{d}U|yz67!AR7p$?8K^**vs~*Dk()F=yn2N z*eYTbE8lnr3Ea+Zl3uJ`b2~9RWyaZRT)ey?XE*1=Q{gVs3|89^l4+QbSs0eQ-dwMq zU6?(YxmNXzCE&Cz5--&@1;?H(w?>bB&l&U5Ip5U%h&Djo}eJ$KDON2Sx&1?b*F!4ywAk zDZpw5qdZxZ5mc`}eF)Rz#~vQb_CjV2)U;%9XebLMHmD9?yjmTe{j;kdt`I6pN&ynE zSSW&6DMImG=UBq2&yEHk{69UfaK>`S^JeOo`|y0*w@MlUWDmk*l8I631fJ6N?^$V| zuHGwU;x-g1Hm9)Y&d7yWWd$&P2smK#O5VbUczGy62cQaSmYn}4S+(!h=~fnW6xJcN zp;STnil5iDmrCvQu9g_^HP}x(`)pf}`%HBzoKEqH;aerC%uv-z+BSS5p zBWzrpoOOWiNCrTy@M_;Gt>9jlfx>r}oIL`L9&szt10kdtpkB&J&X4lmU`nXt^FbB% z@wH?Q_i^|%ff(!-^G|Kl*%&G!B;El#S8-)ctKLJc#v$ zhsYX_7#(ILLsal0X?y1EXYQsgYc!>$Fctjx)@$>as$Z4fHLFGv{<^9i*wA1JaP8gO zjQ&|oPj6IyY|w0&-dC0c)mtfN!|vaY$bY_C@EE4$@wWJ?vD&x!bFB?!)goYy$RJkc z6*bIz5VtEh)j3ho83FDNEZ*yOSwWHo4hK68w&so zF;Tt`D+ByGUyVFy%{D_F&C(MZ_tualeOmN|f~P(Wg<=!TGeND;!8?o3&lla|VJV*_ zCjf+jhGJ9sw{kk^FYS2S?L+)})WdGBb3f{tbeRRcyRv&uT)dyEuNnLZ=@gbUB64B* zT*0C&p#vk1&g;_(#6MVXdwk<$MG)8IIQyfDdR~guPw&XD9b@+HEt~@JaZ;NXoHM0V|pmu#fj2ghw1K>-2b9I=s0p;mW4HQ2sVODgB7 z2XSIQw`jzN)jQ?$7EzdP+Jsx(HCe25;+)g!vO9Yyp?ZN*3J3RR!mNc*L)|Fn8%rNpy9I=PGdGCSv12eOOAsmNP# zRM_|!hsCi49F6RWy?G^JSHjtk;R*R^9bXPCKJ!IvII~dz`c2q@E5;YWCid*%^vzNG zy)tuh*4V7Dh?*uD`_3gsqH>YNt*)KOavtI3#`HHntANT8kr= z>2PlKH9;SVA1PhTRPfASO($7F)H3mWK5eZW^jSAE)Ps2`1?|NIdT!oLDZ@u+r zQ;ju8jzmQL!95ad1Ml;lrOl>!-aUC8eQjdly2?JNNG=!#lSK zmPXn+=DN?)jrtd!5bpyqH4D~%zMJ_DLx!Vr>ePKaUI3NNK^V4Z=i3+`9>asTaIf>m z=@gYi6R)y|uPD+|_PulvXTdT@hd4Fsw#9?5ZZ{2O-x;*s@enjthwhgHo^RK}tNE`K z;hBKs)C|wtAqN4Q%fcRKUkWIoBqcjj)ZxoRQX?ak(b}G9c2Gz zts@;vuvxp0Y|P>a7D{O^5`}SCV8zKyPCZ{wZ9@UU-D{U8{QK{}6&2^7xoxK04n-xI z4C3{W*Lgnx}Mw&MCr-t z`trU9&Wb21JqHH|1K05~(G8*CGMRe2rrD;9yK?+!;H~W29&?TETtj8YWY_{?#W!J{ z;Zit?voPoOr8PS}-BRN;TH~~IbjIE1b647#eQ$<)Xs5}W%fopT0vKi}4#5;NN{aP% zT|bkz2b~2>H*MR^auSo0j)C&zh4vPmG$_)TBym+`e4KECYpW5Cc2$I&qZuQfbM4v4 zfGF;5ku4J9;$+d+WpE#d_J`zT0cdU!903XA+Vu0zec)xF^PH%c+eZC4>2EliVd+S#s57)`+K-(!$hJeXz@da@iDJzkKVkuvshe@|@l!Wuuvw z?AiXeHpdl}=p}T|_t8LYcNBPl?hB^R(`PACpPVpuwn5#W_~?-gCd#Tf&jm}+rdqI- zd^oV!7B+wjT#XeXMAfiGTESS|*`B>&`4SZ7I4~s+$@)Z`@gNwS%}Y1wJOqQ$2%c`3 zWd;%d-%g9N)nU*O<4XWixFXOXoxp&aKrw6rwV;WaSu>^v3EO7-<&enW)7=31ifxP5 zg#r9=Kf`ylB^ts^!L38hC)~cSN819vRzLK%O+d#oVOvi+GEd2wC_;y(HUQWg#|cvd z7|*J@y1K@w*5#XC)0|+tj)EA4`38GIUrqP+-ma(%@t`y8QNFv*Q_i z-v;k(&yG#lJNmS2MTC`p{CU4JgM=}^s$R!0Q;Mr2?Y(R@ZWYF9ekBl_!55I-FrKZCjZ6~Nn5ssfiQK1GJhdF_uyMqcVglj6-Jq~YI2p3j@m0AN* zbno}+EYQ!;#SZ26_yutQn9xRfT~;DF^>KY)c12G;yj(=ftE;LSskkWKHGuSy%|fN7#iCo%xx4 zKZchs5!GDCiC7TKv2icX$#oUxsV;H%N^Ro^E@9&}w#*m0s~`%;M+MWH%QjKUS=ThHHS#zJtHlzmc5HqRF<~DTIOe~X}a?4pWaVa4nmgl?5HCM@1 zl$RHwP;JG9O?vS{mf%xUg^!S0MiGe#h=m$0AMaxVV_zf8rva&fi4@F{qV+@;*+>I^ zo)SO%*%2m5N2jXVkL=tMdf`DLqU<0{UR7Avp2Tshv6ogpeRE>Q>{q`6;|eBv`{!Qt zD{dS{%uoY(fF0J=+p~v@i!_HYY8pZV3}nI9=d}ZJudGUtmEP3Rz4Lu?y5=fBnoI*Z zy8K)tzTP@`fI=DDCF3`H&NZL<>A^A?f8N2bmeOunI)DiyS}rW4vbX9Th07l z?7^tw%=Alk|9+^`>Myx{V-yq;5?$I(%m5*cIF32#EizQ8ju6v8F9XO7juWle*lEab zr=T6E15_~4-ZiIQU0t2QJ>-?_{=AEB$)YwK5(CTp0rn5)4Gjm-{xpEi@Ca`u2)${hxD+7GXhF84HI`Ym{fs2!8Wc-KxTN1}K02TvXOpX<>=BT`9^@8J6pxsE~ z!NJOQ7m3IxOpMRkHdXqevRWKrP{DqBOfuN8k`&h4t1<*kni66^h77O;c(t{+N927& z+1^%QpB8&bQVeN<&J#;uXH^DTFRWz4_H6maChW*q9I23%lOqpXsyXr?KD)Pp4gMw=)T{NmR=B(Nb1!Fusqz;DX5J zRXckfX>uE3U6)9}HQfVc(MBF$X{Jq`s=I zR_M13&De&6^4w6(hY4FoTNj{=2(&@H_g%#9uu5v(ywm<(F7@1fyUi|K%8^BsI)9R?*VzJ2HNnX| z5iPXW4$Zc@&uTmyyJxjDm&tm9hO$}svnLJ36?L$^{4Ue@KP5h!`?mw`F&Jj`-%(Li z5@wS4@Ua55Dpp}zk+c0XOI*N(uh^qtgd%>&0R1Dd6&_IIia?FM-~?1;z29-Ts**2O z8KSbGHjulE*qx%8&bHe!bbRH)U*6XDILir@EZE~zZ(0g5eTS^u>SUEeWSg-gSkFz$@?3GiiDN=IGrh#v)%*|6F&LfBu zn&vCVR`ayLcf!Cd&|L7CMk6QcnDAa4O)@7>E49_c*tj0pOB~ctN~f|f)|1NZtzpPO z+T36o!UX5=yP{JBmzlgG_1>$U`Fl<{!c9YLrjP#g_P z&h<$8ZN26}cl#_@d4d4;p));ksbn^rgsBNqpu;zH95#%j08JK$@1~Ucg0KG&;gIkm5~m1$PKeOJy`Q>nNA6@PRL*3wL5sNazUsgVS_pzlM}Ff!)tR#q>KT zHTQ$hX+axdPrN!QEx;Tw1`}R!zuZr|{w@&pKw8*7J035|T)K*eVtzL$CPsdaOTY1vJjzY=V15W(YYqVM5Y4MEuA7KMjbxl!h zSb%s-&W1BnD2tQx^RIp3x7B10&PF{kcbgv-q7T%H`L@{74sT0P{B$ z0H4hodMVK7#nf894O+D2Bl<&>SHgpKNcos#&fcb{oY@CuH<|A_b?nUECaT>-3s)+A zL}v8UiE!0THccy1hwsPL8j-$miHb+$ z*;LckZtLN!1!$*>0m$sV4Y**taLzA@vXC^se>{y(jbf&$@6A7gHprphf>tdgQ1h1o z+pGHbA|YyNB?5A=aa>}H=mmhG5dgpI>)HTs_iMlNRi!1X!N{9*Y1o9F0EYd<7M~8|;`cHRqk0GVx$mbeBeZ^`P{4YRS9+FFr*eFQ*cNYz!)=T+PJ)jI zYRaUvG@!U#yLSh4jkdnJy9Z^kbj(_cg*?U#YPwdHJID~@H@=Q%L%IQkW(vibtHeJX z6pFbufJ?FI5-C>JMu7=55X|Y-&{nPUp-R)flpR5=&%Vn? zdD^oJX3>!0goj(=xJlH^xTG9Jv z6s+(y7c(qUP<6!fSW5dgG~b#0oy;dMh*Fka!PFT$UL?mrjr;-ould43Z~Hafi88Ov}-{9@pxnKZ=61bUdV)7&Go-1(9v}8 zmvye#FGejofw6&}G4s7ro4PQI?SOKOhq9_6H%B6^#yMr^3rOcVS-g-|&-} znb}sMi<)Lr%kAS?QPKz^5&6C9thWIyevaDtf@!CK=xB*wYvgd5w zhINf&%3%!hl*>n+x9;d{-V=55s9T9UtMc`mn0dEqDaIcUT3nj04R1#z3|pMxG>B1! zeTxQ4dU#SE7seBA64p*$V0V7_0` z6JV%?7=(q64&$9voTtDh?;|#_ilbVsc=Y4yZa3YFSS50e>51%>B45y7-HnW_om{ACxe=t zRCI+G+tm>arKQWHVrfIXdGBDduis9C`L_nUSI?-wcQcNAJ%ZA|KZmLNbZ0ZCoatwZ z)Xu1=pilXt&zi@IN3v<1V&e6^+5Vx_G3qvRGPl|nD)?S~7cD_^IVL8mhyUPk>4*E0 zQkR%gj_SVy;r)PheVw z#GGcDJr)TE+CJ;x zvTlpWNb$G8ZTELteKrw(f5w5XZPvMUk-O*_+-}0r`A#_qAj_ov;exQNVi{mo#R`RtDiCzO9O#9Pi zsWPwStN7G|IIQmEAL#fZv1oILqWIVmauEVWhu62awW(@q-a9ES+rR2C(^FKJ172H~ zQf^lw9grSRaR?47qbM6rfG&7~^MMw4F^dCjzSM0GjSIcQL82CGBg{kWv|Ae*K5+Ma z{5X!t+8{5mwHX19)Q_Y$LF@zCm=Dx13xFrj2_L5AOPcEH-gk@$XL!89ZC{)9BqfA_}K zsA2GRnc;T_R8Zs&^M;zQ;C!z0QTS6_FNF?55E_EMNkC!(c#{Za8VIapEQSN@aL8Ji z#l@|E-WNHzkAPT#geL;BffNizf+T=AQI*}?7H%7Cy7>N2b5|b|a~#HF*lL!M{-};Z zBF@<*s>{7BjO!{|h6v52q`b_@#&G4Oysfo6rRXYiJ1-kjUaB!nq3(7yC+|tAj9_*C)Sz>3Qm|$^VSjg+FaE(0=nc9>K;e01PRnc zEdZ4mfJZ!zIN}8`p&Hx{V3Gjfor_JVTF^u!(;|PxlDX0bFJ-#;MfKTbdv6P?pOe@j z%0{uj_gB#~ULTKAc$8WboDY!#>4B8?ftq*CK;?#>>%bk12)C-BlRYcK5}%a$A}*yw z8bFvh1Pj1rCcJ?(T;ymvCog;^nUV`0Kv}`1e zOB7%TK;CVy^IQ%w=mN^98KiK;-rnBm_OU5kd(1Ag{N0((u&i;>l|MLBA0(5t=Y;NH zy*`vxm!d4`OL*i_D*4`CDPFvr^ZsaK0Kc~yk;aC!Gz0br@1if9{Lm~>#2J}-m=6y$ zT)cbEJy(9LyjF5>X~(;4Gq*+P6LK>-q@&QSs85jGZd5R-f1W|TdvvvplRddDdD3Y~ z?T&Omm;EpQ?uuWRdD|k=T+qOmP`79G&d&TAbXQfGARg~Ro0~Bts4)Ab%on}Ze(M{( z;`D_{l1F;}HH7@)=&|(mpap*xTb}!@|Oc2bA(Y-;rp2RGRKmA5WBSY z^i#kF*5B`PNblE?j?cmB11h(q_M@GH>4yBr4UzzG4e>1cj{CDtfv2KBkudaIhcW{g ztDAVgjErl<;^W67=V?~h1Ktf_{c50{&4%RI^Sp8)apR~}(J6qlvnq2#!R8RM!p$J! zNl?bG8&y_rLBDL3PMIKNCUdC`WV0U=i37mz1ro2-Lu^|Bo+srQ4U zLE>)yU=A3gGky-!wr%ZuRv8%!&jUSE$Msk%!-4KlV#T=~g)!WEu58<|%v=Oi5Yl0J zgc+8FYokpe+PRTog_sTDjQ{#1j3yaKo0?7nv~q4 zzLRl~gzLGgUu{{WoaExa&*plZmU1jGC8}a_s=|kGhqH8mG|Vdpx{F zL+QN=c1qE21{oyA*)q}R2Z{YGck{P;Z|58NazMq_G918#d literal 0 HcmV?d00001 From 1fb9651eb29868186e1fb836ac7727ddfe63301c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 22 Jan 2023 16:31:03 -0600 Subject: [PATCH 066/286] fix: zips addons again --- utils.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/utils.py b/utils.py index 7a08447..81de806 100644 --- a/utils.py +++ b/utils.py @@ -703,14 +703,11 @@ def image_user_settings(node, file: TextIO, inner: str, node_var: str): f"{getattr(img_usr, img_usr_attr)}\n")) def zip_addon(zip_dir: str): - pass """ Zips up the addon and removes the directory Parameters: zip_dir (str): path to the top-level addon directory """ - """ shutil.make_archive(zip_dir, "zip", zip_dir) - shutil.rmtree(zip_dir) - """ \ No newline at end of file + shutil.rmtree(zip_dir) \ No newline at end of file From 28ab84f2308dadb18ee8652230dcd573b3618fa5 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 22 Jan 2023 16:38:13 -0600 Subject: [PATCH 067/286] docs: clarification on where to find add-on --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d391830..676f672 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ NodeToPython v2.0 is compatible with Blender 3.0 - 3.4 on Windows, macOS, and Li 3. Click Install, and find where you downloaded the zip file. Then hit the `Install Add-on` button, and you're done! ## Usage -Once you've installed the add-on, you'll see a new tab to the side of a Node Editor. +Once you've installed the add-on, you'll see a new tab in the Node Editor's sidebar, which you can open with keyboard shortcut `N`. In the tab, there's panels to create add-ons for Geometry Nodes and Materials, each with a drop-down menu. From 4612d111c0802cd23e45e8a866c52f88ad67a443 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 22 Jan 2023 16:42:46 -0600 Subject: [PATCH 068/286] docs: images now responsive --- README.md => docs/README.md | 12 +++++------- {img => docs/img}/location.png | Bin {img => docs/img}/ntp.jpg | Bin 3 files changed, 5 insertions(+), 7 deletions(-) rename README.md => docs/README.md (95%) rename {img => docs/img}/location.png (100%) rename {img => docs/img}/ntp.jpg (100%) diff --git a/README.md b/docs/README.md similarity index 95% rename from README.md rename to docs/README.md index 676f672..08d59f5 100644 --- a/README.md +++ b/docs/README.md @@ -1,11 +1,7 @@ # Node to Python -Node To Python - + +![Node To Python Logo](./img/ntp.jpg "") + [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ## About @@ -33,6 +29,8 @@ Once you've installed the add-on, you'll see a new tab in the Node Editor's side In the tab, there's panels to create add-ons for Geometry Nodes and Materials, each with a drop-down menu. +![Add-on Location](./img/location.png "") + Just select the one you want, and soon a zip file will be created in an `addons` folder located in the folder where your blend file is. From here, you can install it like a regular add-on. diff --git a/img/location.png b/docs/img/location.png similarity index 100% rename from img/location.png rename to docs/img/location.png diff --git a/img/ntp.jpg b/docs/img/ntp.jpg similarity index 100% rename from img/ntp.jpg rename to docs/img/ntp.jpg From 4caa9e1bda2f124f2bc8f46ca4acfedd47ae7f21 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 22 Jan 2023 16:48:14 -0600 Subject: [PATCH 069/286] docs: misc README updates --- docs/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index 08d59f5..74d6bdd 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,11 +1,11 @@ # Node to Python -![Node To Python Logo](./img/ntp.jpg "") +![Node To Python Logo](./img/ntp.jpg "Node To Python Logo") [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ## About -A Blender add-on to create add-ons! This addo-on will take your Geometry Nodes or Materials and convert them into legible Python add-ons! +A Blender add-on to create add-ons! This add-on will take your Geometry Nodes or Materials and convert them into legible Python add-ons! It automatically handles node layout, default values, subgroups, naming, colors, and more! @@ -25,11 +25,11 @@ NodeToPython v2.0 is compatible with Blender 3.0 - 3.4 on Windows, macOS, and Li 3. Click Install, and find where you downloaded the zip file. Then hit the `Install Add-on` button, and you're done! ## Usage -Once you've installed the add-on, you'll see a new tab in the Node Editor's sidebar, which you can open with keyboard shortcut `N`. +Once you've installed the add-on, you'll see a new tab in any Node Editor's sidebar. You can open this with keyboard shortcut `N` when focused in the Node Editor. In the tab, there's panels to create add-ons for Geometry Nodes and Materials, each with a drop-down menu. -![Add-on Location](./img/location.png "") +![Add-on Location](./img/location.png "Add-on Location") Just select the one you want, and soon a zip file will be created in an `addons` folder located in the folder where your blend file is. @@ -38,7 +38,9 @@ From here, you can install it like a regular add-on. ## Future * Expansion to Compositing nodes * Add all referenced assets to the Asset Library for use outside of the original blend file +* Auto-set handle movies and image sequences * Automatically format code to be PEP8 compliant +* Automatically detect the minimum version of Blender needed to run the add-on ## Potential Issues * As of version 2.0.0, the add-on will not set default values for From d73755f6ebed030795f529319d3f682eac5ea221 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 5 Feb 2023 18:59:07 -0600 Subject: [PATCH 070/286] fix: curve nodes no longer use initial nodes --- __init__.py | 2 +- utils.py | 55 ++++++++++++++++++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/__init__.py b/__init__.py index 513d9d3..d2f68ad 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (2, 0, 0), + "version": (2, 0, 1), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/utils.py b/utils.py index 81de806..6fecd38 100644 --- a/utils.py +++ b/utils.py @@ -278,24 +278,32 @@ def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): color_ramp = node.color_ramp #settings - file.write((f"{inner}{node_var}.color_ramp.color_mode = " - f"\'{color_ramp.color_mode}\'\n")) + color_mode = enum_to_py_str(color_ramp.color_mode) + file.write(f"{inner}{node_var}.color_ramp.color_mode = {color_mode}\n") + + hue_interpolation = enum_to_py_str(color_ramp.hue_interpolation) file.write((f"{inner}{node_var}.color_ramp.hue_interpolation = " - f"\'{color_ramp.hue_interpolation}\'\n")) + f"{hue_interpolation}\n")) + interpolation = enum_to_py_str(color_ramp.interpolation) file.write((f"{inner}{node_var}.color_ramp.interpolation " - f"= '{color_ramp.interpolation}'\n")) + f"= {interpolation}\n")) file.write("\n") + #key points for i, element in enumerate(color_ramp.elements): - file.write((f"{inner}{node_var}_cre_{i} = " - f"{node_var}.color_ramp.elements" - f".new({element.position})\n")) - file.write((f"{inner}{node_var}_cre_{i}.alpha = " + element_var = f"{node_var}_cre_{i}" + if i < 2: + file.write(f"{inner}{element_var} = " + f"{node_var}.color_ramp.elements[{i}]\n") + file.write(f"{inner}{element_var}.position = {element.position}\n") + else: + file.write((f"{inner}{element_var} = " + f"{node_var}.color_ramp.elements" + f".new({element.position})\n")) + file.write((f"{inner}{element_var}.alpha = " f"{element.alpha}\n")) - col = element.color - r, g, b, a = col[0], col[1], col[2], col[3] - file.write((f"{inner}{node_var}_cre_{i}.color = " - f"({r}, {g}, {b}, {a})\n\n")) + color_str = vec4_to_py_str(element.color) + file.write((f"{element_var}.color = {color_str}\n\n")) def curve_node_settings(node, file: TextIO, inner: str, node_var: str): """ @@ -313,10 +321,10 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): mapping = f"{inner}{node_var}.mapping" #extend - extend = f"\'{node.mapping.extend}\'" + extend = enum_to_py_str(node.mapping.extend) file.write(f"{mapping}.extend = {extend}\n") #tone - tone = f"\'{node.mapping.tone}\'" + tone = enum_to_py_str(node.mapping.tone) file.write(f"{mapping}.tone = {tone}\n") #black level @@ -351,9 +359,14 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): point_j = f"{inner}{curve_i}_point_{j}" loc = point.location - file.write((f"{point_j} = {curve_i}.points.new({loc[0]}, {loc[1]})\n")) + loc_str = f"{loc[0]}, {loc[1]}" + if j < 2: + file.write(f"{point_j} = {curve_i}.points[{j}]\n") + file.write(f"{point_j}.location = ({loc_str})\n") + else: + file.write((f"{point_j} = {curve_i}.points.new({loc_str})\n")) - handle = f"\'{point.handle_type}\'" + handle = enum_to_py_str(point.handle_type) file.write(f"{point_j}.handle_type = {handle}\n") #update curve @@ -669,14 +682,16 @@ def load_image(img, file: TextIO, inner: str, img_var: str): file.write(f"{inner}#set image settings\n") #source - file.write(f"{inner}{img_var}.source = \'{img.source}\'\n") + source = enum_to_py_str(img.source) + file.write(f"{inner}{img_var}.source = {source}\n") #color space settings - file.write((f"{inner}{img_var}.colorspace_settings.name = " - f"\'{img.colorspace_settings.name}\'\n")) + color_space = enum_to_py_str(img.colorspace_settings.name) + file.write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") #alpha mode - file.write(f"{inner}{img_var}.alpha_mode = \'{img.alpha_mode}\'\n") + alpha_mode = enum_to_py_str(img.alpha_mode) + file.write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") def image_user_settings(node, file: TextIO, inner: str, node_var: str): """ From 9cbce82e8e65acf8320f755f08aa1e6bdb61ae1a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 5 Feb 2023 19:11:03 -0600 Subject: [PATCH 071/286] fix: color ramp nodes node longer use initial elements --- utils.py | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/utils.py b/utils.py index 6fecd38..ba4fdcd 100644 --- a/utils.py +++ b/utils.py @@ -303,7 +303,7 @@ def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): file.write((f"{inner}{element_var}.alpha = " f"{element.alpha}\n")) color_str = vec4_to_py_str(element.color) - file.write((f"{element_var}.color = {color_str}\n\n")) + file.write((f"{inner}{element_var}.color = {color_str}\n\n")) def curve_node_settings(node, file: TextIO, inner: str, node_var: str): """ @@ -318,37 +318,35 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): #mapping settings file.write(f"{inner}#mapping settings\n") - mapping = f"{inner}{node_var}.mapping" + mapping_var = f"{inner}{node_var}.mapping" #extend extend = enum_to_py_str(node.mapping.extend) - file.write(f"{mapping}.extend = {extend}\n") + file.write(f"{mapping_var}.extend = {extend}\n") #tone tone = enum_to_py_str(node.mapping.tone) - file.write(f"{mapping}.tone = {tone}\n") + file.write(f"{mapping_var}.tone = {tone}\n") #black level - b_lvl = node.mapping.black_level - b_lvl_str = f"({b_lvl[0]}, {b_lvl[1]}, {b_lvl[2]})" - file.write((f"{mapping}.black_level = {b_lvl_str}\n")) + b_lvl_str = vec3_to_py_str(node.mapping.black_level) + file.write((f"{mapping_var}.black_level = {b_lvl_str}\n")) #white level - w_lvl = node.mapping.white_level - w_lvl_str = f"({w_lvl[0]}, {w_lvl[1]}, {w_lvl[2]})" - file.write((f"{mapping}.white_level = {w_lvl_str}\n")) + w_lvl_str = vec3_to_py_str(node.mapping.white_level) + file.write((f"{mapping_var}.white_level = {w_lvl_str}\n")) #minima and maxima min_x = node.mapping.clip_min_x - file.write(f"{mapping}.clip_min_x = {min_x}\n") + file.write(f"{mapping_var}.clip_min_x = {min_x}\n") min_y = node.mapping.clip_min_y - file.write(f"{mapping}.clip_min_y = {min_y}\n") + file.write(f"{mapping_var}.clip_min_y = {min_y}\n") max_x = node.mapping.clip_max_x - file.write(f"{mapping}.clip_max_x = {max_x}\n") + file.write(f"{mapping_var}.clip_max_x = {max_x}\n") max_y = node.mapping.clip_max_y - file.write(f"{mapping}.clip_max_y = {max_y}\n") + file.write(f"{mapping_var}.clip_max_y = {max_y}\n") #use_clip use_clip = node.mapping.use_clip - file.write(f"{mapping}.use_clip = {use_clip}\n") + file.write(f"{mapping_var}.use_clip = {use_clip}\n") #create curves for i, curve in enumerate(node.mapping.curves): @@ -371,7 +369,7 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): #update curve file.write(f"{inner}#update curve after changes\n") - file.write(f"{mapping}.update()\n") + file.write(f"{mapping_var}.update()\n") def set_input_defaults(node, file: TextIO, inner: str, node_var: str, addon_dir: str): From 0b1ad25f9eca1b0d65d968ff8f1ada621cfea930 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 5 Feb 2023 19:13:38 -0600 Subject: [PATCH 072/286] docs: mention copy mode and update versioning --- docs/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 74d6bdd..2bb0317 100644 --- a/docs/README.md +++ b/docs/README.md @@ -36,6 +36,7 @@ Just select the one you want, and soon a zip file will be created in an `addons` From here, you can install it like a regular add-on. ## Future +* A "copy" mode, where just the functionality to build the node group is just copied to the clipbaord * Expansion to Compositing nodes * Add all referenced assets to the Asset Library for use outside of the original blend file * Auto-set handle movies and image sequences @@ -43,7 +44,7 @@ From here, you can install it like a regular add-on. * Automatically detect the minimum version of Blender needed to run the add-on ## Potential Issues -* As of version 2.0.0, the add-on will not set default values for +* As of version 2.0.1, the add-on will not set default values for * Scripts * IES files * Filepaths From c7eac445d4a15d7cbbdb1cde29d5c7ddf02a4b1f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 5 Feb 2023 19:32:18 -0600 Subject: [PATCH 073/286] fix: color ramps with one element now work --- utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils.py b/utils.py index ba4fdcd..fc0a796 100644 --- a/utils.py +++ b/utils.py @@ -290,9 +290,11 @@ def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): file.write("\n") #key points + file.write((f"{inner}{node_var}.color_ramp.elements.remove" + f"({node_var}.color_ramp.elements[0])\n")) for i, element in enumerate(color_ramp.elements): element_var = f"{node_var}_cre_{i}" - if i < 2: + if i == 0: file.write(f"{inner}{element_var} = " f"{node_var}.color_ramp.elements[{i}]\n") file.write(f"{inner}{element_var}.position = {element.position}\n") From e19d7155e6cb06690422ccb57bc5ffe66dfebad2 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 18 Feb 2023 14:34:36 -0600 Subject: [PATCH 074/286] docs: update installation instructions --- docs/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 2bb0317..17f3139 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,7 +20,8 @@ NodeToPython recreates the node networks for you, so you can focus on the good s NodeToPython v2.0 is compatible with Blender 3.0 - 3.4 on Windows, macOS, and Linux. I generally try to update the addon to handle new nodes around the beta release of each update. ## Installation -1. Download the .zip file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) +1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) + * If you download other options, you'll need to rename the zip and the first folder to "NodeToPython" so Blender can properly import the module 2. In Blender, navigate to `Edit > Preferences > Add-ons` 3. Click Install, and find where you downloaded the zip file. Then hit the `Install Add-on` button, and you're done! From a13e540f71930c31fab9fca48fd6c445f89c508a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 12 Mar 2023 17:50:45 -0500 Subject: [PATCH 075/286] feat: added geometry nodes from Blender 3.5 --- __init__.py | 2 +- geo_nodes.py | 165 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 104 insertions(+), 63 deletions(-) diff --git a/__init__.py b/__init__.py index d2f68ad..dacc2e7 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (2, 0, 1), + "version": (2, 1, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/geo_nodes.py b/geo_nodes.py index e9eff4c..05f550e 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -11,89 +11,110 @@ 'NodeSocketVector'} geo_node_settings = { - #attribute + # Attribute nodes "GeometryNodeAttributeStatistic" : ["data_type", "domain"], - "GeometryNodeCaptureAttribute" : ["data_type", "domain"], "GeometryNodeAttributeDomainSize" : ["component"], + + "GeometryNodeBlurAttribute" : ["data_type"], + "GeometryNodeCaptureAttribute" : ["data_type", "domain"], "GeometryNodeStoreNamedAttribute" : ["data_type", "domain"], "GeometryNodeAttributeTransfer" : ["data_type", "mapping"], - #color - "ShaderNodeMixRGB" : ["blend_type", "use_clamp"], - "FunctionNodeCombineColor" : ["mode"], - "FunctionNodeSeparateColor" : ["mode"], + # Input Nodes + # Input > Constant + "FunctionNodeInputBool" : ["boolean"], + "FunctionNodeInputColor" : ["color"], + "FunctionNodeInputInt" : ["integer"], + "GeometryNodeInputMaterial" : ["material"], + "FunctionNodeInputString" : ["string"], + "FunctionNodeInputVector" : ["vector"], - #curve - "GeometryNodeCurveToPoints" : ["mode"], - "GeometryNodeFillCurve" : ["mode"], - "GeometryNodeFilletCurve" : ["mode"], - "GeometryNodeResampleCurve" : ["mode"], + # Input > Scene + "GeometryNodeCollectionInfo" : ["transform_space"], + "GeometryNodeObjectInfo" : ["transform_space"], + + # Output Nodes + "GeometryNodeViewer" : ["domain"], + + # Geometry Nodes + # Geometry > Read + "GeometryNodeInputNamedAttribute" : ["data_type"], + + # Geometry > Sample + "GeometryNodeProximity" : ["target_element"], + "GeometryNodeRaycast" : ["data_type", "mapping"], + "GeometryNodeSampleIndex" : ["data_type", "domain", "clamp"], + "GeometryNodeSampleNearest" : ["domain"], + + # Geometry > Operations + "GeometryNodeDeleteGeometry" : ["domain", "mode"], + "GeometryNodeDuplicateElements" : ["domain"], + "GeometryNodeMergeByDistance" : ["mode"], + "GeometryNodeSeparateGeometry" : ["domain"], + + + # Curve + # Curve > Read + "GeometryNodeCurveHandleTypeSelection" : ["mode", "handle_type"], + + # Curve > Sample "GeometryNodeSampleCurve" : ["data_type", "mode", "use_all_curves"], - "GeometryNodeTrimCurve" : ["mode"], + + # Curve > Write "GeometryNodeSetCurveNormal" : ["mode"], - "GeometryNodeCurveHandleTypeSelection" : ["mode", "handle_type"], "GeometryNodeSetCurveHandlePositions" : ["mode"], "GeometryNodeCurveSetHandles" : ["mode", "handle_type"], "GeometryNodeCurveSplineType" : ["spline_type"], - #curve primitives + # Curve > Operations + "GeometryNodeCurveToPoints" : ["mode"], + "GeometryNodeFillCurve" : ["mode"], + "GeometryNodeFilletCurve" : ["mode"], + "GeometryNodeResampleCurve" : ["mode"], + "GeometryNodeTrimCurve" : ["mode"], + + # Curve > Primitives "GeometryNodeCurveArc" : ["mode"], "GeometryNodeCurvePrimitiveBezierSegment" : ["mode"], "GeometryNodeCurvePrimitiveCircle" : ["mode"], "GeometryNodeCurvePrimitiveLine" : ["mode"], "GeometryNodeCurvePrimitiveQuadrilateral" : ["mode"], - #geometry - "GeometryNodeDeleteGeometry" : ["domain", "mode"], - "GeometryNodeDuplicateElements" : ["domain"], - "GeometryNodeProximity" : ["target_element"], - "GeometryNodeMergeByDistance" : ["mode"], - "GeometryNodeRaycast" : ["data_type", "mapping"], - "GeometryNodeSampleIndex" : ["data_type", "domain", "clamp"], - "GeometryNodeSampleNearest" : ["domain"], - "GeometryNodeSeparateGeometry" : ["domain"], - #input - "FunctionNodeInputBool" : ["boolean"], - "GeometryNodeCollectionInfo" : ["transform_space"], - "FunctionNodeInputColor" : ["color"], - "FunctionNodeInputInt" : ["integer"], - "GeometryNodeInputMaterial" : ["material"], - "GeometryNodeObjectInfo" : ["transform_space"], - "FunctionNodeInputString" : ["string"], - "FunctionNodeInputVector" : ["vector"], - "GeometryNodeInputNamedAttribute" : ["data_type"], + # Mesh Nodes + # Mesh > Sample + "GeometryNodeSampleNearestSurface" : ["data_type"], + "GeometryNodeSampleUVSurface" : ["data_type"], - #mesh + # Mesh > Operations "GeometryNodeExtrudeMesh" : ["mode"], "GeometryNodeMeshBoolean" : ["operation"], "GeometryNodeMeshToPoints" : ["mode"], "GeometryNodeMeshToVolume" : ["resolution_mode"], - "GeometryNodeSampleNearestSurface" : ["data_type"], - "GeometryNodeSampleUVSurface" : ["data_type"], + "GeometryNodeScaleElements" : ["domain", "scale_mode"], "GeometryNodeSubdivisionSurface" : ["uv_smooth", "boundary_smooth"], "GeometryNodeTriangulate" : ["quad_method", "ngon_method"], - "GeometryNodeScaleElements" : ["domain", "scale_mode"], - #mesh primitives + # Mesh > Primitives "GeometryNodeMeshCone" : ["fill_type"], "GeometryNodeMeshCylinder" : ["fill_type"], "GeometryNodeMeshCircle" : ["fill_type"], "GeometryNodeMeshLine" : ["mode"], - #output - "GeometryNodeViewer" : ["domain"], - - #point + # Mesh > UV + "GeometryNodeUVUnwrap" : ["method"], + + + # Point Nodes "GeometryNodeDistributePointsInVolume" : ["mode"], "GeometryNodeDistributePointsOnFaces" : ["distribute_method"], "GeometryNodePointsToVolume" : ["resolution_mode"], - #text - "GeometryNodeStringToCurves" : ["overflow", "align_x", "align_y", - "pivot_mode"], - - #texture + # Volume Nodes + "GeometryNodeVolumeToMesh" : ["resolution_mode"], + + + # Texture Nodes "ShaderNodeTexBrick" : ["offset", "offset_frequency", "squash", "squash_frequency"], "ShaderNodeTexGradient" : ["gradient_type"], @@ -104,36 +125,51 @@ "ShaderNodeTexWave" : ["wave_type", "bands_direction", "wave_profile"], "ShaderNodeTexWhiteNoise" : ["noise_dimensions"], - #utilities + + # Utilities + # Utilities > Color + "FunctionNodeCombineColor" : ["mode"], + "ShaderNodeMixRGB" : ["blend_type", "use_clamp"], #legacy + "FunctionNodeSeparateColor" : ["mode"], + + # Utilities > Text + "GeometryNodeStringToCurves" : ["overflow", "align_x", "align_y", + "pivot_mode"], + + # Utilities > Vector + "ShaderNodeVectorMath" : ["operation"], + "ShaderNodeVectorRotate" : ["rotation_type", "invert"], + + # Utilities > Field "GeometryNodeAccumulateField" : ["data_type", "domain"], - "FunctionNodeAlignEulerToVector" : ["axis", "pivot_axis"], + "GeometryNodeFieldAtIndex" : ["data_type", "domain"], + "GeometryNodeFieldOnDomain" : ["data_type", "domain" ], + + # Utilities > Math "FunctionNodeBooleanMath" : ["operation"], "ShaderNodeClamp" : ["clamp_type"], "FunctionNodeCompare" : ["data_type", "operation", "mode"], - "GeometryNodeFieldAtIndex" : ["data_type", "domain"], "FunctionNodeFloatToInt" : ["rounding_mode"], - "GeometryNodeFieldOnDomain" : ["data_type", "domain" ], "ShaderNodeMapRange" : ["data_type", "interpolation_type", "clamp"], "ShaderNodeMath" : ["operation", "use_clamp"], - "FunctionNodeRandomValue" : ["data_type"], - "FunctionNodeRotateEuler" : ["type", "space"], - "GeometryNodeSwitch" : ["input_type"], - - #uv - "GeometryNodeUVUnwrap" : ["method"], - #vector - "ShaderNodeVectorMath" : ["operation"], - "ShaderNodeVectorRotate" : ["rotation_type", "invert"], + # Utilities > Rotate + "FunctionNodeAlignEulerToVector" : ["axis", "pivot_axis"], + "FunctionNodeRotateEuler" : ["type", "space"], - #volume - "GeometryNodeVolumeToMesh" : ["resolution_mode"] + # Utilities > General + "ShaderNodeMix" : ["data_type", "blend_type", "clamp_result", + "clamp_factor"], + "FunctionNodeRandomValue" : ["data_type"], + "GeometryNodeSwitch" : ["input_type"] } curve_nodes = {'ShaderNodeFloatCurve', 'ShaderNodeVectorCurve', 'ShaderNodeRGBCurve'} +image_nodes = {'GeometryNodeInputImage'} + class GeoNodesToPython(bpy.types.Operator): bl_idname = "node.geo_nodes_to_python" bl_label = "Geo Nodes to Python" @@ -322,6 +358,11 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) + elif node.bl_idname in image_nodes: + img = node.image + if img.source in {'FILE', 'GENERATED', 'TILED'}: + save_image(img, addon_dir) + load_image(img, file, inner, f"{node_var}.image") set_input_defaults(node, file, inner, node_var, addon_dir) set_output_defaults(node, file, inner, node_var) From af7ca34093dad16ea1c9882b6055e832858ec920 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 May 2023 17:42:11 -0500 Subject: [PATCH 076/286] feat: subtype and hide in modifier support --- geo_nodes.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 05f550e..9e3346e 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -4,11 +4,7 @@ from .utils import * #node tree input sockets that have default properties -default_sockets = {'NodeSocketBool', - 'NodeSocketColor', - 'NodeSocketFloat', - 'NodeSocketInt', - 'NodeSocketVector'} +default_sockets = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} geo_node_settings = { # Attribute nodes @@ -178,6 +174,7 @@ class GeoNodesToPython(bpy.types.Operator): geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def execute(self, context): + print("EXECUTE") #find node group to replicate nt = bpy.data.node_groups[self.geo_nodes_group_name] @@ -251,14 +248,11 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): f"(\"{input.bl_idname}\", " f"\"{input.name}\")\n")) socket = node_tree.inputs[i] - if input.bl_idname in default_sockets: - if input.bl_idname == 'NodeSocketColor': - col = socket.default_value - r, g, b, a = col[0], col[1], col[2], col[3] - dv = f"({r}, {g}, {b}, {a})" - elif input.bl_idname == 'NodeSocketVector': - vec = socket.default_value - dv = f"({vec[0]}, {vec[1]}, {vec[2]})" + if input.type in default_sockets: + if input.type == 'RGBA': + dv = vec4_to_py_str(socket.default_value) + elif input.type == 'VECTOR': + dv = vec3_to_py_str(socket.default_value) else: dv = socket.default_value @@ -299,6 +293,14 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): f".inputs[{i}]" f".hide_value = " f"{socket.hide_value}\n")) + + #hide in modifier + if hasattr(socket, "hide_in_modifier"): + if socket.hide_in_modifier is True: + file.write((f"{inner}{node_tree_var}" + f".inputs[{i}]" + f".hide_in_modifier = " + f"{socket.hide_in_modifier}\n")) file.write("\n") file.write("\n") inputs_set = True From 21680bb19b4c7b8eadecb6f4d8f610892e8d0aea Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 May 2023 17:57:53 -0500 Subject: [PATCH 077/286] cleanup: removed print statement --- geo_nodes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/geo_nodes.py b/geo_nodes.py index 9e3346e..4e9a27c 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -174,7 +174,6 @@ class GeoNodesToPython(bpy.types.Operator): geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def execute(self, context): - print("EXECUTE") #find node group to replicate nt = bpy.data.node_groups[self.geo_nodes_group_name] From 5bfd24591ea7008d364deaea10df2dda74168279 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 May 2023 18:25:22 -0500 Subject: [PATCH 078/286] feat: default values for group outputs --- geo_nodes.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 4e9a27c..bedad2e 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -155,7 +155,7 @@ # Utilities > General "ShaderNodeMix" : ["data_type", "blend_type", "clamp_result", - "clamp_factor"], + "clamp_factor", "factor_mode"], "FunctionNodeRandomValue" : ["data_type"], "GeometryNodeSwitch" : ["input_type"] } @@ -313,6 +313,31 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): f"\"{output.name}\")\n")) socket = node_tree.outputs[i] + if output.type in default_sockets: + if output.type == 'RGBA': + dv = vec4_to_py_str(socket.default_value) + elif output.type == 'VECTOR': + dv = vec3_to_py_str(socket.default_value) + else: + dv = socket.default_value + + #default value + file.write((f"{inner}{node_tree_var}" + f".outputs[{i}]" + f".default_value = {dv}\n")) + + #min value + if hasattr(socket, "min_value"): + file.write((f"{inner}{node_tree_var}" + f".outputs[{i}]" + f".min_value = " + f"{socket.min_value}\n")) + #max value + if hasattr(socket, "max_value"): + file.write((f"{inner}{node_tree_var}" + f".outputs[{i}]" + f".max_value = " + f"{socket.max_value}\n")) #description if socket.description != "": file.write((f"{inner}{node_tree_var}" @@ -339,7 +364,8 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): file.write((f"{inner}{node_tree_var}" f".outputs[{i}]" f".attribute_domain = " - f"\'{socket.attribute_domain}\'\n")) + f"\'{socket.attribute_domain}\'\n")) + file.write("\n") outputs_set = True From 4d2280e3e27fd193d26a2321edda85d5c1ef757f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 May 2023 15:03:02 -0500 Subject: [PATCH 079/286] fix: typo for set dimensions comment --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index fc0a796..da3395e 100644 --- a/utils.py +++ b/utils.py @@ -529,7 +529,7 @@ def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): node_vars (dict): dictionary for (node, variable) name pairs """ - file.write(f"{inner}#sSet dimensions\n") + file.write(f"{inner}#Set dimensions\n") for node in node_tree.nodes: node_var = node_vars[node] file.write((f"{inner}{node_var}.width, {node_var}.height " From a5ed5e5196166eb7123c887b382057168a61d72e Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 May 2023 15:59:33 -0500 Subject: [PATCH 080/286] feat: pair simulation inputs with corresponding output --- geo_nodes.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/geo_nodes.py b/geo_nodes.py index bedad2e..59b3452 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -231,6 +231,8 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): #initialize nodes file.write(f"{inner}#initialize {node_tree_var} nodes\n") + sim_inputs = [] + for node in node_tree.nodes: if node.bl_idname == 'GeometryNodeGroup': node_nt = node.node_tree @@ -390,9 +392,17 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): if img.source in {'FILE', 'GENERATED', 'TILED'}: save_image(img, addon_dir) load_image(img, file, inner, f"{node_var}.image") - + elif node.bl_idname == 'GeometryNodeSimulationInput': + sim_inputs.append(node) set_input_defaults(node, file, inner, node_var, addon_dir) set_output_defaults(node, file, inner, node_var) + + #create simulation zones + for sim_input in sim_inputs: + sim_input_var = node_vars[sim_input] + sim_output_var = node_vars[sim_input.paired_output] + file.write((f"{inner}{sim_input_var}.pair_with_output" + f"({sim_output_var})\n")) set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) From 5a1ebc64c3c937759f56f58426cd0e4f254eb97f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 May 2023 16:00:15 -0500 Subject: [PATCH 081/286] feat: don't write set parents comment unless parents are set --- utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils.py b/utils.py index da3395e..5392324 100644 --- a/utils.py +++ b/utils.py @@ -492,9 +492,12 @@ def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): inner (str): indentation string node_vars (dict): dictionary for (node, variable) name pairs """ - file.write(f"{inner}#Set parents\n") + parent_comment = False for node in node_tree.nodes: if node is not None and node.parent is not None: + if not parent_comment: + file.write(f"{inner}#Set parents\n") + parent_comment = True node_var = node_vars[node] parent_var = node_vars[node.parent] file.write(f"{inner}{node_var}.parent = {parent_var}\n") From 135a6e64469c08810ce3c969c67d28f7dd5b55ae Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 May 2023 16:32:31 -0500 Subject: [PATCH 082/286] feat: handles simulation state items --- geo_nodes.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/geo_nodes.py b/geo_nodes.py index 59b3452..eb6d906 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -394,6 +394,20 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): load_image(img, file, inner, f"{node_var}.image") elif node.bl_idname == 'GeometryNodeSimulationInput': sim_inputs.append(node) + elif node.bl_idname == 'GeometryNodeSimulationOutput': + file.write(f"{inner}#remove generated sim state items\n") + file.write(f"{inner}for item in {node_var}.state_items:\n") + file.write(f"{inner}\t{node_var}.state_items.remove(item)\n") + for i, si in enumerate(node.state_items): + socket_type = enum_to_py_str(si.socket_type) + name = str_to_py_str(si.name) + file.write((f"{inner}{node_var}.state_items.new" + f"({socket_type}, {name})\n")) + si_var = f"{node_var}.state_items[{i}]" + attr_domain = enum_to_py_str(si.attribute_domain) + file.write((f"{inner}{si_var}.attribute_domain = " + f"{attr_domain}\n")) + set_input_defaults(node, file, inner, node_var, addon_dir) set_output_defaults(node, file, inner, node_var) From cf9a960a3545d0afb5a02b52aa8ef6db2c0111e0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 May 2023 16:51:57 -0500 Subject: [PATCH 083/286] fix: sim input nodes now set socket defaults after being paired with the corresponding output --- geo_nodes.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index eb6d906..6f9082a 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -401,6 +401,7 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): for i, si in enumerate(node.state_items): socket_type = enum_to_py_str(si.socket_type) name = str_to_py_str(si.name) + file.write(f"{inner}#create SSI {name}\n") file.write((f"{inner}{node_var}.state_items.new" f"({socket_type}, {name})\n")) si_var = f"{node_var}.state_items[{i}]" @@ -408,8 +409,9 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): file.write((f"{inner}{si_var}.attribute_domain = " f"{attr_domain}\n")) - set_input_defaults(node, file, inner, node_var, addon_dir) - set_output_defaults(node, file, inner, node_var) + if node.bl_idname != 'GeometryNodeSimulationInput': + set_input_defaults(node, file, inner, node_var, addon_dir) + set_output_defaults(node, file, inner, node_var) #create simulation zones for sim_input in sim_inputs: @@ -417,6 +419,11 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): sim_output_var = node_vars[sim_input.paired_output] file.write((f"{inner}{sim_input_var}.pair_with_output" f"({sim_output_var})\n")) + + #must set defaults after paired with output + set_input_defaults(sim_input, file, inner, sim_input_var, addon_dir) + set_output_defaults(sim_input, file, inner, sim_input_var) + set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) From 6efc3bac5ee4489f35891de17fe8addba755b8d6 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 May 2023 17:17:01 -0500 Subject: [PATCH 084/286] docs: update README for v2.1 --- docs/README.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/docs/README.md b/docs/README.md index 17f3139..3065a6b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,21 +7,19 @@ ## About A Blender add-on to create add-ons! This add-on will take your Geometry Nodes or Materials and convert them into legible Python add-ons! -It automatically handles node layout, default values, subgroups, naming, colors, and more! +Node To Python automatically handles node layout, default values, subgroups, naming, colors, and more! -I think Blender's node-based editors are powerful, yet accessible tools, and I wanted to make scripting them easier for add-on creators. Combining Python with node based setups allows you to do things that would otherwise be tedious or impossible, such as +Blender's node-based editors are powerful, yet accessible tools, and I wanted to make scripting them easier for add-on creators. Combining Python with node based setups allows you to do things that would otherwise be tedious or impossible, such as * `for` loops * creating different node trees for different versions or settings * interfacing with other parts of the software or properties of an object -NodeToPython recreates the node networks for you, so you can focus on the good stuff. - ## Supported Versions -NodeToPython v2.0 is compatible with Blender 3.0 - 3.4 on Windows, macOS, and Linux. I generally try to update the addon to handle new nodes around the beta release of each update. +NodeToPython v2.1 is compatible with Blender 3.0 - 3.6 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. ## Installation 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) - * If you download other options, you'll need to rename the zip and the first folder to "NodeToPython" so Blender can properly import the module + * If you clone the repository or download other options, you'll need to rename the zip and the first folder to "NodeToPython" so Blender can properly import the add-on 2. In Blender, navigate to `Edit > Preferences > Add-ons` 3. Click Install, and find where you downloaded the zip file. Then hit the `Install Add-on` button, and you're done! @@ -37,19 +35,26 @@ Just select the one you want, and soon a zip file will be created in an `addons` From here, you can install it like a regular add-on. ## Future +### v2.2 * A "copy" mode, where just the functionality to build the node group is just copied to the clipbaord +* Choose the location where to save the add-on + +### v2.3 * Expansion to Compositing nodes * Add all referenced assets to the Asset Library for use outside of the original blend file + +### Later * Auto-set handle movies and image sequences * Automatically format code to be PEP8 compliant * Automatically detect the minimum version of Blender needed to run the add-on ## Potential Issues -* As of version 2.0.1, the add-on will not set default values for +* As of version 2.1, the add-on will not set default values for * Scripts * IES files * Filepaths * UV maps +* This add-on doesn't currently set default values in Geometry Nodes modifiers, just the node groups themselves * Currently when setting default values for the following, the add-on must be run in the same blend file as the node group was created in to set the default, otherwise it will just set it to `None`: * Materials * Objects @@ -67,4 +72,4 @@ When submitting an issue, please include * A short description of what you were trying to accomplish, or steps to reproduce the issue. * Sample blend files are more than welcome! -Suggestions for how to improve the add-on are more than welcome! \ No newline at end of file +Got suggestions? Create an issue, happy to hear what features people want. \ No newline at end of file From 9894c542edd89494975bbd213c8cfe1d881498d3 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 23 May 2023 13:56:25 -0500 Subject: [PATCH 085/286] fix: added group io logic to shader nodes --- geo_nodes.py | 150 +++++---------------------------------------------- materials.py | 10 ++++ utils.py | 69 ++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 138 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 6f9082a..9257fba 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -3,9 +3,6 @@ from .utils import * -#node tree input sockets that have default properties -default_sockets = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} - geo_node_settings = { # Attribute nodes "GeometryNodeAttributeStatistic" : ["data_type", "domain"], @@ -212,14 +209,14 @@ def execute(self, context): used_vars = set() def process_geo_nodes_group(node_tree, level, node_vars, used_vars): - node_tree_var = create_var(node_tree.name, used_vars) + nt_var = create_var(node_tree.name, used_vars) outer, inner = make_indents(level) #initialize node group - file.write(f"{outer}#initialize {node_tree_var} node group\n") - file.write(f"{outer}def {node_tree_var}_node_group():\n") - file.write((f"{inner}{node_tree_var}" + file.write(f"{outer}#initialize {nt_var} node group\n") + file.write(f"{outer}def {nt_var}_node_group():\n") + file.write((f"{inner}{nt_var}" f"= bpy.data.node_groups.new(" f"type = \"GeometryNodeTree\", " f"name = \"{node_tree.name}\")\n")) @@ -229,7 +226,7 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): outputs_set = False #initialize nodes - file.write(f"{inner}#initialize {node_tree_var} nodes\n") + file.write(f"{inner}#initialize {nt_var} nodes\n") sim_inputs = [] @@ -241,138 +238,15 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): used_vars) node_trees.add(node_nt) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - file.write(f"{inner}#{node_tree_var} inputs\n") - for i, input in enumerate(node.outputs): - if input.bl_idname != "NodeSocketVirtual": - file.write(f"{inner}#input {input.name}\n") - file.write((f"{inner}{node_tree_var}.inputs.new" - f"(\"{input.bl_idname}\", " - f"\"{input.name}\")\n")) - socket = node_tree.inputs[i] - if input.type in default_sockets: - if input.type == 'RGBA': - dv = vec4_to_py_str(socket.default_value) - elif input.type == 'VECTOR': - dv = vec3_to_py_str(socket.default_value) - else: - dv = socket.default_value - - #default value - file.write((f"{inner}{node_tree_var}" - f".inputs[{i}]" - f".default_value = {dv}\n")) - - #min value - if hasattr(socket, "min_value"): - file.write((f"{inner}{node_tree_var}" - f".inputs[{i}]" - f".min_value = " - f"{socket.min_value}\n")) - #max value - if hasattr(socket, "max_value"): - file.write((f"{inner}{node_tree_var}" - f".inputs[{i}]" - f".max_value = " - f"{socket.max_value}\n")) - #default attribute name - if hasattr(socket, "default_attribute_name"): - if socket.default_attribute_name != "": - file.write((f"{inner}{node_tree_var}" - f".inputs[{i}]" - f".default_attribute_name = \"" - f"{socket.default_attribute_name}" - f"\"\n")) - #description - if socket.description != "": - file.write((f"{inner}{node_tree_var}" - f".inputs[{i}]" - f".description = " - f"\"{socket.description}\"\n")) - #hide value - if socket.hide_value is True: - file.write((f"{inner}{node_tree_var}" - f".inputs[{i}]" - f".hide_value = " - f"{socket.hide_value}\n")) - - #hide in modifier - if hasattr(socket, "hide_in_modifier"): - if socket.hide_in_modifier is True: - file.write((f"{inner}{node_tree_var}" - f".inputs[{i}]" - f".hide_in_modifier = " - f"{socket.hide_in_modifier}\n")) - file.write("\n") - file.write("\n") + group_io_settings(node, file, inner, "input", nt_var, node_tree) inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - file.write(f"{inner}#{node_tree_var} outputs\n") - for i, output in enumerate(node.inputs): - if output.bl_idname != 'NodeSocketVirtual': - file.write((f"{inner}{node_tree_var}.outputs" - f".new(\"{output.bl_idname}\", " - f"\"{output.name}\")\n")) - - socket = node_tree.outputs[i] - if output.type in default_sockets: - if output.type == 'RGBA': - dv = vec4_to_py_str(socket.default_value) - elif output.type == 'VECTOR': - dv = vec3_to_py_str(socket.default_value) - else: - dv = socket.default_value - - #default value - file.write((f"{inner}{node_tree_var}" - f".outputs[{i}]" - f".default_value = {dv}\n")) - - #min value - if hasattr(socket, "min_value"): - file.write((f"{inner}{node_tree_var}" - f".outputs[{i}]" - f".min_value = " - f"{socket.min_value}\n")) - #max value - if hasattr(socket, "max_value"): - file.write((f"{inner}{node_tree_var}" - f".outputs[{i}]" - f".max_value = " - f"{socket.max_value}\n")) - #description - if socket.description != "": - file.write((f"{inner}{node_tree_var}" - f".outputs[{i}]" - f".description = " - f"\"{socket.description}\"\n")) - #hide value - if socket.hide_value is True: - file.write((f"{inner}{node_tree_var}" - f".outputs[{i}]" - f".hide_value = " - f"{socket.hide_value}\n")) - - #default attribute name - if hasattr(socket, "default_attribute_name"): - if socket.default_attribute_name != "": - file.write((f"{inner}{node_tree_var}" - f".outputs[{i}]" - f".default_attribute_name = \"" - f"{socket.default_attribute_name}" - f"\"\n")) - #attribute domain - if hasattr(socket, "attribute_domain"): - file.write((f"{inner}{node_tree_var}" - f".outputs[{i}]" - f".attribute_domain = " - f"\'{socket.attribute_domain}\'\n")) - - file.write("\n") + group_io_settings(node, file, inner, "output", nt_var, node_tree) outputs_set = True #create node - node_var = create_node(node, file, inner, node_tree_var, + node_var = create_node(node, file, inner, nt_var, node_vars, used_vars) set_settings_defaults(node, geo_node_settings, file, inner, node_var) @@ -428,13 +302,13 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) - init_links(node_tree, file, inner, node_tree_var, node_vars) + init_links(node_tree, file, inner, nt_var, node_vars) - file.write(f"{inner}return {node_tree_var}\n") + file.write(f"{inner}return {nt_var}\n") #create node group - file.write((f"\n{outer}{node_tree_var} = " - f"{node_tree_var}_node_group()\n\n")) + file.write((f"\n{outer}{nt_var} = " + f"{nt_var}_node_group()\n\n")) return used_vars process_geo_nodes_group(nt, 2, node_vars, used_vars) diff --git a/materials.py b/materials.py index b03fa4d..3946ed4 100644 --- a/materials.py +++ b/materials.py @@ -155,6 +155,9 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): f"name = \"{nt_name}\")\n")) file.write("\n") + inputs_set = False + outputs_set = False + #initialize nodes file.write(f"{inner}#initialize {nt_var} nodes\n") @@ -177,6 +180,13 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: + group_io_settings(node, file, inner, "input", nt_var, node_tree) + inputs_set = True + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: + group_io_settings(node, file, inner, "output", nt_var, node_tree) + outputs_set = True + elif node.bl_idname in image_nodes: img = node.image if img.source in {'FILE', 'GENERATED', 'TILED'}: diff --git a/utils.py b/utils.py index 5392324..738c948 100644 --- a/utils.py +++ b/utils.py @@ -13,6 +13,9 @@ 'NodeSocketShader', 'NodeSocketVirtual'} +#node tree input sockets that have default properties +default_sockets = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} + def clean_string(string: str, lower: bool = True) -> str: """ Cleans up a string for use as a variable or file name @@ -265,6 +268,72 @@ def hide_sockets(node, file: TextIO, inner: str, node_var: str): if socket.hide is True: file.write(f"{inner}{node_var}.outputs[{i}].hide = True\n") +def group_io_settings(node, file: TextIO, inner: str, io: str, node_tree_var: str, node_tree): + if io == "input": + ios = node.outputs + ntio = node_tree.inputs + else: + ios = node.inputs + ntio = node_tree.outputs + file.write(f"{inner}#{node_tree_var} {io}s\n") + for i, inout in enumerate(ios): + if inout.bl_idname == 'NodeSocketVirtual': + continue + file.write(f"{inner}#{io} {inout.name}\n") + idname = enum_to_py_str(inout.bl_idname) + name = str_to_py_str(inout.name) + file.write(f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") + socket = ntio[i] + socket_var = f"{node_tree_var}.{io}s[{i}]" + + print(f"{io} {i}: {name}") + if inout.type in default_sockets: + print(socket.default_value) + #default value + if inout.type == 'RGBA': + dv = vec4_to_py_str(socket.default_value) + elif inout.type == 'VECTOR': + dv = vec3_to_py_str(socket.default_value) + else: + dv = socket.default_value + file.write(f"{inner}{socket_var}.default_value = {dv}\n") + + #min value + if hasattr(socket, "min_value"): + file.write(f"{inner}{socket_var}.min_value = {socket.min_value}\n") + #max value + if hasattr(socket, "min_value"): + file.write((f"{inner}{socket_var}.max_value = {socket.max_value}\n")) + + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + dan = str_to_py_str(socket.default_attribute_name) + file.write((f"{inner}{socket_var}" + f".default_attribute_name = {dan}\n")) + + #attribute domain + if hasattr(socket, "attribute_domain"): + ad = enum_to_py_str(socket.attribute_domain) + file.write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + + #tooltip + if socket.description != "": + description = str_to_py_str(socket.description) + file.write((f"{inner}{socket_var}.description = {description}\n")) + + #hide_value + if socket.hide_value is True: + file.write(f"{inner}{socket_var}.hide_value = True\n") + + #hide in modifier + if hasattr(socket, "hide_in_modifier"): + if socket.hide_in_modifier is True: + file.write(f"{inner}{socket_var}.hide_in_modifier = True\n") + + file.write("\n") + file.write("\n") + def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): """ Replicate a color ramp node From 53cccee5164a4bb4ae724526b29240f5e8b4eddb Mon Sep 17 00:00:00 2001 From: Brendan Parmer Date: Thu, 25 May 2023 14:17:41 -0500 Subject: [PATCH 086/286] fix: image nodes no longer throw errors when no image is selected --- geo_nodes.py | 2 +- materials.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 9257fba..93c4cc3 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -263,7 +263,7 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): curve_node_settings(node, file, inner, node_var) elif node.bl_idname in image_nodes: img = node.image - if img.source in {'FILE', 'GENERATED', 'TILED'}: + if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: save_image(img, addon_dir) load_image(img, file, inner, f"{node_var}.image") elif node.bl_idname == 'GeometryNodeSimulationInput': diff --git a/materials.py b/materials.py index 3946ed4..7b6b803 100644 --- a/materials.py +++ b/materials.py @@ -189,7 +189,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): elif node.bl_idname in image_nodes: img = node.image - if img.source in {'FILE', 'GENERATED', 'TILED'}: + if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: save_image(img, addon_dir) load_image(img, file, inner, f"{node_var}.image") image_user_settings(node, file, inner, node_var) From 3c72f84170b6230a3262c02c866c54a40394d28c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Jun 2023 17:48:37 -0500 Subject: [PATCH 087/286] feat: added UI for script mode --- __init__.py | 5 +++-- geo_nodes.py | 19 ++++++++++++++++++- materials.py | 18 +++++++++++++++++- utils.py | 2 -- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/__init__.py b/__init__.py index dacc2e7..0ccd674 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (2, 1, 0), + "version": (2, 2, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", @@ -36,7 +36,8 @@ def draw(self, context): geo_nodes.GeoNodesToPythonPanel, materials.MaterialToPython, materials.SelectMaterialMenu, - materials.MaterialToPythonPanel] + materials.MaterialToPythonPanel + ] def register(): for cls in classes: diff --git a/geo_nodes.py b/geo_nodes.py index 93c4cc3..0ca27ff 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -168,9 +168,20 @@ class GeoNodesToPython(bpy.types.Operator): bl_label = "Geo Nodes to Python" bl_options = {'REGISTER', 'UNDO'} + mode : bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full addon") + ] + ) geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def execute(self, context): + if self.mode == 'SCRIPT': + print("Script!") + elif self.mode == 'ADDON': + print("Addon!") #find node group to replicate nt = bpy.data.node_groups[self.geo_nodes_group_name] @@ -335,9 +346,15 @@ def apply_modifier(): file.close() zip_addon(zip_dir) - + self.report({'INFO'}, "NodeToPython: Saved geometry nodes group") return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + def draw(self, context): + self.layout.prop(self, "mode") + class SelectGeoNodesMenu(bpy.types.Menu): bl_idname = "NODE_MT_ntp_geo_nodes_selection" bl_label = "Select Geo Nodes" diff --git a/materials.py b/materials.py index 7b6b803..50213a1 100644 --- a/materials.py +++ b/materials.py @@ -81,9 +81,19 @@ class MaterialToPython(bpy.types.Operator): bl_label = "Material to Python" bl_options = {'REGISTER', 'UNDO'} + mode : bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full addon") + ] + ) material_name: bpy.props.StringProperty(name="Node Group") - def execute(self, context): + if self.mode == 'SCRIPT': + print("Script!") + elif self.mode == 'ADDON': + print("Addon!") #find node group to replicate nt = bpy.data.materials[self.material_name].node_tree if nt is None: @@ -220,7 +230,13 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): file.close() zip_addon(zip_dir) + self.report({'INFO'}, "NodeToPython: Saved material") return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + def draw(self, context): + self.layout.prop(self, "mode") class SelectMaterialMenu(bpy.types.Menu): bl_idname = "NODE_MT_npt_mat_selection" diff --git a/utils.py b/utils.py index 738c948..c81be18 100644 --- a/utils.py +++ b/utils.py @@ -286,9 +286,7 @@ def group_io_settings(node, file: TextIO, inner: str, io: str, node_tree_var: st socket = ntio[i] socket_var = f"{node_tree_var}.{io}s[{i}]" - print(f"{io} {i}: {name}") if inout.type in default_sockets: - print(socket.default_value) #default value if inout.type == 'RGBA': dv = vec4_to_py_str(socket.default_value) From a505ce6a02ea140042033b285c934d91a9084516 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 4 Jun 2023 14:16:02 -0500 Subject: [PATCH 088/286] feat: copies script to clipboard --- geo_nodes.py | 94 ++++++++++++++++++++++------------------ materials.py | 118 +++++++++++++++++++++++++++++++-------------------- utils.py | 4 +- 3 files changed, 128 insertions(+), 88 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 0ca27ff..e20b985 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -2,6 +2,7 @@ import os from .utils import * +from io import StringIO geo_node_settings = { # Attribute nodes @@ -178,37 +179,35 @@ class GeoNodesToPython(bpy.types.Operator): geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def execute(self, context): - if self.mode == 'SCRIPT': - print("Script!") - elif self.mode == 'ADDON': - print("Addon!") #find node group to replicate nt = bpy.data.node_groups[self.geo_nodes_group_name] #set up names to use in generated addon nt_var = clean_string(nt.name) - class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), - lower = False) - - #find base directory to save new addon - base_dir = bpy.path.abspath("//") - if not base_dir or base_dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blend file before using " - "NodeToPython!")) - return {'CANCELLED'} - - #save in /addons/ subdirectory - zip_dir = os.path.join(base_dir, "addons", nt_var) - addon_dir = os.path.join(zip_dir, nt_var) - if not os.path.exists(addon_dir): - os.makedirs(addon_dir) - file = open(f"{addon_dir}/__init__.py", "w") - - create_header(file, nt.name) - init_operator(file, class_name, nt_var, nt.name) - file.write("\tdef execute(self, context):\n") + if self.mode == 'ADDON': + #find base directory to save new addon + base_dir = bpy.path.abspath("//") + if not base_dir or base_dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blend file before using " + "NodeToPython!")) + return {'CANCELLED'} + + #save in addons/ subdirectory + zip_dir = os.path.join(base_dir, "addons", nt_var) + addon_dir = os.path.join(zip_dir, nt_var) + if not os.path.exists(addon_dir): + os.makedirs(addon_dir) + file = open(f"{addon_dir}/__init__.py", "w") + + create_header(file, nt.name) + class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), + lower = False) + init_operator(file, class_name, nt_var, nt.name) + file.write("\tdef execute(self, context):\n") + else: + file = StringIO("") #set to keep track of already created node trees node_trees = set() @@ -229,8 +228,8 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): file.write(f"{outer}def {nt_var}_node_group():\n") file.write((f"{inner}{nt_var}" f"= bpy.data.node_groups.new(" - f"type = \"GeometryNodeTree\", " - f"name = \"{node_tree.name}\")\n")) + f"type = \'GeometryNodeTree\', " + f"name = {str_to_py_str(node_tree.name)})\n")) file.write("\n") inputs_set = False @@ -267,12 +266,12 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): if node.node_tree is not None: file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) + f"[{str_to_py_str(node.node_tree.name)}]\n")) elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) - elif node.bl_idname in image_nodes: + elif node.bl_idname in image_nodes and self.mode == 'ADDON': img = node.image if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: save_image(img, addon_dir) @@ -295,7 +294,10 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): f"{attr_domain}\n")) if node.bl_idname != 'GeometryNodeSimulationInput': - set_input_defaults(node, file, inner, node_var, addon_dir) + if self.mode == 'ADDON': + set_input_defaults(node, file, inner, node_var, addon_dir) + else: + set_input_defaults(node, file, inner, node_var) set_output_defaults(node, file, inner, node_var) #create simulation zones @@ -306,7 +308,10 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): f"({sim_output_var})\n")) #must set defaults after paired with output - set_input_defaults(sim_input, file, inner, sim_input_var, addon_dir) + if self.mode == 'ADDON': + set_input_defaults(node, file, inner, node_var, addon_dir) + else: + set_input_defaults(node, file, inner, node_var) set_output_defaults(sim_input, file, inner, sim_input_var) set_parents(node_tree, file, inner, node_vars) @@ -322,7 +327,11 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): f"{nt_var}_node_group()\n\n")) return used_vars - process_geo_nodes_group(nt, 2, node_vars, used_vars) + if self.mode == 'ADDON': + level = 2 + else: + level = 0 + process_geo_nodes_group(nt, level, node_vars, used_vars) def apply_modifier(): #get object @@ -334,18 +343,21 @@ def apply_modifier(): file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " f"type = 'NODES')\n")) file.write(f"\t\tmod.node_group = {nt_var}\n") - apply_modifier() - - file.write("\t\treturn {'FINISHED'}\n\n") - - create_menu_func(file, class_name) - create_register_func(file, class_name) - create_unregister_func(file, class_name) - create_main_func(file) + if self.mode == 'ADDON': + apply_modifier() + file.write("\t\treturn {'FINISHED'}\n\n") + + create_menu_func(file, class_name) + create_register_func(file, class_name) + create_unregister_func(file, class_name) + create_main_func(file) + else: + context.window_manager.clipboard = file.getvalue() file.close() - zip_addon(zip_dir) + if self.mode == 'ADDON': + zip_addon(zip_dir) self.report({'INFO'}, "NodeToPython: Saved geometry nodes group") return {'FINISHED'} diff --git a/materials.py b/materials.py index 50213a1..eea30fb 100644 --- a/materials.py +++ b/materials.py @@ -2,6 +2,7 @@ import os from .utils import * +from io import StringIO node_settings = { #input @@ -89,45 +90,49 @@ class MaterialToPython(bpy.types.Operator): ] ) material_name: bpy.props.StringProperty(name="Node Group") + def execute(self, context): - if self.mode == 'SCRIPT': - print("Script!") - elif self.mode == 'ADDON': - print("Addon!") #find node group to replicate nt = bpy.data.materials[self.material_name].node_tree if nt is None: - self.report({'ERROR'}, - ("NodeToPython: This doesn't seem to be a valid " - "material. Is Use Nodes selected?")) + self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " + "valid material. Is Use Nodes selected?")) return {'CANCELLED'} #set up names to use in generated addon mat_var = clean_string(self.material_name) - class_name = clean_string(self.material_name, lower=False) - dir = bpy.path.abspath("//") - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blender file before using " - "NodeToPython!")) - return {'CANCELLED'} - zip_dir = os.path.join(dir, "addons", mat_var) - addon_dir = os.path.join(zip_dir, mat_var) - if not os.path.exists(addon_dir): - os.makedirs(addon_dir) - file = open(f"{addon_dir}/__init__.py", "w") - - create_header(file, self.material_name) - init_operator(file, class_name, mat_var, self.material_name) - - file.write("\tdef execute(self, context):\n") - - def create_material(): - file.write((f"\t\tmat = bpy.data.materials.new(" - f"name = \"{self.material_name}\")\n")) - file.write(f"\t\tmat.use_nodes = True\n") - create_material() + if self.mode == 'ADDON': + dir = bpy.path.abspath("//") + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blender file before using " + "NodeToPython!")) + return {'CANCELLED'} + + #save in addons/ subdirectory + zip_dir = os.path.join(dir, "addons", mat_var) + addon_dir = os.path.join(zip_dir, mat_var) + if not os.path.exists(addon_dir): + os.makedirs(addon_dir) + file = open(f"{addon_dir}/__init__.py", "w") + + create_header(file, self.material_name) + class_name = clean_string(self.material_name, lower=False) + init_operator(file, class_name, mat_var, self.material_name) + + file.write("\tdef execute(self, context):\n") + else: + file = StringIO("") + + def create_material(indent: str): + file.write((f"{indent}mat = bpy.data.materials.new(" + f"name = {str_to_py_str(self.material_name)})\n")) + file.write(f"{indent}mat.use_nodes = True\n") + if self.mode == 'ADDON': + create_material("\t\t") + elif self.mode == 'SCRIPT': + create_material("") #set to keep track of already created node trees node_trees = set() @@ -138,9 +143,15 @@ def create_material(): #keeps track of all used variables used_vars = set() - def process_mat_node_group(node_tree, level, node_vars, used_vars): + def is_outermost_node_group(level: int) -> bool: + if self.mode == 'ADDON' and level == 2: + return True + elif self.mode == 'SCRIPT' and level == 0: + return True + return False - if level == 2: #outermost node group + def process_mat_node_group(node_tree, level, node_vars, used_vars): + if is_outermost_node_group(level): nt_var = create_var(self.material_name, used_vars) nt_name = self.material_name else: @@ -153,7 +164,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): file.write(f"{outer}#initialize {nt_var} node group\n") file.write(f"{outer}def {nt_var}_node_group():\n") - if level == 2: #outermost node group + if is_outermost_node_group(level): #outermost node group file.write(f"{inner}{nt_var} = mat.node_tree\n") file.write(f"{inner}#start with a clean node tree\n") file.write(f"{inner}for node in {nt_var}.nodes:\n") @@ -161,8 +172,8 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): else: file.write((f"{inner}{nt_var}" f"= bpy.data.node_groups.new(" - f"type = \"ShaderNodeTree\", " - f"name = \"{nt_name}\")\n")) + f"type = \'ShaderNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) file.write("\n") inputs_set = False @@ -171,7 +182,9 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): #initialize nodes file.write(f"{inner}#initialize {nt_var} nodes\n") + #dictionary to keep track of node->variable name pairs node_vars = {} + for node in node_tree.nodes: if node.bl_idname == 'ShaderNodeGroup': node_nt = node.node_tree @@ -193,22 +206,28 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): elif node.bl_idname == 'NodeGroupInput' and not inputs_set: group_io_settings(node, file, inner, "input", nt_var, node_tree) inputs_set = True + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: group_io_settings(node, file, inner, "output", nt_var, node_tree) outputs_set = True - elif node.bl_idname in image_nodes: + elif node.bl_idname in image_nodes and self.mode == 'ADDON': img = node.image if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: save_image(img, addon_dir) load_image(img, file, inner, f"{node_var}.image") image_user_settings(node, file, inner, node_var) + elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp_settings(node, file, inner, node_var) + elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) - set_input_defaults(node, file, inner, node_var, addon_dir) + if self.mode == 'ADDON': + set_input_defaults(node, file, inner, node_var, addon_dir) + else: + set_input_defaults(node, file, inner, node_var) set_output_defaults(node, file, inner, node_var) set_parents(node_tree, file, inner, node_vars) @@ -218,18 +237,27 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): init_links(node_tree, file, inner, nt_var, node_vars) file.write(f"\n{outer}{nt_var}_node_group()\n\n") - - process_mat_node_group(nt, 2, node_vars, used_vars) - file.write("\t\treturn {'FINISHED'}\n\n") + if self.mode == 'ADDON': + level = 2 + else: + level = 0 + process_mat_node_group(nt, level, node_vars, used_vars) - create_menu_func(file, class_name) - create_register_func(file, class_name) - create_unregister_func(file, class_name) - create_main_func(file) + if self.mode == 'ADDON': + file.write("\t\treturn {'FINISHED'}\n\n") + + create_menu_func(file, class_name) + create_register_func(file, class_name) + create_unregister_func(file, class_name) + create_main_func(file) + else: + context.window_manager.clipboard = file.getvalue() file.close() - zip_addon(zip_dir) + + if self.mode == 'ADDON': + zip_addon(zip_dir) self.report({'INFO'}, "NodeToPython: Saved material") return {'FINISHED'} diff --git a/utils.py b/utils.py index c81be18..41d831b 100644 --- a/utils.py +++ b/utils.py @@ -441,7 +441,7 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): file.write(f"{mapping_var}.update()\n") def set_input_defaults(node, file: TextIO, inner: str, node_var: str, - addon_dir: str): + addon_dir: str = ""): """ Sets defaults for input sockets @@ -476,7 +476,7 @@ def set_input_defaults(node, file: TextIO, inner: str, node_var: str, elif input.bl_idname == 'NodeSocketImage': print("Input is linked: ", input.is_linked) img = input.default_value - if img is not None: + if img is not None and addon_dir != "": #write in a better way save_image(img, addon_dir) load_image(img, file, inner, f"{socket_var}.default_value") default_val = None From 2b769e03b73970956f5ffc85229438e55f92bb81 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 24 Jun 2023 19:33:20 -0500 Subject: [PATCH 089/286] feat: added option panel and save directory --- __init__.py | 35 +++++++++++++++++++++++++++++++++-- geo_nodes.py | 11 +++++++---- materials.py | 6 +++--- utils.py | 2 -- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/__init__.py b/__init__.py index 0ccd674..9f77d96 100644 --- a/__init__.py +++ b/__init__.py @@ -21,7 +21,7 @@ class NodeToPythonMenu(bpy.types.Menu): bl_idname = "NODE_MT_node_to_python" bl_label = "Node To Python" - + @classmethod def poll(cls, context): return True @@ -30,21 +30,52 @@ def draw(self, context): layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' + +class NTPOptions(bpy.types.PropertyGroup): + dir_path : bpy.props.StringProperty( + name = "Save Location", + subtype='DIR_PATH', + description="Save location if generating an add-on", + default = "//" + ) + +class NTPOptionsPanel(bpy.types.Panel): + bl_label = "Options" + bl_idname = "NODE_PT_ntp_options" + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = "NodeToPython" + + @classmethod + def poll(cls, context): + return True + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_DEFAULT' + layout.prop(context.scene.ntp_options, "dir_path") + classes = [NodeToPythonMenu, + NTPOptions, geo_nodes.GeoNodesToPython, geo_nodes.SelectGeoNodesMenu, geo_nodes.GeoNodesToPythonPanel, materials.MaterialToPython, materials.SelectMaterialMenu, - materials.MaterialToPythonPanel + materials.MaterialToPythonPanel, + NTPOptionsPanel ] def register(): for cls in classes: bpy.utils.register_class(cls) + scene = bpy.types.Scene + scene.ntp_options = bpy.props.PointerProperty(type=NTPOptions) + def unregister(): for cls in classes: bpy.utils.unregister_class(cls) + del bpy.types.Scene.ntp_options if __name__ == "__main__": register() \ No newline at end of file diff --git a/geo_nodes.py b/geo_nodes.py index e20b985..07d5a56 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -176,6 +176,7 @@ class GeoNodesToPython(bpy.types.Operator): ('ADDON', "Addon", "Create a full addon") ] ) + geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def execute(self, context): @@ -187,16 +188,17 @@ def execute(self, context): if self.mode == 'ADDON': #find base directory to save new addon - base_dir = bpy.path.abspath("//") - if not base_dir or base_dir == "": + dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not dir or dir == "": self.report({'ERROR'}, ("NodeToPython: Save your blend file before using " "NodeToPython!")) return {'CANCELLED'} #save in addons/ subdirectory - zip_dir = os.path.join(base_dir, "addons", nt_var) + zip_dir = os.path.join(dir, nt_var) addon_dir = os.path.join(zip_dir, nt_var) + if not os.path.exists(addon_dir): os.makedirs(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") @@ -358,7 +360,8 @@ def apply_modifier(): if self.mode == 'ADDON': zip_addon(zip_dir) - self.report({'INFO'}, "NodeToPython: Saved geometry nodes group") + self.report({'INFO'}, + f"NodeToPython: Saved geometry nodes group to {dir}") return {'FINISHED'} def invoke(self, context, event): diff --git a/materials.py b/materials.py index eea30fb..7f244b8 100644 --- a/materials.py +++ b/materials.py @@ -103,7 +103,7 @@ def execute(self, context): mat_var = clean_string(self.material_name) if self.mode == 'ADDON': - dir = bpy.path.abspath("//") + dir = bpy.path.abspath(context.scene.ntp_options.dir_path) if not dir or dir == "": self.report({'ERROR'}, ("NodeToPython: Save your blender file before using " @@ -111,7 +111,7 @@ def execute(self, context): return {'CANCELLED'} #save in addons/ subdirectory - zip_dir = os.path.join(dir, "addons", mat_var) + zip_dir = os.path.join(dir, mat_var) addon_dir = os.path.join(zip_dir, mat_var) if not os.path.exists(addon_dir): os.makedirs(addon_dir) @@ -258,7 +258,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): if self.mode == 'ADDON': zip_addon(zip_dir) - self.report({'INFO'}, "NodeToPython: Saved material") + self.report({'INFO'}, f"NodeToPython: Saved material to {dir}") return {'FINISHED'} def invoke(self, context, event): diff --git a/utils.py b/utils.py index 41d831b..1b20533 100644 --- a/utils.py +++ b/utils.py @@ -474,7 +474,6 @@ def set_input_defaults(node, file: TextIO, inner: str, node_var: str, #images elif input.bl_idname == 'NodeSocketImage': - print("Input is linked: ", input.is_linked) img = input.default_value if img is not None and addon_dir != "": #write in a better way save_image(img, addon_dir) @@ -719,7 +718,6 @@ def save_image(img, addon_dir: str): #save the image img_str = img_to_py_str(img) img_path = f"{img_dir}/{img_str}" - print("Image Path: ", img_path) if not os.path.exists(img_path): img.save_render(img_path) From 199661b960224fe0e4ac98881601dac6d754759f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 24 Jun 2023 19:40:31 -0500 Subject: [PATCH 090/286] fix: info popup now chooses between clipboard and directory --- geo_nodes.py | 8 +++++++- materials.py | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 07d5a56..ffda531 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -360,8 +360,14 @@ def apply_modifier(): if self.mode == 'ADDON': zip_addon(zip_dir) + + #alert user that NTP is finished + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = dir self.report({'INFO'}, - f"NodeToPython: Saved geometry nodes group to {dir}") + f"NodeToPython: Saved geometry nodes group to {location}") return {'FINISHED'} def invoke(self, context, event): diff --git a/materials.py b/materials.py index 7f244b8..46be769 100644 --- a/materials.py +++ b/materials.py @@ -258,7 +258,11 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): if self.mode == 'ADDON': zip_addon(zip_dir) - self.report({'INFO'}, f"NodeToPython: Saved material to {dir}") + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = dir + self.report({'INFO'}, f"NodeToPython: Saved material to {location}") return {'FINISHED'} def invoke(self, context, event): From aa0aa442febd32257e20712bb20c1846f8270080 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 4 Jul 2023 20:39:28 -0500 Subject: [PATCH 091/286] refactor: moved options to separate module --- __init__.py | 30 +++++------------------------- options.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 25 deletions(-) create mode 100644 options.py diff --git a/__init__.py b/__init__.py index 9f77d96..201080e 100644 --- a/__init__.py +++ b/__init__.py @@ -12,9 +12,11 @@ import importlib importlib.reload(materials) importlib.reload(geo_nodes) + importlib.reload(options) else: from . import materials from . import geo_nodes + from . import options import bpy @@ -31,46 +33,24 @@ def draw(self, context): layout.operator_context = 'INVOKE_DEFAULT' -class NTPOptions(bpy.types.PropertyGroup): - dir_path : bpy.props.StringProperty( - name = "Save Location", - subtype='DIR_PATH', - description="Save location if generating an add-on", - default = "//" - ) -class NTPOptionsPanel(bpy.types.Panel): - bl_label = "Options" - bl_idname = "NODE_PT_ntp_options" - bl_space_type = 'NODE_EDITOR' - bl_region_type = 'UI' - bl_context = '' - bl_category = "NodeToPython" - - @classmethod - def poll(cls, context): - return True - def draw(self, context): - layout = self.layout - layout.operator_context = 'INVOKE_DEFAULT' - layout.prop(context.scene.ntp_options, "dir_path") classes = [NodeToPythonMenu, - NTPOptions, + options.NTPOptions, geo_nodes.GeoNodesToPython, geo_nodes.SelectGeoNodesMenu, geo_nodes.GeoNodesToPythonPanel, materials.MaterialToPython, materials.SelectMaterialMenu, materials.MaterialToPythonPanel, - NTPOptionsPanel + options.NTPOptionsPanel ] def register(): for cls in classes: bpy.utils.register_class(cls) scene = bpy.types.Scene - scene.ntp_options = bpy.props.PointerProperty(type=NTPOptions) + scene.ntp_options = bpy.props.PointerProperty(type=options.NTPOptions) def unregister(): for cls in classes: diff --git a/options.py b/options.py new file mode 100644 index 0000000..09c8310 --- /dev/null +++ b/options.py @@ -0,0 +1,28 @@ +import bpy + +class NTPOptions(bpy.types.PropertyGroup): + """ + Property group used during conversion of node group to python + """ + dir_path : bpy.props.StringProperty( + name = "Save Location", + subtype='DIR_PATH', + description="Save location if generating an add-on", + default = "//" + ) + +class NTPOptionsPanel(bpy.types.Panel): + bl_label = "Options" + bl_idname = "NODE_PT_ntp_options" + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = "NodeToPython" + + @classmethod + def poll(cls, context): + return True + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_DEFAULT' + layout.prop(context.scene.ntp_options, "dir_path") \ No newline at end of file From 7ac4da5874f236762e16ed1dddd5214351024a38 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 4 Jul 2023 21:16:16 -0500 Subject: [PATCH 092/286] refactor: variable names use dictionary with counts instead of set, cleanup --- geo_nodes.py | 25 ++++++++++++++++++------- materials.py | 7 ++++--- utils.py | 17 ++++++++--------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index ffda531..c70f219 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -217,8 +217,8 @@ def execute(self, context): #dictionary to keep track of node->variable name pairs node_vars = {} - #keeps track of all used variables - used_vars = set() + #dictionary to keep track of variables->usage count pairs + used_vars = {} def process_geo_nodes_group(node_tree, level, node_vars, used_vars): nt_var = create_var(node_tree.name, used_vars) @@ -250,18 +250,20 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): used_vars) node_trees.add(node_nt) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - group_io_settings(node, file, inner, "input", nt_var, node_tree) + group_io_settings(node, file, inner, "input", nt_var, + node_tree) inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - group_io_settings(node, file, inner, "output", nt_var, node_tree) + group_io_settings(node, file, inner, "output", nt_var, + node_tree) outputs_set = True #create node node_var = create_node(node, file, inner, nt_var, - node_vars, used_vars) + node_vars, used_vars) set_settings_defaults(node, geo_node_settings, file, inner, - node_var) + node_var) hide_sockets(node, file, inner, node_var) if node.bl_idname == 'GeometryNodeGroup': @@ -269,21 +271,27 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" f"[{str_to_py_str(node.node_tree.name)}]\n")) + elif node.bl_idname == 'ShaderNodeValToRGB': color_ramp_settings(node, file, inner, node_var) + elif node.bl_idname in curve_nodes: curve_node_settings(node, file, inner, node_var) + elif node.bl_idname in image_nodes and self.mode == 'ADDON': img = node.image if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: save_image(img, addon_dir) load_image(img, file, inner, f"{node_var}.image") + elif node.bl_idname == 'GeometryNodeSimulationInput': sim_inputs.append(node) + elif node.bl_idname == 'GeometryNodeSimulationOutput': file.write(f"{inner}#remove generated sim state items\n") file.write(f"{inner}for item in {node_var}.state_items:\n") file.write(f"{inner}\t{node_var}.state_items.remove(item)\n") + for i, si in enumerate(node.state_items): socket_type = enum_to_py_str(si.socket_type) name = str_to_py_str(si.name) @@ -316,10 +324,12 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): set_input_defaults(node, file, inner, node_var) set_output_defaults(sim_input, file, inner, sim_input_var) + #set look of nodes set_parents(node_tree, file, inner, node_vars) set_locations(node_tree, file, inner, node_vars) set_dimensions(node_tree, file, inner, node_vars) + #create connections init_links(node_tree, file, inner, nt_var, node_vars) file.write(f"{inner}return {nt_var}\n") @@ -388,7 +398,8 @@ def draw(self, context): layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' - geo_node_groups = [node for node in bpy.data.node_groups if node.type == 'GEOMETRY'] + geo_node_groups = [node for node in bpy.data.node_groups + if node.type == 'GEOMETRY'] for geo_ng in geo_node_groups: op = layout.operator(GeoNodesToPython.bl_idname, text=geo_ng.name) diff --git a/materials.py b/materials.py index 46be769..466bee5 100644 --- a/materials.py +++ b/materials.py @@ -110,7 +110,6 @@ def execute(self, context): "NodeToPython!")) return {'CANCELLED'} - #save in addons/ subdirectory zip_dir = os.path.join(dir, mat_var) addon_dir = os.path.join(zip_dir, mat_var) if not os.path.exists(addon_dir): @@ -129,6 +128,7 @@ def create_material(indent: str): file.write((f"{indent}mat = bpy.data.materials.new(" f"name = {str_to_py_str(self.material_name)})\n")) file.write(f"{indent}mat.use_nodes = True\n") + if self.mode == 'ADDON': create_material("\t\t") elif self.mode == 'SCRIPT': @@ -141,7 +141,7 @@ def create_material(indent: str): node_vars = {} #keeps track of all used variables - used_vars = set() + used_vars = {} def is_outermost_node_group(level: int) -> bool: if self.mode == 'ADDON' and level == 2: @@ -189,7 +189,8 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): if node.bl_idname == 'ShaderNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: - process_mat_node_group(node_nt, level + 1, node_vars, used_vars) + process_mat_node_group(node_nt, level + 1, node_vars, + used_vars) node_trees.add(node_nt) node_var = create_node(node, file, inner, nt_var, node_vars, diff --git a/utils.py b/utils.py index 1b20533..d416d6b 100644 --- a/utils.py +++ b/utils.py @@ -132,13 +132,13 @@ def init_operator(file: TextIO, name: str, idname: str, label: str): file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") file.write("\n") -def create_var(name: str, used_vars: set) -> str: +def create_var(name: str, used_vars: dict) -> str: """ Creates a unique variable name for a node tree Parameters: name (str): basic string we'd like to create the variable name out of - used_vars (set): set containing all used variable names so far + used_vars (dict): dictionary containing variable names and usage counts Returns: clean_name (str): variable name for the node tree @@ -147,13 +147,12 @@ def create_var(name: str, used_vars: set) -> str: name = "unnamed" clean_name = clean_string(name) var = clean_name - i = 0 - while var in used_vars: - i += 1 - var = f"{clean_name}_{i}" - - used_vars.add(var) - return var + if var in used_vars: + used_vars[var] += 1 + return f"{clean_name}_{used_vars[var]}" + else: + used_vars[var] = 0 + return clean_name def make_indents(level: int) -> Tuple[str, str]: """ From b6b7e37a22e1f108f9937a5f0d9c41e5abb37132 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 2 Aug 2023 22:27:49 -0500 Subject: [PATCH 093/286] fix: typo in generated unregister function --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index d416d6b..a61f817 100644 --- a/utils.py +++ b/utils.py @@ -684,7 +684,7 @@ def create_unregister_func(file: TextIO, name: str): """ file.write("def unregister():\n") file.write(f"\tbpy.utils.unregister_class({name})\n") - file.write("\tbpy.types.VIEW3D_MT_objects.remove(menu_func)\n") + file.write("\tbpy.types.VIEW3D_MT_object.remove(menu_func)\n") file.write("\n") def create_main_func(file: TextIO): From b765e3ff8ee6253d6f10b992af68871ddf29ebfa Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 2 Aug 2023 22:34:14 -0500 Subject: [PATCH 094/286] fix: change generated bl_info category to "Node" --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index a61f817..d66632b 100644 --- a/utils.py +++ b/utils.py @@ -109,7 +109,7 @@ def create_header(file: TextIO, name: str): file.write("\t\"version\" : (1, 0, 0),\n") file.write(f"\t\"blender\" : {bpy.app.version},\n") file.write("\t\"location\" : \"Object\",\n") - file.write("\t\"category\" : \"Object\"\n") + file.write("\t\"category\" : \"Node\"\n") file.write("}\n") file.write("\n") file.write("import bpy\n") From cfdd976d4a19e0e14732de27d375f7ff4791a01b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 2 Aug 2023 22:53:24 -0500 Subject: [PATCH 095/286] docs: update README --- docs/README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/README.md b/docs/README.md index 3065a6b..3902bb1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,11 +15,11 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v2.1 is compatible with Blender 3.0 - 3.6 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. +NodeToPython v2.2 is compatible with Blender 3.0 - 3.6 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. ## Installation 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) - * If you clone the repository or download other options, you'll need to rename the zip and the first folder to "NodeToPython" so Blender can properly import the add-on + * If you download other options, you'll need to rename the zip and the first folder to "NodeToPython" so Blender can properly import the add-on 2. In Blender, navigate to `Edit > Preferences > Add-ons` 3. Click Install, and find where you downloaded the zip file. Then hit the `Install Add-on` button, and you're done! @@ -35,13 +35,9 @@ Just select the one you want, and soon a zip file will be created in an `addons` From here, you can install it like a regular add-on. ## Future -### v2.2 -* A "copy" mode, where just the functionality to build the node group is just copied to the clipbaord -* Choose the location where to save the add-on - -### v2.3 +### v3.0 * Expansion to Compositing nodes -* Add all referenced assets to the Asset Library for use outside of the original blend file +* Better asset handling ### Later * Auto-set handle movies and image sequences @@ -49,7 +45,7 @@ From here, you can install it like a regular add-on. * Automatically detect the minimum version of Blender needed to run the add-on ## Potential Issues -* As of version 2.1, the add-on will not set default values for +* As of version 2.2, the add-on will not set default values for * Scripts * IES files * Filepaths @@ -62,6 +58,7 @@ From here, you can install it like a regular add-on. * Textures * In a future version, I plan on having the add-on adding all of the above to the Asset Library for reference +* You may run into naming conflicts if your addon shares a name with another Blender addon or operator ## Bug Reports and Suggestions From f11db0fa352087928dfb2bc3807e5565765c21d4 Mon Sep 17 00:00:00 2001 From: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 2 Aug 2023 22:59:27 -0500 Subject: [PATCH 096/286] docs: update README --- docs/README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 3902bb1..47b8800 100644 --- a/docs/README.md +++ b/docs/README.md @@ -37,9 +37,10 @@ From here, you can install it like a regular add-on. ## Future ### v3.0 * Expansion to Compositing nodes -* Better asset handling +* New Blender 4.0 nodes and changes ### Later +* Better asset handling * Auto-set handle movies and image sequences * Automatically format code to be PEP8 compliant * Automatically detect the minimum version of Blender needed to run the add-on @@ -58,7 +59,7 @@ From here, you can install it like a regular add-on. * Textures * In a future version, I plan on having the add-on adding all of the above to the Asset Library for reference -* You may run into naming conflicts if your addon shares a name with another Blender addon or operator +* You may run into naming conflicts if your addon shares a name with another Blender addon or operator (see [#56](https://github.com/BrendanParmer/NodeToPython/issues/56)) ## Bug Reports and Suggestions @@ -69,4 +70,4 @@ When submitting an issue, please include * A short description of what you were trying to accomplish, or steps to reproduce the issue. * Sample blend files are more than welcome! -Got suggestions? Create an issue, happy to hear what features people want. \ No newline at end of file +Got suggestions? Create an issue, happy to hear what features people want. From f67b6ec35d168c00dbb001110a5ce5efb4c26c1d Mon Sep 17 00:00:00 2001 From: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 2 Aug 2023 23:30:51 -0500 Subject: [PATCH 097/286] docs: update README.md --- docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 47b8800..b2dab5f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -35,7 +35,7 @@ Just select the one you want, and soon a zip file will be created in an `addons` From here, you can install it like a regular add-on. ## Future -### v3.0 +### v3.x * Expansion to Compositing nodes * New Blender 4.0 nodes and changes @@ -59,7 +59,7 @@ From here, you can install it like a regular add-on. * Textures * In a future version, I plan on having the add-on adding all of the above to the Asset Library for reference -* You may run into naming conflicts if your addon shares a name with another Blender addon or operator (see [#56](https://github.com/BrendanParmer/NodeToPython/issues/56)) +* You may run into naming conflicts if your add-on shares a name with another Blender add-on or operator (see [#56](https://github.com/BrendanParmer/NodeToPython/issues/56)) ## Bug Reports and Suggestions From 7452ba30055f85a02d5e427a32121ebc63d10855 Mon Sep 17 00:00:00 2001 From: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 2 Aug 2023 23:40:29 -0500 Subject: [PATCH 098/286] docs: update README.md --- docs/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index b2dab5f..e82bbb8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -5,7 +5,7 @@ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ## About -A Blender add-on to create add-ons! This add-on will take your Geometry Nodes or Materials and convert them into legible Python add-ons! +A Blender add-on to create scripts and add-ons! This add-on will take your Geometry Nodes or Materials and convert them into legible Python code. Node To Python automatically handles node layout, default values, subgroups, naming, colors, and more! @@ -30,9 +30,11 @@ In the tab, there's panels to create add-ons for Geometry Nodes and Materials, e ![Add-on Location](./img/location.png "Add-on Location") -Just select the one you want, and soon a zip file will be created in an `addons` folder located in the folder where your blend file is. - -From here, you can install it like a regular add-on. +Select the node group you want code for, and you'll be prompted with a **Script** or **Add-on** option. +* **Script** mode creates a function that generates the node tree and copies it to your Blender clipboard. + * Doesn't include `import bpy` line + * To keep NodeToPython cross-platform and independent of third-party libraries, to get it into your system clipboard you need to paste into the Blender text editor and recopy it currently +* **Add-on** mode generates a zip file for you in the save directory specified in the NodeToPython menu. From here, you can install it like a regular add-on. The generated add-on comes complete with operator registration and creating a modifier/material for the node tree to be used in. ## Future ### v3.x From 6e079d9f5cf65d45666f315152e1cf355b31d5d2 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 4 Aug 2023 23:16:15 -0500 Subject: [PATCH 099/286] typo: fixed spelling of SelectMaterialMenu.bl_idname --- materials.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/materials.py b/materials.py index 466bee5..101cdd6 100644 --- a/materials.py +++ b/materials.py @@ -272,7 +272,7 @@ def draw(self, context): self.layout.prop(self, "mode") class SelectMaterialMenu(bpy.types.Menu): - bl_idname = "NODE_MT_npt_mat_selection" + bl_idname = "NODE_MT_ntp_mat_selection" bl_label = "Select Material" @classmethod @@ -312,4 +312,4 @@ def draw(self, context): row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_npt_mat_selection", text="Materials") \ No newline at end of file + row.menu("NODE_MT_ntp_mat_selection", text="Materials") \ No newline at end of file From 80d7a138c74d7517d8d694abddef567c8b423cc9 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 4 Aug 2023 23:47:59 -0500 Subject: [PATCH 100/286] refactor: class renaming --- __init__.py | 24 +++++++++++++++--------- geo_nodes.py | 16 ++++++++-------- materials.py | 14 +++++++------- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/__init__.py b/__init__.py index 201080e..fc987da 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (2, 2, 0), + "version": (3, 0, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", @@ -10,12 +10,14 @@ if "bpy" in locals(): import importlib - importlib.reload(materials) + importlib.reload(compositor) importlib.reload(geo_nodes) + importlib.reload(materials) importlib.reload(options) else: - from . import materials + from . import compositor from . import geo_nodes + from . import materials from . import options import bpy @@ -37,12 +39,16 @@ def draw(self, context): classes = [NodeToPythonMenu, options.NTPOptions, - geo_nodes.GeoNodesToPython, - geo_nodes.SelectGeoNodesMenu, - geo_nodes.GeoNodesToPythonPanel, - materials.MaterialToPython, - materials.SelectMaterialMenu, - materials.MaterialToPythonPanel, + compositor.NTPCompositorOperator, + compositor.NTPCompositorScenesMenu, + compositor.NTPCompositorGroupsMenu, + compositor.NTPCompositingPanel, + geo_nodes.NTPGeoNodesOperator, + geo_nodes.NTPGeoNodesMenu, + geo_nodes.NTPGeoNodesPanel, + materials.NTPMaterialOperator, + materials.NTPMaterialMenu, + materials.NTPMaterialPanel, options.NTPOptionsPanel ] diff --git a/geo_nodes.py b/geo_nodes.py index c70f219..f5f6de1 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -164,8 +164,8 @@ image_nodes = {'GeometryNodeInputImage'} -class GeoNodesToPython(bpy.types.Operator): - bl_idname = "node.geo_nodes_to_python" +class NTPGeoNodesOperator(bpy.types.Operator): + bl_idname = "node.ntp_geo_nodes" bl_label = "Geo Nodes to Python" bl_options = {'REGISTER', 'UNDO'} @@ -386,8 +386,8 @@ def invoke(self, context, event): def draw(self, context): self.layout.prop(self, "mode") -class SelectGeoNodesMenu(bpy.types.Menu): - bl_idname = "NODE_MT_ntp_geo_nodes_selection" +class NTPGeoNodesMenu(bpy.types.Menu): + bl_idname = "NODE_MT_ntp_geo_nodes" bl_label = "Select Geo Nodes" @classmethod @@ -402,12 +402,12 @@ def draw(self, context): if node.type == 'GEOMETRY'] for geo_ng in geo_node_groups: - op = layout.operator(GeoNodesToPython.bl_idname, text=geo_ng.name) + op = layout.operator(NTPGeoNodesOperator.bl_idname, text=geo_ng.name) op.geo_nodes_group_name = geo_ng.name -class GeoNodesToPythonPanel(bpy.types.Panel): +class NTPGeoNodesPanel(bpy.types.Panel): bl_label = "Geometry Nodes to Python" - bl_idname = "NODE_PT_geo_nodes_to_python" + bl_idname = "NODE_PT_geo_nodes" bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' bl_context = '' @@ -434,4 +434,4 @@ def draw(self, context): row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_ntp_geo_nodes_selection", text="Geometry Nodes") \ No newline at end of file + row.menu("NODE_MT_ntp_geo_nodes", text="Geometry Nodes") \ No newline at end of file diff --git a/materials.py b/materials.py index 101cdd6..66c0d00 100644 --- a/materials.py +++ b/materials.py @@ -77,8 +77,8 @@ image_nodes = {'ShaderNodeTexEnvironment', 'ShaderNodeTexImage'} -class MaterialToPython(bpy.types.Operator): - bl_idname = "node.material_to_python" +class NTPMaterialOperator(bpy.types.Operator): + bl_idname = "node.ntp_material" bl_label = "Material to Python" bl_options = {'REGISTER', 'UNDO'} @@ -271,8 +271,8 @@ def invoke(self, context, event): def draw(self, context): self.layout.prop(self, "mode") -class SelectMaterialMenu(bpy.types.Menu): - bl_idname = "NODE_MT_ntp_mat_selection" +class NTPMaterialMenu(bpy.types.Menu): + bl_idname = "NODE_MT_ntp_material" bl_label = "Select Material" @classmethod @@ -283,10 +283,10 @@ def draw(self, context): layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' for mat in bpy.data.materials: - op = layout.operator(MaterialToPython.bl_idname, text=mat.name) + op = layout.operator(NTPMaterialOperator.bl_idname, text=mat.name) op.material_name = mat.name -class MaterialToPythonPanel(bpy.types.Panel): +class NTPMaterialPanel(bpy.types.Panel): bl_label = "Material to Python" bl_idname = "NODE_PT_mat_to_python" bl_space_type = 'NODE_EDITOR' @@ -312,4 +312,4 @@ def draw(self, context): row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_ntp_mat_selection", text="Materials") \ No newline at end of file + row.menu("NODE_MT_ntp_material", text="Materials") \ No newline at end of file From 04099612f1718bd85d15fabd32ce1155f27ab9d2 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 4 Aug 2023 23:55:18 -0500 Subject: [PATCH 101/286] feat: added UI for compositor nodes --- compositor.py | 289 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 compositor.py diff --git a/compositor.py b/compositor.py new file mode 100644 index 0000000..f8dbbf4 --- /dev/null +++ b/compositor.py @@ -0,0 +1,289 @@ +import bpy +import os + +from .utils import * +from io import StringIO + +node_settings = { +} + +curve_nodes = {'ShaderNodeFloatCurve', + 'ShaderNodeVectorCurve', + 'ShaderNodeRGBCurve'} + +image_nodes = {'ShaderNodeTexEnvironment', + 'ShaderNodeTexImage'} + +class NTPCompositorOperator(bpy.types.Operator): + bl_idname = "node.compositor_to_python" + bl_label = "Compositor to Python" + bl_options = {'REGISTER', 'UNDO'} + + mode : bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full addon") + ] + ) + + compositor_name: bpy.props.StringProperty(name="Node Group") + is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") + + def execute(self, context): + """ + #find node group to replicate + nt = bpy.data.materials[self.material_name].node_tree + if nt is None: + self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " + "valid material. Is Use Nodes selected?")) + return {'CANCELLED'} + + #set up names to use in generated addon + mat_var = clean_string(self.material_name) + + if self.mode == 'ADDON': + dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blender file before using " + "NodeToPython!")) + return {'CANCELLED'} + + zip_dir = os.path.join(dir, mat_var) + addon_dir = os.path.join(zip_dir, mat_var) + if not os.path.exists(addon_dir): + os.makedirs(addon_dir) + file = open(f"{addon_dir}/__init__.py", "w") + + create_header(file, self.material_name) + class_name = clean_string(self.material_name, lower=False) + init_operator(file, class_name, mat_var, self.material_name) + + file.write("\tdef execute(self, context):\n") + else: + file = StringIO("") + + def create_material(indent: str): + file.write((f"{indent}mat = bpy.data.materials.new(" + f"name = {str_to_py_str(self.material_name)})\n")) + file.write(f"{indent}mat.use_nodes = True\n") + + if self.mode == 'ADDON': + create_material("\t\t") + elif self.mode == 'SCRIPT': + create_material("") + + #set to keep track of already created node trees + node_trees = set() + + #dictionary to keep track of node->variable name pairs + node_vars = {} + + #keeps track of all used variables + used_vars = {} + + def is_outermost_node_group(level: int) -> bool: + if self.mode == 'ADDON' and level == 2: + return True + elif self.mode == 'SCRIPT' and level == 0: + return True + return False + + def process_mat_node_group(node_tree, level, node_vars, used_vars): + if is_outermost_node_group(level): + nt_var = create_var(self.material_name, used_vars) + nt_name = self.material_name + else: + nt_var = create_var(node_tree.name, used_vars) + nt_name = node_tree.name + + outer, inner = make_indents(level) + + #initialize node group + file.write(f"{outer}#initialize {nt_var} node group\n") + file.write(f"{outer}def {nt_var}_node_group():\n") + + if is_outermost_node_group(level): #outermost node group + file.write(f"{inner}{nt_var} = mat.node_tree\n") + file.write(f"{inner}#start with a clean node tree\n") + file.write(f"{inner}for node in {nt_var}.nodes:\n") + file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + else: + file.write((f"{inner}{nt_var}" + f"= bpy.data.node_groups.new(" + f"type = \'ShaderNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) + file.write("\n") + + inputs_set = False + outputs_set = False + + #initialize nodes + file.write(f"{inner}#initialize {nt_var} nodes\n") + + #dictionary to keep track of node->variable name pairs + node_vars = {} + + for node in node_tree.nodes: + if node.bl_idname == 'ShaderNodeGroup': + node_nt = node.node_tree + if node_nt is not None and node_nt not in node_trees: + process_mat_node_group(node_nt, level + 1, node_vars, + used_vars) + node_trees.add(node_nt) + + node_var = create_node(node, file, inner, nt_var, node_vars, + used_vars) + + set_settings_defaults(node, node_settings, file, inner, node_var) + hide_sockets(node, file, inner, node_var) + + if node.bl_idname == 'ShaderNodeGroup': + if node.node_tree is not None: + file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: + group_io_settings(node, file, inner, "input", nt_var, node_tree) + inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: + group_io_settings(node, file, inner, "output", nt_var, node_tree) + outputs_set = True + + elif node.bl_idname in image_nodes and self.mode == 'ADDON': + img = node.image + if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: + save_image(img, addon_dir) + load_image(img, file, inner, f"{node_var}.image") + image_user_settings(node, file, inner, node_var) + + elif node.bl_idname == 'ShaderNodeValToRGB': + color_ramp_settings(node, file, inner, node_var) + + elif node.bl_idname in curve_nodes: + curve_node_settings(node, file, inner, node_var) + + if self.mode == 'ADDON': + set_input_defaults(node, file, inner, node_var, addon_dir) + else: + set_input_defaults(node, file, inner, node_var) + set_output_defaults(node, file, inner, node_var) + + set_parents(node_tree, file, inner, node_vars) + set_locations(node_tree, file, inner, node_vars) + set_dimensions(node_tree, file, inner, node_vars) + + init_links(node_tree, file, inner, nt_var, node_vars) + + file.write(f"\n{outer}{nt_var}_node_group()\n\n") + + if self.mode == 'ADDON': + level = 2 + else: + level = 0 + process_mat_node_group(nt, level, node_vars, used_vars) + + if self.mode == 'ADDON': + file.write("\t\treturn {'FINISHED'}\n\n") + + create_menu_func(file, class_name) + create_register_func(file, class_name) + create_unregister_func(file, class_name) + create_main_func(file) + else: + context.window_manager.clipboard = file.getvalue() + + file.close() + + if self.mode == 'ADDON': + zip_addon(zip_dir) + """ + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = dir + self.report({'INFO'}, f"NodeToPython: Saved compositor nodes to {location}") + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + def draw(self, context): + self.layout.prop(self, "mode") + +class NTPCompositorScenesMenu(bpy.types.Menu): + bl_idname = "NODE_MT_ntp_comp_scenes" + bl_label = "Select " + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + for scene in bpy.data.scenes: + if scene.node_tree: + op = layout.operator(NTPCompositorOperator.bl_idname, text=scene.name) + op.compositor_name = scene.name + op.is_scene = True + print(scene.node_tree.name) + +class NTPCompositorGroupsMenu(bpy.types.Menu): + bl_idname = "NODE_MT_ntp_comp_groups" + bl_label = "Select " + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + for node_group in bpy.data.node_groups: + if isinstance(node_group, bpy.types.CompositorNodeTree): + op = layout.operator(NTPCompositorOperator.bl_idname, text=node_group.name) + op.compositor_name = node_group.name + op.is_scene = False + +class NTPCompositingPanel(bpy.types.Panel): + bl_label = "Compositor to Python" + bl_idname = "NODE_PT_ntp_compositor" + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = "NodeToPython" + + @classmethod + def poll(cls, context): + return True + + def draw_header(self, context): + layout = self.layout + + def draw(self, context): + layout = self.layout + scenes_row = layout.row() + + # Disables menu when there are no materials + scenes = [scene for scene in bpy.data.scenes + if scene.node_tree is not None] + scenes_exist = len(scenes) > 0 + scenes_row.enabled = scenes_exist + + scenes_row.alignment = 'EXPAND' + scenes_row.operator_context = 'INVOKE_DEFAULT' + scenes_row.menu("NODE_MT_ntp_comp_scenes", + text="Scene Compositor Nodes") + + groups_row = layout.row() + groups = [ng for ng in bpy.data.node_groups + if isinstance(ng, bpy.types.CompositorNodeTree)] + groups_exist = len(groups) > 0 + groups_row.enabled = groups_exist + + groups_row.alignment = 'EXPAND' + groups_row.operator_context = 'INVOKE_DEFAULT' + groups_row.menu("NODE_MT_ntp_comp_groups", + text="Group Compositor Nodes") From cffd9aed8140613d9f2cb8d39f48e65628a97071 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 6 Aug 2023 16:06:57 -0500 Subject: [PATCH 102/286] feat: add most compositor node settings --- compositor.py | 194 ++++++++++++++++++++++++++++++++++++++++++-------- materials.py | 6 +- 2 files changed, 166 insertions(+), 34 deletions(-) diff --git a/compositor.py b/compositor.py index f8dbbf4..ef978b2 100644 --- a/compositor.py +++ b/compositor.py @@ -5,14 +5,140 @@ from io import StringIO node_settings = { + #Input + 'CompositorNodeBokehImage' : ["flaps", "angle", "rounding", "catadioptric", + "shift"], + 'CompositorNodeImage' : [], #TODO: handle image selection + 'CompositorNodeMask' : ["use_feather", "size_source", "size_x", "size_y", + "use_motion_blur", + "motion_blur_samples", "motion_blur_shutter"], #TODO: handle mask selection + 'CompositorNodeMovieClip' : [], #TODO: handle movie clip selection + 'CompositorNodeRLayers' : ["name", "layer"], + 'CompositorNodeRGB' : [], #should be handled by outputs + 'CompositorNodeSceneTime' : [], #should be good + 'CompositorNodeTexture' : [], #TODO: handle texture selection + 'CompositorNodeTime' : ["frame_start", "frame_end"], + 'CompositorNodeTrackPos' : [], #TODO: handle movie selection + 'CompositorNodeValue' : [], #should be handled by outputs (why is this a separate class??) + + #Output + 'CompositorNodeComposite' : ["use_alpha"], + 'CompositorNodeOutputFile' : ["base_path"], #TODO: doesn't seem portable + 'CompositorNodeLevels' : ["channel"], + 'CompositorNodeSplitViewer' : ["axis", "factor"], + 'CompositorNodeViewer' : ["use_alpha"], + + #Color + 'CompositorNodeAlphaOver' : ["use_premultiply", "premul"], + 'CompositorNodeBrightContrast' : ["use_premultiply"], + 'CompositorNodeColorBalance' : ["correction_method", "lift", "gamma", + "gain", "offset", "power", "slope", + "offset_basis"], + 'CompositorNodeColorCorrection' : ["red", "green", "blue", + "master_saturation", "master_contrast", + "master_gamma", "master_gain", + "master_lift", + "highlights_saturation", "highlights_contrast", + "highlights_gamma", "highlights_gain", + "highlights_lift", + "midtones_saturation", "midtones_contrast", + "midtones_gamma", "midtones_gain", + "midtones_lift", + "shadows_saturation", "shadows_contrast", + "shadows_gamma", "shadows_gain", + "shadows_lift", + "midtones_start", "midtones_end"], + 'CompositorNodeExposure' : [], + 'CompositorNodeGamma' : [], + 'CompositorNodeHueCorrect' : [], + 'CompositorNodeHueSat' : [], + 'CompositorNodeInvert' : ["invert_rgb", "invert_alpha"], + 'CompositorNodeMixRGB' : ["blend_type", "use_alpha", "use_clamp"], #TODO: has an update() method, may need to figure out why... + 'CompositorNodePosterize' : [], + 'CompositorNodeCurveRGB' : [], + 'CompositorNodeTonemap' : ["tonemap_type", "intensity", "contrast", "adaptation", "correction", "key", "offset", "gamma"], + 'CompositorNodeZcombine' : ["use_alpha", "use_antialias_z"], + + #Converter + 'CompositorNodePremulKey' : ["mapping"], + 'CompositorNodeValToRGB' : [], #TODO: check to see if this'll work out of the box + 'CompositorNodeConvertColorSpace' : ["from_color_space", "to_color_space"], + 'CompositorNodeCombineColor' : ["mode", "ycc_mode"], #why isn't this standardized across blender? + 'CompositorNodeCombineXYZ' : [], + 'CompositorNodeIDMask' : ["index", "use_antialiasing"], + 'CompositorNodeMath' : ["operation", "use_clamp"], + 'CompositorNodeRGBToBW' : [], + 'CompositorNodeSeparateColor' : ["mode", "ycc_mode"], + 'CompositorNodeSeparateXYZ' : [], + 'CompositorNodeSetAlpha' : ["mode"], + 'CompositorNodeSwitchView' : [], + + #Filter + 'CompositorNodeAntiAliasing' : ["threshold", "contrast_limit", "corner_rounding"], + 'CompositorNodeBilateralblur' : ["iterations", "sigma_color", "sigma_space"], + 'CompositorNodeBlur' : ["filter_type", "use_variable_size", "use_gamma_correction", "use_relative", "aspect_correction", "factor", "factor_x", "factor_y", "use_extended_bounds"], + 'CompositorNodeBokehBlur' : ["use_variable_size", "blur_max", "use_extended_bounds"], + 'CompositorNodeDefocus' : ["bokeh", "angle", "use_gamma_correction", "f_stop", "blur_max", "threshold", "use_preview", "use_zbuffer", "z_scale"], + 'CompositorNodeDespeckle' : ["threshold", "threshold_neighbor"], + 'CompositorNodeDilateErode' : ["mode", "distance", "edge", "falloff"], + 'CompositorNodeDBlur' : ["iterations", "center_x", "center_y", "distance", "angle", "spin", "zoom"], + 'CompositorNodeFilter' : ["filter_type"], + 'CompositorNodeGlare' : ["glare_type", "quality", "iterations", "color_modulation", "mix", "threshold", "streaks", "angle_offset", "fade", "size", "use_rotate_45"], + 'CompositorNodeInpaint' : ["distance"], + 'CompositorNodePixelate' : [], + 'CompositorNodeSunBeams' : ["source", "ray_length"], #TODO: check that source doesn't freak out + 'CompositorNodeVecBlur' : ["samples", "factor", "speed_min", "speed_max", "use_curved"], + + #Vector + 'CompositorNodeMapRange' : ["use_clamp"], + 'CompositorNodeMapValue' : ["offset", "size", "use_min", "min", "use_max", "max"], #why are all these vectors?? TODO: check to make sure it doesn't flip + 'CompositorNodeNormal' : [], #should be handled with io system + 'CompositorNodeNormalize' : [], + 'CompositorNodeCurveVec' : [], + + #Matte + 'CompositorNodeBoxMask' : ["x", "y", "width", "height", "rotation", "mask_type"], + 'CompositorNodeChannelMatte' : ["color_space", "matte_channel", "limit_method", "limit_channel", "limit_max", "limit_min"], + 'CompositorNodeChromaMatte' : ["tolerance", "threshold", "gain"], + 'CompositorNodeColorMatte' : ["color_hue", "color_saturation", "color_value"], + 'CompositorNodeColorSpill' : ["channel", "limit_method", "ratio", "use_unspill", "unspill_red", "unspill_green", "unspill_blue"], + 'CompositorNodeCryptomatteV2' : ["source"], #TODO: will need a lot of special handling + 'CompositorNodeCryptomatte' : [], #TODO: will likely need same handling as above + 'CompositorNodeDiffMatte' : ["tolerance", "falloff"], + 'CompositorNodeDistanceMatte' : ["tolerance", "falloff", "channel"], + 'CompositorNodeDoubleEdgeMask' : ["inner_mode", "edge_mode"], + 'CompositorNodeEllipseMask' : ["x", "y", "width", "height", "rotation", "mask_type"], + 'CompositorNodeKeying' : ["blur_pre", "screen_balance", "despill_factor", "despill_balance", "edge_kernel_radius", "edge_kernel_tolerance", "clip_black", "clip_white", "dilate_distance", "feather_falloff", "feather_distance", "blur_post"], + 'CompositorNodeKeyingScreen' : [], #TODO: movie stuff + 'CompositorNodeLumaMatte' : ["limit_max", "limit_min"], + + #Distort + 'CompositorNodeCornerPin' : [], + 'CompositorNodeCrop' : ["use_crop_size", "relative", "min_x", "max_x", "min_y", "max_y", "rel_min_x", "rel_max_x", "rel_min_y", "rel_max_y"], + 'CompositorNodeDisplace' : [], + 'CompositorNodeFlip' : ["axis"], + 'CompositorNodeLensdist' : ["use_projector", "use_jitter", "use_fit"], + 'CompositorNodeMapUV' : ["alpha"], + 'CompositorNodeMovieDistortion' : [], #TODO: movie stuff + 'CompositorNodePlaneTrackDeform' : ["use_motion_blur", "motion_blur_samples", "motion_blur_shutter"], #TODO: movie stuff + 'CompositorNodeRotate' : ["filter_type"], + 'CompositorNodeScale' : ["space", "frame_method", "offset_x", "offset_y"], + 'CompositorNodeStablize' : [], #TODO: movie stuff + 'CompositorNodeTransform' : ["filter_type"], + 'CompositorNodeTranslate' : ["use_relative", "wrapping"], + + #Layout + 'CompositorNodeSwitch' : ["check"] } -curve_nodes = {'ShaderNodeFloatCurve', - 'ShaderNodeVectorCurve', - 'ShaderNodeRGBCurve'} +curve_nodes = { + 'CompositorNodeTime', #TODO: check this works + 'CompositorNodeHueCorrect', #TODO: probbably will need custom work + 'CompositorNodeCurveRGB', #may just work out of the box + 'CompositorNodeCurveVec', #may just work out of the box +} -image_nodes = {'ShaderNodeTexEnvironment', - 'ShaderNodeTexImage'} +image_nodes = {'CompositorNodeImage',} class NTPCompositorOperator(bpy.types.Operator): bl_idname = "node.compositor_to_python" @@ -33,14 +159,19 @@ class NTPCompositorOperator(bpy.types.Operator): def execute(self, context): """ #find node group to replicate - nt = bpy.data.materials[self.material_name].node_tree + if self.is_scene: + nt = bpy.data.scenes[self.compositor_name].node_tree + else: + nt = bpy.data.node_groups[self.compositor_name] if nt is None: + #shouldn't happen self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " - "valid material. Is Use Nodes selected?")) + "valid compositor node tree. Is Use Nodes " + "selected?")) return {'CANCELLED'} #set up names to use in generated addon - mat_var = clean_string(self.material_name) + comp_var = clean_string(self.compositor_name) if self.mode == 'ADDON': dir = bpy.path.abspath(context.scene.ntp_options.dir_path) @@ -50,29 +181,30 @@ def execute(self, context): "NodeToPython!")) return {'CANCELLED'} - zip_dir = os.path.join(dir, mat_var) - addon_dir = os.path.join(zip_dir, mat_var) + zip_dir = os.path.join(dir, comp_var) + addon_dir = os.path.join(zip_dir, comp_var) if not os.path.exists(addon_dir): os.makedirs(addon_dir) file = open(f"{addon_dir}/__init__.py", "w") - create_header(file, self.material_name) - class_name = clean_string(self.material_name, lower=False) - init_operator(file, class_name, mat_var, self.material_name) + create_header(file, self.compositor_name) + class_name = clean_string(self.compositor_name, lower=False) + init_operator(file, class_name, comp_var, self.compositor_name) file.write("\tdef execute(self, context):\n") else: file = StringIO("") - def create_material(indent: str): - file.write((f"{indent}mat = bpy.data.materials.new(" - f"name = {str_to_py_str(self.material_name)})\n")) - file.write(f"{indent}mat.use_nodes = True\n") - - if self.mode == 'ADDON': - create_material("\t\t") - elif self.mode == 'SCRIPT': - create_material("") + if self.is_scene: + def create_scene(indent: str): + file.write((f"{indent}scene = bpy.data.scenes.new(" #TODO: see if using scene as name effects nodes named scene + f"name = {str_to_py_str(self.compositor_name)})\n")) + file.write(f"{indent}scene.use_nodes = True\n") + + if self.mode == 'ADDON': + create_scene("\t\t") + elif self.mode == 'SCRIPT': + create_scene("") #set to keep track of already created node trees node_trees = set() @@ -90,10 +222,10 @@ def is_outermost_node_group(level: int) -> bool: return True return False - def process_mat_node_group(node_tree, level, node_vars, used_vars): + def process_comp_node_group(node_tree, level, node_vars, used_vars): if is_outermost_node_group(level): - nt_var = create_var(self.material_name, used_vars) - nt_name = self.material_name + nt_var = create_var(self.compositor_name, used_vars) + nt_name = self.compositor_name else: nt_var = create_var(node_tree.name, used_vars) nt_name = node_tree.name @@ -105,14 +237,14 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): file.write(f"{outer}def {nt_var}_node_group():\n") if is_outermost_node_group(level): #outermost node group - file.write(f"{inner}{nt_var} = mat.node_tree\n") + file.write(f"{inner}{nt_var} = scene.node_tree\n") file.write(f"{inner}#start with a clean node tree\n") file.write(f"{inner}for node in {nt_var}.nodes:\n") file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") else: file.write((f"{inner}{nt_var}" f"= bpy.data.node_groups.new(" - f"type = \'ShaderNodeTree\', " + f"type = \'CompositorNodeTree\', " f"name = {str_to_py_str(nt_name)})\n")) file.write("\n") @@ -126,10 +258,10 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): node_vars = {} for node in node_tree.nodes: - if node.bl_idname == 'ShaderNodeGroup': + if node.bl_idname == 'CompositorNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: - process_mat_node_group(node_nt, level + 1, node_vars, + process_comp_node_group(node_nt, level + 1, node_vars, used_vars) node_trees.add(node_nt) @@ -139,7 +271,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): set_settings_defaults(node, node_settings, file, inner, node_var) hide_sockets(node, file, inner, node_var) - if node.bl_idname == 'ShaderNodeGroup': + if node.bl_idname == 'CompositorNodeGroup': if node.node_tree is not None: file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" @@ -183,7 +315,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): level = 2 else: level = 0 - process_mat_node_group(nt, level, node_vars, used_vars) + process_comp_node_group(nt, level, node_vars, used_vars) if self.mode == 'ADDON': file.write("\t\treturn {'FINISHED'}\n\n") diff --git a/materials.py b/materials.py index 66c0d00..e65210f 100644 --- a/materials.py +++ b/materials.py @@ -125,7 +125,7 @@ def execute(self, context): file = StringIO("") def create_material(indent: str): - file.write((f"{indent}mat = bpy.data.materials.new(" + file.write((f"{indent}mat = bpy.data.materials.new(" #TODO: see if using mat effects nodes named mat f"name = {str_to_py_str(self.material_name)})\n")) file.write(f"{indent}mat.use_nodes = True\n") @@ -282,7 +282,7 @@ def poll(cls, context): def draw(self, context): layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' - for mat in bpy.data.materials: + for mat in bpy.data.materials: #TODO: filter by node tree exists op = layout.operator(NTPMaterialOperator.bl_idname, text=mat.name) op.material_name = mat.name @@ -306,7 +306,7 @@ def draw(self, context): row = layout.row() # Disables menu when there are no materials - materials = bpy.data.materials + materials = bpy.data.materials #TODO: filter by node tree exist materials_exist = len(materials) > 0 row.enabled = materials_exist From 486872db3ab11783e62f5b448079c2d2cd8cbdad Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 13 Aug 2023 16:48:38 -0500 Subject: [PATCH 103/286] feat: scene copying and setup --- compositor.py | 37 ++++++++++++++++++++++++++++--------- materials.py | 2 +- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/compositor.py b/compositor.py index ef978b2..0b21453 100644 --- a/compositor.py +++ b/compositor.py @@ -4,6 +4,14 @@ from .utils import * from io import StringIO +SCENE_VAR = "scene" +BASE_NAME_VAR = "base_name" +END_NAME_VAR = "end_name" + +ntp_vars = {SCENE_VAR, BASE_NAME_VAR, END_NAME_VAR} +#TODO: do something similar for geo nodes and materials, should be useful for +# possible conflicts between ntp_vars and node vars + node_settings = { #Input 'CompositorNodeBokehImage' : ["flaps", "angle", "rounding", "catadioptric", @@ -157,7 +165,6 @@ class NTPCompositorOperator(bpy.types.Operator): is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") def execute(self, context): - """ #find node group to replicate if self.is_scene: nt = bpy.data.scenes[self.compositor_name].node_tree @@ -194,12 +201,24 @@ def execute(self, context): file.write("\tdef execute(self, context):\n") else: file = StringIO("") - if self.is_scene: def create_scene(indent: str): - file.write((f"{indent}scene = bpy.data.scenes.new(" #TODO: see if using scene as name effects nodes named scene - f"name = {str_to_py_str(self.compositor_name)})\n")) - file.write(f"{indent}scene.use_nodes = True\n") + file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") #TODO: see if using scene as name effects nodes named scene + + #TODO: wrap in more general unique name util function + file.write(f"{indent}# Generate unique scene name\n") + file.write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") + file.write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") + file.write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + file.write(f"{indent}\ti = 1\n") + file.write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + file.write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + file.write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + file.write(f"{indent}\t\ti += 1\n\n") + + file.write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") + file.write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") + file.write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") if self.mode == 'ADDON': create_scene("\t\t") @@ -237,7 +256,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): file.write(f"{outer}def {nt_var}_node_group():\n") if is_outermost_node_group(level): #outermost node group - file.write(f"{inner}{nt_var} = scene.node_tree\n") + file.write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") file.write(f"{inner}#start with a clean node tree\n") file.write(f"{inner}for node in {nt_var}.nodes:\n") file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") @@ -247,7 +266,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): f"type = \'CompositorNodeTree\', " f"name = {str_to_py_str(nt_name)})\n")) file.write("\n") - + """ inputs_set = False outputs_set = False @@ -310,7 +329,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): init_links(node_tree, file, inner, nt_var, node_vars) file.write(f"\n{outer}{nt_var}_node_group()\n\n") - + """ if self.mode == 'ADDON': level = 2 else: @@ -331,7 +350,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): if self.mode == 'ADDON': zip_addon(zip_dir) - """ + if self.mode == 'SCRIPT': location = "clipboard" else: diff --git a/materials.py b/materials.py index e65210f..c0ee1ba 100644 --- a/materials.py +++ b/materials.py @@ -131,7 +131,7 @@ def create_material(indent: str): if self.mode == 'ADDON': create_material("\t\t") - elif self.mode == 'SCRIPT': + elif self.mode == 'SCRIPT': #TODO: should add option for just creating the node group create_material("") #set to keep track of already created node trees From 3e9ebc9161683288b7cac49d2706dd0629dbdeab Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 24 Aug 2023 23:47:15 -0500 Subject: [PATCH 104/286] refactor: add types to node settings --- compositor.py | 478 +++++++++++++++++++++++++++++++++++--------------- geo_nodes.py | 409 ++++++++++++++++++++++++++++++------------ materials.py | 248 +++++++++++++++++++------- utils.py | 32 ++-- 4 files changed, 835 insertions(+), 332 deletions(-) diff --git a/compositor.py b/compositor.py index 0b21453..7df8437 100644 --- a/compositor.py +++ b/compositor.py @@ -12,142 +12,336 @@ #TODO: do something similar for geo nodes and materials, should be useful for # possible conflicts between ntp_vars and node vars -node_settings = { - #Input - 'CompositorNodeBokehImage' : ["flaps", "angle", "rounding", "catadioptric", - "shift"], - 'CompositorNodeImage' : [], #TODO: handle image selection - 'CompositorNodeMask' : ["use_feather", "size_source", "size_x", "size_y", - "use_motion_blur", - "motion_blur_samples", "motion_blur_shutter"], #TODO: handle mask selection - 'CompositorNodeMovieClip' : [], #TODO: handle movie clip selection - 'CompositorNodeRLayers' : ["name", "layer"], - 'CompositorNodeRGB' : [], #should be handled by outputs - 'CompositorNodeSceneTime' : [], #should be good - 'CompositorNodeTexture' : [], #TODO: handle texture selection - 'CompositorNodeTime' : ["frame_start", "frame_end"], - 'CompositorNodeTrackPos' : [], #TODO: handle movie selection - 'CompositorNodeValue' : [], #should be handled by outputs (why is this a separate class??) - - #Output - 'CompositorNodeComposite' : ["use_alpha"], - 'CompositorNodeOutputFile' : ["base_path"], #TODO: doesn't seem portable - 'CompositorNodeLevels' : ["channel"], - 'CompositorNodeSplitViewer' : ["axis", "factor"], - 'CompositorNodeViewer' : ["use_alpha"], - - #Color - 'CompositorNodeAlphaOver' : ["use_premultiply", "premul"], - 'CompositorNodeBrightContrast' : ["use_premultiply"], - 'CompositorNodeColorBalance' : ["correction_method", "lift", "gamma", - "gain", "offset", "power", "slope", - "offset_basis"], - 'CompositorNodeColorCorrection' : ["red", "green", "blue", - "master_saturation", "master_contrast", - "master_gamma", "master_gain", - "master_lift", - "highlights_saturation", "highlights_contrast", - "highlights_gamma", "highlights_gain", - "highlights_lift", - "midtones_saturation", "midtones_contrast", - "midtones_gamma", "midtones_gain", - "midtones_lift", - "shadows_saturation", "shadows_contrast", - "shadows_gamma", "shadows_gain", - "shadows_lift", - "midtones_start", "midtones_end"], - 'CompositorNodeExposure' : [], - 'CompositorNodeGamma' : [], - 'CompositorNodeHueCorrect' : [], - 'CompositorNodeHueSat' : [], - 'CompositorNodeInvert' : ["invert_rgb", "invert_alpha"], - 'CompositorNodeMixRGB' : ["blend_type", "use_alpha", "use_clamp"], #TODO: has an update() method, may need to figure out why... - 'CompositorNodePosterize' : [], - 'CompositorNodeCurveRGB' : [], - 'CompositorNodeTonemap' : ["tonemap_type", "intensity", "contrast", "adaptation", "correction", "key", "offset", "gamma"], - 'CompositorNodeZcombine' : ["use_alpha", "use_antialias_z"], - - #Converter - 'CompositorNodePremulKey' : ["mapping"], - 'CompositorNodeValToRGB' : [], #TODO: check to see if this'll work out of the box - 'CompositorNodeConvertColorSpace' : ["from_color_space", "to_color_space"], - 'CompositorNodeCombineColor' : ["mode", "ycc_mode"], #why isn't this standardized across blender? - 'CompositorNodeCombineXYZ' : [], - 'CompositorNodeIDMask' : ["index", "use_antialiasing"], - 'CompositorNodeMath' : ["operation", "use_clamp"], - 'CompositorNodeRGBToBW' : [], - 'CompositorNodeSeparateColor' : ["mode", "ycc_mode"], - 'CompositorNodeSeparateXYZ' : [], - 'CompositorNodeSetAlpha' : ["mode"], - 'CompositorNodeSwitchView' : [], - - #Filter - 'CompositorNodeAntiAliasing' : ["threshold", "contrast_limit", "corner_rounding"], - 'CompositorNodeBilateralblur' : ["iterations", "sigma_color", "sigma_space"], - 'CompositorNodeBlur' : ["filter_type", "use_variable_size", "use_gamma_correction", "use_relative", "aspect_correction", "factor", "factor_x", "factor_y", "use_extended_bounds"], - 'CompositorNodeBokehBlur' : ["use_variable_size", "blur_max", "use_extended_bounds"], - 'CompositorNodeDefocus' : ["bokeh", "angle", "use_gamma_correction", "f_stop", "blur_max", "threshold", "use_preview", "use_zbuffer", "z_scale"], - 'CompositorNodeDespeckle' : ["threshold", "threshold_neighbor"], - 'CompositorNodeDilateErode' : ["mode", "distance", "edge", "falloff"], - 'CompositorNodeDBlur' : ["iterations", "center_x", "center_y", "distance", "angle", "spin", "zoom"], - 'CompositorNodeFilter' : ["filter_type"], - 'CompositorNodeGlare' : ["glare_type", "quality", "iterations", "color_modulation", "mix", "threshold", "streaks", "angle_offset", "fade", "size", "use_rotate_45"], - 'CompositorNodeInpaint' : ["distance"], - 'CompositorNodePixelate' : [], - 'CompositorNodeSunBeams' : ["source", "ray_length"], #TODO: check that source doesn't freak out - 'CompositorNodeVecBlur' : ["samples", "factor", "speed_min", "speed_max", "use_curved"], - - #Vector - 'CompositorNodeMapRange' : ["use_clamp"], - 'CompositorNodeMapValue' : ["offset", "size", "use_min", "min", "use_max", "max"], #why are all these vectors?? TODO: check to make sure it doesn't flip - 'CompositorNodeNormal' : [], #should be handled with io system +compositor_node_settings : dict[str, list[(str, str)]] = { + # INPUT + 'CompositorNodeBokehImage' : [("angle", "float"), + ("catadioptric", "float"), + ("flaps", "int"), + ("rounding", "float"), + ("shift", "float")], + 'CompositorNodeImage' : [("frame_duration", "int"), + ("frame_offset", "int"), + ("frame_start", "int"), + ("image", "Image"), #TODO: handle image selection + ("layer", "enum"), + ("use_auto_refresh", "bool"), + ("use_cyclic", "bool"), + ("use_straight_alpha_output", "bool"), + ("view", "enum")], + 'CompositorNodeMask' : [("mask", "Mask"), #TODO + ("motion_blur_samples", "int"), + ("motion_blur_shutter", "float"), + ("size_source", "enum"), + ("size_x", "int"), + ("size_y", "int"), + ("use_feather", "bool"), + ("use_motion_blur", "bool")], + 'CompositorNodeMovieClip' : [("clip", "MovieClip")], #TODO: handle movie clip selection + 'CompositorNodeRLayers' : [("layer", "enum"), + ("scene", "Scene")], #TODO + 'CompositorNodeRGB' : [], + 'CompositorNodeSceneTime' : [], + 'CompositorNodeTexture' : [("node_output", "int"), #TODO: ?? + ("texture", "Texture")], #TODO: handle texture selection + 'CompositorNodeTime' : [("curve", "CurveMapping"), + ("frame_end", "int"), + ("frame_start", "int")], + 'CompositorNodeTrackPos' : [("clip", "MovieClip"), #TODO: this is probably wrong + ("frame_relative", "int") + ("position", "enum"), + ("track_name", "str"), + ("tracking_object", "str")], + 'CompositorNodeValue' : [], #should be handled by outputs (why is this a separate class??) + + + # OUTPUT + 'CompositorNodeComposite' : [("use_alpha", "bool")], + 'CompositorNodeOutputFile' : [("active_input_index", "int"), #TODO: probably not right at all + ("base_path", "str"), + ("file_slots", "CompositorNodeOutputFileFileSlots"), + ("format", "ImageFormatSettings"), + ("layer_slots", "CompositorNodeOutputFileLayerSlots")], + 'CompositorNodeLevels' : [("channel", "enum")], + 'CompositorNodeSplitViewer' : [("axis", "enum"), + ("factor", "int")], + 'CompositorNodeViewer' : [("center_x", "float"), + ("center_y", "float"), + ("tile_order", "enum"), + ("use_alpha", "bool")], + + + # COLOR + 'CompositorNodeAlphaOver' : [("premul", "float"), + ("use_premultiply", "bool")], + 'CompositorNodeBrightContrast' : [("use_premultiply", "bool")], + 'CompositorNodeColorBalance' : [("correction_method", "enum"), + ("gain", "Vec3"), + ("gamma", "Vec3"), + ("lift", "Vec3"), + ("offset", "Vec3"), + ("offset_basis", "float"), + ("power", "Vec3"), + ("slope", "Vec3")], + 'CompositorNodeColorCorrection' : [("blue", "bool"), + ("green", "bool"), + ("highlights_contrast", "float"), + ("highlights_gain", "float"), + CurveMapp ("midtones_lift", "float"), + ("midtones_saturation", "float"), + ("midtones_start", "float"), + ("red", "bool"), + ("shadows_contrast", "float"), + ("shadows_gain", "float"), + ("shadows_gamma", "float"), + ("shadows_lift", "float"), + ("shadows_saturation", "float")], + 'CompositorNodeExposure' : [], + 'CompositorNodeGamma' : [], + 'CompositorNodeHueCorrect' : [("mapping", "CurveMapping")], + 'CompositorNodeHueSat' : [], + 'CompositorNodeInvert' : [("invert_alpha", "bool"), + ("invert_rgb", "bool")], + 'CompositorNodeMixRGB' : [("blend_type", "enum"), + ("use_alpha", "bool"), + ("use_clamp", "bool")], #TODO: has an update() method, may need to figure out why... + 'CompositorNodePosterize' : [], + 'CompositorNodeCurveRGB' : [("mapping", "CurveMapping")], + 'CompositorNodeTonemap' : [("adaptation", "float"), + ("contrast", "float"), + ("correction", "float"), + ("gamma", "float"), + ("intensity", "float"), + ("key", "float"), + ("offset", "float"), + ("tonemap_type", "enum")], + 'CompositorNodeZcombine' : [("use_alpha", "bool"), + ("use_antialias_z", "bool")], + + + # CONVERTER + 'CompositorNodePremulKey' : [("mapping", "enum")], + 'CompositorNodeValToRGB' : [("color_ramp", "ColorRamp")], #TODO: check to see if this'll work out of the box + 'CompositorNodeConvertColorSpace' : [("from_color_space", "enum"), + ("to_color_space", "enum")], + 'CompositorNodeCombineColor' : [("mode", "enum"), + ("ycc_mode", "enum")], #why isn't this standardized across blender? + 'CompositorNodeCombineXYZ' : [], + 'CompositorNodeIDMask' : [("index", "int"), + ("use_antialiasing", "bool")], + 'CompositorNodeMath' : [("operation", "enum"), + ("use_clamp", "bool")], + 'CompositorNodeRGBToBW' : [], + 'CompositorNodeSeparateColor' : [("mode", "enum"), + ("ycc_mode", "enum")], + 'CompositorNodeSeparateXYZ' : [], + 'CompositorNodeSetAlpha' : [("mode", "enum")], + 'CompositorNodeSwitchView' : [], + + + # FILTER + 'CompositorNodeAntiAliasing' : [("contrast_limit", "float"), + ("corner_rounding", "float"), + ("threshold", "float")], + 'CompositorNodeBilateralblur' : [("iterations", "int"), + ("sigma_color", "float"), + ("sigma_space", "float")], + 'CompositorNodeBlur' : [("aspect_correction", "enum"), + ("factor", "float"), + ("factor_x", "float"), + ("factor_y", "float"), + ("filter_type", "enum"), + ("size_x", "int"), + ("size_y", "int"), + ("use_bokeh", "bool"), + ("use_extended_bounds", "bool"), + ("use_gamma_correction", "bool"), + ("use_relative", "bool"), + ("use_variable_size", "bool")], + 'CompositorNodeBokehBlur' : [("blur_max", "float"), + ("use_extended_bounds", "bool"), + ("use_variable_size", "bool")], + 'CompositorNodeDefocus' : [("angle", "float"), + ("blur_max", "float"), + ("bokeh", "enum"), + ("f_stop", "float"), + ("scene", "Scene"), #TODO + ("threshold", "float"), + ("use_gamma_correction", "bool"), + ("use_preview", "bool"), + ("use_zbuffer", "bool"), + ("z_scale", "float")], + 'CompositorNodeDespeckle' : [("threshold", "float"), + ("threshold_neighbor", "float")], + 'CompositorNodeDilateErode' : [("distance", "int"), + ("edge", "float"), + ("falloff", "enum"), + ("mode", "enum")], + 'CompositorNodeDBlur' : [("angle", "float"), + ("center_x", "float"), + ("center_y", "float"), + ("distance", "float"), + ("iterations", "int"), + ("spin", "float"), + ("zoom", "float")], + 'CompositorNodeFilter' : [("filter_type", "enum")], + 'CompositorNodeGlare' : [("angle_offset", "float"), + ("color_modulation", "float"), + ("fade", "float"), + ("glare_type", "enum"), + ("iterations", "int"), + ("mix", "float"), + ("quality", "enum"), + ("size", "int"), + ("streaks", "int"), + ("threshold", "float"), + ("use_rotate_45", "bool")], + 'CompositorNodeInpaint' : [("distance", "int")], + 'CompositorNodePixelate' : [], + 'CompositorNodeSunBeams' : [("ray_length", "float"), + ("source", "Vec2")], + 'CompositorNodeVecBlur' : [("factor", "float"), + ("samples", "int"), + ("speed_max", "int"), + ("speed_min", "int"), + ("use_curved", "bool")], + + + # VECTOR + 'CompositorNodeMapRange' : [("use_clamp", "bool")], + 'CompositorNodeMapValue' : [("max", "Vec1"), + ("min", "Vec1"), + ("offset", "Vec1"), + ("size", "Vec1"), + ("use_max", "bool"), + ("use_min", "bool")], #why are all these vectors?? TODO: check to make sure it doesn't flip + 'CompositorNodeNormal' : [], 'CompositorNodeNormalize' : [], - 'CompositorNodeCurveVec' : [], - - #Matte - 'CompositorNodeBoxMask' : ["x", "y", "width", "height", "rotation", "mask_type"], - 'CompositorNodeChannelMatte' : ["color_space", "matte_channel", "limit_method", "limit_channel", "limit_max", "limit_min"], - 'CompositorNodeChromaMatte' : ["tolerance", "threshold", "gain"], - 'CompositorNodeColorMatte' : ["color_hue", "color_saturation", "color_value"], - 'CompositorNodeColorSpill' : ["channel", "limit_method", "ratio", "use_unspill", "unspill_red", "unspill_green", "unspill_blue"], - 'CompositorNodeCryptomatteV2' : ["source"], #TODO: will need a lot of special handling - 'CompositorNodeCryptomatte' : [], #TODO: will likely need same handling as above - 'CompositorNodeDiffMatte' : ["tolerance", "falloff"], - 'CompositorNodeDistanceMatte' : ["tolerance", "falloff", "channel"], - 'CompositorNodeDoubleEdgeMask' : ["inner_mode", "edge_mode"], - 'CompositorNodeEllipseMask' : ["x", "y", "width", "height", "rotation", "mask_type"], - 'CompositorNodeKeying' : ["blur_pre", "screen_balance", "despill_factor", "despill_balance", "edge_kernel_radius", "edge_kernel_tolerance", "clip_black", "clip_white", "dilate_distance", "feather_falloff", "feather_distance", "blur_post"], - 'CompositorNodeKeyingScreen' : [], #TODO: movie stuff - 'CompositorNodeLumaMatte' : ["limit_max", "limit_min"], - - #Distort - 'CompositorNodeCornerPin' : [], - 'CompositorNodeCrop' : ["use_crop_size", "relative", "min_x", "max_x", "min_y", "max_y", "rel_min_x", "rel_max_x", "rel_min_y", "rel_max_y"], - 'CompositorNodeDisplace' : [], - 'CompositorNodeFlip' : ["axis"], - 'CompositorNodeLensdist' : ["use_projector", "use_jitter", "use_fit"], - 'CompositorNodeMapUV' : ["alpha"], - 'CompositorNodeMovieDistortion' : [], #TODO: movie stuff - 'CompositorNodePlaneTrackDeform' : ["use_motion_blur", "motion_blur_samples", "motion_blur_shutter"], #TODO: movie stuff - 'CompositorNodeRotate' : ["filter_type"], - 'CompositorNodeScale' : ["space", "frame_method", "offset_x", "offset_y"], - 'CompositorNodeStablize' : [], #TODO: movie stuff - 'CompositorNodeTransform' : ["filter_type"], - 'CompositorNodeTranslate' : ["use_relative", "wrapping"], - - #Layout + 'CompositorNodeCurveVec' : [("mapping", "CurveMapping")], + + + # MATTE + 'CompositorNodeBoxMask' : [("height", "float"), + ("mask_type", "enum"), + ("rotation", "float"), + ("width", "float"), + ("x", "float"), + ("y", "float")], + 'CompositorNodeChannelMatte' : [("color_space", "enum"), + ("limit_channel", "enum"), + ("limit_max", "float"), + ("limit_method", "enum"), + ("limit_min", "float"), + ("matte_channel", "enum")], + 'CompositorNodeChromaMatte' : [("gain", "float"), + ("lift", "float"), + ("shadow_adjust", "float"), + ("threshold", "float"), + ("tolerance", "float")], + 'CompositorNodeColorMatte' : [("color_hue", "float"), + ("color_saturation", "float"), + ("color_value", "float")], + 'CompositorNodeColorSpill' : [("channel", "enum"), + ("limit_channel", "enum"), + ("limit_method", "enum"), + ("ratio", "float"), + ("unspill_blue", "float"), + ("unspill_green", "float"), + ("unspill_red", "float"), + ("use_unspill", "bool")], + 'CompositorNodeCryptomatteV2' : [("add", "Vec3"), #TODO: will need a lot of special handling + ("entries", "CryptomatteEntry"), #TODO: (readonly?) + ("frame_duration", "int"), + ("frame_offset", "int"), + ("frame_start", "int"), + ("has_layers", "bool"), #TODO: readonly? + ("has_views", "bool"), #TODO: readonly? + ("image", "Image"), + ("layer", "enum"), + ("layer_name", "enum"), + ("matte_id", "str"), + ("remove", "Vec3"), + ("scene", "Scene"), + ("source", "enum"), + ("use_auto_refresh", "bool"), + ("use_cyclic", "bool"), + ("view", "enum")], + 'CompositorNodeCryptomatte' : [("add", "Vec3"), #TODO: will need a lot of special handling + ("matte_id", "str"), + ("remove", "Vec3")], + 'CompositorNodeDiffMatte' : [("falloff", "float"), + ("tolerance", "float")], + 'CompositorNodeDistanceMatte' : [("channel", "enum"), + ("falloff", "float"), + ("tolerance", "float")], + 'CompositorNodeDoubleEdgeMask' : [("edge_mode", "enum"), + ("inner_mode", "enum")], + 'CompositorNodeEllipseMask' : [("height", "float"), + ("mask_type", "enum"), + ("rotation", "float"), + ("width", "float"), + ("x", "float"), + ("y", "float")], + 'CompositorNodeKeying' : [("blur_post", "int"), + ("blur_pre", "int"), + ("clip_black", "float"), + ("clip_white", "float"), + ("despill_balance", "float"), + ("despill_factor", "float"), + ("dilate_distance", "int"), + ("edge_kernel_radius", "int"), + ("edge_kernel_tolerance", "float"), + ("feather_distance", "int"), + ("feather_falloff", "enum"), + ("screen_balance", "float")], + 'CompositorNodeKeyingScreen' : [("clip", "MovieClip"), + ("tracing_object", "str")], #TODO: movie stuff + 'CompositorNodeLumaMatte' : [("limit_max", "float"), + ("limit_min", "float")], + + + # DISTORT + 'CompositorNodeCornerPin' : [], + 'CompositorNodeCrop' : [("max_x", "int"), + ("max_y", "int"), + ("min_x", "int"), + ("min_y", "int"), + ("rel_max_x", "float"), + ("rel_max_y", "float"), + ("rel_min_x", "float"), + ("rel_min_y", "float"), + ("relative", "bool"), + ("use_crop_size", "bool")], + 'CompositorNodeDisplace' : [], + 'CompositorNodeFlip' : [("axis", "enum")], + 'CompositorNodeLensdist' : [("use_fit", "bool"), + ("use_jitter", "bool"), + ("use_projector", "bool")], + 'CompositorNodeMapUV' : [("alpha", "int")], + 'CompositorNodeMovieDistortion' : [("clip", "MovieClip"), + ("distortion_type", "enum")], #TODO: movie stuff + 'CompositorNodePlaneTrackDeform' : [("clip", "MovieClip"), + ("motion_blur_samples", "int"), + ("motion_blur_shutter", "float"), + ("plane_track_name", "str"), + ("tracking_object", "str"), + ("use_motion_blur", "bool")], #TODO: movie stuff + 'CompositorNodeRotate' : [("filter_type", "enum")], + 'CompositorNodeScale' : [("frame_method", "enum"), + ("offset_x", "float"), + ("offset_y", "float"), + ("space", "enum")], + 'CompositorNodeStablize' : [("clip", "MovieClip"), + ("filter_type", "enum"), + ("invert", "bool")], #TODO: movie stuff + 'CompositorNodeTransform' : [("filter_type", "enum")], + 'CompositorNodeTranslate' : [("use_relative", "bool"), + ("wrap_axis", "enum")], + + + # LAYOUT 'CompositorNodeSwitch' : ["check"] } -curve_nodes = { - 'CompositorNodeTime', #TODO: check this works - 'CompositorNodeHueCorrect', #TODO: probbably will need custom work - 'CompositorNodeCurveRGB', #may just work out of the box - 'CompositorNodeCurveVec', #may just work out of the box -} - -image_nodes = {'CompositorNodeImage',} - class NTPCompositorOperator(bpy.types.Operator): bl_idname = "node.compositor_to_python" bl_label = "Compositor to Python" @@ -266,7 +460,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): f"type = \'CompositorNodeTree\', " f"name = {str_to_py_str(nt_name)})\n")) file.write("\n") - """ + inputs_set = False outputs_set = False @@ -303,14 +497,14 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): group_io_settings(node, file, inner, "output", nt_var, node_tree) outputs_set = True - elif node.bl_idname in image_nodes and self.mode == 'ADDON': - img = node.image - if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: - save_image(img, addon_dir) - load_image(img, file, inner, f"{node_var}.image") - image_user_settings(node, file, inner, node_var) - - elif node.bl_idname == 'ShaderNodeValToRGB': + # elif node.bl_idname in image_nodes and self.mode == 'ADDON': + # img = node.image + # if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: + # save_image(img, addon_dir) + # load_image(img, file, inner, f"{node_var}.image") + # image_user_settings(node, file, inner, node_var) + + elif node.bl_idname == 'CompositorNodeValToRGB': color_ramp_settings(node, file, inner, node_var) elif node.bl_idname in curve_nodes: @@ -329,7 +523,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): init_links(node_tree, file, inner, nt_var, node_vars) file.write(f"\n{outer}{nt_var}_node_group()\n\n") - """ + if self.mode == 'ADDON': level = 2 else: diff --git a/geo_nodes.py b/geo_nodes.py index f5f6de1..b83d058 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -4,166 +4,341 @@ from .utils import * from io import StringIO -geo_node_settings = { - # Attribute nodes - "GeometryNodeAttributeStatistic" : ["data_type", "domain"], - "GeometryNodeAttributeDomainSize" : ["component"], +geo_node_settings : dict[str, list[(str, str)]] = { + # ATTRIBUTE + 'GeometryNodeAttributeStatistic' : [("data_type", "enum"), + ("domain", "enum")], + 'GeometryNodeAttributeDomainSize' : [("component", "enum")], + 'GeometryNodeBlurAttribute' : [("data_type", "enum")], + 'GeometryNodeCaptureAttribute' : [("data_type", "enum"), + ("domain", "enum")], + 'GeometryNodeRemoveAttribute' : [], + 'GeometryNodeStoreNamedAttribute' : [("data_type", "enum"), + ("domain", "enum")], + 'GeometryNodeAttributeTransfer' : [("data_type", "enum"), + ("domain", "enum"), + ("mapping", "enum")], + + # INPUT + # Input > Constant + 'FunctionNodeInputBool' : [("boolean", "bool")], + 'FunctionNodeInputColor' : [("color", "Vec4")], + 'GeometryNodeInputImage' : [("image", "Image")], + 'FunctionNodeInputInt' : [("integer", "int")], + 'GeometryNodeInputMaterial' : [("material", "Material")], + 'FunctionNodeInputString' : [("string", "str")], + 'ShaderNodeValue' : [], + 'FunctionNodeInputVector' : [("vector", "Vec3")], + + #Input > Group + 'NodeGroupInput' : [], + + # Input > Scene + 'GeometryNodeCollectionInfo' : [("transform_space", "enum")], + 'GeometryNodeImageInfo' : [], + 'GeometryNodeIsViewport' : [], + 'GeometryNodeObjectInfo' : [("transform_space", "enum")], + 'GeometryNodeSelfObject' : [], + 'GeometryNodeInputSceneTime' : [], - "GeometryNodeBlurAttribute" : ["data_type"], - "GeometryNodeCaptureAttribute" : ["data_type", "domain"], - "GeometryNodeStoreNamedAttribute" : ["data_type", "domain"], - "GeometryNodeAttributeTransfer" : ["data_type", "mapping"], - # Input Nodes - # Input > Constant - "FunctionNodeInputBool" : ["boolean"], - "FunctionNodeInputColor" : ["color"], - "FunctionNodeInputInt" : ["integer"], - "GeometryNodeInputMaterial" : ["material"], - "FunctionNodeInputString" : ["string"], - "FunctionNodeInputVector" : ["vector"], + # OUTPUT + 'GeometryNodeViewer' : [("data_type", "enum"), + ("domain", "enum")], - # Input > Scene - "GeometryNodeCollectionInfo" : ["transform_space"], - "GeometryNodeObjectInfo" : ["transform_space"], - # Output Nodes - "GeometryNodeViewer" : ["domain"], + # GEOMETRY + 'GeometryNodeJoinGeometry' : [], + 'GeometryNodeGeometryToInstance' : [], - # Geometry Nodes # Geometry > Read - "GeometryNodeInputNamedAttribute" : ["data_type"], + 'GeometryNodeInputID' : [], + 'GeometryNodeInputIndex' : [], + 'GeometryNodeInputNamedAttribute' : [("data_type", "enum")], + 'GeometryNodeInputNormal' : [], + 'GeometryNodeInputPosition' : [], + 'GeometryNodeInputRadius' : [], # Geometry > Sample - "GeometryNodeProximity" : ["target_element"], - "GeometryNodeRaycast" : ["data_type", "mapping"], - "GeometryNodeSampleIndex" : ["data_type", "domain", "clamp"], - "GeometryNodeSampleNearest" : ["domain"], + 'GeometryNodeProximity' : [("target_element", "enum")], + 'GeometryNodeIndexOfNearest' : [], + 'GeometryNodeRaycast' : [("data_type", "enum"), + ("mapping", "enum")], + 'GeometryNodeSampleIndex' : [("clamp", "bool"), + ("data_type", "enum"), + ("domain", "enum")], + 'GeometryNodeSampleNearest' : [("domain", "enum")], + + # Geometry > Write + 'GeometryNodeSetID' : [], + 'GeometryNodeSetPosition' : [], # Geometry > Operations - "GeometryNodeDeleteGeometry" : ["domain", "mode"], - "GeometryNodeDuplicateElements" : ["domain"], - "GeometryNodeMergeByDistance" : ["mode"], - "GeometryNodeSeparateGeometry" : ["domain"], - - - # Curve + 'GeometryNodeBoundBox' : [], + 'GeometryNodeConvexHull' : [], + 'GeometryNodeDeleteGeometry' : [("domain", "enum"), + ("mode", "enum")], + 'GeometryNodeDuplicateElements' : [("domain", "enum")], + 'GeometryNodeMergeByDistance' : [("mode", "enum")], + 'GeometryNodeTransform' : [], + 'GeometryNodeSeparateComponents' : [], + 'GeometryNodeSeparateGeometry' : [("domain", "enum")], + + + # CURVE # Curve > Read - "GeometryNodeCurveHandleTypeSelection" : ["mode", "handle_type"], + 'GeometryNodeInputCurveHandlePositions' : [], + 'GeometryNodeCurveLength' : [], + 'GeometryNodeInputTangent' : [], + 'GeometryNodeInputCurveTilt' : [], + 'GeometryNodeCurveEndpointSelection' : [], + 'GeometryNodeCurveHandleTypeSelection' : [("handle_type", "enum"), + ("mode", "enum")], + 'GeometryNodeInputSplineCyclic' : [], + 'GeometryNodeSplineLength' : [], + 'GeometryNodeSplineParameter' : [], + 'GeometryNodeInputSplineResolution' : [], # Curve > Sample - "GeometryNodeSampleCurve" : ["data_type", "mode", "use_all_curves"], + 'GeometryNodeSampleCurve' : [("data_type", "enum"), + ("mode", "enum"), + ("use_all_curves", "bool")], # Curve > Write - "GeometryNodeSetCurveNormal" : ["mode"], - "GeometryNodeSetCurveHandlePositions" : ["mode"], - "GeometryNodeCurveSetHandles" : ["mode", "handle_type"], - "GeometryNodeCurveSplineType" : ["spline_type"], + 'GeometryNodeSetCurveNormal' : [("mode", "enum")], + 'GeometryNodeSetCurveRadius' : [], + 'GeometryNodeSetCurveTilt' : [], + 'GeometryNodeSetCurveHandlePositions' : [("mode", "enum")], + 'GeometryNodeCurveSetHandles' : [("handle_type", "enum"), + ("mode", "enum")], + 'GeometryNodeSetSplineCyclic' : [], + 'GeometryNodeSetSplineResolution' : [], + 'GeometryNodeCurveSplineType' : [("spline_type", "enum")], # Curve > Operations - "GeometryNodeCurveToPoints" : ["mode"], - "GeometryNodeFillCurve" : ["mode"], - "GeometryNodeFilletCurve" : ["mode"], - "GeometryNodeResampleCurve" : ["mode"], - "GeometryNodeTrimCurve" : ["mode"], + 'GeometryNodeCurveToMesh' : [], + 'GeometryNodeCurveToPoints' : [("mode", "enum")], + 'GeometryNodeDeformCurvesOnSurface' : [], + 'GeometryNodeFillCurve' : [("mode", "enum")], + 'GeometryNodeFilletCurve' : [("mode", "enum")], + 'GeometryNodeInterpolateCurves' : [], + 'GeometryNodeResampleCurve' : [("mode", "enum")], + 'GeometryNodeReverseCurve' : [], + 'GeometryNodeSubdivideCurve' : [], + 'GeometryNodeTrimCurve' : [("mode", "enum")], # Curve > Primitives - "GeometryNodeCurveArc" : ["mode"], - "GeometryNodeCurvePrimitiveBezierSegment" : ["mode"], - "GeometryNodeCurvePrimitiveCircle" : ["mode"], - "GeometryNodeCurvePrimitiveLine" : ["mode"], - "GeometryNodeCurvePrimitiveQuadrilateral" : ["mode"], - + 'GeometryNodeCurveArc' : [("mode", "enum")], + 'GeometryNodeCurvePrimitiveBezierSegment' : [("mode", "enum")], + 'GeometryNodeCurvePrimitiveCircle' : [("mode", "enum")], + 'GeometryNodeCurvePrimitiveLine' : [("mode", "enum")], + 'GeometryNodeCurveSpiral' : [], + 'GeometryNodeCurveQuadraticBezier' : [], + 'GeometryNodeCurvePrimitiveQuadrilateral' : [("mode", "enum")], + 'GeometryNodeCurveStar' : [], + + # Curve > Topology + 'GeometryNodeOffsetPointInCurve' : [], + 'GeometryNodeCurveOfPoint' : [], + 'GeometryNodePointsOfCurve' : [], + + + # INSTANCES + 'GeometryNodeInstanceOnPoints' : [], + 'GeometryNodeInstancesToPoints' : [], + 'GeometryNodeRealizeInstances' : [("legacy_behavior", "bool")], + 'GeometryNodeRotateInstances' : [], + 'GeometryNodeScaleInstances' : [], + 'GeometryNodeTranslateInstances' : [], + 'GeometryNodeInputInstanceRotation' : [], + 'GeometryNodeInputInstanceScale' : [], + + + # MESH + # Mesh > Read + 'GeometryNodeInputMeshEdgeAngle' : [], + 'GeometryNodeInputMeshEdgeNeighbors' : [], + 'GeometryNodeInputMeshEdgeVertices' : [], + 'GeometryNodeEdgesToFaceGroups' : [], + 'GeometryNodeInputMeshFaceArea' : [], + 'GeometryNodeInputMeshFaceNeighbors' : [], + 'GeometryNodeMeshFaceSetBoundaries' : [], + 'GeometryNodeInputMeshFaceIsPlanar' : [], + 'GeometryNodeInputShadeSmooth' : [], + 'GeometryNodeInputMeshIsland' : [], + 'GeometryNodeInputShortestEdgePaths' : [], + 'GeometryNodeInputMeshVertexNeighbors' : [], - # Mesh Nodes # Mesh > Sample - "GeometryNodeSampleNearestSurface" : ["data_type"], - "GeometryNodeSampleUVSurface" : ["data_type"], + 'GeometryNodeSampleNearestSurface' : [("data_type", "enum")], + 'GeometryNodeSampleUVSurface' : [("data_type", "enum")], + + # Mesh > Write + 'GeometryNodeSetShadeSmooth' : [], # Mesh > Operations - "GeometryNodeExtrudeMesh" : ["mode"], - "GeometryNodeMeshBoolean" : ["operation"], - "GeometryNodeMeshToPoints" : ["mode"], - "GeometryNodeMeshToVolume" : ["resolution_mode"], - "GeometryNodeScaleElements" : ["domain", "scale_mode"], - "GeometryNodeSubdivisionSurface" : ["uv_smooth", "boundary_smooth"], - "GeometryNodeTriangulate" : ["quad_method", "ngon_method"], + 'GeometryNodeDualMesh' : [], + 'GeometryNodeEdgePathsToCurves' : [], + 'GeometryNodeEdgePathsToSelection' : [], + 'GeometryNodeExtrudeMesh' : [("mode", "enum")], + 'GeometryNodeFlipFaces' : [], + 'GeometryNodeMeshBoolean' : [("operation", "enum")], + 'GeometryNodeMeshToCurve' : [], + 'GeometryNodeMeshToPoints' : [("mode", "enum")], + 'GeometryNodeMeshToVolume' : [("resolution_mode", "enum")], + 'GeometryNodeScaleElements' : [("domain", "enum"), + ("scale_mode", "enum")], + 'GeometryNodeSplitEdges' : [], + 'GeometryNodeSubdivideMesh' : [], + 'GeometryNodeSubdivisionSurface' : [("boundary_smooth", "enum"), + ("uv_smooth", "enum")], + 'GeometryNodeTriangulate' : [("ngon_method", "enum"), + ("quad_method", "enum")], # Mesh > Primitives - "GeometryNodeMeshCone" : ["fill_type"], - "GeometryNodeMeshCylinder" : ["fill_type"], - "GeometryNodeMeshCircle" : ["fill_type"], - "GeometryNodeMeshLine" : ["mode"], + 'GeometryNodeMeshCone' : [("fill_type", "enum")], + 'GeometryNodeMeshCube' : [], + 'GeometryNodeMeshCylinder' : [("fill_type", "enum")], + 'GeometryNodeMeshGrid' : [], + 'GeometryNodeMeshIcoSphere' : [], + 'GeometryNodeMeshCircle' : [("fill_type", "enum")], + 'GeometryNodeMeshLine' : [("count_mode", "enum"), + ("mode", "enum")], + 'GeometryNodeMeshUVSphere' : [], + + # Mesh > Topology + 'GeometryNodeCornersOfFace' : [], + 'GeometryNodeCornersOfVertex' : [], + 'GeometryNodeEdgesOfCorner' : [], + 'GeometryNodeEdgesOfVertex' : [], + 'GeometryNodeFaceOfCorner' : [], + 'GeometryNodeOffsetCornerInFace' : [], + 'GeometryNodeVertexOfCorner' : [], # Mesh > UV - "GeometryNodeUVUnwrap" : ["method"], - + 'GeometryNodeUVPackIslands' : [], + 'GeometryNodeUVUnwrap' : [("method", "enum")], - # Point Nodes - "GeometryNodeDistributePointsInVolume" : ["mode"], - "GeometryNodeDistributePointsOnFaces" : ["distribute_method"], - "GeometryNodePointsToVolume" : ["resolution_mode"], - # Volume Nodes - "GeometryNodeVolumeToMesh" : ["resolution_mode"], + # POINT + 'GeometryNodeDistributePointsInVolume' : [("mode", "enum")], + 'GeometryNodeDistributePointsOnFaces' : [("distribute_method", "enum"), + ("use_legacy_normal", "bool")], + 'GeometryNodePoints' : [], + 'GeometryNodePointsToVertices' : [], + 'GeometryNodePointsToVolume' : [("resolution_mode", "enum")], + 'GeometryNodeSetPointRadius' : [], - # Texture Nodes - "ShaderNodeTexBrick" : ["offset", "offset_frequency", "squash", - "squash_frequency"], - "ShaderNodeTexGradient" : ["gradient_type"], - "GeometryNodeImageTexture" : ["interpolation", "extension"], - "ShaderNodeTexMagic" : ["turbulence_depth"], - "ShaderNodeTexNoise" : ["noise_dimensions"], - "ShaderNodeTexVoronoi" : ["voronoi_dimensions", "feature", "distance"], - "ShaderNodeTexWave" : ["wave_type", "bands_direction", "wave_profile"], - "ShaderNodeTexWhiteNoise" : ["noise_dimensions"], + # VOLUME + 'GeometryNodeVolumeCube' : [], + 'GeometryNodeVolumeToMesh' : [("resolution_mode", "enum")], - - # Utilities + + # SIMULATION + 'GeometryNodeSimulationInput' : [], + 'GeometryNodeSimulationOutput' : [], + + + # MATERIAL + 'GeometryNodeReplaceMaterial' : [], + 'GeometryNodeInputMaterialIndex' : [], + 'GeometryNodeMaterialSelection' : [], + 'GeometryNodeSetMaterial' : [], + 'GeometryNodeSetMaterialIndex' : [], + + + # TEXTURE + 'ShaderNodeTexBrick' : [("offset", "float"), + ("offset_frequency", "int"), + ("squash", "float"), + ("squash_frequency", "int")], + 'ShaderNodeTexChecker' : [], + 'ShaderNodeTexGradient' : [("gradient_type", "enum")], + 'GeometryNodeImageTexture' : [("extension", "enum"), + ("interpolation", "enum")], + 'ShaderNodeTexMagic' : [("turbulence_depth", "int")], + 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", "enum"), + ("musgrave_type", "enum")], + 'ShaderNodeTexNoise' : [("noise_dimensions", "enum")], + 'ShaderNodeTexVoronoi' : [("distance", "enum"), + ("feature", "enum"), + ("voronoi_dimensions", "enum")], + 'ShaderNodeTexWave' : [("bands_direction", "enum"), + ("rings_direction", "enum"), + ("wave_profile", "enum"), + ("wave_type", "enum")], + 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", "enum")], + + + # UTILITIES + 'ShaderNodeMix' : [("blend_type", "enum"), + ("clamp_factor", "bool"), + ("clamp_result", "bool"), + ("data_type", "enum"), + ("factor_mode", "enum")], + 'FunctionNodeRandomValue' : [("data_type", "enum")], + 'GeometryNodeSwitch' : [("input_type", "enum")], + # Utilities > Color - "FunctionNodeCombineColor" : ["mode"], - "ShaderNodeMixRGB" : ["blend_type", "use_clamp"], #legacy - "FunctionNodeSeparateColor" : ["mode"], + 'ShaderNodeValToRGB' : [("color_ramp", "ColorRamp")], + 'ShaderNodeRGBCurve' : [("mapping", "CurveMapping")], + 'FunctionNodeCombineColor' : [("mode", "enum")], + 'ShaderNodeMixRGB' : [("blend_type", "enum"), + ("use_alpha", "bool"), + ("use_clamp", "bool")], #legacy + 'FunctionNodeSeparateColor' : [("mode", "enum")], # Utilities > Text - "GeometryNodeStringToCurves" : ["overflow", "align_x", "align_y", - "pivot_mode"], + 'GeometryNodeStringJoin' : [], + 'FunctionNodeReplaceString' : [], + 'FunctionNodeSliceString' : [], + 'FunctionNodeStringLength' : [], + 'GeometryNodeStringToCurves' : [("align_x", "enum"), + ("align_y", "enum"), + ("font", "Font"), #TODO: font + ("overflow", "enum"), + ("pivot_mode", "enum")], + 'FunctionNodeValueToString' : [], + 'FunctionNodeInputSpecialCharacters' : [], # Utilities > Vector - "ShaderNodeVectorMath" : ["operation"], - "ShaderNodeVectorRotate" : ["rotation_type", "invert"], + 'ShaderNodeVectorCurve' : [("mapping", "CurveMapping")], + 'ShaderNodeVectorMath' : [("operation", "enum")], + 'ShaderNodeVectorRotate' : [("invert", "bool"), + ("rotation_type", "enum")], + 'ShaderNodeCombineXYZ' : [], + 'ShaderNodeSeparateXYZ' : [], # Utilities > Field - "GeometryNodeAccumulateField" : ["data_type", "domain"], - "GeometryNodeFieldAtIndex" : ["data_type", "domain"], - "GeometryNodeFieldOnDomain" : ["data_type", "domain" ], + 'GeometryNodeAccumulateField' : [("data_type", "enum"), + ("domain", "enum")], + 'GeometryNodeFieldAtIndex' : [("data_type", "enum"), + ("domain", "enum")], + 'GeometryNodeFieldOnDomain' : [("data_type", "enum"), + ("domain", "enum")], # Utilities > Math - "FunctionNodeBooleanMath" : ["operation"], - "ShaderNodeClamp" : ["clamp_type"], - "FunctionNodeCompare" : ["data_type", "operation", "mode"], - "FunctionNodeFloatToInt" : ["rounding_mode"], - "ShaderNodeMapRange" : ["data_type", "interpolation_type", "clamp"], - "ShaderNodeMath" : ["operation", "use_clamp"], - - # Utilities > Rotate - "FunctionNodeAlignEulerToVector" : ["axis", "pivot_axis"], - "FunctionNodeRotateEuler" : ["type", "space"], - - # Utilities > General - "ShaderNodeMix" : ["data_type", "blend_type", "clamp_result", - "clamp_factor", "factor_mode"], - "FunctionNodeRandomValue" : ["data_type"], - "GeometryNodeSwitch" : ["input_type"] + 'FunctionNodeBooleanMath' : [("operation", "enum")], + 'ShaderNodeClamp' : [("clamp_type", "enum")], + 'FunctionNodeCompare' : [("data_type", "enum"), + ("mode", "enum"), + ("operation", "enum")], + 'ShaderNodeFloatCurve' : [("mapping", "CurveMapping")], + 'FunctionNodeFloatToInt' : [("rounding_mode", "enum")], + 'ShaderNodeMapRange' : [("clamp", "bool"), + ("data_type", "enum"), + ("interpolation_type", "enum")], + 'ShaderNodeMath' : [("operation", "enum"), + ("use_clamp", "bool")], + + # Utilities > Rotation + 'FunctionNodeAlignEulerToVector' : [("axis", "enum"), + ("pivot_axis", "enum")], + 'FunctionNodeRotateEuler' : [("space", "enum"), + ("type", "enum")] } -curve_nodes = {'ShaderNodeFloatCurve', - 'ShaderNodeVectorCurve', - 'ShaderNodeRGBCurve'} - -image_nodes = {'GeometryNodeInputImage'} - class NTPGeoNodesOperator(bpy.types.Operator): bl_idname = "node.ntp_geo_nodes" bl_label = "Geo Nodes to Python" diff --git a/materials.py b/materials.py index c0ee1ba..a0d37f0 100644 --- a/materials.py +++ b/materials.py @@ -4,70 +4,192 @@ from .utils import * from io import StringIO -node_settings = { - #input - "ShaderNodeAmbientOcclusion" : ["samples", "inside", "only_local"], - "ShaderNodeAttribute" : ["attribute_type", "attribute_name"], - "ShaderNodeBevel" : ["samples"], - "ShaderNodeVertexColor" : ["layer_name"], - "ShaderNodeTangent" : ["direction_type", "axis"], - "ShaderNodeTexCoord" : ["object", "from_instancer"], - "ShaderNodeUVMap" : ["from_instancer", "uv_map"], - "ShaderNodeWireframe" : ["use_pixel_size"], - - #output - "ShaderNodeOutputAOV" : ["name"], - "ShaderNodeOutputMaterial" : ["target"], - - #shader - "ShaderNodeBsdfGlass" : ["distribution"], - "ShaderNodeBsdfGlossy" : ["distribution"], - "ShaderNodeBsdfPrincipled" : ["distribution", "subsurface_method"], - "ShaderNodeBsdfRefraction" : ["distribution"], - "ShaderNodeSubsurfaceScattering" : ["falloff"], - - #texture - "ShaderNodeTexBrick" : ["offset", "offset_frequency", "squash", "squash_frequency"], - "ShaderNodeTexEnvironment" : ["interpolation", "projection", "image_user.frame_duration", "image_user.frame_start", "image_user.frame_offset", "image_user.use_cyclic", "image_user.use_auto_refresh"], - "ShaderNodeTexGradient" : ["gradient_type"], - "ShaderNodeTexIES" : ["mode"], - "ShaderNodeTexImage" : ["interpolation", "projection", "projection_blend", - "extension"], - "ShaderNodeTexMagic" : ["turbulence_depth"], - "ShaderNodeTexMusgrave" : ["musgrave_dimensions", "musgrave_type"], - "ShaderNodeTexNoise" : ["noise_dimensions"], - "ShaderNodeTexPointDensity" : ["point_source", "object", "space", "radius", - "interpolation", "resolution", - "vertex_color_source"], - "ShaderNodeTexSky" : ["sky_type", "sun_direction", "turbidity", - "ground_albedo", "sun_disc", "sun_size", - "sun_intensity", "sun_elevation", - "sun_rotation", "altitude", "air_density", - "dust_density", "ozone_density"], - "ShaderNodeTexVoronoi" : ["voronoi_dimensions", "feature", "distance"], - "ShaderNodeTexWave" : ["wave_type", "rings_direction", "wave_profile"], - "ShaderNodeTexWhiteNoise" : ["noise_dimensions"], - - #color - "ShaderNodeMix" : ["data_type", "clamp_factor", "factor_mode", "blend_type", - "clamp_result"], - - #vector - "ShaderNodeBump" : ["invert"], - "ShaderNodeDisplacement" : ["space"], - "ShaderNodeMapping" : ["vector_type"], - "ShaderNodeNormalMap" : ["space", "uv_map"], - "ShaderNodeVectorDisplacement" : ["space"], - "ShaderNodeVectorRotate" : ["rotation_type", "invert"], - "ShaderNodeVectorTransform" : ["vector_type", "convert_from", "convert_to"], +shader_node_settings : dict[str, list[(str, str)]] = { + # INPUT + 'ShaderNodeAmbientOcclusion' : [("inside", "bool"), + ("only_local", "bool"), + ("samples", "int")], + 'ShaderNodeAttribute' : [("attribute_name", "str"), + ("attribute_type", "enum")], + 'ShaderNodeBevel' : [("samples", "int")], + 'ShaderNodeCameraData' : [], + 'ShaderNodeVertexColor' : [("layer_name", "str")], + 'ShaderNodeHairInfo' : [], + 'ShaderNodeFresnel' : [], + 'ShaderNodeNewGeometry' : [], + 'ShaderNodeLayerWeight' : [], + 'ShaderNodeLightPath' : [], + 'ShaderNodeObjectInfo' : [], + 'ShaderNodeParticleInfo' : [], + 'ShaderNodePointInfo' : [], + 'ShaderNodeRGB' : [], + 'ShaderNodeTangent' : [("axis", "enum"), + ("direction_type", "enum"), + ("uv_map", "str")], #TODO: makes sense? maybe make special type + 'ShaderNodeTexCoord' : [("from_instancer", "bool"), + ("object", "Object")], + 'ShaderNodeUVAlongStroke' : [("use_tips", "bool")], + 'ShaderNodeUVMap' : [("from_instancer", "bool"), + ("uv_map", "str")], #TODO: see ShaderNodeTangent + 'ShaderNodeValue' : [], + 'ShaderNodeVolumeInfo' : [], + 'ShaderNodeWireframe' : [("use_pixel_size", "bool")], + + + # OUTPUT + 'ShaderNodeOutputAOV' : [("name", "str")], + 'ShaderNodeOutputLight' : [("is_active_output", "bool"), + ("target", "enum")], + 'ShaderNodeOutputLineStyle' : [("blend_type", "enum"), + ("is_active_output", "bool"), + ("target", "enum"), + ("use_alpha", "bool"), + ("use_clamp", "bool")], + 'ShaderNodeOutputMaterial' : [("is_active_output", "bool"), + ("target", "enum")], + 'ShaderNodeOutputWorld' : [("is_active_output", "bool"), + ("target", "enum")], + + + # SHADER + 'ShaderNodeAddShader' : [], + 'ShaderNodeBsdfAnisotropic' : [("distribution", "enum")], + 'ShaderNodeBackground' : [], + 'ShaderNodeBsdfDiffuse' : [], + 'ShaderNodeEmission' : [], + 'ShaderNodeBsdfGlass' : [("distribution", "enum")], + 'ShaderNodeBsdfGlossy' : [("distribution", "enum")], + 'ShaderNodeBsdfHair' : [("component", "enum")], + 'ShaderNodeHoldout' : [], + 'ShaderNodeMixShader' : [], + 'ShaderNodeBsdfPrincipled' : [("distribution", "enum"), + ("subsurface_method", "enum")], + 'ShaderNodeBsdfHairPrincipled' : [("parametrization", "enum")], + 'ShaderNodeVolumePrincipled' : [], + 'ShaderNodeBsdfRefraction' : [("distribution", "enum")], + 'ShaderNodeEeveeSpecular' : [], + 'ShaderNodeSubsurfaceScattering' : [("falloff", "enum")], + 'ShaderNodeBsdfToon' : [("component", "enum")], + 'ShaderNodeBsdfTranslucent' : [], + 'ShaderNodeBsdfTransparent' : [], + 'ShaderNodeBsdfVelvet' : [], + 'ShaderNodeVolumeAbsorption' : [], + 'ShaderNodeVolumeScatter' : [], + + + # TEXTURE + 'ShaderNodeTexBrick' : [("offset", "float"), + ("offset_frequency", "int"), + ("squash", "float"), + ("squash_frequency", "int")], + 'ShaderNodeTexChecker' : [], + 'ShaderNodeTexEnvironment' : [("image", "Image"), + ("image_user", "ImageUser"), + ("interpolation", "enum"), + ("projection", "enum")], + 'ShaderNodeTexGradient' : [("gradient_type", "enum")], + 'ShaderNodeTexIES' : [("filepath", "str"), #TODO + ("ies", "Text"), + ("mode", "enum")], + 'ShaderNodeTexImage' : [("extension", "enum"), + ("image", "Image"), + ("image_user", "ImageUser"), + ("interpolation", "enum"), + ("projection", "enum"), + ("projection_blend", "float")], + 'ShaderNodeTexMagic' : [("turbulence_depth", "int")], + 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", "enum"), + ("musgrave_type", "enum")], + 'ShaderNodeTexNoise' : [("noise_dimensions", "enum")], + 'ShaderNodeTexPointDensity' : [("interpolation", "enum"), + ("object", "Object"), + ("particle_color_source", "enum"), + ("particle_system", "ParticleSystem"), + ("point_source", "enum"), + ("radius", "float"), + ("resolution", "int"), + ("space", "enum"), + ("vertex_attribute_name", "str"), #TODO + ("vertex_color_source", "enum")], + 'ShaderNodeTexSky' : [("air_density", "float"), + ("altitude", "float"), + ("dust_density", "float"), + ("ground_albedo", "float"), + ("ozone_density", "float"), + ("sky_type", "enum"), + ("sun_direction", "Vec3"), + ("sun_disc", "bool"), + ("sun_elevation", "float"), + ("sun_intensity", "float"), + ("sun_rotation", "float"), + ("sun_size", "float") + ("turbidity", "float")], + 'ShaderNodeTexVoronoi' : [("distance", "enum"), + ("feature", "enum"), + ("voronoi_dimensions", "enum")], + 'ShaderNodeTexWave' : [("bands_direction", "enum"), + ("rings_direction", "enum"), + ("wave_profile", "enum"), + ("wave_type", "enum")], + 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", "enum")], + + + # COLOR + 'ShaderNodeBrightContrast' : [], + 'ShaderNodeGamma' : [], + 'ShaderNodeHueSaturation' : [], + 'ShaderNodeInvert' : [], + 'ShaderNodeLightFalloff' : [], + 'ShaderNodeMix' : [("blend_type", "enum"), + ("clamp_factor", "bool"), + ("clamp_result", "bool"), + ("data_type", "enum"), + ("factor_mode", "enum")], + 'ShaderNodeRGBCurve' : [("mapping", "CurveMapping")], + + + # VECTOR + 'ShaderNodeBump' : [("invert", "bool")], + 'ShaderNodeDisplacement' : [("space", "enum")], + 'ShaderNodeMapping' : [("vector_type", "enum")], + 'ShaderNodeNormalMap' : [("space", "enum"), + ("uv_map", "str")], #TODO + 'ShaderNodeVectorCurve' : [("mapping", "CurveMapping")], + 'ShaderNodeVectorDisplacement' : [("space", "enum")], + 'ShaderNodeVectorRotate' : [("invert", "bool"), + ("rotation_type", "enum")], + 'ShaderNodeVectorTransform' : [("convert_from", "enum"), + ("convert_to", "enum"), + ("vector_type", "enum")], - #converter - "ShaderNodeClamp" : ["clamp_type"], - "ShaderNodeCombineColor" : ["mode"], - "ShaderNodeMapRange" : ["data_type", "interpolation_type", "clamp"], - "ShaderNodeMath" : ["operation", "use_clamp"], - "ShaderNodeSeparateColor" : ["mode"], - "ShaderNodeVectorMath" : ["operation"] + + # CONVERTER + 'ShaderNodeBlackbody' : [], + 'ShaderNodeClamp' : [("clamp_type", "enum")], + 'ShaderNodeValToRGB' : [("color_ramp", "ColorRamp")], + 'ShaderNodeCombineColor' : [("mode", "enum")], + 'ShaderNodeCombineXYZ' : [], + 'ShaderNodeFloatCurve' : [("mapping", "CurveMapping")], + 'ShaderNodeMapRange' : [("clamp", "bool"), + ("data_type", "enum"), + ("interpolation_type", "enum")], + 'ShaderNodeMath' : [("operation", "enum"), + ("use_clamp", "bool")], + 'ShaderNodeRGBToBW' : [], + 'ShaderNodeSeparateColor' : [("mode", "enum")], + 'ShaderNodeSeparateXYZ' : [], + 'ShaderNodeShaderToRGB' : [], + 'ShaderNodeVectorMath' : [("operation", "enum")], + 'ShaderNodeWavelength' : [], + + + # SCRIPT + 'ShaderNodeScript' : [("bytecode", "str"), #TODO: test all that + ("bytecode_hash", "str"), + ("filepath", "str"), + ("mode", "enum"), + ("script", "text"), + ("use_auto_update", "bool")] } curve_nodes = {'ShaderNodeFloatCurve', diff --git a/utils.py b/utils.py index d66632b..6d09ec0 100644 --- a/utils.py +++ b/utils.py @@ -94,6 +94,13 @@ def img_to_py_str(img) -> str: format = img.file_format.lower() return f"{name}.{format}" +type_to_py_str : dict[str, function] = { + "enum" : enum_to_py_str, + "str" : str_to_py_str, + "vec3" : vec3_to_py_str, + "vec4" : vec4_to_py_str +} + def create_header(file: TextIO, name: str): """ Sets up the bl_info and imports the Blender API @@ -384,40 +391,45 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): node_var (str): variable name for the add-on's curve node """ + if node.bl_idname == 'CompositorNodeTime': + mapping = node.curve #TODO: ask for consistency here? + else: + mapping = node.mapping + #mapping settings file.write(f"{inner}#mapping settings\n") mapping_var = f"{inner}{node_var}.mapping" #extend - extend = enum_to_py_str(node.mapping.extend) + extend = enum_to_py_str(mapping.extend) file.write(f"{mapping_var}.extend = {extend}\n") #tone - tone = enum_to_py_str(node.mapping.tone) + tone = enum_to_py_str(mapping.tone) file.write(f"{mapping_var}.tone = {tone}\n") #black level - b_lvl_str = vec3_to_py_str(node.mapping.black_level) + b_lvl_str = vec3_to_py_str(mapping.black_level) file.write((f"{mapping_var}.black_level = {b_lvl_str}\n")) #white level - w_lvl_str = vec3_to_py_str(node.mapping.white_level) + w_lvl_str = vec3_to_py_str(mapping.white_level) file.write((f"{mapping_var}.white_level = {w_lvl_str}\n")) #minima and maxima - min_x = node.mapping.clip_min_x + min_x = mapping.clip_min_x file.write(f"{mapping_var}.clip_min_x = {min_x}\n") - min_y = node.mapping.clip_min_y + min_y = mapping.clip_min_y file.write(f"{mapping_var}.clip_min_y = {min_y}\n") - max_x = node.mapping.clip_max_x + max_x = mapping.clip_max_x file.write(f"{mapping_var}.clip_max_x = {max_x}\n") - max_y = node.mapping.clip_max_y + max_y = mapping.clip_max_y file.write(f"{mapping_var}.clip_max_y = {max_y}\n") #use_clip - use_clip = node.mapping.use_clip + use_clip = mapping.use_clip file.write(f"{mapping_var}.use_clip = {use_clip}\n") #create curves - for i, curve in enumerate(node.mapping.curves): + for i, curve in enumerate(mapping.curves): file.write(f"{inner}#curve {i}\n") curve_i = f"{node_var}_curve_{i}" file.write((f"{inner}{curve_i} = {node_var}.mapping.curves[{i}]\n")) From 7805bcf4618cbacecc3471fe864a809484603bf1 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 26 Aug 2023 16:14:54 -0500 Subject: [PATCH 105/286] refactor: switch dictionary format to use type enums instead of strings --- compositor.py | 664 ++++++++++++++++++++++++++++---------------------- geo_nodes.py | 450 +++++++++++++++++++++++----------- materials.py | 339 ++++++++++++++++---------- utils.py | 93 +++++-- 4 files changed, 966 insertions(+), 580 deletions(-) diff --git a/compositor.py b/compositor.py index 7df8437..9384b1b 100644 --- a/compositor.py +++ b/compositor.py @@ -12,334 +12,415 @@ #TODO: do something similar for geo nodes and materials, should be useful for # possible conflicts between ntp_vars and node vars -compositor_node_settings : dict[str, list[(str, str)]] = { +compositor_node_settings : dict[str, list[(str, ST)]] = { # INPUT - 'CompositorNodeBokehImage' : [("angle", "float"), - ("catadioptric", "float"), - ("flaps", "int"), - ("rounding", "float"), - ("shift", "float")], - 'CompositorNodeImage' : [("frame_duration", "int"), - ("frame_offset", "int"), - ("frame_start", "int"), - ("image", "Image"), #TODO: handle image selection - ("layer", "enum"), - ("use_auto_refresh", "bool"), - ("use_cyclic", "bool"), - ("use_straight_alpha_output", "bool"), - ("view", "enum")], - 'CompositorNodeMask' : [("mask", "Mask"), #TODO - ("motion_blur_samples", "int"), - ("motion_blur_shutter", "float"), - ("size_source", "enum"), - ("size_x", "int"), - ("size_y", "int"), - ("use_feather", "bool"), - ("use_motion_blur", "bool")], - 'CompositorNodeMovieClip' : [("clip", "MovieClip")], #TODO: handle movie clip selection - 'CompositorNodeRLayers' : [("layer", "enum"), - ("scene", "Scene")], #TODO + 'CompositorNodeBokehImage' : [("angle", ST.FLOAT), + ("catadioptric", ST.FLOAT), + ("flaps", ST.INT), + ("rounding", ST.FLOAT), + ("shift", ST.FLOAT)], + + 'CompositorNodeImage' : [("frame_duration", ST.INT), + ("frame_offset", ST.INT), + ("frame_start", ST.INT), + ("image", ST.IMAGE), + ("layer", ST.ENUM), + ("use_auto_refresh", ST.BOOL), + ("use_cyclic", ST.BOOL), + ("use_straight_alpha_output", ST.BOOL), + ("view", ST.ENUM)], + + 'CompositorNodeMask' : [("mask", ST.MASK), + ("motion_blur_samples", ST.INT), + ("motion_blur_shutter", ST.FLOAT), + ("size_source", ST.ENUM), + ("size_x", ST.INT), + ("size_y", ST.INT), + ("use_feather", ST.BOOL), + ("use_motion_blur", ST.BOOL)], + + 'CompositorNodeMovieClip' : [("clip", ST.MOVIE_CLIP)], + + 'CompositorNodeRLayers' : [("layer", ST.ENUM), + ("scene", ST.SCENE)], + 'CompositorNodeRGB' : [], + 'CompositorNodeSceneTime' : [], - 'CompositorNodeTexture' : [("node_output", "int"), #TODO: ?? - ("texture", "Texture")], #TODO: handle texture selection - 'CompositorNodeTime' : [("curve", "CurveMapping"), - ("frame_end", "int"), - ("frame_start", "int")], - 'CompositorNodeTrackPos' : [("clip", "MovieClip"), #TODO: this is probably wrong - ("frame_relative", "int") - ("position", "enum"), - ("track_name", "str"), - ("tracking_object", "str")], - 'CompositorNodeValue' : [], #should be handled by outputs (why is this a separate class??) + + 'CompositorNodeTexture' : [("node_output", ST.INT), #TODO: ?? + ("texture", ST.TEXTURE)], + + 'CompositorNodeTime' : [("curve", ST.CURVE_MAPPING), + ("frame_end", ST.INT), + ("frame_start", ST.INT)], + + 'CompositorNodeTrackPos' : [("clip", ST.MOVIE_CLIP), + ("frame_relative", ST.INT) + ("position", ST.ENUM), + ("track_name", ST.STRING), #TODO: probably not right + ("tracking_object", ST.STRING)], + + 'CompositorNodeValue' : [], #TODO: double check that outputs set here # OUTPUT - 'CompositorNodeComposite' : [("use_alpha", "bool")], - 'CompositorNodeOutputFile' : [("active_input_index", "int"), #TODO: probably not right at all - ("base_path", "str"), - ("file_slots", "CompositorNodeOutputFileFileSlots"), - ("format", "ImageFormatSettings"), - ("layer_slots", "CompositorNodeOutputFileLayerSlots")], - 'CompositorNodeLevels' : [("channel", "enum")], - 'CompositorNodeSplitViewer' : [("axis", "enum"), - ("factor", "int")], - 'CompositorNodeViewer' : [("center_x", "float"), - ("center_y", "float"), - ("tile_order", "enum"), - ("use_alpha", "bool")], + 'CompositorNodeComposite' : [("use_alpha", ST.BOOL)], + + 'CompositorNodeOutputFile' : [("active_input_index", ST.INT), #TODO: probably not right at all + + ("base_path", ST.STRING), + ("file_slots", ST.FILE_SLOTS), + ("format", ST.IMAGE_FORMAT_SETTINGS), + ("layer_slots", ST.LAYER_SLOTS)], + + 'CompositorNodeLevels' : [("channel", ST.ENUM)], + + 'CompositorNodeSplitViewer' : [("axis", ST.ENUM), + ("factor", ST.INT)], + + 'CompositorNodeViewer' : [("center_x", ST.FLOAT), + ("center_y", ST.FLOAT), + ("tile_order", ST.ENUM), + ("use_alpha", ST.BOOL)], # COLOR - 'CompositorNodeAlphaOver' : [("premul", "float"), - ("use_premultiply", "bool")], - 'CompositorNodeBrightContrast' : [("use_premultiply", "bool")], - 'CompositorNodeColorBalance' : [("correction_method", "enum"), - ("gain", "Vec3"), - ("gamma", "Vec3"), - ("lift", "Vec3"), - ("offset", "Vec3"), - ("offset_basis", "float"), - ("power", "Vec3"), - ("slope", "Vec3")], - 'CompositorNodeColorCorrection' : [("blue", "bool"), - ("green", "bool"), - ("highlights_contrast", "float"), - ("highlights_gain", "float"), - CurveMapp ("midtones_lift", "float"), - ("midtones_saturation", "float"), - ("midtones_start", "float"), - ("red", "bool"), - ("shadows_contrast", "float"), - ("shadows_gain", "float"), - ("shadows_gamma", "float"), - ("shadows_lift", "float"), - ("shadows_saturation", "float")], + 'CompositorNodeAlphaOver' : [("premul", ST.FLOAT), + ("use_premultiply", ST.BOOL)], + + 'CompositorNodeBrightContrast' : [("use_premultiply", ST.BOOL)], + + 'CompositorNodeColorBalance' : [("correction_method", ST.ENUM), + ("gain", ST.VEC3), + ("gamma", ST.VEC3), + ("lift", ST.VEC3), + ("offset", ST.VEC3), + ("offset_basis", ST.FLOAT), + ("power", ST.VEC3), + ("slope", ST.VEC3)], + + 'CompositorNodeColorCorrection' : [("blue", ST.BOOL), + ("green", ST.BOOL), + ("highlights_contrast", ST.FLOAT), + ("highlights_gain", ST.FLOAT), + ("midtones_lift", ST.FLOAT), + ("midtones_saturation", ST.FLOAT), + ("midtones_start", ST.FLOAT), + ("red", ST.BOOL), + ("shadows_contrast", ST.FLOAT), + ("shadows_gain", ST.FLOAT), + ("shadows_gamma", ST.FLOAT), + ("shadows_lift", ST.FLOAT), + ("shadows_saturation", ST.FLOAT)], + 'CompositorNodeExposure' : [], + 'CompositorNodeGamma' : [], - 'CompositorNodeHueCorrect' : [("mapping", "CurveMapping")], + + 'CompositorNodeHueCorrect' : [("mapping", ST.CURVE_MAPPING)], + 'CompositorNodeHueSat' : [], - 'CompositorNodeInvert' : [("invert_alpha", "bool"), - ("invert_rgb", "bool")], - 'CompositorNodeMixRGB' : [("blend_type", "enum"), - ("use_alpha", "bool"), - ("use_clamp", "bool")], #TODO: has an update() method, may need to figure out why... + + 'CompositorNodeInvert' : [("invert_alpha", ST.BOOL), + ("invert_rgb", ST.BOOL)], + + 'CompositorNodeMixRGB' : [("blend_type", ST.ENUM), + ("use_alpha", ST.BOOL), + ("use_clamp", ST.BOOL)], #TODO: what is update() method for? + 'CompositorNodePosterize' : [], - 'CompositorNodeCurveRGB' : [("mapping", "CurveMapping")], - 'CompositorNodeTonemap' : [("adaptation", "float"), - ("contrast", "float"), - ("correction", "float"), - ("gamma", "float"), - ("intensity", "float"), - ("key", "float"), - ("offset", "float"), - ("tonemap_type", "enum")], - 'CompositorNodeZcombine' : [("use_alpha", "bool"), - ("use_antialias_z", "bool")], + + 'CompositorNodeCurveRGB' : [("mapping", ST.CURVE_MAPPING)], + + 'CompositorNodeTonemap' : [("adaptation", ST.FLOAT), + ("contrast", ST.FLOAT), + ("correction", ST.FLOAT), + ("gamma", ST.FLOAT), + ("intensity", ST.FLOAT), + ("key", ST.FLOAT), + ("offset", ST.FLOAT), + ("tonemap_type", ST.ENUM)], + + 'CompositorNodeZcombine' : [("use_alpha", ST.BOOL), + ("use_antialias_z", ST.BOOL)], # CONVERTER - 'CompositorNodePremulKey' : [("mapping", "enum")], - 'CompositorNodeValToRGB' : [("color_ramp", "ColorRamp")], #TODO: check to see if this'll work out of the box - 'CompositorNodeConvertColorSpace' : [("from_color_space", "enum"), - ("to_color_space", "enum")], - 'CompositorNodeCombineColor' : [("mode", "enum"), - ("ycc_mode", "enum")], #why isn't this standardized across blender? + 'CompositorNodePremulKey' : [("mapping", ST.ENUM)], + + 'CompositorNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], + + 'CompositorNodeConvertColorSpace' : [("from_color_space", ST.ENUM), + ("to_color_space", ST.ENUM)], + + 'CompositorNodeCombineColor' : [("mode", ST.ENUM), + ("ycc_mode", ST.ENUM)], + 'CompositorNodeCombineXYZ' : [], - 'CompositorNodeIDMask' : [("index", "int"), - ("use_antialiasing", "bool")], - 'CompositorNodeMath' : [("operation", "enum"), - ("use_clamp", "bool")], + + 'CompositorNodeIDMask' : [("index", ST.INT), + ("use_antialiasing", ST.BOOL)], + + 'CompositorNodeMath' : [("operation", ST.ENUM), + ("use_clamp", ST.BOOL)], + 'CompositorNodeRGBToBW' : [], - 'CompositorNodeSeparateColor' : [("mode", "enum"), - ("ycc_mode", "enum")], + + 'CompositorNodeSeparateColor' : [("mode", ST.ENUM), + ("ycc_mode", ST.ENUM)], + 'CompositorNodeSeparateXYZ' : [], - 'CompositorNodeSetAlpha' : [("mode", "enum")], + + 'CompositorNodeSetAlpha' : [("mode", ST.ENUM)], + 'CompositorNodeSwitchView' : [], # FILTER - 'CompositorNodeAntiAliasing' : [("contrast_limit", "float"), - ("corner_rounding", "float"), - ("threshold", "float")], - 'CompositorNodeBilateralblur' : [("iterations", "int"), - ("sigma_color", "float"), - ("sigma_space", "float")], - 'CompositorNodeBlur' : [("aspect_correction", "enum"), - ("factor", "float"), - ("factor_x", "float"), - ("factor_y", "float"), - ("filter_type", "enum"), - ("size_x", "int"), - ("size_y", "int"), - ("use_bokeh", "bool"), - ("use_extended_bounds", "bool"), - ("use_gamma_correction", "bool"), - ("use_relative", "bool"), - ("use_variable_size", "bool")], - 'CompositorNodeBokehBlur' : [("blur_max", "float"), - ("use_extended_bounds", "bool"), - ("use_variable_size", "bool")], - 'CompositorNodeDefocus' : [("angle", "float"), - ("blur_max", "float"), - ("bokeh", "enum"), - ("f_stop", "float"), - ("scene", "Scene"), #TODO - ("threshold", "float"), - ("use_gamma_correction", "bool"), - ("use_preview", "bool"), - ("use_zbuffer", "bool"), - ("z_scale", "float")], - 'CompositorNodeDespeckle' : [("threshold", "float"), - ("threshold_neighbor", "float")], - 'CompositorNodeDilateErode' : [("distance", "int"), - ("edge", "float"), - ("falloff", "enum"), - ("mode", "enum")], - 'CompositorNodeDBlur' : [("angle", "float"), - ("center_x", "float"), - ("center_y", "float"), - ("distance", "float"), - ("iterations", "int"), - ("spin", "float"), - ("zoom", "float")], - 'CompositorNodeFilter' : [("filter_type", "enum")], - 'CompositorNodeGlare' : [("angle_offset", "float"), - ("color_modulation", "float"), - ("fade", "float"), - ("glare_type", "enum"), - ("iterations", "int"), - ("mix", "float"), - ("quality", "enum"), - ("size", "int"), - ("streaks", "int"), - ("threshold", "float"), - ("use_rotate_45", "bool")], - 'CompositorNodeInpaint' : [("distance", "int")], + 'CompositorNodeAntiAliasing' : [("contrast_limit", ST.FLOAT), + ("corner_rounding", ST.FLOAT), + ("threshold", ST.FLOAT)], + + 'CompositorNodeBilateralblur' : [("iterations", ST.INT), + ("sigma_color", ST.FLOAT), + ("sigma_space", ST.FLOAT)], + + 'CompositorNodeBlur' : [("aspect_correction", ST.ENUM), + ("factor", ST.FLOAT), + ("factor_x", ST.FLOAT), + ("factor_y", ST.FLOAT), + ("filter_type", ST.ENUM), + ("size_x", ST.INT), + ("size_y", ST.INT), + ("use_bokeh", ST.BOOL), + ("use_extended_bounds", ST.BOOL), + ("use_gamma_correction", ST.BOOL), + ("use_relative", ST.BOOL), + ("use_variable_size", ST.BOOL)], + + 'CompositorNodeBokehBlur' : [("blur_max", ST.FLOAT), + ("use_extended_bounds", ST.BOOL), + ("use_variable_size", ST.BOOL)], + + 'CompositorNodeDefocus' : [("angle", ST.FLOAT), + ("blur_max", ST.FLOAT), + ("bokeh", ST.ENUM), + ("f_stop", ST.FLOAT), + ("scene", ST.SCENE), + ("threshold", ST.FLOAT), + ("use_gamma_correction", ST.BOOL), + ("use_preview", ST.BOOL), + ("use_zbuffer", ST.BOOL), + ("z_scale", ST.FLOAT)], + + 'CompositorNodeDespeckle' : [("threshold", ST.FLOAT), + ("threshold_neighbor", ST.FLOAT)], + + 'CompositorNodeDilateErode' : [("distance", ST.INT), + ("edge", ST.FLOAT), + ("falloff", ST.ENUM), + ("mode", ST.ENUM)], + + 'CompositorNodeDBlur' : [("angle", ST.FLOAT), + ("center_x", ST.FLOAT), + ("center_y", ST.FLOAT), + ("distance", ST.FLOAT), + ("iterations", ST.INT), + ("spin", ST.FLOAT), + ("zoom", ST.FLOAT)], + + 'CompositorNodeFilter' : [("filter_type", ST.ENUM)], + + 'CompositorNodeGlare' : [("angle_offset", ST.FLOAT), + ("color_modulation", ST.FLOAT), + ("fade", ST.FLOAT), + ("glare_type", ST.ENUM), + ("iterations", ST.INT), + ("mix", ST.FLOAT), + ("quality", ST.ENUM), + ("size", ST.INT), + ("streaks", ST.INT), + ("threshold", ST.FLOAT), + ("use_rotate_45", ST.BOOL)], + + 'CompositorNodeInpaint' : [("distance", ST.INT)], + 'CompositorNodePixelate' : [], - 'CompositorNodeSunBeams' : [("ray_length", "float"), - ("source", "Vec2")], - 'CompositorNodeVecBlur' : [("factor", "float"), - ("samples", "int"), - ("speed_max", "int"), - ("speed_min", "int"), - ("use_curved", "bool")], + + 'CompositorNodeSunBeams' : [("ray_length", ST.FLOAT), + ("source", ST.VEC2)], + + 'CompositorNodeVecBlur' : [("factor", ST.FLOAT), + ("samples", ST.INT), + ("speed_max", ST.INT), + ("speed_min", ST.INT), + ("use_curved", ST.BOOL)], # VECTOR - 'CompositorNodeMapRange' : [("use_clamp", "bool")], - 'CompositorNodeMapValue' : [("max", "Vec1"), - ("min", "Vec1"), - ("offset", "Vec1"), - ("size", "Vec1"), - ("use_max", "bool"), - ("use_min", "bool")], #why are all these vectors?? TODO: check to make sure it doesn't flip + 'CompositorNodeMapRange' : [("use_clamp", ST.BOOL)], + + 'CompositorNodeMapValue' : [("max", ST.VEC1), + ("min", ST.VEC1), + ("offset", ST.VEC1), + ("size", ST.VEC1), + ("use_max", ST.BOOL), + ("use_min", ST.BOOL)], #why are all these vectors?? TODO: check to make sure it doesn't flip + 'CompositorNodeNormal' : [], + 'CompositorNodeNormalize' : [], - 'CompositorNodeCurveVec' : [("mapping", "CurveMapping")], + + 'CompositorNodeCurveVec' : [("mapping", ST.CURVE_MAPPING)], # MATTE - 'CompositorNodeBoxMask' : [("height", "float"), - ("mask_type", "enum"), - ("rotation", "float"), - ("width", "float"), - ("x", "float"), - ("y", "float")], - 'CompositorNodeChannelMatte' : [("color_space", "enum"), - ("limit_channel", "enum"), - ("limit_max", "float"), - ("limit_method", "enum"), - ("limit_min", "float"), - ("matte_channel", "enum")], - 'CompositorNodeChromaMatte' : [("gain", "float"), - ("lift", "float"), - ("shadow_adjust", "float"), - ("threshold", "float"), - ("tolerance", "float")], - 'CompositorNodeColorMatte' : [("color_hue", "float"), - ("color_saturation", "float"), - ("color_value", "float")], - 'CompositorNodeColorSpill' : [("channel", "enum"), - ("limit_channel", "enum"), - ("limit_method", "enum"), - ("ratio", "float"), - ("unspill_blue", "float"), - ("unspill_green", "float"), - ("unspill_red", "float"), - ("use_unspill", "bool")], - 'CompositorNodeCryptomatteV2' : [("add", "Vec3"), #TODO: will need a lot of special handling - ("entries", "CryptomatteEntry"), #TODO: (readonly?) - ("frame_duration", "int"), - ("frame_offset", "int"), - ("frame_start", "int"), - ("has_layers", "bool"), #TODO: readonly? - ("has_views", "bool"), #TODO: readonly? - ("image", "Image"), - ("layer", "enum"), - ("layer_name", "enum"), - ("matte_id", "str"), - ("remove", "Vec3"), - ("scene", "Scene"), - ("source", "enum"), - ("use_auto_refresh", "bool"), - ("use_cyclic", "bool"), - ("view", "enum")], - 'CompositorNodeCryptomatte' : [("add", "Vec3"), #TODO: will need a lot of special handling - ("matte_id", "str"), - ("remove", "Vec3")], - 'CompositorNodeDiffMatte' : [("falloff", "float"), - ("tolerance", "float")], - 'CompositorNodeDistanceMatte' : [("channel", "enum"), - ("falloff", "float"), - ("tolerance", "float")], - 'CompositorNodeDoubleEdgeMask' : [("edge_mode", "enum"), - ("inner_mode", "enum")], - 'CompositorNodeEllipseMask' : [("height", "float"), - ("mask_type", "enum"), - ("rotation", "float"), - ("width", "float"), - ("x", "float"), - ("y", "float")], - 'CompositorNodeKeying' : [("blur_post", "int"), - ("blur_pre", "int"), - ("clip_black", "float"), - ("clip_white", "float"), - ("despill_balance", "float"), - ("despill_factor", "float"), - ("dilate_distance", "int"), - ("edge_kernel_radius", "int"), - ("edge_kernel_tolerance", "float"), - ("feather_distance", "int"), - ("feather_falloff", "enum"), - ("screen_balance", "float")], - 'CompositorNodeKeyingScreen' : [("clip", "MovieClip"), - ("tracing_object", "str")], #TODO: movie stuff - 'CompositorNodeLumaMatte' : [("limit_max", "float"), - ("limit_min", "float")], + 'CompositorNodeBoxMask' : [("height", ST.FLOAT), + ("mask_type", ST.ENUM), + ("rotation", ST.FLOAT), + ("width", ST.FLOAT), + ("x", ST.FLOAT), + ("y", ST.FLOAT)], + + 'CompositorNodeChannelMatte' : [("color_space", ST.ENUM), + ("limit_channel", ST.ENUM), + ("limit_max", ST.FLOAT), + ("limit_method", ST.ENUM), + ("limit_min", ST.FLOAT), + ("matte_channel", ST.ENUM)], + + 'CompositorNodeChromaMatte' : [("gain", ST.FLOAT), + ("lift", ST.FLOAT), + ("shadow_adjust", ST.FLOAT), + ("threshold", ST.FLOAT), + ("tolerance", ST.FLOAT)], + + 'CompositorNodeColorMatte' : [("color_hue", ST.FLOAT), + ("color_saturation", ST.FLOAT), + ("color_value", ST.FLOAT)], + + 'CompositorNodeColorSpill' : [("channel", ST.ENUM), + ("limit_channel", ST.ENUM), + ("limit_method", ST.ENUM), + ("ratio", ST.FLOAT), + ("unspill_blue", ST.FLOAT), + ("unspill_green", ST.FLOAT), + ("unspill_red", ST.FLOAT), + ("use_unspill", ST.BOOL)], + + 'CompositorNodeCryptomatteV2' : [("add", ST.VEC3), + ("entries", ST.CRYPTOMATTE_ENTRIES), + ("frame_duration", ST.INT), + ("frame_offset", ST.INT), + ("frame_start", ST.INT), + ("has_layers", ST.BOOL), #TODO: readonly? + ("has_views", ST.BOOL), #TODO: readonly? + ("image", ST.IMAGE), + ("layer", ST.ENUM), + ("layer_name", ST.ENUM), + ("matte_id", ST.STRING), + ("remove", ST.VEC3), + ("scene", ST.SCENE), + ("source", ST.ENUM), + ("use_auto_refresh", ST.BOOL), + ("use_cyclic", ST.BOOL), + ("view", ST.ENUM)], + + 'CompositorNodeCryptomatte' : [("add", ST.VEC3), #TODO: may need special handling + ("matte_id", ST.STRING), + ("remove", ST.VEC3)], + + 'CompositorNodeDiffMatte' : [("falloff", ST.FLOAT), + ("tolerance", ST.FLOAT)], + + 'CompositorNodeDistanceMatte' : [("channel", ST.ENUM), + ("falloff", ST.FLOAT), + ("tolerance", ST.FLOAT)], + + 'CompositorNodeDoubleEdgeMask' : [("edge_mode", ST.ENUM), + ("inner_mode", ST.ENUM)], + + 'CompositorNodeEllipseMask' : [("height", ST.FLOAT), + ("mask_type", ST.ENUM), + ("rotation", ST.FLOAT), + ("width", ST.FLOAT), + ("x", ST.FLOAT), + ("y", ST.FLOAT)], + + 'CompositorNodeKeying' : [("blur_post", ST.INT), + ("blur_pre", ST.INT), + ("clip_black", ST.FLOAT), + ("clip_white", ST.FLOAT), + ("despill_balance", ST.FLOAT), + ("despill_factor", ST.FLOAT), + ("dilate_distance", ST.INT), + ("edge_kernel_radius", ST.INT), + ("edge_kernel_tolerance", ST.FLOAT), + ("feather_distance", ST.INT), + ("feather_falloff", ST.ENUM), + ("screen_balance", ST.FLOAT)], + + 'CompositorNodeKeyingScreen' : [("clip", ST.MOVIE_CLIP), + ("tracing_object", ST.STRING)], + + 'CompositorNodeLumaMatte' : [("limit_max", ST.FLOAT), + ("limit_min", ST.FLOAT)], # DISTORT 'CompositorNodeCornerPin' : [], - 'CompositorNodeCrop' : [("max_x", "int"), - ("max_y", "int"), - ("min_x", "int"), - ("min_y", "int"), - ("rel_max_x", "float"), - ("rel_max_y", "float"), - ("rel_min_x", "float"), - ("rel_min_y", "float"), - ("relative", "bool"), - ("use_crop_size", "bool")], + + 'CompositorNodeCrop' : [("max_x", ST.INT), + ("max_y", ST.INT), + ("min_x", ST.INT), + ("min_y", ST.INT), + ("rel_max_x", ST.FLOAT), + ("rel_max_y", ST.FLOAT), + ("rel_min_x", ST.FLOAT), + ("rel_min_y", ST.FLOAT), + ("relative", ST.BOOL), + ("use_crop_size", ST.BOOL)], + 'CompositorNodeDisplace' : [], - 'CompositorNodeFlip' : [("axis", "enum")], - 'CompositorNodeLensdist' : [("use_fit", "bool"), - ("use_jitter", "bool"), - ("use_projector", "bool")], - 'CompositorNodeMapUV' : [("alpha", "int")], - 'CompositorNodeMovieDistortion' : [("clip", "MovieClip"), - ("distortion_type", "enum")], #TODO: movie stuff - 'CompositorNodePlaneTrackDeform' : [("clip", "MovieClip"), - ("motion_blur_samples", "int"), - ("motion_blur_shutter", "float"), - ("plane_track_name", "str"), - ("tracking_object", "str"), - ("use_motion_blur", "bool")], #TODO: movie stuff - 'CompositorNodeRotate' : [("filter_type", "enum")], - 'CompositorNodeScale' : [("frame_method", "enum"), - ("offset_x", "float"), - ("offset_y", "float"), - ("space", "enum")], - 'CompositorNodeStablize' : [("clip", "MovieClip"), - ("filter_type", "enum"), - ("invert", "bool")], #TODO: movie stuff - 'CompositorNodeTransform' : [("filter_type", "enum")], - 'CompositorNodeTranslate' : [("use_relative", "bool"), - ("wrap_axis", "enum")], + + 'CompositorNodeFlip' : [("axis", ST.ENUM)], + + 'CompositorNodeLensdist' : [("use_fit", ST.BOOL), + ("use_jitter", ST.BOOL), + ("use_projector", ST.BOOL)], + + 'CompositorNodeMapUV' : [("alpha", ST.INT)], + + 'CompositorNodeMovieDistortion' : [("clip", ST.MOVIE_CLIP), + ("distortion_type", ST.ENUM)], + + 'CompositorNodePlaneTrackDeform' : [("clip", ST.MOVIE_CLIP), + ("motion_blur_samples", ST.INT), + ("motion_blur_shutter", ST.FLOAT), + ("plane_track_name", ST.STRING), + ("tracking_object", ST.STRING), + ("use_motion_blur", ST.BOOL)], + + 'CompositorNodeRotate' : [("filter_type", ST.ENUM)], + + 'CompositorNodeScale' : [("frame_method", ST.ENUM), + ("offset_x", ST.FLOAT), + ("offset_y", ST.FLOAT), + ("space", ST.ENUM)], + + 'CompositorNodeStablize' : [("clip", ST.MOVIE_CLIP), + ("filter_type", ST.ENUM), + ("invert", ST.BOOL)], + + 'CompositorNodeTransform' : [("filter_type", ST.ENUM)], + + 'CompositorNodeTranslate' : [("use_relative", ST.BOOL), + ("wrap_axis", ST.ENUM)], # LAYOUT - 'CompositorNodeSwitch' : ["check"] + 'CompositorNodeSwitch' : [("check", ST.BOOL)] } class NTPCompositorOperator(bpy.types.Operator): @@ -434,8 +515,9 @@ def is_outermost_node_group(level: int) -> bool: elif self.mode == 'SCRIPT' and level == 0: return True return False - + """ def process_comp_node_group(node_tree, level, node_vars, used_vars): + if is_outermost_node_group(level): nt_var = create_var(self.compositor_name, used_vars) nt_name = self.compositor_name @@ -481,7 +563,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): node_var = create_node(node, file, inner, nt_var, node_vars, used_vars) - set_settings_defaults(node, node_settings, file, inner, node_var) + set_settings_defaults(node, compositor_node_settings, file, inner, node_var) hide_sockets(node, file, inner, node_var) if node.bl_idname == 'CompositorNodeGroup': @@ -544,7 +626,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): if self.mode == 'ADDON': zip_addon(zip_dir) - + """ if self.mode == 'SCRIPT': location = "clipboard" else: diff --git a/geo_nodes.py b/geo_nodes.py index b83d058..ee8c03a 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -4,339 +4,501 @@ from .utils import * from io import StringIO -geo_node_settings : dict[str, list[(str, str)]] = { +geo_node_settings : dict[str, list[(str, ST)]] = { # ATTRIBUTE - 'GeometryNodeAttributeStatistic' : [("data_type", "enum"), - ("domain", "enum")], - 'GeometryNodeAttributeDomainSize' : [("component", "enum")], - 'GeometryNodeBlurAttribute' : [("data_type", "enum")], - 'GeometryNodeCaptureAttribute' : [("data_type", "enum"), - ("domain", "enum")], + 'GeometryNodeAttributeStatistic' : [("data_type", ST.ENUM), + ("domain", ST.ENUM)], + + 'GeometryNodeAttributeDomainSize' : [("component", ST.ENUM)], + + 'GeometryNodeBlurAttribute' : [("data_type", ST.ENUM)], + + 'GeometryNodeCaptureAttribute' : [("data_type", ST.ENUM), + ("domain", ST.ENUM)], + 'GeometryNodeRemoveAttribute' : [], - 'GeometryNodeStoreNamedAttribute' : [("data_type", "enum"), - ("domain", "enum")], - 'GeometryNodeAttributeTransfer' : [("data_type", "enum"), - ("domain", "enum"), - ("mapping", "enum")], + + 'GeometryNodeStoreNamedAttribute' : [("data_type", ST.ENUM), + ("domain", ST.ENUM)], + + 'GeometryNodeAttributeTransfer' : [("data_type", ST.ENUM), + ("domain", ST.ENUM), + ("mapping", ST.ENUM)], # INPUT # Input > Constant - 'FunctionNodeInputBool' : [("boolean", "bool")], - 'FunctionNodeInputColor' : [("color", "Vec4")], - 'GeometryNodeInputImage' : [("image", "Image")], - 'FunctionNodeInputInt' : [("integer", "int")], - 'GeometryNodeInputMaterial' : [("material", "Material")], - 'FunctionNodeInputString' : [("string", "str")], + 'FunctionNodeInputBool' : [("boolean", ST.BOOL)], + + 'FunctionNodeInputColor' : [("color", ST.VEC4)], + + 'GeometryNodeInputImage' : [("image", ST.IMAGE)], + + 'FunctionNodeInputInt' : [("integer", ST.INT)], + + 'GeometryNodeInputMaterial' : [("material", ST.MATERIAL)], + + 'FunctionNodeInputString' : [("string", ST.STRING)], + 'ShaderNodeValue' : [], - 'FunctionNodeInputVector' : [("vector", "Vec3")], + + 'FunctionNodeInputVector' : [("vector", ST.VEC3)], #Input > Group 'NodeGroupInput' : [], # Input > Scene - 'GeometryNodeCollectionInfo' : [("transform_space", "enum")], + 'GeometryNodeCollectionInfo' : [("transform_space", ST.ENUM)], + 'GeometryNodeImageInfo' : [], + 'GeometryNodeIsViewport' : [], - 'GeometryNodeObjectInfo' : [("transform_space", "enum")], + + 'GeometryNodeObjectInfo' : [("transform_space", ST.ENUM)], + 'GeometryNodeSelfObject' : [], + 'GeometryNodeInputSceneTime' : [], # OUTPUT - 'GeometryNodeViewer' : [("data_type", "enum"), - ("domain", "enum")], + 'GeometryNodeViewer' : [("data_type", ST.ENUM), + + ("domain", ST.ENUM)], # GEOMETRY 'GeometryNodeJoinGeometry' : [], + 'GeometryNodeGeometryToInstance' : [], # Geometry > Read 'GeometryNodeInputID' : [], + 'GeometryNodeInputIndex' : [], - 'GeometryNodeInputNamedAttribute' : [("data_type", "enum")], + + 'GeometryNodeInputNamedAttribute' : [("data_type", ST.ENUM)], + 'GeometryNodeInputNormal' : [], + 'GeometryNodeInputPosition' : [], + 'GeometryNodeInputRadius' : [], # Geometry > Sample - 'GeometryNodeProximity' : [("target_element", "enum")], + 'GeometryNodeProximity' : [("target_element", ST.ENUM)], + 'GeometryNodeIndexOfNearest' : [], - 'GeometryNodeRaycast' : [("data_type", "enum"), - ("mapping", "enum")], - 'GeometryNodeSampleIndex' : [("clamp", "bool"), - ("data_type", "enum"), - ("domain", "enum")], - 'GeometryNodeSampleNearest' : [("domain", "enum")], + + 'GeometryNodeRaycast' : [("data_type", ST.ENUM), + ("mapping", ST.ENUM)], + + 'GeometryNodeSampleIndex' : [("clamp", ST.BOOL), + ("data_type", ST.ENUM), + ("domain", ST.ENUM)], + + 'GeometryNodeSampleNearest' : [("domain", ST.ENUM)], # Geometry > Write 'GeometryNodeSetID' : [], + 'GeometryNodeSetPosition' : [], # Geometry > Operations 'GeometryNodeBoundBox' : [], + 'GeometryNodeConvexHull' : [], - 'GeometryNodeDeleteGeometry' : [("domain", "enum"), - ("mode", "enum")], - 'GeometryNodeDuplicateElements' : [("domain", "enum")], - 'GeometryNodeMergeByDistance' : [("mode", "enum")], + + 'GeometryNodeDeleteGeometry' : [("domain", ST.ENUM), + ("mode", ST.ENUM)], + + 'GeometryNodeDuplicateElements' : [("domain", ST.ENUM)], + + 'GeometryNodeMergeByDistance' : [("mode", ST.ENUM)], + 'GeometryNodeTransform' : [], + 'GeometryNodeSeparateComponents' : [], - 'GeometryNodeSeparateGeometry' : [("domain", "enum")], + + 'GeometryNodeSeparateGeometry' : [("domain", ST.ENUM)], # CURVE # Curve > Read 'GeometryNodeInputCurveHandlePositions' : [], + 'GeometryNodeCurveLength' : [], + 'GeometryNodeInputTangent' : [], + 'GeometryNodeInputCurveTilt' : [], + 'GeometryNodeCurveEndpointSelection' : [], - 'GeometryNodeCurveHandleTypeSelection' : [("handle_type", "enum"), - ("mode", "enum")], + + 'GeometryNodeCurveHandleTypeSelection' : [("handle_type", ST.ENUM), + ("mode", ST.ENUM)], + 'GeometryNodeInputSplineCyclic' : [], + 'GeometryNodeSplineLength' : [], + 'GeometryNodeSplineParameter' : [], + 'GeometryNodeInputSplineResolution' : [], # Curve > Sample - 'GeometryNodeSampleCurve' : [("data_type", "enum"), - ("mode", "enum"), - ("use_all_curves", "bool")], + 'GeometryNodeSampleCurve' : [("data_type", ST.ENUM), + ("mode", ST.ENUM), + ("use_all_curves", ST.BOOL)], # Curve > Write - 'GeometryNodeSetCurveNormal' : [("mode", "enum")], + 'GeometryNodeSetCurveNormal' : [("mode", ST.ENUM)], + 'GeometryNodeSetCurveRadius' : [], + 'GeometryNodeSetCurveTilt' : [], - 'GeometryNodeSetCurveHandlePositions' : [("mode", "enum")], - 'GeometryNodeCurveSetHandles' : [("handle_type", "enum"), - ("mode", "enum")], + + 'GeometryNodeSetCurveHandlePositions' : [("mode", ST.ENUM)], + + 'GeometryNodeCurveSetHandles' : [("handle_type", ST.ENUM), + ("mode", ST.ENUM)], + 'GeometryNodeSetSplineCyclic' : [], + 'GeometryNodeSetSplineResolution' : [], - 'GeometryNodeCurveSplineType' : [("spline_type", "enum")], + + 'GeometryNodeCurveSplineType' : [("spline_type", ST.ENUM)], # Curve > Operations 'GeometryNodeCurveToMesh' : [], - 'GeometryNodeCurveToPoints' : [("mode", "enum")], + + 'GeometryNodeCurveToPoints' : [("mode", ST.ENUM)], + 'GeometryNodeDeformCurvesOnSurface' : [], - 'GeometryNodeFillCurve' : [("mode", "enum")], - 'GeometryNodeFilletCurve' : [("mode", "enum")], + + 'GeometryNodeFillCurve' : [("mode", ST.ENUM)], + + 'GeometryNodeFilletCurve' : [("mode", ST.ENUM)], + 'GeometryNodeInterpolateCurves' : [], - 'GeometryNodeResampleCurve' : [("mode", "enum")], + + 'GeometryNodeResampleCurve' : [("mode", ST.ENUM)], + 'GeometryNodeReverseCurve' : [], + 'GeometryNodeSubdivideCurve' : [], - 'GeometryNodeTrimCurve' : [("mode", "enum")], + + 'GeometryNodeTrimCurve' : [("mode", ST.ENUM)], # Curve > Primitives - 'GeometryNodeCurveArc' : [("mode", "enum")], - 'GeometryNodeCurvePrimitiveBezierSegment' : [("mode", "enum")], - 'GeometryNodeCurvePrimitiveCircle' : [("mode", "enum")], - 'GeometryNodeCurvePrimitiveLine' : [("mode", "enum")], + 'GeometryNodeCurveArc' : [("mode", ST.ENUM)], + + 'GeometryNodeCurvePrimitiveBezierSegment' : [("mode", ST.ENUM)], + + 'GeometryNodeCurvePrimitiveCircle' : [("mode", ST.ENUM)], + + 'GeometryNodeCurvePrimitiveLine' : [("mode", ST.ENUM)], + 'GeometryNodeCurveSpiral' : [], + 'GeometryNodeCurveQuadraticBezier' : [], - 'GeometryNodeCurvePrimitiveQuadrilateral' : [("mode", "enum")], + + 'GeometryNodeCurvePrimitiveQuadrilateral' : [("mode", ST.ENUM)], + 'GeometryNodeCurveStar' : [], # Curve > Topology 'GeometryNodeOffsetPointInCurve' : [], + 'GeometryNodeCurveOfPoint' : [], + 'GeometryNodePointsOfCurve' : [], # INSTANCES 'GeometryNodeInstanceOnPoints' : [], + 'GeometryNodeInstancesToPoints' : [], - 'GeometryNodeRealizeInstances' : [("legacy_behavior", "bool")], + + 'GeometryNodeRealizeInstances' : [("legacy_behavior", ST.BOOL)], + 'GeometryNodeRotateInstances' : [], + 'GeometryNodeScaleInstances' : [], + 'GeometryNodeTranslateInstances' : [], + 'GeometryNodeInputInstanceRotation' : [], + 'GeometryNodeInputInstanceScale' : [], # MESH # Mesh > Read 'GeometryNodeInputMeshEdgeAngle' : [], + 'GeometryNodeInputMeshEdgeNeighbors' : [], + 'GeometryNodeInputMeshEdgeVertices' : [], + 'GeometryNodeEdgesToFaceGroups' : [], + 'GeometryNodeInputMeshFaceArea' : [], + 'GeometryNodeInputMeshFaceNeighbors' : [], + 'GeometryNodeMeshFaceSetBoundaries' : [], + 'GeometryNodeInputMeshFaceIsPlanar' : [], + 'GeometryNodeInputShadeSmooth' : [], + 'GeometryNodeInputMeshIsland' : [], + 'GeometryNodeInputShortestEdgePaths' : [], + 'GeometryNodeInputMeshVertexNeighbors' : [], # Mesh > Sample - 'GeometryNodeSampleNearestSurface' : [("data_type", "enum")], - 'GeometryNodeSampleUVSurface' : [("data_type", "enum")], + 'GeometryNodeSampleNearestSurface' : [("data_type", ST.ENUM)], + + 'GeometryNodeSampleUVSurface' : [("data_type", ST.ENUM)], # Mesh > Write 'GeometryNodeSetShadeSmooth' : [], # Mesh > Operations 'GeometryNodeDualMesh' : [], + 'GeometryNodeEdgePathsToCurves' : [], + 'GeometryNodeEdgePathsToSelection' : [], - 'GeometryNodeExtrudeMesh' : [("mode", "enum")], + + 'GeometryNodeExtrudeMesh' : [("mode", ST.ENUM)], + 'GeometryNodeFlipFaces' : [], - 'GeometryNodeMeshBoolean' : [("operation", "enum")], + + 'GeometryNodeMeshBoolean' : [("operation", ST.ENUM)], + 'GeometryNodeMeshToCurve' : [], - 'GeometryNodeMeshToPoints' : [("mode", "enum")], - 'GeometryNodeMeshToVolume' : [("resolution_mode", "enum")], - 'GeometryNodeScaleElements' : [("domain", "enum"), - ("scale_mode", "enum")], + + 'GeometryNodeMeshToPoints' : [("mode", ST.ENUM)], + + 'GeometryNodeMeshToVolume' : [("resolution_mode", ST.ENUM)], + + 'GeometryNodeScaleElements' : [("domain", ST.ENUM), + ("scale_mode", ST.ENUM)], + 'GeometryNodeSplitEdges' : [], + 'GeometryNodeSubdivideMesh' : [], - 'GeometryNodeSubdivisionSurface' : [("boundary_smooth", "enum"), - ("uv_smooth", "enum")], - 'GeometryNodeTriangulate' : [("ngon_method", "enum"), - ("quad_method", "enum")], + + 'GeometryNodeSubdivisionSurface' : [("boundary_smooth", ST.ENUM), + ("uv_smooth", ST.ENUM)], + + 'GeometryNodeTriangulate' : [("ngon_method", ST.ENUM), + ("quad_method", ST.ENUM)], # Mesh > Primitives - 'GeometryNodeMeshCone' : [("fill_type", "enum")], + 'GeometryNodeMeshCone' : [("fill_type", ST.ENUM)], + 'GeometryNodeMeshCube' : [], - 'GeometryNodeMeshCylinder' : [("fill_type", "enum")], + + 'GeometryNodeMeshCylinder' : [("fill_type", ST.ENUM)], + 'GeometryNodeMeshGrid' : [], + 'GeometryNodeMeshIcoSphere' : [], - 'GeometryNodeMeshCircle' : [("fill_type", "enum")], - 'GeometryNodeMeshLine' : [("count_mode", "enum"), - ("mode", "enum")], + + 'GeometryNodeMeshCircle' : [("fill_type", ST.ENUM)], + + 'GeometryNodeMeshLine' : [("count_mode", ST.ENUM), + ("mode", ST.ENUM)], + 'GeometryNodeMeshUVSphere' : [], # Mesh > Topology 'GeometryNodeCornersOfFace' : [], + 'GeometryNodeCornersOfVertex' : [], + 'GeometryNodeEdgesOfCorner' : [], + 'GeometryNodeEdgesOfVertex' : [], + 'GeometryNodeFaceOfCorner' : [], + 'GeometryNodeOffsetCornerInFace' : [], + 'GeometryNodeVertexOfCorner' : [], # Mesh > UV 'GeometryNodeUVPackIslands' : [], - 'GeometryNodeUVUnwrap' : [("method", "enum")], + + 'GeometryNodeUVUnwrap' : [("method", ST.ENUM)], # POINT - 'GeometryNodeDistributePointsInVolume' : [("mode", "enum")], - 'GeometryNodeDistributePointsOnFaces' : [("distribute_method", "enum"), - ("use_legacy_normal", "bool")], + 'GeometryNodeDistributePointsInVolume' : [("mode", ST.ENUM)], + + 'GeometryNodeDistributePointsOnFaces' : [("distribute_method", ST.ENUM), + ("use_legacy_normal", ST.BOOL)], + 'GeometryNodePoints' : [], + 'GeometryNodePointsToVertices' : [], - 'GeometryNodePointsToVolume' : [("resolution_mode", "enum")], + + 'GeometryNodePointsToVolume' : [("resolution_mode", ST.ENUM)], + 'GeometryNodeSetPointRadius' : [], # VOLUME 'GeometryNodeVolumeCube' : [], - 'GeometryNodeVolumeToMesh' : [("resolution_mode", "enum")], + + 'GeometryNodeVolumeToMesh' : [("resolution_mode", ST.ENUM)], # SIMULATION 'GeometryNodeSimulationInput' : [], + 'GeometryNodeSimulationOutput' : [], # MATERIAL 'GeometryNodeReplaceMaterial' : [], + 'GeometryNodeInputMaterialIndex' : [], + 'GeometryNodeMaterialSelection' : [], + 'GeometryNodeSetMaterial' : [], + 'GeometryNodeSetMaterialIndex' : [], # TEXTURE - 'ShaderNodeTexBrick' : [("offset", "float"), - ("offset_frequency", "int"), - ("squash", "float"), - ("squash_frequency", "int")], + 'ShaderNodeTexBrick' : [("offset", ST.FLOAT), + ("offset_frequency", ST.INT), + ("squash", ST.FLOAT), + ("squash_frequency", ST.INT)], + 'ShaderNodeTexChecker' : [], - 'ShaderNodeTexGradient' : [("gradient_type", "enum")], - 'GeometryNodeImageTexture' : [("extension", "enum"), - ("interpolation", "enum")], - 'ShaderNodeTexMagic' : [("turbulence_depth", "int")], - 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", "enum"), - ("musgrave_type", "enum")], - 'ShaderNodeTexNoise' : [("noise_dimensions", "enum")], - 'ShaderNodeTexVoronoi' : [("distance", "enum"), - ("feature", "enum"), - ("voronoi_dimensions", "enum")], - 'ShaderNodeTexWave' : [("bands_direction", "enum"), - ("rings_direction", "enum"), - ("wave_profile", "enum"), - ("wave_type", "enum")], - 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", "enum")], + + 'ShaderNodeTexGradient' : [("gradient_type", ST.ENUM)], + + 'GeometryNodeImageTexture' : [("extension", ST.ENUM), + ("interpolation", ST.ENUM)], + + 'ShaderNodeTexMagic' : [("turbulence_depth", ST.INT)], + + 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", ST.ENUM), + ("musgrave_type", ST.ENUM)], + + 'ShaderNodeTexNoise' : [("noise_dimensions", ST.ENUM)], + + 'ShaderNodeTexVoronoi' : [("distance", ST.ENUM), + ("feature", ST.ENUM), + ("voronoi_dimensions", ST.ENUM)], + + 'ShaderNodeTexWave' : [("bands_direction", ST.ENUM), + ("rings_direction", ST.ENUM), + ("wave_profile", ST.ENUM), + ("wave_type", ST.ENUM)], + + 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", ST.ENUM)], # UTILITIES - 'ShaderNodeMix' : [("blend_type", "enum"), - ("clamp_factor", "bool"), - ("clamp_result", "bool"), - ("data_type", "enum"), - ("factor_mode", "enum")], - 'FunctionNodeRandomValue' : [("data_type", "enum")], - 'GeometryNodeSwitch' : [("input_type", "enum")], + 'ShaderNodeMix' : [("blend_type", ST.ENUM), + ("clamp_factor", ST.BOOL), + ("clamp_result", ST.BOOL), + ("data_type", ST.ENUM), + ("factor_mode", ST.ENUM)], + + 'FunctionNodeRandomValue' : [("data_type", ST.ENUM)], + + 'GeometryNodeSwitch' : [("input_type", ST.ENUM)], # Utilities > Color - 'ShaderNodeValToRGB' : [("color_ramp", "ColorRamp")], - 'ShaderNodeRGBCurve' : [("mapping", "CurveMapping")], - 'FunctionNodeCombineColor' : [("mode", "enum")], - 'ShaderNodeMixRGB' : [("blend_type", "enum"), - ("use_alpha", "bool"), - ("use_clamp", "bool")], #legacy - 'FunctionNodeSeparateColor' : [("mode", "enum")], + 'ShaderNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], + + 'ShaderNodeRGBCurve' : [("mapping", ST.CURVE_MAPPING)], + + 'FunctionNodeCombineColor' : [("mode", ST.ENUM)], + + 'ShaderNodeMixRGB' : [("blend_type", ST.ENUM), + ("use_alpha", ST.BOOL), + ("use_clamp", ST.BOOL)], #legacy + + 'FunctionNodeSeparateColor' : [("mode", ST.ENUM)], # Utilities > Text 'GeometryNodeStringJoin' : [], + 'FunctionNodeReplaceString' : [], + 'FunctionNodeSliceString' : [], + 'FunctionNodeStringLength' : [], - 'GeometryNodeStringToCurves' : [("align_x", "enum"), - ("align_y", "enum"), - ("font", "Font"), #TODO: font - ("overflow", "enum"), - ("pivot_mode", "enum")], + + 'GeometryNodeStringToCurves' : [("align_x", ST.ENUM), + ("align_y", ST.ENUM), + ("font", ST.FONT), + ("overflow", ST.ENUM), + ("pivot_mode", ST.ENUM)], + 'FunctionNodeValueToString' : [], + 'FunctionNodeInputSpecialCharacters' : [], # Utilities > Vector - 'ShaderNodeVectorCurve' : [("mapping", "CurveMapping")], - 'ShaderNodeVectorMath' : [("operation", "enum")], - 'ShaderNodeVectorRotate' : [("invert", "bool"), - ("rotation_type", "enum")], + 'ShaderNodeVectorCurve' : [("mapping", ST.CURVE_MAPPING)], + + 'ShaderNodeVectorMath' : [("operation", ST.ENUM)], + + 'ShaderNodeVectorRotate' : [("invert", ST.BOOL), + ("rotation_type", ST.ENUM)], + 'ShaderNodeCombineXYZ' : [], + 'ShaderNodeSeparateXYZ' : [], # Utilities > Field - 'GeometryNodeAccumulateField' : [("data_type", "enum"), - ("domain", "enum")], - 'GeometryNodeFieldAtIndex' : [("data_type", "enum"), - ("domain", "enum")], - 'GeometryNodeFieldOnDomain' : [("data_type", "enum"), - ("domain", "enum")], + 'GeometryNodeAccumulateField' : [("data_type", ST.ENUM), + ("domain", ST.ENUM)], + + 'GeometryNodeFieldAtIndex' : [("data_type", ST.ENUM), + ("domain", ST.ENUM)], + + 'GeometryNodeFieldOnDomain' : [("data_type", ST.ENUM), + ("domain", ST.ENUM)], # Utilities > Math - 'FunctionNodeBooleanMath' : [("operation", "enum")], - 'ShaderNodeClamp' : [("clamp_type", "enum")], - 'FunctionNodeCompare' : [("data_type", "enum"), - ("mode", "enum"), - ("operation", "enum")], - 'ShaderNodeFloatCurve' : [("mapping", "CurveMapping")], - 'FunctionNodeFloatToInt' : [("rounding_mode", "enum")], - 'ShaderNodeMapRange' : [("clamp", "bool"), - ("data_type", "enum"), - ("interpolation_type", "enum")], - 'ShaderNodeMath' : [("operation", "enum"), - ("use_clamp", "bool")], + 'FunctionNodeBooleanMath' : [("operation", ST.ENUM)], + + 'ShaderNodeClamp' : [("clamp_type", ST.ENUM)], + + 'FunctionNodeCompare' : [("data_type", ST.ENUM), + ("mode", ST.ENUM), + ("operation", ST.ENUM)], + + 'ShaderNodeFloatCurve' : [("mapping", ST.CURVE_MAPPING)], + + 'FunctionNodeFloatToInt' : [("rounding_mode", ST.ENUM)], + + 'ShaderNodeMapRange' : [("clamp", ST.BOOL), + ("data_type", ST.ENUM), + ("interpolation_type", ST.ENUM)], + + 'ShaderNodeMath' : [("operation", ST.ENUM), + ("use_clamp", ST.BOOL)], # Utilities > Rotation - 'FunctionNodeAlignEulerToVector' : [("axis", "enum"), - ("pivot_axis", "enum")], - 'FunctionNodeRotateEuler' : [("space", "enum"), - ("type", "enum")] + 'FunctionNodeAlignEulerToVector' : [("axis", ST.ENUM), + ("pivot_axis", ST.ENUM)], + + 'FunctionNodeRotateEuler' : [("space", ST.ENUM), + ("type", ST.ENUM)] } class NTPGeoNodesOperator(bpy.types.Operator): diff --git a/materials.py b/materials.py index a0d37f0..5bbdf2c 100644 --- a/materials.py +++ b/materials.py @@ -4,192 +4,277 @@ from .utils import * from io import StringIO -shader_node_settings : dict[str, list[(str, str)]] = { +#TODO: move to a json, different ones for each blender version? +shader_node_settings : dict[str, list[(str, ST)]] = { # INPUT - 'ShaderNodeAmbientOcclusion' : [("inside", "bool"), - ("only_local", "bool"), - ("samples", "int")], - 'ShaderNodeAttribute' : [("attribute_name", "str"), - ("attribute_type", "enum")], - 'ShaderNodeBevel' : [("samples", "int")], + 'ShaderNodeAmbientOcclusion' : [("inside", ST.BOOL), + ("only_local", ST.BOOL), + ("samples", ST.INT)], + + 'ShaderNodeAttribute' : [("attribute_name", ST.STRING), #TODO: separate attribute type? + ("attribute_type", ST.ENUM)], + + 'ShaderNodeBevel' : [("samples", ST.INT)], + 'ShaderNodeCameraData' : [], - 'ShaderNodeVertexColor' : [("layer_name", "str")], + + 'ShaderNodeVertexColor' : [("layer_name", ST.STRING)], #TODO: separate color attribute type? + 'ShaderNodeHairInfo' : [], + 'ShaderNodeFresnel' : [], + 'ShaderNodeNewGeometry' : [], + 'ShaderNodeLayerWeight' : [], + 'ShaderNodeLightPath' : [], + 'ShaderNodeObjectInfo' : [], + 'ShaderNodeParticleInfo' : [], + 'ShaderNodePointInfo' : [], + 'ShaderNodeRGB' : [], - 'ShaderNodeTangent' : [("axis", "enum"), - ("direction_type", "enum"), - ("uv_map", "str")], #TODO: makes sense? maybe make special type - 'ShaderNodeTexCoord' : [("from_instancer", "bool"), - ("object", "Object")], - 'ShaderNodeUVAlongStroke' : [("use_tips", "bool")], - 'ShaderNodeUVMap' : [("from_instancer", "bool"), - ("uv_map", "str")], #TODO: see ShaderNodeTangent + + 'ShaderNodeTangent' : [("axis", ST.ENUM), + ("direction_type", ST.ENUM), + ("uv_map", ST.STRING)], #TODO: special UV Map type? + + 'ShaderNodeTexCoord' : [("from_instancer", ST.BOOL), + ("object", ST.OBJECT)], + + 'ShaderNodeUVAlongStroke' : [("use_tips", ST.BOOL)], + + 'ShaderNodeUVMap' : [("from_instancer", ST.BOOL), + ("uv_map", ST.STRING)], #TODO: see ShaderNodeTangent + 'ShaderNodeValue' : [], + 'ShaderNodeVolumeInfo' : [], - 'ShaderNodeWireframe' : [("use_pixel_size", "bool")], + + 'ShaderNodeWireframe' : [("use_pixel_size", ST.BOOL)], # OUTPUT - 'ShaderNodeOutputAOV' : [("name", "str")], - 'ShaderNodeOutputLight' : [("is_active_output", "bool"), - ("target", "enum")], - 'ShaderNodeOutputLineStyle' : [("blend_type", "enum"), - ("is_active_output", "bool"), - ("target", "enum"), - ("use_alpha", "bool"), - ("use_clamp", "bool")], - 'ShaderNodeOutputMaterial' : [("is_active_output", "bool"), - ("target", "enum")], - 'ShaderNodeOutputWorld' : [("is_active_output", "bool"), - ("target", "enum")], + 'ShaderNodeOutputAOV' : [("name", ST.STRING)], + + 'ShaderNodeOutputLight' : [("is_active_output", ST.BOOL), + ("target", ST.ENUM)], + + 'ShaderNodeOutputLineStyle' : [("blend_type", ST.ENUM), + ("is_active_output", ST.BOOL), + ("target", ST.ENUM), + ("use_alpha", ST.BOOL), + ("use_clamp", ST.BOOL)], + + 'ShaderNodeOutputMaterial' : [("is_active_output", ST.BOOL), + ("target", ST.ENUM)], + + 'ShaderNodeOutputWorld' : [("is_active_output", ST.BOOL), + ("target", ST.ENUM)], # SHADER 'ShaderNodeAddShader' : [], - 'ShaderNodeBsdfAnisotropic' : [("distribution", "enum")], + + 'ShaderNodeBsdfAnisotropic' : [("distribution", ST.ENUM)], + 'ShaderNodeBackground' : [], + 'ShaderNodeBsdfDiffuse' : [], + 'ShaderNodeEmission' : [], - 'ShaderNodeBsdfGlass' : [("distribution", "enum")], - 'ShaderNodeBsdfGlossy' : [("distribution", "enum")], - 'ShaderNodeBsdfHair' : [("component", "enum")], + + 'ShaderNodeBsdfGlass' : [("distribution", ST.ENUM)], + + 'ShaderNodeBsdfGlossy' : [("distribution", ST.ENUM)], + + 'ShaderNodeBsdfHair' : [("component", ST.ENUM)], + 'ShaderNodeHoldout' : [], + 'ShaderNodeMixShader' : [], - 'ShaderNodeBsdfPrincipled' : [("distribution", "enum"), - ("subsurface_method", "enum")], - 'ShaderNodeBsdfHairPrincipled' : [("parametrization", "enum")], + + 'ShaderNodeBsdfPrincipled' : [("distribution", ST.ENUM), + ("subsurface_method", ST.ENUM)], + + 'ShaderNodeBsdfHairPrincipled' : [("parametrization", ST.ENUM)], + 'ShaderNodeVolumePrincipled' : [], - 'ShaderNodeBsdfRefraction' : [("distribution", "enum")], + + 'ShaderNodeBsdfRefraction' : [("distribution", ST.ENUM)], + 'ShaderNodeEeveeSpecular' : [], - 'ShaderNodeSubsurfaceScattering' : [("falloff", "enum")], - 'ShaderNodeBsdfToon' : [("component", "enum")], + + 'ShaderNodeSubsurfaceScattering' : [("falloff", ST.ENUM)], + + 'ShaderNodeBsdfToon' : [("component", ST.ENUM)], + 'ShaderNodeBsdfTranslucent' : [], + 'ShaderNodeBsdfTransparent' : [], + 'ShaderNodeBsdfVelvet' : [], + 'ShaderNodeVolumeAbsorption' : [], + 'ShaderNodeVolumeScatter' : [], # TEXTURE - 'ShaderNodeTexBrick' : [("offset", "float"), - ("offset_frequency", "int"), - ("squash", "float"), - ("squash_frequency", "int")], + 'ShaderNodeTexBrick' : [("offset", ST.FLOAT), + ("offset_frequency", ST.INT), + ("squash", ST.FLOAT), + ("squash_frequency", ST.INT)], + 'ShaderNodeTexChecker' : [], - 'ShaderNodeTexEnvironment' : [("image", "Image"), - ("image_user", "ImageUser"), - ("interpolation", "enum"), - ("projection", "enum")], - 'ShaderNodeTexGradient' : [("gradient_type", "enum")], - 'ShaderNodeTexIES' : [("filepath", "str"), #TODO - ("ies", "Text"), - ("mode", "enum")], - 'ShaderNodeTexImage' : [("extension", "enum"), - ("image", "Image"), - ("image_user", "ImageUser"), - ("interpolation", "enum"), - ("projection", "enum"), - ("projection_blend", "float")], - 'ShaderNodeTexMagic' : [("turbulence_depth", "int")], - 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", "enum"), - ("musgrave_type", "enum")], - 'ShaderNodeTexNoise' : [("noise_dimensions", "enum")], - 'ShaderNodeTexPointDensity' : [("interpolation", "enum"), - ("object", "Object"), - ("particle_color_source", "enum"), - ("particle_system", "ParticleSystem"), - ("point_source", "enum"), - ("radius", "float"), - ("resolution", "int"), - ("space", "enum"), - ("vertex_attribute_name", "str"), #TODO - ("vertex_color_source", "enum")], - 'ShaderNodeTexSky' : [("air_density", "float"), - ("altitude", "float"), - ("dust_density", "float"), - ("ground_albedo", "float"), - ("ozone_density", "float"), - ("sky_type", "enum"), - ("sun_direction", "Vec3"), - ("sun_disc", "bool"), - ("sun_elevation", "float"), - ("sun_intensity", "float"), - ("sun_rotation", "float"), - ("sun_size", "float") - ("turbidity", "float")], - 'ShaderNodeTexVoronoi' : [("distance", "enum"), - ("feature", "enum"), - ("voronoi_dimensions", "enum")], - 'ShaderNodeTexWave' : [("bands_direction", "enum"), - ("rings_direction", "enum"), - ("wave_profile", "enum"), - ("wave_type", "enum")], - 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", "enum")], + + 'ShaderNodeTexEnvironment' : [("image", ST.IMAGE), + ("image_user", ST.IMAGE_USER), + ("interpolation", ST.ENUM), + ("projection", ST.ENUM)], + + 'ShaderNodeTexGradient' : [("gradient_type", ST.ENUM)], + + 'ShaderNodeTexIES' : [("filepath", ST.STRING), #TODO + ("ies", ST.TEXT), + ("mode", ST.ENUM)], + + 'ShaderNodeTexImage' : [("extension", ST.ENUM), + ("image", ST.IMAGE), + ("image_user", ST.IMAGE_USER), + ("interpolation", ST.ENUM), + ("projection", ST.ENUM), + ("projection_blend", ST.FLOAT)], + + 'ShaderNodeTexMagic' : [("turbulence_depth", ST.INT)], + + 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", ST.ENUM), + ("musgrave_type", ST.ENUM)], + + 'ShaderNodeTexNoise' : [("noise_dimensions", ST.ENUM)], + + 'ShaderNodeTexPointDensity' : [("interpolation", ST.ENUM), + ("object", ST.OBJECT), + ("particle_color_source", ST.ENUM), + ("particle_system", ST.PARTICLE_SYSTEM), + ("point_source", ST.ENUM), + ("radius", ST.FLOAT), + ("resolution", ST.INT), + ("space", ST.ENUM), + ("vertex_attribute_name", ST.STRING), #TODO + ("vertex_color_source", ST.ENUM)], + + 'ShaderNodeTexSky' : [("air_density", ST.FLOAT), + ("altitude", ST.FLOAT), + ("dust_density", ST.FLOAT), + ("ground_albedo", ST.FLOAT), + ("ozone_density", ST.FLOAT), + ("sky_type", ST.ENUM), + ("sun_direction", ST.VEC3), + ("sun_disc", ST.BOOL), + ("sun_elevation", ST.FLOAT), + ("sun_intensity", ST.FLOAT), + ("sun_rotation", ST.FLOAT), + ("sun_size", ST.FLOAT) + ("turbidity", ST.FLOAT)], + + 'ShaderNodeTexVoronoi' : [("distance", ST.ENUM), + ("feature", ST.ENUM), + ("voronoi_dimensions", ST.ENUM)], + + 'ShaderNodeTexWave' : [("bands_direction", ST.ENUM), + ("rings_direction", ST.ENUM), + ("wave_profile", ST.ENUM), + ("wave_type", ST.ENUM)], + + 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", ST.ENUM)], # COLOR 'ShaderNodeBrightContrast' : [], + 'ShaderNodeGamma' : [], + 'ShaderNodeHueSaturation' : [], + 'ShaderNodeInvert' : [], + 'ShaderNodeLightFalloff' : [], - 'ShaderNodeMix' : [("blend_type", "enum"), - ("clamp_factor", "bool"), - ("clamp_result", "bool"), - ("data_type", "enum"), - ("factor_mode", "enum")], - 'ShaderNodeRGBCurve' : [("mapping", "CurveMapping")], + + 'ShaderNodeMix' : [("blend_type", ST.ENUM), + ("clamp_factor", ST.BOOL), + ("clamp_result", ST.BOOL), + ("data_type", ST.ENUM), + ("factor_mode", ST.ENUM)], + + 'ShaderNodeRGBCurve' : [("mapping", ST.CURVE_MAPPING)], # VECTOR - 'ShaderNodeBump' : [("invert", "bool")], - 'ShaderNodeDisplacement' : [("space", "enum")], - 'ShaderNodeMapping' : [("vector_type", "enum")], - 'ShaderNodeNormalMap' : [("space", "enum"), - ("uv_map", "str")], #TODO - 'ShaderNodeVectorCurve' : [("mapping", "CurveMapping")], - 'ShaderNodeVectorDisplacement' : [("space", "enum")], - 'ShaderNodeVectorRotate' : [("invert", "bool"), - ("rotation_type", "enum")], - 'ShaderNodeVectorTransform' : [("convert_from", "enum"), - ("convert_to", "enum"), - ("vector_type", "enum")], + 'ShaderNodeBump' : [("invert", ST.BOOL)], + + 'ShaderNodeDisplacement' : [("space", ST.ENUM)], + + 'ShaderNodeMapping' : [("vector_type", ST.ENUM)], + + 'ShaderNodeNormalMap' : [("space", ST.ENUM), + ("uv_map", ST.STRING)], #TODO + + 'ShaderNodeVectorCurve' : [("mapping", ST.CURVE_MAPPING)], + + 'ShaderNodeVectorDisplacement' : [("space", ST.ENUM)], + + 'ShaderNodeVectorRotate' : [("invert", ST.BOOL), + ("rotation_type", ST.ENUM)], + + 'ShaderNodeVectorTransform' : [("convert_from", ST.ENUM), + ("convert_to", ST.ENUM), + ("vector_type", ST.ENUM)], # CONVERTER 'ShaderNodeBlackbody' : [], - 'ShaderNodeClamp' : [("clamp_type", "enum")], - 'ShaderNodeValToRGB' : [("color_ramp", "ColorRamp")], - 'ShaderNodeCombineColor' : [("mode", "enum")], + + 'ShaderNodeClamp' : [("clamp_type", ST.ENUM)], + + 'ShaderNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], + + 'ShaderNodeCombineColor' : [("mode", ST.ENUM)], + 'ShaderNodeCombineXYZ' : [], - 'ShaderNodeFloatCurve' : [("mapping", "CurveMapping")], - 'ShaderNodeMapRange' : [("clamp", "bool"), - ("data_type", "enum"), - ("interpolation_type", "enum")], - 'ShaderNodeMath' : [("operation", "enum"), - ("use_clamp", "bool")], + + 'ShaderNodeFloatCurve' : [("mapping", ST.CURVE_MAPPING)], + + 'ShaderNodeMapRange' : [("clamp", ST.BOOL), + ("data_type", ST.ENUM), + ("interpolation_type", ST.ENUM)], + + 'ShaderNodeMath' : [("operation", ST.ENUM), + ("use_clamp", ST.BOOL)], + 'ShaderNodeRGBToBW' : [], - 'ShaderNodeSeparateColor' : [("mode", "enum")], + + 'ShaderNodeSeparateColor' : [("mode", ST.ENUM)], + 'ShaderNodeSeparateXYZ' : [], + 'ShaderNodeShaderToRGB' : [], - 'ShaderNodeVectorMath' : [("operation", "enum")], + + 'ShaderNodeVectorMath' : [("operation", ST.ENUM)], + 'ShaderNodeWavelength' : [], # SCRIPT - 'ShaderNodeScript' : [("bytecode", "str"), #TODO: test all that - ("bytecode_hash", "str"), - ("filepath", "str"), - ("mode", "enum"), - ("script", "text"), - ("use_auto_update", "bool")] + 'ShaderNodeScript' : [("bytecode", ST.STRING), #TODO: test all that + ("bytecode_hash", ST.STRING), + ("filepath", ST.STRING), + ("mode", ST.ENUM), + ("script", ST.TEXT), + ("use_auto_update", ST.BOOL)] } curve_nodes = {'ShaderNodeFloatCurve', diff --git a/utils.py b/utils.py index 6d09ec0..372daae 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,7 @@ import bpy import mathutils +from enum import Enum, auto import os import re import shutil @@ -13,6 +14,37 @@ 'NodeSocketShader', 'NodeSocketVirtual'} +class ST(Enum): + """ + Socket and Settings Types + """ + ENUM = auto() + STRING = auto() + BOOL = auto() + INT = auto() + FLOAT = auto() + VEC1 = auto() + VEC2 = auto() + VEC3 = auto() + VEC4 = auto() + MATERIAL = auto() #Could use a look + OBJECT = auto() #Could take a looking at + IMAGE = auto() #needs refactor + IMAGE_USER = auto() #unimplemented + MOVIE_CLIP = auto() #unimplmented + COLOR_RAMP = auto() #needs refactor + CURVE_MAPPING = auto() #needs refactor + TEXTURE = auto() #unimplemented + TEXT = auto() #unimplemented + SCENE = auto() #unimplemented + PARTICLE_SYSTEM = auto() #unimplemented + FONT = auto() #unimplemented + MASK = auto() #unimplemented + CRYPTOMATTE_ENTRIES = auto() #unimplemented + IMAGE_FORMAT_SETTINGS = auto() + FILE_SLOTS = auto() + LAYER_SLOTS = auto() #unimplemented + #node tree input sockets that have default properties default_sockets = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} @@ -56,29 +88,53 @@ def str_to_py_str(string: str) -> str: """ return f"\"{string}\"" -def vec3_to_py_str(vec) -> str: +def vec1_to_py_str(vec1) -> str: + """ + Converts a 1D vector to a string usable by the add-on + + Parameters: + vec1: a 1d vector + + Returns: + (str): string representation of the vector + """ + return f"({vec1[0]})" + +def vec2_to_py_str(vec2) -> str: + """ + Converts a 2D vector to a string usable by the add-on + + Parameters: + vec2: a 2D vector + + Returns: + (str): string representation of the vector + """ + return f"({vec2[0]}, {vec2[1]})" + +def vec3_to_py_str(vec3) -> str: """ Converts a 3D vector to a string usable by the add-on Parameters: - vec (mathutils.Vector): a 3d vector + vec3: a 3d vector Returns: - (str): string version + (str): string representation of the vector """ - return f"({vec[0]}, {vec[1]}, {vec[2]})" + return f"({vec3[0]}, {vec3[1]}, {vec3[2]})" -def vec4_to_py_str(vec) -> str: +def vec4_to_py_str(vec4) -> str: """ Converts a 4D vector to a string usable by the add-on Parameters: - vec (mathutils.Vector): a 4d vector + vec4: a 4d vector Returns: (str): string version """ - return f"({vec[0]}, {vec[1]}, {vec[2]}, {vec[3]})" + return f"({vec4[0]}, {vec4[1]}, {vec4[2]}, {vec4[3]})" def img_to_py_str(img) -> str: """ @@ -94,13 +150,6 @@ def img_to_py_str(img) -> str: format = img.file_format.lower() return f"{name}.{format}" -type_to_py_str : dict[str, function] = { - "enum" : enum_to_py_str, - "str" : str_to_py_str, - "vec3" : vec3_to_py_str, - "vec4" : vec4_to_py_str -} - def create_header(file: TextIO, name: str): """ Sets up the bl_info and imports the Blender API @@ -220,7 +269,7 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, return node_var -def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, +def set_settings_defaults(node, settings: dict[str, list[(str, str)]], file: TextIO, inner: str, node_var: str): """ Sets the defaults for any settings a node may have @@ -233,9 +282,16 @@ def set_settings_defaults(node, settings: dict, file: TextIO, inner: str, node_var (str): name of the variable we're using for the node in our add-on """ if node.bl_idname in settings: - for setting in settings[node.bl_idname]: + for (setting, type) in settings[node.bl_idname]: attr = getattr(node, setting, None) - if attr: + if not attr: + continue + if type == "enum": + file.write(f"{inner}{node_var}.{setting} = {enum_to_py_str(attr)}\n") + elif type == "str": + file.write(f"{inner}{node_var}.{setting} = {str_to_py_str(attr)}\n") + elif type == "int": + file.write(f"{inner}{node_var}.{setting} = {attr}\n") if type(attr) == str: attr = enum_to_py_str(attr) if type(attr) == mathutils.Vector: @@ -552,7 +608,7 @@ def set_output_defaults(node, file: TextIO, inner: str, node_var: str): 'ShaderNodeNormal'} if node.bl_idname in output_default_nodes: - dv = node.outputs[0].default_value + dv = node.outputs[0].default_value #TODO: see if this is still the case if node.bl_idname == 'ShaderNodeRGB': dv = vec4_to_py_str(list(dv)) if node.bl_idname == 'ShaderNodeNormal': @@ -641,6 +697,7 @@ def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, gnashing of teeth. This is a quick fix that doesn't run quick """ + #TODO: try using index() method for i, item in enumerate(link.from_node.outputs.items()): if item[1] == input_socket: input_idx = i From f1d85b66d3a6d7c4c8527e10f691e6589a2853a8 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 26 Aug 2023 17:37:23 -0500 Subject: [PATCH 106/286] refactor: changed set_settings_default() to use new types --- utils.py | 53 ++++++++++++++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/utils.py b/utils.py index 372daae..8d1d945 100644 --- a/utils.py +++ b/utils.py @@ -269,7 +269,7 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, return node_var -def set_settings_defaults(node, settings: dict[str, list[(str, str)]], file: TextIO, inner: str, +def set_settings_defaults(node, settings: dict[str, list[(str, ST)]], file: TextIO, inner: str, node_var: str): """ Sets the defaults for any settings a node may have @@ -286,32 +286,31 @@ def set_settings_defaults(node, settings: dict[str, list[(str, str)]], file: Tex attr = getattr(node, setting, None) if not attr: continue - if type == "enum": - file.write(f"{inner}{node_var}.{setting} = {enum_to_py_str(attr)}\n") - elif type == "str": - file.write(f"{inner}{node_var}.{setting} = {str_to_py_str(attr)}\n") - elif type == "int": - file.write(f"{inner}{node_var}.{setting} = {attr}\n") - if type(attr) == str: - attr = enum_to_py_str(attr) - if type(attr) == mathutils.Vector: - attr = vec3_to_py_str(attr) - if type(attr) == bpy.types.bpy_prop_array: - attr = vec4_to_py_str(list(attr)) - if type(attr) == bpy.types.Material: - name = str_to_py_str(attr.name) - file.write((f"{inner}if {name} in bpy.data.materials:\n")) - file.write((f"{inner}\t{node_var}.{setting} = " - f"bpy.data.materials[{name}]\n")) - continue - if type(attr) == bpy.types.Object: - name = str_to_py_str(attr.name) - file.write((f"{inner}if {name} in bpy.data.objects:\n")) - file.write((f"{inner}\t{node_var}.{setting} = " - f"bpy.data.objects[{name}]\n")) - continue - file.write((f"{inner}{node_var}.{setting} " - f"= {attr}\n")) + setting_str = f"{inner}{node_var}.{setting}" + if type == ST.ENUM: + file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") + elif type == ST.STRING: + file.write(f"{setting_str} = {str_to_py_str(attr)}\n") + elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: + file.write(f"{setting_str} = {attr}\n") + elif type == ST.VEC1: + file.write(f"{setting_str} = {vec1_to_py_str(attr)}\n") + elif type == ST.VEC2: + file.write(f"{setting_str} = {vec2_to_py_str(attr)}\n") + elif type == ST.VEC3: + file.write(f"{setting_str} = {vec3_to_py_str(attr)}\n") + elif type == ST.VEC4: + file.write(f"{setting_str} = {vec4_to_py_str(attr)}\n") + elif type == ST.MATERIAL: + name = str_to_py_str(attr.name) + file.write((f"{inner}if {name} in bpy.data.materials:\n")) + file.write((f"{inner}\t{node_var}.{setting} = " + f"bpy.data.materials[{name}]\n")) + elif type == ST.OBJECT: + name = str_to_py_str(attr.name) + file.write((f"{inner}if {name} in bpy.data.objects:\n")) + file.write((f"{inner}\t{node_var}.{setting} = " + f"bpy.data.objects[{name}]\n")) def hide_sockets(node, file: TextIO, inner: str, node_var: str): """ From c0eb85dcf70c01e3544679222022d67d5d6009ae Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 26 Aug 2023 17:58:57 -0500 Subject: [PATCH 107/286] style: better type hints for util functions --- utils.py | 150 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 115 insertions(+), 35 deletions(-) diff --git a/utils.py b/utils.py index 8d1d945..5103827 100644 --- a/utils.py +++ b/utils.py @@ -16,7 +16,7 @@ class ST(Enum): """ - Socket and Settings Types + Settings Types """ ENUM = auto() STRING = auto() @@ -136,7 +136,7 @@ def vec4_to_py_str(vec4) -> str: """ return f"({vec4[0]}, {vec4[1]}, {vec4[2]}, {vec4[3]})" -def img_to_py_str(img) -> str: +def img_to_py_str(img : bpy.types.Image) -> str: """ Converts a Blender image into its string @@ -150,7 +150,7 @@ def img_to_py_str(img) -> str: format = img.file_format.lower() return f"{name}.{format}" -def create_header(file: TextIO, name: str): +def create_header(file: TextIO, name: str) -> None: """ Sets up the bl_info and imports the Blender API @@ -172,7 +172,7 @@ def create_header(file: TextIO, name: str): file.write("import os\n") file.write("\n") -def init_operator(file: TextIO, name: str, idname: str, label: str): +def init_operator(file: TextIO, name: str, idname: str, label: str) -> None: """ Initializes the add-on's operator @@ -229,8 +229,13 @@ def make_indents(level: int) -> Tuple[str, str]: inner = "\t"*(level + 1) return outer, inner -def create_node(node, file: TextIO, inner: str, node_tree_var: str, - node_vars: dict, used_vars: set) -> str: +def create_node(node: bpy.types.Node, + file: TextIO, + inner: str, + node_tree_var: str, + node_vars: dict[bpy.types.Node, str], + used_vars: set #necessary? + ) -> str: """ Initializes a new node with location, dimension, and label info @@ -239,8 +244,8 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, file (TextIO): file containing the generated add-on inner (str): indentation level for this logic node_tree_var (str): variable name for the node tree - node_vars (dict): dictionary containing (bpy.types.Node, str) - pairs, with a Node and its corresponding variable name + node_vars (dict): dictionary containing Node to corresponding variable name + pairs used_vars (set): set of used variable names Returns: @@ -269,8 +274,12 @@ def create_node(node, file: TextIO, inner: str, node_tree_var: str, return node_var -def set_settings_defaults(node, settings: dict[str, list[(str, ST)]], file: TextIO, inner: str, - node_var: str): +def set_settings_defaults(node: bpy.types.Node, + settings: dict[str, list[(str, ST)]], + file: TextIO, + inner: str, + node_var: str + ) -> None: """ Sets the defaults for any settings a node may have @@ -312,7 +321,11 @@ def set_settings_defaults(node, settings: dict[str, list[(str, ST)]], file: Text file.write((f"{inner}\t{node_var}.{setting} = " f"bpy.data.objects[{name}]\n")) -def hide_sockets(node, file: TextIO, inner: str, node_var: str): +def hide_sockets(node: bpy.types.Node, + file: TextIO, + inner: str, + node_var: str + ) -> None: """ Hide hidden sockets @@ -329,7 +342,25 @@ def hide_sockets(node, file: TextIO, inner: str, node_var: str): if socket.hide is True: file.write(f"{inner}{node_var}.outputs[{i}].hide = True\n") -def group_io_settings(node, file: TextIO, inner: str, io: str, node_tree_var: str, node_tree): +def group_io_settings(node: bpy.types.Node, + file: TextIO, + inner: str, + io: str, #TODO: convert to enum + node_tree_var: str, + node_tree: bpy.types.NodeTree + ) -> None: + """ + Set the settings for group input and output sockets + + Parameters: + node (bpy.types.Node) : group input/output node + file (TextIO): file we're generating the add-on into + inner (str): indentation string + io (str): whether we're generating the input or output settings + node_tree_var (str): variable name of the generated node tree + node_tree (bpy.types.NodeTree): node tree that we're generating input + and output settings for + """ if io == "input": ios = node.outputs ntio = node_tree.inputs @@ -393,7 +424,11 @@ def group_io_settings(node, file: TextIO, inner: str, io: str, node_tree_var: st file.write("\n") file.write("\n") -def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): +def color_ramp_settings(node: bpy.types.Node, + file: TextIO, + inner: str, + node_var: str + ) -> None: """ Replicate a color ramp node @@ -435,7 +470,11 @@ def color_ramp_settings(node, file: TextIO, inner: str, node_var: str): color_str = vec4_to_py_str(element.color) file.write((f"{inner}{element_var}.color = {color_str}\n\n")) -def curve_node_settings(node, file: TextIO, inner: str, node_var: str): +def curve_node_settings(node: bpy.types.Node, + file: TextIO, + inner: str, + node_var: str + ) -> None: """ Sets defaults for Float, Vector, and Color curves @@ -506,8 +545,12 @@ def curve_node_settings(node, file: TextIO, inner: str, node_var: str): file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping_var}.update()\n") -def set_input_defaults(node, file: TextIO, inner: str, node_var: str, - addon_dir: str = ""): +def set_input_defaults(node: bpy.types.Node, + file: TextIO, + inner: str, + node_var: str, + addon_dir: str = "" + ) -> None: """ Sets defaults for input sockets @@ -574,7 +617,12 @@ def set_input_defaults(node, file: TextIO, inner: str, node_var: str, f" = {default_val}\n")) file.write("\n") -def in_file_inputs(input, file: TextIO, inner: str, socket_var: str, type: str): +def in_file_inputs(input: bpy.types.NodeSocket, + file: TextIO, + inner: str, + socket_var: str, + type: str + ) -> None: """ Sets inputs for a node input if one already exists in the blend file @@ -592,7 +640,11 @@ def in_file_inputs(input, file: TextIO, inner: str, socket_var: str, type: str): file.write((f"{inner}\t{socket_var}.default_value = " f"bpy.data.{type}[{name}]\n")) -def set_output_defaults(node, file: TextIO, inner: str, node_var: str): +def set_output_defaults(node: bpy.types.Node, + file: TextIO, + inner: str, + node_var: str + ) -> None: """ Some output sockets need default values set. It's rather annoying @@ -614,7 +666,11 @@ def set_output_defaults(node, file: TextIO, inner: str, node_var: str): dv = vec3_to_py_str(dv) file.write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) -def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): +def set_parents(node_tree: bpy.types.NodeTree, + file: TextIO, + inner: str, + node_vars: dict[bpy.types.Node, str] + ) -> None: """ Sets parents for all nodes, mostly used to put nodes in frames @@ -622,7 +678,8 @@ def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from file (TextIO): file for the generated add-on inner (str): indentation string - node_vars (dict): dictionary for (node, variable) name pairs + node_vars (dict[bpy.types.Node, str]): dictionary for node->variable name + pairs """ parent_comment = False for node in node_tree.nodes: @@ -635,7 +692,11 @@ def set_parents(node_tree, file: TextIO, inner: str, node_vars: dict): file.write(f"{inner}{node_var}.parent = {parent_var}\n") file.write("\n") -def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): +def set_locations(node_tree: bpy.types.NodeTree, + file: TextIO, + inner: str, + node_vars: dict[bpy.types.Node, str] + ) -> None: """ Set locations for all nodes @@ -643,7 +704,8 @@ def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from file (TextIO): file for the generated add-on inner (str): indentation string - node_vars (dict): dictionary for (node, variable) name pairs + node_vars (dict[bpy.types.Node, str]): dictionary for (node, variable) name + pairs """ file.write(f"{inner}#Set locations\n") @@ -653,7 +715,11 @@ def set_locations(node_tree, file: TextIO, inner: str, node_vars: dict): f"= ({node.location.x}, {node.location.y})\n")) file.write("\n") -def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): +def set_dimensions(node_tree: bpy.types.NodeTree, + file: TextIO, + inner: str, + node_vars: dict[bpy.types.Node, str] + ) -> None: """ Set dimensions for all nodes @@ -661,7 +727,8 @@ def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from file (TextIO): file for the generated add-on inner (str): indentation string - node_vars (dict): dictionary for (node, variable) name pairs + node_vars (dict[bpy.types.Node, str]): dictionary for (node, variable) name + pairs """ file.write(f"{inner}#Set dimensions\n") @@ -671,8 +738,12 @@ def set_dimensions(node_tree, file: TextIO, inner: str, node_vars: dict): f"= {node.width}, {node.height}\n")) file.write("\n") -def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, - node_vars: dict): +def init_links(node_tree: bpy.types.NodeTree, + file: TextIO, + inner: str, + node_tree_var: str, + node_vars: dict[bpy.types.Node, str] + ) -> None: """ Create all the links between nodes @@ -681,7 +752,8 @@ def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, file (TextIO): file we're generating the add-on into inner (str): indentation node_tree_var (str): variable name we're using for the copied node tree - node_vars (dict): dictionary containing node to variable name pairs + node_vars (dict[bpy.types.Node, str]): dictionary containing node to + variable name pairs """ if node_tree.links: @@ -716,7 +788,7 @@ def init_links(node_tree, file: TextIO, inner: str, node_tree_var: str, f".outputs[{input_idx}], " f"{out_node_var}.inputs[{output_idx}])\n")) -def create_menu_func(file: TextIO, name: str): +def create_menu_func(file: TextIO, name: str) -> None: """ Creates the menu function @@ -729,7 +801,7 @@ def create_menu_func(file: TextIO, name: str): file.write(f"\tself.layout.operator({name}.bl_idname)\n") file.write("\n") -def create_register_func(file: TextIO, name: str): +def create_register_func(file: TextIO, name: str) -> None: """ Creates the register function @@ -742,7 +814,7 @@ def create_register_func(file: TextIO, name: str): file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") file.write("\n") -def create_unregister_func(file: TextIO, name: str): +def create_unregister_func(file: TextIO, name: str) -> None: """ Creates the unregister function @@ -755,7 +827,7 @@ def create_unregister_func(file: TextIO, name: str): file.write("\tbpy.types.VIEW3D_MT_object.remove(menu_func)\n") file.write("\n") -def create_main_func(file: TextIO): +def create_main_func(file: TextIO) -> None: """ Creates the main function @@ -765,7 +837,7 @@ def create_main_func(file: TextIO): file.write("if __name__ == \"__main__\":\n") file.write("\tregister()") -def save_image(img, addon_dir: str): +def save_image(img: bpy.types.Image, addon_dir: str) -> None: """ Saves an image to an image directory of the add-on @@ -788,7 +860,11 @@ def save_image(img, addon_dir: str): if not os.path.exists(img_path): img.save_render(img_path) -def load_image(img, file: TextIO, inner: str, img_var: str): +def load_image(img: bpy.types.Image, + file: TextIO, + inner: str, + img_var: str + ) -> None: """ Loads an image from the add-on into a blend file and assigns it @@ -828,7 +904,11 @@ def load_image(img, file: TextIO, inner: str, img_var: str): alpha_mode = enum_to_py_str(img.alpha_mode) file.write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") -def image_user_settings(node, file: TextIO, inner: str, node_var: str): +def image_user_settings(node: bpy.types.Node, + file: TextIO, + inner: str, + node_var: str + ) -> None: """ Replicate the image user of an image node @@ -852,7 +932,7 @@ def image_user_settings(node, file: TextIO, inner: str, node_var: str): file.write((f"{inner}{img_usr_var}.{img_usr_attr} = " f"{getattr(img_usr, img_usr_attr)}\n")) -def zip_addon(zip_dir: str): +def zip_addon(zip_dir: str) -> None: """ Zips up the addon and removes the directory From 38d3dfae81dba008d611f2d3c82c4423a9655ced Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 27 Aug 2023 15:20:50 -0500 Subject: [PATCH 108/286] refactor: curve mappings and color ramps now handled with other node settings --- compositor.py | 12 +++--------- geo_nodes.py | 31 ++++++++++++------------------- materials.py | 14 ++------------ utils.py | 51 ++++++++++++++++++++++++++++++++++----------------- 4 files changed, 51 insertions(+), 57 deletions(-) diff --git a/compositor.py b/compositor.py index 9384b1b..beac3cc 100644 --- a/compositor.py +++ b/compositor.py @@ -56,7 +56,7 @@ ("frame_start", ST.INT)], 'CompositorNodeTrackPos' : [("clip", ST.MOVIE_CLIP), - ("frame_relative", ST.INT) + ("frame_relative", ST.INT), ("position", ST.ENUM), ("track_name", ST.STRING), #TODO: probably not right ("tracking_object", ST.STRING)], @@ -515,7 +515,7 @@ def is_outermost_node_group(level: int) -> bool: elif self.mode == 'SCRIPT' and level == 0: return True return False - """ + def process_comp_node_group(node_tree, level, node_vars, used_vars): if is_outermost_node_group(level): @@ -585,12 +585,6 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): # save_image(img, addon_dir) # load_image(img, file, inner, f"{node_var}.image") # image_user_settings(node, file, inner, node_var) - - elif node.bl_idname == 'CompositorNodeValToRGB': - color_ramp_settings(node, file, inner, node_var) - - elif node.bl_idname in curve_nodes: - curve_node_settings(node, file, inner, node_var) if self.mode == 'ADDON': set_input_defaults(node, file, inner, node_var, addon_dir) @@ -626,7 +620,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): if self.mode == 'ADDON': zip_addon(zip_dir) - """ + if self.mode == 'SCRIPT': location = "clipboard" else: diff --git a/geo_nodes.py b/geo_nodes.py index ee8c03a..50a4c58 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -135,7 +135,7 @@ 'GeometryNodeCurveEndpointSelection' : [], 'GeometryNodeCurveHandleTypeSelection' : [("handle_type", ST.ENUM), - ("mode", ST.ENUM)], + ("mode", ST.ENUM_SET)], 'GeometryNodeInputSplineCyclic' : [], @@ -160,7 +160,7 @@ 'GeometryNodeSetCurveHandlePositions' : [("mode", ST.ENUM)], 'GeometryNodeCurveSetHandles' : [("handle_type", ST.ENUM), - ("mode", ST.ENUM)], + ("mode", ST.ENUM_SET)], 'GeometryNodeSetSplineCyclic' : [], @@ -549,13 +549,13 @@ def execute(self, context): file = StringIO("") #set to keep track of already created node trees - node_trees = set() + node_trees: set[bpy.types.NodeTree] = set() #dictionary to keep track of node->variable name pairs - node_vars = {} + node_vars: dict[bpy.types.Node, str] = {} #dictionary to keep track of variables->usage count pairs - used_vars = {} + used_vars: dict[str, int] = {} def process_geo_nodes_group(node_tree, level, node_vars, used_vars): nt_var = create_var(node_tree.name, used_vars) @@ -608,19 +608,6 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): file.write((f"{inner}{node_var}.node_tree = " f"bpy.data.node_groups" f"[{str_to_py_str(node.node_tree.name)}]\n")) - - elif node.bl_idname == 'ShaderNodeValToRGB': - color_ramp_settings(node, file, inner, node_var) - - elif node.bl_idname in curve_nodes: - curve_node_settings(node, file, inner, node_var) - - elif node.bl_idname in image_nodes and self.mode == 'ADDON': - img = node.image - if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: - save_image(img, addon_dir) - load_image(img, file, inner, f"{node_var}.image") - elif node.bl_idname == 'GeometryNodeSimulationInput': sim_inputs.append(node) @@ -639,7 +626,13 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): attr_domain = enum_to_py_str(si.attribute_domain) file.write((f"{inner}{si_var}.attribute_domain = " f"{attr_domain}\n")) - + """ + elif node.bl_idname in image_nodes and self.mode == 'ADDON': + img = node.image + if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: + save_image(img, addon_dir) + load_image(img, file, inner, f"{node_var}.image") + """ if node.bl_idname != 'GeometryNodeSimulationInput': if self.mode == 'ADDON': set_input_defaults(node, file, inner, node_var, addon_dir) diff --git a/materials.py b/materials.py index 5bbdf2c..2cfab43 100644 --- a/materials.py +++ b/materials.py @@ -178,7 +178,7 @@ ("sun_elevation", ST.FLOAT), ("sun_intensity", ST.FLOAT), ("sun_rotation", ST.FLOAT), - ("sun_size", ST.FLOAT) + ("sun_size", ST.FLOAT), ("turbidity", ST.FLOAT)], 'ShaderNodeTexVoronoi' : [("distance", ST.ENUM), @@ -277,10 +277,6 @@ ("use_auto_update", ST.BOOL)] } -curve_nodes = {'ShaderNodeFloatCurve', - 'ShaderNodeVectorCurve', - 'ShaderNodeRGBCurve'} - image_nodes = {'ShaderNodeTexEnvironment', 'ShaderNodeTexImage'} @@ -403,7 +399,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): node_var = create_node(node, file, inner, nt_var, node_vars, used_vars) - set_settings_defaults(node, node_settings, file, inner, node_var) + set_settings_defaults(node, shader_node_settings, file, inner, node_var) hide_sockets(node, file, inner, node_var) if node.bl_idname == 'ShaderNodeGroup': @@ -426,12 +422,6 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): load_image(img, file, inner, f"{node_var}.image") image_user_settings(node, file, inner, node_var) - elif node.bl_idname == 'ShaderNodeValToRGB': - color_ramp_settings(node, file, inner, node_var) - - elif node.bl_idname in curve_nodes: - curve_node_settings(node, file, inner, node_var) - if self.mode == 'ADDON': set_input_defaults(node, file, inner, node_var, addon_dir) else: diff --git a/utils.py b/utils.py index 5103827..15fe3e8 100644 --- a/utils.py +++ b/utils.py @@ -19,6 +19,7 @@ class ST(Enum): Settings Types """ ENUM = auto() + ENUM_SET = auto() STRING = auto() BOOL = auto() INT = auto() @@ -298,6 +299,8 @@ def set_settings_defaults(node: bpy.types.Node, setting_str = f"{inner}{node_var}.{setting}" if type == ST.ENUM: file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") + elif type == ST.ENUM_SET: + file.write(f"{setting_str} = {attr}\n") elif type == ST.STRING: file.write(f"{setting_str} = {str_to_py_str(attr)}\n") elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: @@ -320,6 +323,10 @@ def set_settings_defaults(node: bpy.types.Node, file.write((f"{inner}if {name} in bpy.data.objects:\n")) file.write((f"{inner}\t{node_var}.{setting} = " f"bpy.data.objects[{name}]\n")) + elif type == ST.COLOR_RAMP: + color_ramp_settings(node, file, inner, node_var, setting) + elif type == ST.CURVE_MAPPING: + curve_mapping_settings(node, file, inner, node_var, setting) def hide_sockets(node: bpy.types.Node, file: TextIO, @@ -427,7 +434,8 @@ def group_io_settings(node: bpy.types.Node, def color_ramp_settings(node: bpy.types.Node, file: TextIO, inner: str, - node_var: str + node_var: str, + color_ramp_name: str ) -> None: """ Replicate a color ramp node @@ -437,43 +445,51 @@ def color_ramp_settings(node: bpy.types.Node, file (TextIO): file we're generating the add-on into inner (str): indentation node_var (str): name of the variable we're using for the color ramp + color_ramp_name (str): name of the color ramp to be copied """ - color_ramp = node.color_ramp + color_ramp: bpy.types.ColorRamp = getattr(node, color_ramp_name) + if not color_ramp: + raise ValueError(f"No color ramp named \"{color_ramp_name}\" found") + #settings + ramp_str = f"{inner}{node_var}.{color_ramp_name}" + color_mode = enum_to_py_str(color_ramp.color_mode) - file.write(f"{inner}{node_var}.color_ramp.color_mode = {color_mode}\n") + file.write(f"{ramp_str}.color_mode = {color_mode}\n") hue_interpolation = enum_to_py_str(color_ramp.hue_interpolation) - file.write((f"{inner}{node_var}.color_ramp.hue_interpolation = " + file.write((f"{ramp_str}.hue_interpolation = " f"{hue_interpolation}\n")) interpolation = enum_to_py_str(color_ramp.interpolation) - file.write((f"{inner}{node_var}.color_ramp.interpolation " + file.write((f"{ramp_str}.interpolation " f"= {interpolation}\n")) file.write("\n") #key points - file.write((f"{inner}{node_var}.color_ramp.elements.remove" - f"({node_var}.color_ramp.elements[0])\n")) + file.write(f"{inner}#initialize color ramp elements\n") + file.write((f"{ramp_str}.elements.remove" + f"({ramp_str}.elements[0])\n")) for i, element in enumerate(color_ramp.elements): element_var = f"{node_var}_cre_{i}" if i == 0: file.write(f"{inner}{element_var} = " - f"{node_var}.color_ramp.elements[{i}]\n") + f"{ramp_str}.elements[{i}]\n") file.write(f"{inner}{element_var}.position = {element.position}\n") else: file.write((f"{inner}{element_var} = " - f"{node_var}.color_ramp.elements" + f"{ramp_str}.elements" f".new({element.position})\n")) file.write((f"{inner}{element_var}.alpha = " f"{element.alpha}\n")) color_str = vec4_to_py_str(element.color) file.write((f"{inner}{element_var}.color = {color_str}\n\n")) -def curve_node_settings(node: bpy.types.Node, +def curve_mapping_settings(node: bpy.types.Node, file: TextIO, inner: str, - node_var: str + node_var: str, + curve_mapping_name: str ) -> None: """ Sets defaults for Float, Vector, and Color curves @@ -483,16 +499,16 @@ def curve_node_settings(node: bpy.types.Node, file (TextIO): file we're generating the add-on into inner (str): indentation node_var (str): variable name for the add-on's curve node + curve_mapping_name (str): name of the curve mapping to be set """ - if node.bl_idname == 'CompositorNodeTime': - mapping = node.curve #TODO: ask for consistency here? - else: - mapping = node.mapping + mapping = getattr(node, curve_mapping_name) + if not mapping: + raise ValueError(f"Curve mapping \"{curve_mapping_name}\" not found in node \"{node.bl_idname}\"") #mapping settings file.write(f"{inner}#mapping settings\n") - mapping_var = f"{inner}{node_var}.mapping" + mapping_var = f"{inner}{node_var}.{curve_mapping_name}" #extend extend = enum_to_py_str(mapping.extend) @@ -526,7 +542,8 @@ def curve_node_settings(node: bpy.types.Node, for i, curve in enumerate(mapping.curves): file.write(f"{inner}#curve {i}\n") curve_i = f"{node_var}_curve_{i}" - file.write((f"{inner}{curve_i} = {node_var}.mapping.curves[{i}]\n")) + file.write((f"{inner}{curve_i} = " + f"{node_var}.{curve_mapping_name}.curves[{i}]\n")) for j, point in enumerate(curve.points): point_j = f"{inner}{curve_i}_point_{j}" From cf38a9cc42d03626d3c8151b50d4657c89332c47 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 27 Aug 2023 15:40:08 -0500 Subject: [PATCH 109/286] style: better type hinting --- geo_nodes.py | 21 +++++++++++++++------ materials.py | 26 ++++++++++++++++++-------- utils.py | 14 +++++++------- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/geo_nodes.py b/geo_nodes.py index 50a4c58..9d403fb 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -542,7 +542,7 @@ def execute(self, context): create_header(file, nt.name) class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), - lower = False) + lower = False) #TODO: should probably be standardized name to class name util method init_operator(file, class_name, nt_var, nt.name) file.write("\tdef execute(self, context):\n") else: @@ -557,7 +557,18 @@ def execute(self, context): #dictionary to keep track of variables->usage count pairs used_vars: dict[str, int] = {} - def process_geo_nodes_group(node_tree, level, node_vars, used_vars): + def process_geo_nodes_group(node_tree: bpy.types.NodeTree, + level: int, + ) -> None: + """ + Generates a Python function to recreate a node tree + + Parameters: + node_tree (bpy.types.NodeTree): node tree to be recreated + level (int): number of tabs to use for each line, used with + node groups within node groups and script/add-on differences + """ + nt_var = create_var(node_tree.name, used_vars) outer, inner = make_indents(level) @@ -583,14 +594,12 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): if node.bl_idname == 'GeometryNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: - process_geo_nodes_group(node_nt, level + 1, node_vars, - used_vars) + process_geo_nodes_group(node_nt, level + 1) node_trees.add(node_nt) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: group_io_settings(node, file, inner, "input", nt_var, node_tree) inputs_set = True - elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: group_io_settings(node, file, inner, "output", nt_var, node_tree) @@ -673,7 +682,7 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars): level = 2 else: level = 0 - process_geo_nodes_group(nt, level, node_vars, used_vars) + process_geo_nodes_group(nt, level) def apply_modifier(): #get object diff --git a/materials.py b/materials.py index 2cfab43..de3ad30 100644 --- a/materials.py +++ b/materials.py @@ -338,13 +338,13 @@ def create_material(indent: str): create_material("") #set to keep track of already created node trees - node_trees = set() + node_trees: set[bpy.types.NodeTree] = set() #dictionary to keep track of node->variable name pairs - node_vars = {} + node_vars: dict[bpy.types.Node, str] = {} - #keeps track of all used variables - used_vars = {} + #keeps track of all used base vareiable names and usage counts + used_vars: dict[str, int] = {} def is_outermost_node_group(level: int) -> bool: if self.mode == 'ADDON' and level == 2: @@ -353,7 +353,18 @@ def is_outermost_node_group(level: int) -> bool: return True return False - def process_mat_node_group(node_tree, level, node_vars, used_vars): + def process_mat_node_group(node_tree: bpy.types.NodeTree, + level: int + ) -> None: + """ + Generates a Python function to recreate a node tree + + Parameters: + node_tree (bpy.types.NodeTree): node tree to be recreated + level (int): number of tabs to use for each line, used with + node groups within node groups and script/add-on differences + """ + if is_outermost_node_group(level): nt_var = create_var(self.material_name, used_vars) nt_name = self.material_name @@ -392,8 +403,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): if node.bl_idname == 'ShaderNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in node_trees: - process_mat_node_group(node_nt, level + 1, node_vars, - used_vars) + process_mat_node_group(node_nt, level + 1) node_trees.add(node_nt) node_var = create_node(node, file, inner, nt_var, node_vars, @@ -440,7 +450,7 @@ def process_mat_node_group(node_tree, level, node_vars, used_vars): level = 2 else: level = 0 - process_mat_node_group(nt, level, node_vars, used_vars) + process_mat_node_group(nt, level) if self.mode == 'ADDON': file.write("\t\treturn {'FINISHED'}\n\n") diff --git a/utils.py b/utils.py index 15fe3e8..fc07b45 100644 --- a/utils.py +++ b/utils.py @@ -7,7 +7,7 @@ import shutil from typing import TextIO, Tuple -image_dir_name = "imgs" +IMAGE_DIR_NAME = "imgs" #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketGeometry', @@ -189,13 +189,13 @@ def init_operator(file: TextIO, name: str, idname: str, label: str) -> None: file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") file.write("\n") -def create_var(name: str, used_vars: dict) -> str: +def create_var(name: str, used_vars: dict[str, int]) -> str: """ Creates a unique variable name for a node tree Parameters: name (str): basic string we'd like to create the variable name out of - used_vars (dict): dictionary containing variable names and usage counts + used_vars (dict[str, int]): dictionary containing variable names and usage counts Returns: clean_name (str): variable name for the node tree @@ -235,7 +235,7 @@ def create_node(node: bpy.types.Node, inner: str, node_tree_var: str, node_vars: dict[bpy.types.Node, str], - used_vars: set #necessary? + used_vars: dict[str, int] ) -> str: """ Initializes a new node with location, dimension, and label info @@ -247,7 +247,7 @@ def create_node(node: bpy.types.Node, node_tree_var (str): variable name for the node tree node_vars (dict): dictionary containing Node to corresponding variable name pairs - used_vars (set): set of used variable names + used_vars dict[str, int]: dictionary of base variable names to usage counts Returns: node_var (str): variable name for the node @@ -867,7 +867,7 @@ def save_image(img: bpy.types.Image, addon_dir: str) -> None: return #create image dir if one doesn't exist - img_dir = os.path.join(addon_dir, image_dir_name) + img_dir = os.path.join(addon_dir, IMAGE_DIR_NAME) if not os.path.exists(img_dir): os.mkdir(img_dir) @@ -901,7 +901,7 @@ def load_image(img: bpy.types.Image, file.write((f"{inner}base_dir = " f"os.path.dirname(os.path.abspath(__file__))\n")) file.write((f"{inner}image_path = " - f"os.path.join(base_dir, \"{image_dir_name}\", " + f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " f"\"{img_str}\")\n")) file.write((f"{inner}{img_var} = " f"bpy.data.images.load(image_path, check_existing = True)\n")) From c4e43d41f3763a807c880e53e29fa9101fa8da78 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 27 Aug 2023 16:01:25 -0500 Subject: [PATCH 110/286] feat: basic compositor node tree regeneration --- compositor.py | 5 +++-- materials.py | 10 ++++++---- utils.py | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/compositor.py b/compositor.py index beac3cc..5932e64 100644 --- a/compositor.py +++ b/compositor.py @@ -44,7 +44,8 @@ 'CompositorNodeRLayers' : [("layer", ST.ENUM), ("scene", ST.SCENE)], - 'CompositorNodeRGB' : [], + 'CompositorNodeRGB' : [], #TODO: add output to output handler + #Maybe just make setting handler handle defaults? 'CompositorNodeSceneTime' : [], @@ -268,7 +269,7 @@ ("use_max", ST.BOOL), ("use_min", ST.BOOL)], #why are all these vectors?? TODO: check to make sure it doesn't flip - 'CompositorNodeNormal' : [], + 'CompositorNodeNormal' : [], #TODO: output :( 'CompositorNodeNormalize' : [], diff --git a/materials.py b/materials.py index de3ad30..1060cab 100644 --- a/materials.py +++ b/materials.py @@ -4,6 +4,8 @@ from .utils import * from io import StringIO +MAT_VAR = "mat" + #TODO: move to a json, different ones for each blender version? shader_node_settings : dict[str, list[(str, ST)]] = { # INPUT @@ -328,9 +330,9 @@ def execute(self, context): file = StringIO("") def create_material(indent: str): - file.write((f"{indent}mat = bpy.data.materials.new(" #TODO: see if using mat effects nodes named mat + file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" f"name = {str_to_py_str(self.material_name)})\n")) - file.write(f"{indent}mat.use_nodes = True\n") + file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") if self.mode == 'ADDON': create_material("\t\t") @@ -364,7 +366,7 @@ def process_mat_node_group(node_tree: bpy.types.NodeTree, level (int): number of tabs to use for each line, used with node groups within node groups and script/add-on differences """ - + if is_outermost_node_group(level): nt_var = create_var(self.material_name, used_vars) nt_name = self.material_name @@ -379,7 +381,7 @@ def process_mat_node_group(node_tree: bpy.types.NodeTree, file.write(f"{outer}def {nt_var}_node_group():\n") if is_outermost_node_group(level): #outermost node group - file.write(f"{inner}{nt_var} = mat.node_tree\n") + file.write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") file.write(f"{inner}#start with a clean node tree\n") file.write(f"{inner}for node in {nt_var}.nodes:\n") file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") diff --git a/utils.py b/utils.py index fc07b45..6668bb2 100644 --- a/utils.py +++ b/utils.py @@ -99,7 +99,7 @@ def vec1_to_py_str(vec1) -> str: Returns: (str): string representation of the vector """ - return f"({vec1[0]})" + return f"[{vec1[0]}]" def vec2_to_py_str(vec2) -> str: """ @@ -295,6 +295,7 @@ def set_settings_defaults(node: bpy.types.Node, for (setting, type) in settings[node.bl_idname]: attr = getattr(node, setting, None) if not attr: + print(f"\"{node_var}.{setting}\" not found") continue setting_str = f"{inner}{node_var}.{setting}" if type == ST.ENUM: From ba3e4cba55d34562b95a12c9336590002f7d8fac Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 27 Aug 2023 16:46:44 -0500 Subject: [PATCH 111/286] feat: compositor nodes output socket default value settings --- compositor.py | 9 ++++----- utils.py | 11 +++++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/compositor.py b/compositor.py index 5932e64..84580b9 100644 --- a/compositor.py +++ b/compositor.py @@ -44,8 +44,7 @@ 'CompositorNodeRLayers' : [("layer", ST.ENUM), ("scene", ST.SCENE)], - 'CompositorNodeRGB' : [], #TODO: add output to output handler - #Maybe just make setting handler handle defaults? + 'CompositorNodeRGB' : [], 'CompositorNodeSceneTime' : [], @@ -62,7 +61,7 @@ ("track_name", ST.STRING), #TODO: probably not right ("tracking_object", ST.STRING)], - 'CompositorNodeValue' : [], #TODO: double check that outputs set here + 'CompositorNodeValue' : [], # OUTPUT @@ -267,9 +266,9 @@ ("offset", ST.VEC1), ("size", ST.VEC1), ("use_max", ST.BOOL), - ("use_min", ST.BOOL)], #why are all these vectors?? TODO: check to make sure it doesn't flip + ("use_min", ST.BOOL)], - 'CompositorNodeNormal' : [], #TODO: output :( + 'CompositorNodeNormal' : [], 'CompositorNodeNormalize' : [], diff --git a/utils.py b/utils.py index 6668bb2..aebcd34 100644 --- a/utils.py +++ b/utils.py @@ -674,13 +674,16 @@ def set_output_defaults(node: bpy.types.Node, """ output_default_nodes = {'ShaderNodeValue', 'ShaderNodeRGB', - 'ShaderNodeNormal'} + 'ShaderNodeNormal', + 'CompositorNodeValue', + 'CompositorNodeRGB', + 'CompositorNodeNormal'} if node.bl_idname in output_default_nodes: - dv = node.outputs[0].default_value #TODO: see if this is still the case - if node.bl_idname == 'ShaderNodeRGB': + dv = node.outputs[0].default_value + if node.bl_idname in {'ShaderNodeRGB', 'CompositorNodeRGB'}: dv = vec4_to_py_str(list(dv)) - if node.bl_idname == 'ShaderNodeNormal': + if node.bl_idname in {'ShaderNodeNormal', 'CompositorNodeNormal'}: dv = vec3_to_py_str(dv) file.write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) From 0f4949708d76ea28231719988b5e0d9a6e0c1ded Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:51:51 -0500 Subject: [PATCH 112/286] fix: initialize scene after creating a name to prevent conflicts --- compositor.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/compositor.py b/compositor.py index 84580b9..b6487cf 100644 --- a/compositor.py +++ b/compositor.py @@ -476,10 +476,9 @@ def execute(self, context): file.write("\tdef execute(self, context):\n") else: file = StringIO("") + if self.is_scene: def create_scene(indent: str): - file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") #TODO: see if using scene as name effects nodes named scene - #TODO: wrap in more general unique name util function file.write(f"{indent}# Generate unique scene name\n") file.write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") @@ -491,6 +490,7 @@ def create_scene(indent: str): file.write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") file.write(f"{indent}\t\ti += 1\n\n") + file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") file.write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") file.write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") file.write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") @@ -516,8 +516,7 @@ def is_outermost_node_group(level: int) -> bool: return True return False - def process_comp_node_group(node_tree, level, node_vars, used_vars): - + def process_comp_node_group(node_tree, level, node_vars, used_vars): if is_outermost_node_group(level): nt_var = create_var(self.compositor_name, used_vars) nt_name = self.compositor_name From 12dcdbce533c70dade80b07680e03b1a6c36609d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:54:42 -0500 Subject: [PATCH 113/286] style: consistency of compositor names --- __init__.py | 2 +- compositor.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/__init__.py b/__init__.py index fc987da..a4bf342 100644 --- a/__init__.py +++ b/__init__.py @@ -42,7 +42,7 @@ def draw(self, context): compositor.NTPCompositorOperator, compositor.NTPCompositorScenesMenu, compositor.NTPCompositorGroupsMenu, - compositor.NTPCompositingPanel, + compositor.NTPCompositorPanel, geo_nodes.NTPGeoNodesOperator, geo_nodes.NTPGeoNodesMenu, geo_nodes.NTPGeoNodesPanel, diff --git a/compositor.py b/compositor.py index b6487cf..ef24c0e 100644 --- a/compositor.py +++ b/compositor.py @@ -667,7 +667,7 @@ def draw(self, context): op.compositor_name = node_group.name op.is_scene = False -class NTPCompositingPanel(bpy.types.Panel): +class NTPCompositorPanel(bpy.types.Panel): bl_label = "Compositor to Python" bl_idname = "NODE_PT_ntp_compositor" bl_space_type = 'NODE_EDITOR' From 6825040ce2117d2dd4eee03125190f1517f66130 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Sep 2023 19:03:29 -0500 Subject: [PATCH 114/286] refactor: images and image users now use settings function --- compositor.py | 12 +-- geo_nodes.py | 12 +-- materials.py | 11 +-- utils.py | 232 ++++++++++++++++++++++++++------------------------ 4 files changed, 131 insertions(+), 136 deletions(-) diff --git a/compositor.py b/compositor.py index ef24c0e..a28d01e 100644 --- a/compositor.py +++ b/compositor.py @@ -455,6 +455,7 @@ def execute(self, context): #set up names to use in generated addon comp_var = clean_string(self.compositor_name) + addon_dir = None if self.mode == 'ADDON': dir = bpy.path.abspath(context.scene.ntp_options.dir_path) if not dir or dir == "": @@ -562,7 +563,8 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): node_var = create_node(node, file, inner, nt_var, node_vars, used_vars) - set_settings_defaults(node, compositor_node_settings, file, inner, node_var) + set_settings_defaults(node, compositor_node_settings, file, + addon_dir, inner, node_var) hide_sockets(node, file, inner, node_var) if node.bl_idname == 'CompositorNodeGroup': @@ -577,14 +579,6 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: group_io_settings(node, file, inner, "output", nt_var, node_tree) outputs_set = True - - # elif node.bl_idname in image_nodes and self.mode == 'ADDON': - # img = node.image - # if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: - # save_image(img, addon_dir) - # load_image(img, file, inner, f"{node_var}.image") - # image_user_settings(node, file, inner, node_var) - if self.mode == 'ADDON': set_input_defaults(node, file, inner, node_var, addon_dir) else: diff --git a/geo_nodes.py b/geo_nodes.py index 9d403fb..c5502d6 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -523,6 +523,7 @@ def execute(self, context): #set up names to use in generated addon nt_var = clean_string(nt.name) + addon_dir = None if self.mode == 'ADDON': #find base directory to save new addon dir = bpy.path.abspath(context.scene.ntp_options.dir_path) @@ -608,8 +609,8 @@ def process_geo_nodes_group(node_tree: bpy.types.NodeTree, #create node node_var = create_node(node, file, inner, nt_var, node_vars, used_vars) - set_settings_defaults(node, geo_node_settings, file, inner, - node_var) + set_settings_defaults(node, geo_node_settings, file, addon_dir, + inner, node_var) hide_sockets(node, file, inner, node_var) if node.bl_idname == 'GeometryNodeGroup': @@ -635,13 +636,6 @@ def process_geo_nodes_group(node_tree: bpy.types.NodeTree, attr_domain = enum_to_py_str(si.attribute_domain) file.write((f"{inner}{si_var}.attribute_domain = " f"{attr_domain}\n")) - """ - elif node.bl_idname in image_nodes and self.mode == 'ADDON': - img = node.image - if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: - save_image(img, addon_dir) - load_image(img, file, inner, f"{node_var}.image") - """ if node.bl_idname != 'GeometryNodeSimulationInput': if self.mode == 'ADDON': set_input_defaults(node, file, inner, node_var, addon_dir) diff --git a/materials.py b/materials.py index 1060cab..1566ce4 100644 --- a/materials.py +++ b/materials.py @@ -307,6 +307,7 @@ def execute(self, context): #set up names to use in generated addon mat_var = clean_string(self.material_name) + addon_dir = None if self.mode == 'ADDON': dir = bpy.path.abspath(context.scene.ntp_options.dir_path) if not dir or dir == "": @@ -411,7 +412,8 @@ def process_mat_node_group(node_tree: bpy.types.NodeTree, node_var = create_node(node, file, inner, nt_var, node_vars, used_vars) - set_settings_defaults(node, shader_node_settings, file, inner, node_var) + set_settings_defaults(node, shader_node_settings, file, + addon_dir, inner, node_var) hide_sockets(node, file, inner, node_var) if node.bl_idname == 'ShaderNodeGroup': @@ -427,13 +429,6 @@ def process_mat_node_group(node_tree: bpy.types.NodeTree, group_io_settings(node, file, inner, "output", nt_var, node_tree) outputs_set = True - elif node.bl_idname in image_nodes and self.mode == 'ADDON': - img = node.image - if img is not None and img.source in {'FILE', 'GENERATED', 'TILED'}: - save_image(img, addon_dir) - load_image(img, file, inner, f"{node_var}.image") - image_user_settings(node, file, inner, node_var) - if self.mode == 'ADDON': set_input_defaults(node, file, inner, node_var, addon_dir) else: diff --git a/utils.py b/utils.py index aebcd34..2360636 100644 --- a/utils.py +++ b/utils.py @@ -18,6 +18,7 @@ class ST(Enum): """ Settings Types """ + # Primitives ENUM = auto() ENUM_SET = auto() STRING = auto() @@ -28,13 +29,20 @@ class ST(Enum): VEC2 = auto() VEC3 = auto() VEC4 = auto() - MATERIAL = auto() #Could use a look - OBJECT = auto() #Could take a looking at + + # Special settings + COLOR_RAMP = auto() + CURVE_MAPPING = auto() + + # Asset Library + MATERIAL = auto() # Handle with asset library + OBJECT = auto() # Handle with asset library + + # Image IMAGE = auto() #needs refactor - IMAGE_USER = auto() #unimplemented + IMAGE_USER = auto() #needs refactor MOVIE_CLIP = auto() #unimplmented - COLOR_RAMP = auto() #needs refactor - CURVE_MAPPING = auto() #needs refactor + TEXTURE = auto() #unimplemented TEXT = auto() #unimplemented SCENE = auto() #unimplemented @@ -277,7 +285,8 @@ def create_node(node: bpy.types.Node, def set_settings_defaults(node: bpy.types.Node, settings: dict[str, list[(str, ST)]], - file: TextIO, + file: TextIO, + addon_dir: str, inner: str, node_var: str ) -> None: @@ -288,16 +297,17 @@ def set_settings_defaults(node: bpy.types.Node, node (bpy.types.Node): the node object we're copying settings from settings (dict): a predefined dictionary of all settings every node has file (TextIO): file we're generating the add-on into + addon_dir (str): directory that the addon is saved into inner (str): indentation node_var (str): name of the variable we're using for the node in our add-on """ if node.bl_idname in settings: - for (setting, type) in settings[node.bl_idname]: - attr = getattr(node, setting, None) + for (attr_name, type) in settings[node.bl_idname]: + attr = getattr(node, attr_name, None) if not attr: - print(f"\"{node_var}.{setting}\" not found") + print(f"\"{node_var}.{attr_name}\" not found") continue - setting_str = f"{inner}{node_var}.{setting}" + setting_str = f"{inner}{node_var}.{attr_name}" if type == ST.ENUM: file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") elif type == ST.ENUM_SET: @@ -317,17 +327,24 @@ def set_settings_defaults(node: bpy.types.Node, elif type == ST.MATERIAL: name = str_to_py_str(attr.name) file.write((f"{inner}if {name} in bpy.data.materials:\n")) - file.write((f"{inner}\t{node_var}.{setting} = " + file.write((f"{inner}\t{node_var}.{attr_name} = " f"bpy.data.materials[{name}]\n")) elif type == ST.OBJECT: name = str_to_py_str(attr.name) file.write((f"{inner}if {name} in bpy.data.objects:\n")) - file.write((f"{inner}\t{node_var}.{setting} = " + file.write((f"{inner}\t{node_var}.{attr_name} = " f"bpy.data.objects[{name}]\n")) elif type == ST.COLOR_RAMP: - color_ramp_settings(node, file, inner, node_var, setting) + color_ramp_settings(node, file, inner, node_var, attr_name) elif type == ST.CURVE_MAPPING: - curve_mapping_settings(node, file, inner, node_var, setting) + curve_mapping_settings(node, file, inner, node_var, attr_name) + elif type == ST.IMAGE: + if addon_dir is not None and attr is not None: + if attr.source in {'FILE', 'GENERATED', 'TILED'}: + save_image(attr, addon_dir) + load_image(attr, file, inner, f"{node_var}.{attr_name}") + elif type == ST.IMAGE_USER: + image_user_settings(attr, file, inner, f"{node_var}.{attr_name}") def hide_sockets(node: bpy.types.Node, file: TextIO, @@ -563,6 +580,96 @@ def curve_mapping_settings(node: bpy.types.Node, file.write(f"{inner}#update curve after changes\n") file.write(f"{mapping_var}.update()\n") +def save_image(img: bpy.types.Image, addon_dir: str) -> None: + """ + Saves an image to an image directory of the add-on + + Parameters: + img (bpy.types.Image): image to be saved + addon_dir (str): directory of the addon + """ + + if img is None: + return + + #create image dir if one doesn't exist + img_dir = os.path.join(addon_dir, IMAGE_DIR_NAME) + if not os.path.exists(img_dir): + os.mkdir(img_dir) + + #save the image + img_str = img_to_py_str(img) + img_path = f"{img_dir}/{img_str}" + if not os.path.exists(img_path): + img.save_render(img_path) + +def load_image(img: bpy.types.Image, + file: TextIO, + inner: str, + img_var: str + ) -> None: + """ + Loads an image from the add-on into a blend file and assigns it + + Parameters: + img (bpy.types.Image): Blender image from the original node group + file (TextIO): file for the generated add-on + inner (str): indentation string + img_var (str): variable name to be used for the image + """ + + if img is None: + return + + img_str = img_to_py_str(img) + + #TODO: convert to special variables + file.write(f"{inner}#load image {img_str}\n") + file.write((f"{inner}base_dir = " + f"os.path.dirname(os.path.abspath(__file__))\n")) + file.write((f"{inner}image_path = " + f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " + f"\"{img_str}\")\n")) + file.write((f"{inner}{img_var} = " + f"bpy.data.images.load(image_path, check_existing = True)\n")) + + #copy image settings + file.write(f"{inner}#set image settings\n") + + #source + source = enum_to_py_str(img.source) + file.write(f"{inner}{img_var}.source = {source}\n") + + #color space settings + color_space = enum_to_py_str(img.colorspace_settings.name) + file.write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") + + #alpha mode + alpha_mode = enum_to_py_str(img.alpha_mode) + file.write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") + +def image_user_settings(img_user: bpy.types.ImageUser, + file: TextIO, + inner: str, + img_user_var: str + ) -> None: + """ + Replicate the image user of an image node + + Parameters + img_usr (bpy.types.ImageUser): image user to be copied + file (TextIO): file we're generating the add-on into + inner (str): indentation + img_usr_var (str): variable name for the generated image user + """ + + img_usr_attrs = ["frame_current", "frame_duration", "frame_offset", + "frame_start", "tile", "use_auto_refresh", "use_cyclic"] + + for img_usr_attr in img_usr_attrs: + file.write((f"{inner}{img_user_var}.{img_usr_attr} = " + f"{getattr(img_user, img_usr_attr)}\n")) + def set_input_defaults(node: bpy.types.Node, file: TextIO, inner: str, @@ -857,102 +964,7 @@ def create_main_func(file: TextIO) -> None: """ file.write("if __name__ == \"__main__\":\n") file.write("\tregister()") - -def save_image(img: bpy.types.Image, addon_dir: str) -> None: - """ - Saves an image to an image directory of the add-on - - Parameters: - img (bpy.types.Image): image to be saved - addon_dir (str): directory of the addon - """ - - if img is None: - return - - #create image dir if one doesn't exist - img_dir = os.path.join(addon_dir, IMAGE_DIR_NAME) - if not os.path.exists(img_dir): - os.mkdir(img_dir) - - #save the image - img_str = img_to_py_str(img) - img_path = f"{img_dir}/{img_str}" - if not os.path.exists(img_path): - img.save_render(img_path) - -def load_image(img: bpy.types.Image, - file: TextIO, - inner: str, - img_var: str - ) -> None: - """ - Loads an image from the add-on into a blend file and assigns it - - Parameters: - img (bpy.types.Image): Blender image from the original node group - file (TextIO): file for the generated add-on - inner (str): indentation string - img_var (str): variable name to be used for the image - """ - - if img is None: - return - - img_str = img_to_py_str(img) - - file.write(f"{inner}#load image {img_str}\n") - file.write((f"{inner}base_dir = " - f"os.path.dirname(os.path.abspath(__file__))\n")) - file.write((f"{inner}image_path = " - f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " - f"\"{img_str}\")\n")) - file.write((f"{inner}{img_var} = " - f"bpy.data.images.load(image_path, check_existing = True)\n")) - - #copy image settings - file.write(f"{inner}#set image settings\n") - - #source - source = enum_to_py_str(img.source) - file.write(f"{inner}{img_var}.source = {source}\n") - - #color space settings - color_space = enum_to_py_str(img.colorspace_settings.name) - file.write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") - - #alpha mode - alpha_mode = enum_to_py_str(img.alpha_mode) - file.write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") - -def image_user_settings(node: bpy.types.Node, - file: TextIO, - inner: str, - node_var: str - ) -> None: - """ - Replicate the image user of an image node - - Parameters - node (bpy.types.Node): node object we're copying settings from - file (TextIO): file we're generating the add-on into - inner (str): indentation - node_var (str): name of the variable we're using for the color ramp - """ - - if not hasattr(node, "image_user"): - raise ValueError("Node must have attribute \"image_user\"") - - img_usr = node.image_user - img_usr_var = f"{node_var}.image_user" - - img_usr_attrs = ["frame_current", "frame_duration", "frame_offset", - "frame_start", "tile", "use_auto_refresh", "use_cyclic"] - - for img_usr_attr in img_usr_attrs: - file.write((f"{inner}{img_usr_var}.{img_usr_attr} = " - f"{getattr(img_usr, img_usr_attr)}\n")) - + def zip_addon(zip_dir: str) -> None: """ Zips up the addon and removes the directory From f12189d809bc1154a17a53a3942521a24dbce1d6 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Sep 2023 19:15:45 -0500 Subject: [PATCH 115/286] typo: material used_vars comment --- materials.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/materials.py b/materials.py index 1566ce4..75be899 100644 --- a/materials.py +++ b/materials.py @@ -346,7 +346,7 @@ def create_material(indent: str): #dictionary to keep track of node->variable name pairs node_vars: dict[bpy.types.Node, str] = {} - #keeps track of all used base vareiable names and usage counts + #keeps track of all used base variable names and usage counts used_vars: dict[str, int] = {} def is_outermost_node_group(level: int) -> bool: From 0921c25d580e27321c48ad79b210c72a592937b5 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 9 Sep 2023 18:31:58 -0500 Subject: [PATCH 116/286] fix: hue correction node removes excess points --- utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/utils.py b/utils.py index 2360636..ce6658d 100644 --- a/utils.py +++ b/utils.py @@ -562,6 +562,14 @@ def curve_mapping_settings(node: bpy.types.Node, curve_i = f"{node_var}_curve_{i}" file.write((f"{inner}{curve_i} = " f"{node_var}.{curve_mapping_name}.curves[{i}]\n")) + + # Remove default points when CurveMap is initialized with more than + # two points (just CompositorNodeHueCorrect) + if (node.bl_idname == 'CompositorNodeHueCorrect'): + file.write((f"{inner}for i in " + f"range(len({curve_i}.points.values()) - 1, 1, -1):\n")) + file.write(f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") + for j, point in enumerate(curve.points): point_j = f"{inner}{curve_i}_point_{j}" From e5da19622cfbf0182febff037af5f9e287547c97 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 9 Sep 2023 19:06:33 -0500 Subject: [PATCH 117/286] fix: 0 settings now initialized --- compositor.py | 4 ++-- utils.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/compositor.py b/compositor.py index a28d01e..385c4bd 100644 --- a/compositor.py +++ b/compositor.py @@ -314,8 +314,8 @@ ("frame_duration", ST.INT), ("frame_offset", ST.INT), ("frame_start", ST.INT), - ("has_layers", ST.BOOL), #TODO: readonly? - ("has_views", ST.BOOL), #TODO: readonly? + #("has_layers", ST.BOOL), #TODO: readonly? + #("has_views", ST.BOOL), #TODO: readonly? ("image", ST.IMAGE), ("layer", ST.ENUM), ("layer_name", ST.ENUM), diff --git a/utils.py b/utils.py index ce6658d..71a1334 100644 --- a/utils.py +++ b/utils.py @@ -304,12 +304,13 @@ def set_settings_defaults(node: bpy.types.Node, if node.bl_idname in settings: for (attr_name, type) in settings[node.bl_idname]: attr = getattr(node, attr_name, None) - if not attr: + if attr is None: print(f"\"{node_var}.{attr_name}\" not found") continue setting_str = f"{inner}{node_var}.{attr_name}" if type == ST.ENUM: - file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") + if attr != '': + file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") elif type == ST.ENUM_SET: file.write(f"{setting_str} = {attr}\n") elif type == ST.STRING: From d90b6d80a86ccdb7bcd93f4cc319586089fc266a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 9 Sep 2023 20:27:32 -0500 Subject: [PATCH 118/286] fix: color balance now only initializes needed members --- compositor.py | 37 ++++++++++++++++++++++++++----------- utils.py | 15 +++++++++++++++ 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/compositor.py b/compositor.py index 385c4bd..1bc537f 100644 --- a/compositor.py +++ b/compositor.py @@ -92,19 +92,19 @@ 'CompositorNodeBrightContrast' : [("use_premultiply", ST.BOOL)], 'CompositorNodeColorBalance' : [("correction_method", ST.ENUM), - ("gain", ST.VEC3), - ("gamma", ST.VEC3), - ("lift", ST.VEC3), - ("offset", ST.VEC3), + ("gain", ST.COLOR), + ("gamma", ST.COLOR), + ("lift", ST.COLOR), + ("offset", ST.COLOR), ("offset_basis", ST.FLOAT), - ("power", ST.VEC3), - ("slope", ST.VEC3)], + ("power", ST.COLOR), + ("slope", ST.COLOR)], 'CompositorNodeColorCorrection' : [("blue", ST.BOOL), ("green", ST.BOOL), ("highlights_contrast", ST.FLOAT), ("highlights_gain", ST.FLOAT), - ("midtones_lift", ST.FLOAT), + ("midtones_lift", ST.FLOAT), ("midtones_saturation", ST.FLOAT), ("midtones_start", ST.FLOAT), ("red", ST.BOOL), @@ -309,7 +309,7 @@ ("unspill_red", ST.FLOAT), ("use_unspill", ST.BOOL)], - 'CompositorNodeCryptomatteV2' : [("add", ST.VEC3), + 'CompositorNodeCryptomatteV2' : [("add", ST.COLOR), ("entries", ST.CRYPTOMATTE_ENTRIES), ("frame_duration", ST.INT), ("frame_offset", ST.INT), @@ -320,16 +320,16 @@ ("layer", ST.ENUM), ("layer_name", ST.ENUM), ("matte_id", ST.STRING), - ("remove", ST.VEC3), + ("remove", ST.COLOR), ("scene", ST.SCENE), ("source", ST.ENUM), ("use_auto_refresh", ST.BOOL), ("use_cyclic", ST.BOOL), ("view", ST.ENUM)], - 'CompositorNodeCryptomatte' : [("add", ST.VEC3), #TODO: may need special handling + 'CompositorNodeCryptomatte' : [("add", ST.COLOR), #TODO: may need special handling ("matte_id", ST.STRING), - ("remove", ST.VEC3)], + ("remove", ST.COLOR)], 'CompositorNodeDiffMatte' : [("falloff", ST.FLOAT), ("tolerance", ST.FLOAT)], @@ -563,6 +563,21 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): node_var = create_node(node, file, inner, nt_var, node_vars, used_vars) + if node.bl_idname == 'CompositorNodeColorBalance': + if node.correction_method == 'LIFT_GAMMA_GAIN': + lst = [("correction_method", ST.ENUM), + ("gain", ST.COLOR), + ("gamma", ST.COLOR), + ("lift", ST.COLOR)] + else: + lst = [("correction_method", ST.ENUM), + ("offset", ST.COLOR), + ("offset_basis", ST.FLOAT), + ("power", ST.COLOR), + ("slope", ST.COLOR)] + + compositor_node_settings['CompositorNodeColorBalance'] = lst + set_settings_defaults(node, compositor_node_settings, file, addon_dir, inner, node_var) hide_sockets(node, file, inner, node_var) diff --git a/utils.py b/utils.py index 71a1334..a2b0cf6 100644 --- a/utils.py +++ b/utils.py @@ -29,6 +29,7 @@ class ST(Enum): VEC2 = auto() VEC3 = auto() VEC4 = auto() + COLOR = auto() # Special settings COLOR_RAMP = auto() @@ -145,6 +146,18 @@ def vec4_to_py_str(vec4) -> str: """ return f"({vec4[0]}, {vec4[1]}, {vec4[2]}, {vec4[3]})" +def color_to_py_str(color: mathutils.Color) -> str: + """ + Converts a mathutils.Color into a string + + Parameters: + color (mathutils.Color): a Blender color + + Returns: + (str): string version + """ + return f"mathutils.Color(({color.r}, {color.g}, {color.b}))" + def img_to_py_str(img : bpy.types.Image) -> str: """ Converts a Blender image into its string @@ -325,6 +338,8 @@ def set_settings_defaults(node: bpy.types.Node, file.write(f"{setting_str} = {vec3_to_py_str(attr)}\n") elif type == ST.VEC4: file.write(f"{setting_str} = {vec4_to_py_str(attr)}\n") + elif type == ST.COLOR: + file.write(f"{setting_str} = {color_to_py_str(attr)}\n") elif type == ST.MATERIAL: name = str_to_py_str(attr.name) file.write((f"{inner}if {name} in bpy.data.materials:\n")) From 6e18e33ae8d7cc92a364bad7cc35247995fd7f9e Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 9 Sep 2023 20:39:46 -0500 Subject: [PATCH 119/286] fix: add missing color correction attributes --- compositor.py | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/compositor.py b/compositor.py index 1bc537f..6ff9e03 100644 --- a/compositor.py +++ b/compositor.py @@ -100,19 +100,36 @@ ("power", ST.COLOR), ("slope", ST.COLOR)], - 'CompositorNodeColorCorrection' : [("blue", ST.BOOL), - ("green", ST.BOOL), - ("highlights_contrast", ST.FLOAT), - ("highlights_gain", ST.FLOAT), - ("midtones_lift", ST.FLOAT), + 'CompositorNodeColorCorrection' : [("red", ST.BOOL), + ("green", ST.BOOL), + ("blue", ST.BOOL), + #master + ("master_saturation", ST.FLOAT), + ("master_contrast", ST.FLOAT), + ("master_gamma", ST.FLOAT), + ("master_gain", ST.FLOAT), + ("master_lift", ST.FLOAT), + #highlights + ("highlights_saturation", ST.FLOAT), + ("highlights_contrast", ST.FLOAT), + ("highlights_gamma", ST.FLOAT), + ("highlights_gain", ST.FLOAT), + ("highlights_lift", ST.FLOAT), + #midtones ("midtones_saturation", ST.FLOAT), - ("midtones_start", ST.FLOAT), - ("red", ST.BOOL), - ("shadows_contrast", ST.FLOAT), - ("shadows_gain", ST.FLOAT), - ("shadows_gamma", ST.FLOAT), - ("shadows_lift", ST.FLOAT), - ("shadows_saturation", ST.FLOAT)], + ("midtones_contrast", ST.FLOAT), + ("midtones_gamma", ST.FLOAT), + ("midtones_gain", ST.FLOAT), + ("midtones_lift", ST.FLOAT), + #shadows + ("shadows_saturation", ST.FLOAT), + ("shadows_contrast", ST.FLOAT), + ("shadows_gamma", ST.FLOAT), + ("shadows_gain", ST.FLOAT), + ("shadows_lift", ST.FLOAT), + #midtones location + ("midtones_start", ST.FLOAT), + ("midtones_end", ST.FLOAT)], 'CompositorNodeExposure' : [], From 9a2388363201325551660ef7fc94ba86dc390902 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 10 Sep 2023 03:02:46 -0500 Subject: [PATCH 120/286] docs: add downloads badge to README --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index e82bbb8..1edd431 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,7 +2,7 @@ ![Node To Python Logo](./img/ntp.jpg "Node To Python Logo") -[![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ![](https://img.shields.io/github/downloads/BrendanParmer/NodeToPython/total.svg) ## About A Blender add-on to create scripts and add-ons! This add-on will take your Geometry Nodes or Materials and convert them into legible Python code. From 1c8f39ca70fc010a42ffd50686d9cb1a64301bde Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 10 Sep 2023 17:32:55 -0500 Subject: [PATCH 121/286] refactor: started geo node refactor, broke operator into more functions --- compositor.py | 2 +- geo_nodes.py | 398 ++++++++++++++++++++++++++++---------------------- materials.py | 2 +- utils.py | 2 +- 4 files changed, 226 insertions(+), 178 deletions(-) diff --git a/compositor.py b/compositor.py index 6ff9e03..bb4d1e0 100644 --- a/compositor.py +++ b/compositor.py @@ -597,7 +597,7 @@ def process_comp_node_group(node_tree, level, node_vars, used_vars): set_settings_defaults(node, compositor_node_settings, file, addon_dir, inner, node_var) - hide_sockets(node, file, inner, node_var) + hide_hidden_sockets(node, file, inner, node_var) if node.bl_idname == 'CompositorNodeGroup': if node.node_tree is not None: diff --git a/geo_nodes.py b/geo_nodes.py index c5502d6..8de5d60 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -501,21 +501,222 @@ ("type", ST.ENUM)] } +class NTP_GeoNodeTree: + def __init__(self, node_tree: bpy.types.GeometryNodeTree, var_name: str): + self.node_tree: bpy.types.GeometryNodeTree = node_tree + self.var_name: str = var_name + + self.inputs_set: bool = False + self.outputs_set: bool = False + self.sim_inputs: list[bpy.types.GeometryNodeSimulationInput] = [] + +class NTP_GeoNode: + def __init__(self, node: bpy.types.GeometryNode, var_name: str): + self.node = node + self.var_name = var_name + class NTPGeoNodesOperator(bpy.types.Operator): bl_idname = "node.ntp_geo_nodes" bl_label = "Geo Nodes to Python" bl_options = {'REGISTER', 'UNDO'} - mode : bpy.props.EnumProperty( + mode: bpy.props.EnumProperty( name = "Mode", items = [ ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") + ('ADDON', "Addon", "Create a full addon") ] ) geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") + def __init__(self): + # File/string the add-on/script is generated into + self._file: TextIO = None + + # Path to the directory of the zip file + self._zip_dir: str = None + + # Path to the directory for the generated addon + self._addon_dir: str = None + + # Set to keep track of already created node trees + self._node_trees: set[bpy.types.NodeTree] = set() + + # Dictionary to keep track of node->variable name pairs + self._node_vars: dict[bpy.types.Node, str] = {} + + # Dictionary to keep track of variables->usage count pairs + self._used_vars: dict[str, int] = {} + + def _setup_addon_directories(self, context: bpy.types.Context, nt_var: str): + #find base directory to save new addon + dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blend file before using " + "NodeToPython!")) #TODO: Still valid?? + return {'CANCELLED'} + + self._zip_dir = os.path.join(dir, nt_var) + self._addon_dir = os.path.join(self._zip_dir, nt_var) + + if not os.path.exists(self._addon_dir): + os.makedirs(self._addon_dir) + + def _process_geo_node_group_node(self, node: bpy.types.GeometryNodeGroup, + level: int, inner: str, node_var: str + ) -> None: + nt = node.node_tree + if nt is not None: + if nt not in self._node_trees: + self._process_geo_node_tree(nt, level + 1) + self._file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[{str_to_py_str(nt.name)}]\n")) + + def _process_sim_output_node(self, node: bpy.types.GeometryNodeSimulationOutput, + inner: str, node_var: str) -> None: + self._file.write(f"{inner}# Remove generated sim state items\n") + self._file.write(f"{inner}for item in {node_var}.state_items:\n") + self._file.write(f"{inner}\t{node_var}.state_items.remove(item)\n") + + for i, si in enumerate(node.state_items): + socket_type = enum_to_py_str(si.socket_type) + name = str_to_py_str(si.name) + self._file.write(f"{inner}#create SSI {name}\n") + self._file.write((f"{inner}{node_var}.state_items.new" + f"({socket_type}, {name})\n")) + si_var = f"{node_var}.state_items[{i}]" + attr_domain = enum_to_py_str(si.attribute_domain) + self._file.write((f"{inner}{si_var}.attribute_domain " + f"= {attr_domain}\n")) + + def _set_socket_defaults(self, node: bpy.types.GeometryNode, inner: str, + node_var: str) -> None: + if self.mode == 'ADDON': + set_input_defaults(node, self._file, inner, node_var, self._addon_dir) + else: + set_input_defaults(node, self._file, inner, node_var) + set_output_defaults(node, self._file, inner, node_var) + + def _process_node(self, node: bpy.types.GeometryNode, + ntp_node_tree: NTP_GeoNodeTree, + inner: str, level: int) -> None: + #create node + node_var: str = create_node(node, self._file, inner, ntp_node_tree.var_name, + self._node_vars, self._used_vars) + set_settings_defaults(node, geo_node_settings, self._file, + self._addon_dir, inner, node_var) + if node.bl_idname == 'GeometryNodeGroup': + self._process_geo_node_group_node(node, level, inner, node_var) + + elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: + group_io_settings(node, self._file, inner, "input", ntp_node_tree.var_name, + ntp_node_tree.node_tree) #TODO: convert to using NTP_NodeTrees + ntp_node_tree.inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: + group_io_settings(node, self._file, inner, "output", + ntp_node_tree.var_name, ntp_node_tree.node_tree) + ntp_node_tree.outputs_set = True + + elif node.bl_idname == 'GeometryNodeSimulationInput': + ntp_node_tree.sim_inputs.append(node) + + elif node.bl_idname == 'GeometryNodeSimulationOutput': + self._process_sim_output_node(node, inner, node_var) + + hide_hidden_sockets(node, self._file, inner, node_var) + + if node.bl_idname != 'GeometryNodeSimulationInput': + self._set_socket_defaults(node, inner, node_var) + + def _process_sim_zones(self, sim_inputs: list[bpy.types.GeometryNodeSimulationInput], + inner: str) -> None: + """ + Recreate simulation zones + sim_inputs (list[bpy.types.GeometryNodeSimulationInput]): list of + simulation input nodes + inner (str): identation string + """ + for sim_input in sim_inputs: + sim_output = sim_input.paired_output + + sim_input_var = self._node_vars[sim_input] + sim_output_var = self._node_vars[sim_output] + self._file.write((f"{inner}{sim_input_var}.pair_with_output" + f"({sim_output_var})\n")) + + #must set defaults after paired with output + self._set_socket_defaults(sim_input, inner, sim_input_var) + self._set_socket_defaults(sim_output, inner, sim_output_var) + + def _process_geo_node_tree(self, node_tree: bpy.types.GeometryNodeTree, + level: int) -> None: + """ + Generates a Python function to recreate a node tree + + Parameters: + node_tree (bpy.types.NodeTree): geometry node tree to be recreated + level (int): number of tabs to use for each line, used with + node groups within node groups and script/add-on differences + """ + + nt_var = create_var(node_tree.name, self._used_vars) + outer, inner = make_indents(level) #TODO: put in NTP_NodeTree class? + + #initialize node group + self._file.write(f"{outer}#initialize {nt_var} node group\n") + self._file.write(f"{outer}def {nt_var}_node_group():\n") + self._file.write((f"{inner}{nt_var} = bpy.data.node_groups.new(" + f"type = \'GeometryNodeTree\', " + f"name = {str_to_py_str(node_tree.name)})\n")) + self._file.write("\n") + + #initialize nodes + self._file.write(f"{inner}#initialize {nt_var} nodes\n") + + ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) + for node in node_tree.nodes: + self._process_node(node, ntp_nt, inner, level) + + self._process_sim_zones(ntp_nt.sim_inputs, inner) + + #set look of nodes + set_parents(node_tree, self._file, inner, self._node_vars) + set_locations(node_tree, self._file, inner, self._node_vars) + set_dimensions(node_tree, self._file, inner, self._node_vars) + + #create connections + init_links(node_tree, self._file, inner, nt_var, self._node_vars) + + self._file.write(f"{inner}return {nt_var}\n") + + #create node group + self._file.write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") + return self._used_vars + + def _apply_modifier(self, nt: bpy.types.GeometryNodeTree, nt_var: str): + #get object + self._file.write(f"\t\tname = bpy.context.object.name\n") + self._file.write(f"\t\tobj = bpy.data.objects[name]\n") + + #set modifier to the one we just created + mod_name = str_to_py_str(nt.name) + self._file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " + f"type = 'NODES')\n")) + self._file.write(f"\t\tmod.node_group = {nt_var}\n") + + def _report_finished(self): + #alert user that NTP is finished + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = dir + self.report({'INFO'}, + f"NodeToPython: Saved geometry nodes group to {location}") + def execute(self, context): #find node group to replicate nt = bpy.data.node_groups[self.geo_nodes_group_name] @@ -523,194 +724,41 @@ def execute(self, context): #set up names to use in generated addon nt_var = clean_string(nt.name) - addon_dir = None if self.mode == 'ADDON': - #find base directory to save new addon - dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blend file before using " - "NodeToPython!")) - return {'CANCELLED'} - - #save in addons/ subdirectory - zip_dir = os.path.join(dir, nt_var) - addon_dir = os.path.join(zip_dir, nt_var) - - if not os.path.exists(addon_dir): - os.makedirs(addon_dir) - file = open(f"{addon_dir}/__init__.py", "w") + self._setup_addon_directories(context, nt_var) + + self._file = open(f"{self._addon_dir}/__init__.py", "w") - create_header(file, nt.name) + create_header(self._file, nt.name) class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), lower = False) #TODO: should probably be standardized name to class name util method - init_operator(file, class_name, nt_var, nt.name) - file.write("\tdef execute(self, context):\n") + init_operator(self._file, class_name, nt_var, nt.name) + self._file.write("\tdef execute(self, context):\n") else: - file = StringIO("") - - #set to keep track of already created node trees - node_trees: set[bpy.types.NodeTree] = set() - - #dictionary to keep track of node->variable name pairs - node_vars: dict[bpy.types.Node, str] = {} - - #dictionary to keep track of variables->usage count pairs - used_vars: dict[str, int] = {} - - def process_geo_nodes_group(node_tree: bpy.types.NodeTree, - level: int, - ) -> None: - """ - Generates a Python function to recreate a node tree - - Parameters: - node_tree (bpy.types.NodeTree): node tree to be recreated - level (int): number of tabs to use for each line, used with - node groups within node groups and script/add-on differences - """ - - nt_var = create_var(node_tree.name, used_vars) - - outer, inner = make_indents(level) - - #initialize node group - file.write(f"{outer}#initialize {nt_var} node group\n") - file.write(f"{outer}def {nt_var}_node_group():\n") - file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'GeometryNodeTree\', " - f"name = {str_to_py_str(node_tree.name)})\n")) - file.write("\n") - - inputs_set = False - outputs_set = False - - #initialize nodes - file.write(f"{inner}#initialize {nt_var} nodes\n") - - sim_inputs = [] - - for node in node_tree.nodes: - if node.bl_idname == 'GeometryNodeGroup': - node_nt = node.node_tree - if node_nt is not None and node_nt not in node_trees: - process_geo_nodes_group(node_nt, level + 1) - node_trees.add(node_nt) - elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - group_io_settings(node, file, inner, "input", nt_var, - node_tree) - inputs_set = True - elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - group_io_settings(node, file, inner, "output", nt_var, - node_tree) - outputs_set = True - - #create node - node_var = create_node(node, file, inner, nt_var, - node_vars, used_vars) - set_settings_defaults(node, geo_node_settings, file, addon_dir, - inner, node_var) - hide_sockets(node, file, inner, node_var) - - if node.bl_idname == 'GeometryNodeGroup': - if node.node_tree is not None: - file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[{str_to_py_str(node.node_tree.name)}]\n")) - elif node.bl_idname == 'GeometryNodeSimulationInput': - sim_inputs.append(node) - - elif node.bl_idname == 'GeometryNodeSimulationOutput': - file.write(f"{inner}#remove generated sim state items\n") - file.write(f"{inner}for item in {node_var}.state_items:\n") - file.write(f"{inner}\t{node_var}.state_items.remove(item)\n") - - for i, si in enumerate(node.state_items): - socket_type = enum_to_py_str(si.socket_type) - name = str_to_py_str(si.name) - file.write(f"{inner}#create SSI {name}\n") - file.write((f"{inner}{node_var}.state_items.new" - f"({socket_type}, {name})\n")) - si_var = f"{node_var}.state_items[{i}]" - attr_domain = enum_to_py_str(si.attribute_domain) - file.write((f"{inner}{si_var}.attribute_domain = " - f"{attr_domain}\n")) - if node.bl_idname != 'GeometryNodeSimulationInput': - if self.mode == 'ADDON': - set_input_defaults(node, file, inner, node_var, addon_dir) - else: - set_input_defaults(node, file, inner, node_var) - set_output_defaults(node, file, inner, node_var) - - #create simulation zones - for sim_input in sim_inputs: - sim_input_var = node_vars[sim_input] - sim_output_var = node_vars[sim_input.paired_output] - file.write((f"{inner}{sim_input_var}.pair_with_output" - f"({sim_output_var})\n")) - - #must set defaults after paired with output - if self.mode == 'ADDON': - set_input_defaults(node, file, inner, node_var, addon_dir) - else: - set_input_defaults(node, file, inner, node_var) - set_output_defaults(sim_input, file, inner, sim_input_var) - - #set look of nodes - set_parents(node_tree, file, inner, node_vars) - set_locations(node_tree, file, inner, node_vars) - set_dimensions(node_tree, file, inner, node_vars) - - #create connections - init_links(node_tree, file, inner, nt_var, node_vars) - - file.write(f"{inner}return {nt_var}\n") - - #create node group - file.write((f"\n{outer}{nt_var} = " - f"{nt_var}_node_group()\n\n")) - return used_vars + self._file = StringIO("") if self.mode == 'ADDON': level = 2 else: level = 0 - process_geo_nodes_group(nt, level) - - def apply_modifier(): - #get object - file.write(f"\t\tname = bpy.context.object.name\n") - file.write(f"\t\tobj = bpy.data.objects[name]\n") - - #set modifier to the one we just created - mod_name = str_to_py_str(nt.name) - file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " - f"type = 'NODES')\n")) - file.write(f"\t\tmod.node_group = {nt_var}\n") - if self.mode == 'ADDON': - apply_modifier() + self._process_geo_node_tree(nt, level) - file.write("\t\treturn {'FINISHED'}\n\n") - - create_menu_func(file, class_name) - create_register_func(file, class_name) - create_unregister_func(file, class_name) - create_main_func(file) + if self.mode == 'ADDON': + self._apply_modifier(nt, nt_var) + self._file.write("\t\treturn {'FINISHED'}\n\n") + create_menu_func(self._file, class_name) + create_register_func(self._file, class_name) + create_unregister_func(self._file, class_name) + create_main_func(self._file) else: - context.window_manager.clipboard = file.getvalue() - file.close() + context.window_manager.clipboard = self._file.getvalue() + self._file.close() if self.mode == 'ADDON': - zip_addon(zip_dir) + zip_addon(self._zip_dir) + + self._report_finished() - #alert user that NTP is finished - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = dir - self.report({'INFO'}, - f"NodeToPython: Saved geometry nodes group to {location}") return {'FINISHED'} def invoke(self, context, event): diff --git a/materials.py b/materials.py index 75be899..053e9b6 100644 --- a/materials.py +++ b/materials.py @@ -414,7 +414,7 @@ def process_mat_node_group(node_tree: bpy.types.NodeTree, set_settings_defaults(node, shader_node_settings, file, addon_dir, inner, node_var) - hide_sockets(node, file, inner, node_var) + hide_hidden_sockets(node, file, inner, node_var) if node.bl_idname == 'ShaderNodeGroup': if node.node_tree is not None: diff --git a/utils.py b/utils.py index a2b0cf6..ae432d8 100644 --- a/utils.py +++ b/utils.py @@ -362,7 +362,7 @@ def set_settings_defaults(node: bpy.types.Node, elif type == ST.IMAGE_USER: image_user_settings(attr, file, inner, f"{node_var}.{attr_name}") -def hide_sockets(node: bpy.types.Node, +def hide_hidden_sockets(node: bpy.types.Node, file: TextIO, inner: str, node_var: str From f1b206a97149a89cccc66ebd28cbb485444a1c01 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 10 Sep 2023 23:06:38 -0500 Subject: [PATCH 122/286] refactor: UI node tree lists more standardized --- compositor.py | 18 +++++++++--------- geo_nodes.py | 24 ++++++++++-------------- materials.py | 10 ++++++---- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/compositor.py b/compositor.py index bb4d1e0..4a1b222 100644 --- a/compositor.py +++ b/compositor.py @@ -671,10 +671,10 @@ def draw(self, context): layout.operator_context = 'INVOKE_DEFAULT' for scene in bpy.data.scenes: if scene.node_tree: - op = layout.operator(NTPCompositorOperator.bl_idname, text=scene.name) + op = layout.operator(NTPCompositorOperator.bl_idname, + text=scene.name) op.compositor_name = scene.name op.is_scene = True - print(scene.node_tree.name) class NTPCompositorGroupsMenu(bpy.types.Menu): bl_idname = "NODE_MT_ntp_comp_groups" @@ -688,8 +688,9 @@ def draw(self, context): layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' for node_group in bpy.data.node_groups: - if isinstance(node_group, bpy.types.CompositorNodeTree): - op = layout.operator(NTPCompositorOperator.bl_idname, text=node_group.name) + if node_group.bl_idname == 'CompositorNodeTree': + op = layout.operator(NTPCompositorOperator.bl_idname, + text=node_group.name) op.compositor_name = node_group.name op.is_scene = False @@ -712,9 +713,8 @@ def draw(self, context): layout = self.layout scenes_row = layout.row() - # Disables menu when there are no materials - scenes = [scene for scene in bpy.data.scenes - if scene.node_tree is not None] + # Disables menu when there are no compositing node groups + scenes = [scene for scene in bpy.data.scenes if scene.node_tree] scenes_exist = len(scenes) > 0 scenes_row.enabled = scenes_exist @@ -724,8 +724,8 @@ def draw(self, context): text="Scene Compositor Nodes") groups_row = layout.row() - groups = [ng for ng in bpy.data.node_groups - if isinstance(ng, bpy.types.CompositorNodeTree)] + groups = [node_tree for node_tree in bpy.data.node_groups + if node_tree.bl_idname == 'CompositorNodeTree'] groups_exist = len(groups) > 0 groups_row.enabled = groups_exist diff --git a/geo_nodes.py b/geo_nodes.py index 8de5d60..210d287 100644 --- a/geo_nodes.py +++ b/geo_nodes.py @@ -510,11 +510,6 @@ def __init__(self, node_tree: bpy.types.GeometryNodeTree, var_name: str): self.outputs_set: bool = False self.sim_inputs: list[bpy.types.GeometryNodeSimulationInput] = [] -class NTP_GeoNode: - def __init__(self, node: bpy.types.GeometryNode, var_name: str): - self.node = node - self.var_name = var_name - class NTPGeoNodesOperator(bpy.types.Operator): bl_idname = "node.ntp_geo_nodes" bl_label = "Geo Nodes to Python" @@ -779,12 +774,14 @@ def draw(self, context): layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' - geo_node_groups = [node for node in bpy.data.node_groups - if node.type == 'GEOMETRY'] + geo_node_groups = [node_tree for node_tree in bpy.data.node_groups + if node_tree.bl_idname == 'GeometryNodeTree'] - for geo_ng in geo_node_groups: - op = layout.operator(NTPGeoNodesOperator.bl_idname, text=geo_ng.name) - op.geo_nodes_group_name = geo_ng.name + for node_tree in bpy.data.node_groups: + if node_tree.bl_idname == 'GeometryNodeTree': + op = layout.operator(NTPGeoNodesOperator.bl_idname, + text=node_tree.name) + op.geo_nodes_group_name = node_tree.name class NTPGeoNodesPanel(bpy.types.Panel): bl_label = "Geometry Nodes to Python" @@ -807,12 +804,11 @@ def draw(self, context): row = col.row() # Disables menu when len of geometry nodes is 0 - geo_node_groups = [node - for node in bpy.data.node_groups - if node.type == 'GEOMETRY'] + geo_node_groups = [node_tree for node_tree in bpy.data.node_groups + if node_tree.bl_idname == 'GeometryNodeTree'] geo_node_groups_exist = len(geo_node_groups) > 0 row.enabled = geo_node_groups_exist - + row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' row.menu("NODE_MT_ntp_geo_nodes", text="Geometry Nodes") \ No newline at end of file diff --git a/materials.py b/materials.py index 053e9b6..5126e50 100644 --- a/materials.py +++ b/materials.py @@ -486,9 +486,11 @@ def poll(cls, context): def draw(self, context): layout = self.layout.column_flow(columns=1) layout.operator_context = 'INVOKE_DEFAULT' - for mat in bpy.data.materials: #TODO: filter by node tree exists - op = layout.operator(NTPMaterialOperator.bl_idname, text=mat.name) - op.material_name = mat.name + for mat in bpy.data.materials: + if mat.node_tree: + op = layout.operator(NTPMaterialOperator.bl_idname, + text=mat.name) + op.material_name = mat.name class NTPMaterialPanel(bpy.types.Panel): bl_label = "Material to Python" @@ -510,7 +512,7 @@ def draw(self, context): row = layout.row() # Disables menu when there are no materials - materials = bpy.data.materials #TODO: filter by node tree exist + materials = [mat for mat in bpy.data.materials if mat.node_tree] materials_exist = len(materials) > 0 row.enabled = materials_exist From 2a85b7d052ee9989fb6f08e8505ffc86d38c3f42 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 11 Sep 2023 00:27:52 -0500 Subject: [PATCH 123/286] refactor: geometry logic split into a subpackage --- __init__.py | 10 +- geometry/__init__.py | 15 + geometry/menu.py | 25 ++ geo_nodes.py => geometry/node_settings.py | 320 +--------------------- geometry/node_tree.py | 10 + geometry/operator.py | 266 ++++++++++++++++++ geometry/panel.py | 32 +++ 7 files changed, 355 insertions(+), 323 deletions(-) create mode 100644 geometry/__init__.py create mode 100644 geometry/menu.py rename geo_nodes.py => geometry/node_settings.py (53%) create mode 100644 geometry/node_tree.py create mode 100644 geometry/operator.py create mode 100644 geometry/panel.py diff --git a/__init__.py b/__init__.py index a4bf342..c070e19 100644 --- a/__init__.py +++ b/__init__.py @@ -11,12 +11,12 @@ if "bpy" in locals(): import importlib importlib.reload(compositor) - importlib.reload(geo_nodes) + importlib.reload(geometry) importlib.reload(materials) importlib.reload(options) else: from . import compositor - from . import geo_nodes + from . import geometry from . import materials from . import options @@ -43,9 +43,9 @@ def draw(self, context): compositor.NTPCompositorScenesMenu, compositor.NTPCompositorGroupsMenu, compositor.NTPCompositorPanel, - geo_nodes.NTPGeoNodesOperator, - geo_nodes.NTPGeoNodesMenu, - geo_nodes.NTPGeoNodesPanel, + geometry.operator.NTPGeoNodesOperator, + geometry.menu.NTPGeoNodesMenu, + geometry.panel.NTPGeoNodesPanel, materials.NTPMaterialOperator, materials.NTPMaterialMenu, materials.NTPMaterialPanel, diff --git a/geometry/__init__.py b/geometry/__init__.py new file mode 100644 index 0000000..80134d4 --- /dev/null +++ b/geometry/__init__.py @@ -0,0 +1,15 @@ +if "bpy" in locals(): + import importlib + importlib.reload(menu) + importlib.reload(node_settings) + importlib.reload(node_tree) + importlib.reload(operator) + importlib.reload(panel) +else: + from . import menu + from . import node_settings + from . import node_tree + from . import operator + from . import panel + +import bpy \ No newline at end of file diff --git a/geometry/menu.py b/geometry/menu.py new file mode 100644 index 0000000..20299ca --- /dev/null +++ b/geometry/menu.py @@ -0,0 +1,25 @@ +import bpy +from bpy.types import Menu + +from .operator import NTPGeoNodesOperator + +class NTPGeoNodesMenu(Menu): + bl_idname = "NODE_MT_ntp_geo_nodes" + bl_label = "Select Geo Nodes" + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + + geo_node_groups = [node_tree for node_tree in bpy.data.node_groups + if node_tree.bl_idname == 'GeometryNodeTree'] + + for node_tree in bpy.data.node_groups: + if node_tree.bl_idname == 'GeometryNodeTree': + op = layout.operator(NTPGeoNodesOperator.bl_idname, + text=node_tree.name) + op.geo_nodes_group_name = node_tree.name \ No newline at end of file diff --git a/geo_nodes.py b/geometry/node_settings.py similarity index 53% rename from geo_nodes.py rename to geometry/node_settings.py index 210d287..fb2786d 100644 --- a/geo_nodes.py +++ b/geometry/node_settings.py @@ -1,8 +1,4 @@ -import bpy -import os - -from .utils import * -from io import StringIO +from ..utils import * geo_node_settings : dict[str, list[(str, ST)]] = { # ATTRIBUTE @@ -499,316 +495,4 @@ 'FunctionNodeRotateEuler' : [("space", ST.ENUM), ("type", ST.ENUM)] -} - -class NTP_GeoNodeTree: - def __init__(self, node_tree: bpy.types.GeometryNodeTree, var_name: str): - self.node_tree: bpy.types.GeometryNodeTree = node_tree - self.var_name: str = var_name - - self.inputs_set: bool = False - self.outputs_set: bool = False - self.sim_inputs: list[bpy.types.GeometryNodeSimulationInput] = [] - -class NTPGeoNodesOperator(bpy.types.Operator): - bl_idname = "node.ntp_geo_nodes" - bl_label = "Geo Nodes to Python" - bl_options = {'REGISTER', 'UNDO'} - - mode: bpy.props.EnumProperty( - name = "Mode", - items = [ - ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") - ] - ) - - geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") - - def __init__(self): - # File/string the add-on/script is generated into - self._file: TextIO = None - - # Path to the directory of the zip file - self._zip_dir: str = None - - # Path to the directory for the generated addon - self._addon_dir: str = None - - # Set to keep track of already created node trees - self._node_trees: set[bpy.types.NodeTree] = set() - - # Dictionary to keep track of node->variable name pairs - self._node_vars: dict[bpy.types.Node, str] = {} - - # Dictionary to keep track of variables->usage count pairs - self._used_vars: dict[str, int] = {} - - def _setup_addon_directories(self, context: bpy.types.Context, nt_var: str): - #find base directory to save new addon - dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blend file before using " - "NodeToPython!")) #TODO: Still valid?? - return {'CANCELLED'} - - self._zip_dir = os.path.join(dir, nt_var) - self._addon_dir = os.path.join(self._zip_dir, nt_var) - - if not os.path.exists(self._addon_dir): - os.makedirs(self._addon_dir) - - def _process_geo_node_group_node(self, node: bpy.types.GeometryNodeGroup, - level: int, inner: str, node_var: str - ) -> None: - nt = node.node_tree - if nt is not None: - if nt not in self._node_trees: - self._process_geo_node_tree(nt, level + 1) - self._file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[{str_to_py_str(nt.name)}]\n")) - - def _process_sim_output_node(self, node: bpy.types.GeometryNodeSimulationOutput, - inner: str, node_var: str) -> None: - self._file.write(f"{inner}# Remove generated sim state items\n") - self._file.write(f"{inner}for item in {node_var}.state_items:\n") - self._file.write(f"{inner}\t{node_var}.state_items.remove(item)\n") - - for i, si in enumerate(node.state_items): - socket_type = enum_to_py_str(si.socket_type) - name = str_to_py_str(si.name) - self._file.write(f"{inner}#create SSI {name}\n") - self._file.write((f"{inner}{node_var}.state_items.new" - f"({socket_type}, {name})\n")) - si_var = f"{node_var}.state_items[{i}]" - attr_domain = enum_to_py_str(si.attribute_domain) - self._file.write((f"{inner}{si_var}.attribute_domain " - f"= {attr_domain}\n")) - - def _set_socket_defaults(self, node: bpy.types.GeometryNode, inner: str, - node_var: str) -> None: - if self.mode == 'ADDON': - set_input_defaults(node, self._file, inner, node_var, self._addon_dir) - else: - set_input_defaults(node, self._file, inner, node_var) - set_output_defaults(node, self._file, inner, node_var) - - def _process_node(self, node: bpy.types.GeometryNode, - ntp_node_tree: NTP_GeoNodeTree, - inner: str, level: int) -> None: - #create node - node_var: str = create_node(node, self._file, inner, ntp_node_tree.var_name, - self._node_vars, self._used_vars) - set_settings_defaults(node, geo_node_settings, self._file, - self._addon_dir, inner, node_var) - if node.bl_idname == 'GeometryNodeGroup': - self._process_geo_node_group_node(node, level, inner, node_var) - - elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - group_io_settings(node, self._file, inner, "input", ntp_node_tree.var_name, - ntp_node_tree.node_tree) #TODO: convert to using NTP_NodeTrees - ntp_node_tree.inputs_set = True - - elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - group_io_settings(node, self._file, inner, "output", - ntp_node_tree.var_name, ntp_node_tree.node_tree) - ntp_node_tree.outputs_set = True - - elif node.bl_idname == 'GeometryNodeSimulationInput': - ntp_node_tree.sim_inputs.append(node) - - elif node.bl_idname == 'GeometryNodeSimulationOutput': - self._process_sim_output_node(node, inner, node_var) - - hide_hidden_sockets(node, self._file, inner, node_var) - - if node.bl_idname != 'GeometryNodeSimulationInput': - self._set_socket_defaults(node, inner, node_var) - - def _process_sim_zones(self, sim_inputs: list[bpy.types.GeometryNodeSimulationInput], - inner: str) -> None: - """ - Recreate simulation zones - sim_inputs (list[bpy.types.GeometryNodeSimulationInput]): list of - simulation input nodes - inner (str): identation string - """ - for sim_input in sim_inputs: - sim_output = sim_input.paired_output - - sim_input_var = self._node_vars[sim_input] - sim_output_var = self._node_vars[sim_output] - self._file.write((f"{inner}{sim_input_var}.pair_with_output" - f"({sim_output_var})\n")) - - #must set defaults after paired with output - self._set_socket_defaults(sim_input, inner, sim_input_var) - self._set_socket_defaults(sim_output, inner, sim_output_var) - - def _process_geo_node_tree(self, node_tree: bpy.types.GeometryNodeTree, - level: int) -> None: - """ - Generates a Python function to recreate a node tree - - Parameters: - node_tree (bpy.types.NodeTree): geometry node tree to be recreated - level (int): number of tabs to use for each line, used with - node groups within node groups and script/add-on differences - """ - - nt_var = create_var(node_tree.name, self._used_vars) - outer, inner = make_indents(level) #TODO: put in NTP_NodeTree class? - - #initialize node group - self._file.write(f"{outer}#initialize {nt_var} node group\n") - self._file.write(f"{outer}def {nt_var}_node_group():\n") - self._file.write((f"{inner}{nt_var} = bpy.data.node_groups.new(" - f"type = \'GeometryNodeTree\', " - f"name = {str_to_py_str(node_tree.name)})\n")) - self._file.write("\n") - - #initialize nodes - self._file.write(f"{inner}#initialize {nt_var} nodes\n") - - ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) - for node in node_tree.nodes: - self._process_node(node, ntp_nt, inner, level) - - self._process_sim_zones(ntp_nt.sim_inputs, inner) - - #set look of nodes - set_parents(node_tree, self._file, inner, self._node_vars) - set_locations(node_tree, self._file, inner, self._node_vars) - set_dimensions(node_tree, self._file, inner, self._node_vars) - - #create connections - init_links(node_tree, self._file, inner, nt_var, self._node_vars) - - self._file.write(f"{inner}return {nt_var}\n") - - #create node group - self._file.write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") - return self._used_vars - - def _apply_modifier(self, nt: bpy.types.GeometryNodeTree, nt_var: str): - #get object - self._file.write(f"\t\tname = bpy.context.object.name\n") - self._file.write(f"\t\tobj = bpy.data.objects[name]\n") - - #set modifier to the one we just created - mod_name = str_to_py_str(nt.name) - self._file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " - f"type = 'NODES')\n")) - self._file.write(f"\t\tmod.node_group = {nt_var}\n") - - def _report_finished(self): - #alert user that NTP is finished - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = dir - self.report({'INFO'}, - f"NodeToPython: Saved geometry nodes group to {location}") - - def execute(self, context): - #find node group to replicate - nt = bpy.data.node_groups[self.geo_nodes_group_name] - - #set up names to use in generated addon - nt_var = clean_string(nt.name) - - if self.mode == 'ADDON': - self._setup_addon_directories(context, nt_var) - - self._file = open(f"{self._addon_dir}/__init__.py", "w") - - create_header(self._file, nt.name) - class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), - lower = False) #TODO: should probably be standardized name to class name util method - init_operator(self._file, class_name, nt_var, nt.name) - self._file.write("\tdef execute(self, context):\n") - else: - self._file = StringIO("") - - if self.mode == 'ADDON': - level = 2 - else: - level = 0 - self._process_geo_node_tree(nt, level) - - if self.mode == 'ADDON': - self._apply_modifier(nt, nt_var) - self._file.write("\t\treturn {'FINISHED'}\n\n") - create_menu_func(self._file, class_name) - create_register_func(self._file, class_name) - create_unregister_func(self._file, class_name) - create_main_func(self._file) - else: - context.window_manager.clipboard = self._file.getvalue() - self._file.close() - - if self.mode == 'ADDON': - zip_addon(self._zip_dir) - - self._report_finished() - - return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self) - - def draw(self, context): - self.layout.prop(self, "mode") - -class NTPGeoNodesMenu(bpy.types.Menu): - bl_idname = "NODE_MT_ntp_geo_nodes" - bl_label = "Select Geo Nodes" - - @classmethod - def poll(cls, context): - return True - - def draw(self, context): - layout = self.layout.column_flow(columns=1) - layout.operator_context = 'INVOKE_DEFAULT' - - geo_node_groups = [node_tree for node_tree in bpy.data.node_groups - if node_tree.bl_idname == 'GeometryNodeTree'] - - for node_tree in bpy.data.node_groups: - if node_tree.bl_idname == 'GeometryNodeTree': - op = layout.operator(NTPGeoNodesOperator.bl_idname, - text=node_tree.name) - op.geo_nodes_group_name = node_tree.name - -class NTPGeoNodesPanel(bpy.types.Panel): - bl_label = "Geometry Nodes to Python" - bl_idname = "NODE_PT_geo_nodes" - bl_space_type = 'NODE_EDITOR' - bl_region_type = 'UI' - bl_context = '' - bl_category = "NodeToPython" - - @classmethod - def poll(cls, context): - return True - - def draw_header(self, context): - layout = self.layout - - def draw(self, context): - layout = self.layout - col = layout.column() - row = col.row() - - # Disables menu when len of geometry nodes is 0 - geo_node_groups = [node_tree for node_tree in bpy.data.node_groups - if node_tree.bl_idname == 'GeometryNodeTree'] - geo_node_groups_exist = len(geo_node_groups) > 0 - row.enabled = geo_node_groups_exist - - row.alignment = 'EXPAND' - row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_ntp_geo_nodes", text="Geometry Nodes") \ No newline at end of file +} \ No newline at end of file diff --git a/geometry/node_tree.py b/geometry/node_tree.py new file mode 100644 index 0000000..2f42452 --- /dev/null +++ b/geometry/node_tree.py @@ -0,0 +1,10 @@ +from bpy.types import GeometryNodeTree, GeometryNodeSimulationInput + +class NTP_GeoNodeTree: + def __init__(self, node_tree: GeometryNodeTree, var_name: str): + self.node_tree: GeometryNodeTree = node_tree + self.var_name: str = var_name + + self.inputs_set: bool = False + self.outputs_set: bool = False + self.sim_inputs: list[GeometryNodeSimulationInput] = [] \ No newline at end of file diff --git a/geometry/operator.py b/geometry/operator.py new file mode 100644 index 0000000..5ba51fb --- /dev/null +++ b/geometry/operator.py @@ -0,0 +1,266 @@ +import bpy +from bpy.types import Context +from bpy.types import GeometryNodeGroup +from bpy.types import GeometryNodeSimulationInput +from bpy.types import GeometryNodeSimulationOutput +from bpy.types import GeometryNodeTree +from bpy.types import Node +from bpy.types import Operator + +import os + +from ..utils import * +from .node_tree import NTP_GeoNodeTree +from .node_settings import geo_node_settings +from io import StringIO + +class NTPGeoNodesOperator(Operator): + bl_idname = "node.ntp_geo_nodes" + bl_label = "Geo Nodes to Python" + bl_options = {'REGISTER', 'UNDO'} + + mode: bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full addon") + ] + ) + + geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") + + def __init__(self): + # File/string the add-on/script is generated into + self._file: TextIO = None + + # Path to the directory of the zip file + self._zip_dir: str = None + + # Path to the directory for the generated addon + self._addon_dir: str = None + + # Set to keep track of already created node trees + self._node_trees: set[GeometryNodeTree] = set() + + # Dictionary to keep track of node->variable name pairs + self._node_vars: dict[Node, str] = {} + + # Dictionary to keep track of variables->usage count pairs + self._used_vars: dict[str, int] = {} + + def _setup_addon_directories(self, context: Context, nt_var: str): + #find base directory to save new addon + dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blend file before using " + "NodeToPython!")) #TODO: Still valid?? + return {'CANCELLED'} + + self._zip_dir = os.path.join(dir, nt_var) + self._addon_dir = os.path.join(self._zip_dir, nt_var) + + if not os.path.exists(self._addon_dir): + os.makedirs(self._addon_dir) + + def _process_geo_node_group_node(self, node: GeometryNodeGroup, + level: int, inner: str, node_var: str + ) -> None: + nt = node.node_tree + if nt is not None: + if nt not in self._node_trees: + self._process_geo_node_tree(nt, level + 1) + self._file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[{str_to_py_str(nt.name)}]\n")) + + def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, + inner: str, node_var: str) -> None: + self._file.write(f"{inner}# Remove generated sim state items\n") + self._file.write(f"{inner}for item in {node_var}.state_items:\n") + self._file.write(f"{inner}\t{node_var}.state_items.remove(item)\n") + + for i, si in enumerate(node.state_items): + socket_type = enum_to_py_str(si.socket_type) + name = str_to_py_str(si.name) + self._file.write(f"{inner}#create SSI {name}\n") + self._file.write((f"{inner}{node_var}.state_items.new" + f"({socket_type}, {name})\n")) + si_var = f"{node_var}.state_items[{i}]" + attr_domain = enum_to_py_str(si.attribute_domain) + self._file.write((f"{inner}{si_var}.attribute_domain " + f"= {attr_domain}\n")) + + def _set_socket_defaults(self, node: Node, inner: str, + node_var: str) -> None: + if self.mode == 'ADDON': + set_input_defaults(node, self._file, inner, node_var, self._addon_dir) + else: + set_input_defaults(node, self._file, inner, node_var) + set_output_defaults(node, self._file, inner, node_var) + + def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, + inner: str, level: int) -> None: + #create node + node_var: str = create_node(node, self._file, inner, ntp_node_tree.var_name, + self._node_vars, self._used_vars) + set_settings_defaults(node, geo_node_settings, self._file, + self._addon_dir, inner, node_var) + if node.bl_idname == 'GeometryNodeGroup': + self._process_geo_node_group_node(node, level, inner, node_var) + + elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: + group_io_settings(node, self._file, inner, "input", ntp_node_tree.var_name, + ntp_node_tree.node_tree) #TODO: convert to using NTP_NodeTrees + ntp_node_tree.inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: + group_io_settings(node, self._file, inner, "output", + ntp_node_tree.var_name, ntp_node_tree.node_tree) + ntp_node_tree.outputs_set = True + + elif node.bl_idname == 'GeometryNodeSimulationInput': + ntp_node_tree.sim_inputs.append(node) + + elif node.bl_idname == 'GeometryNodeSimulationOutput': + self._process_sim_output_node(node, inner, node_var) + + hide_hidden_sockets(node, self._file, inner, node_var) + + if node.bl_idname != 'GeometryNodeSimulationInput': + self._set_socket_defaults(node, inner, node_var) + + def _process_sim_zones(self, sim_inputs: list[GeometryNodeSimulationInput], + inner: str) -> None: + """ + Recreate simulation zones + sim_inputs (list[GeometryNodeSimulationInput]): list of + simulation input nodes + inner (str): identation string + """ + for sim_input in sim_inputs: + sim_output = sim_input.paired_output + + sim_input_var = self._node_vars[sim_input] + sim_output_var = self._node_vars[sim_output] + self._file.write((f"{inner}{sim_input_var}.pair_with_output" + f"({sim_output_var})\n")) + + #must set defaults after paired with output + self._set_socket_defaults(sim_input, inner, sim_input_var) + self._set_socket_defaults(sim_output, inner, sim_output_var) + + def _process_geo_node_tree(self, node_tree: GeometryNodeTree, + level: int) -> None: + """ + Generates a Python function to recreate a node tree + + Parameters: + node_tree (GeometryNodeTree): geometry node tree to be recreated + level (int): number of tabs to use for each line, used with + node groups within node groups and script/add-on differences + """ + + nt_var = create_var(node_tree.name, self._used_vars) + outer, inner = make_indents(level) #TODO: put in NTP_NodeTree class? + + #initialize node group + self._file.write(f"{outer}#initialize {nt_var} node group\n") + self._file.write(f"{outer}def {nt_var}_node_group():\n") + self._file.write((f"{inner}{nt_var} = bpy.data.node_groups.new(" + f"type = \'GeometryNodeTree\', " + f"name = {str_to_py_str(node_tree.name)})\n")) + self._file.write("\n") + + #initialize nodes + self._file.write(f"{inner}#initialize {nt_var} nodes\n") + + ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) + for node in node_tree.nodes: + self._process_node(node, ntp_nt, inner, level) + + self._process_sim_zones(ntp_nt.sim_inputs, inner) + + #set look of nodes + set_parents(node_tree, self._file, inner, self._node_vars) + set_locations(node_tree, self._file, inner, self._node_vars) + set_dimensions(node_tree, self._file, inner, self._node_vars) + + #create connections + init_links(node_tree, self._file, inner, nt_var, self._node_vars) + + self._file.write(f"{inner}return {nt_var}\n") + + #create node group + self._file.write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") + return self._used_vars + + def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): + #get object + self._file.write(f"\t\tname = bpy.context.object.name\n") + self._file.write(f"\t\tobj = bpy.data.objects[name]\n") + + #set modifier to the one we just created + mod_name = str_to_py_str(nt.name) + self._file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " + f"type = 'NODES')\n")) + self._file.write(f"\t\tmod.node_group = {nt_var}\n") + + def _report_finished(self): + #alert user that NTP is finished + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = dir + self.report({'INFO'}, + f"NodeToPython: Saved geometry nodes group to {location}") + + def execute(self, context): + #find node group to replicate + nt = bpy.data.node_groups[self.geo_nodes_group_name] + + #set up names to use in generated addon + nt_var = clean_string(nt.name) + + if self.mode == 'ADDON': + self._setup_addon_directories(context, nt_var) + + self._file = open(f"{self._addon_dir}/__init__.py", "w") + + create_header(self._file, nt.name) + class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), + lower = False) #TODO: should probably be standardized name to class name util method + init_operator(self._file, class_name, nt_var, nt.name) + self._file.write("\tdef execute(self, context):\n") + else: + self._file = StringIO("") + + if self.mode == 'ADDON': + level = 2 + else: + level = 0 + self._process_geo_node_tree(nt, level) + + if self.mode == 'ADDON': + self._apply_modifier(nt, nt_var) + self._file.write("\t\treturn {'FINISHED'}\n\n") + create_menu_func(self._file, class_name) + create_register_func(self._file, class_name) + create_unregister_func(self._file, class_name) + create_main_func(self._file) + else: + context.window_manager.clipboard = self._file.getvalue() + self._file.close() + + if self.mode == 'ADDON': + zip_addon(self._zip_dir) + + self._report_finished() + + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + + def draw(self, context): + self.layout.prop(self, "mode") diff --git a/geometry/panel.py b/geometry/panel.py new file mode 100644 index 0000000..c6f568b --- /dev/null +++ b/geometry/panel.py @@ -0,0 +1,32 @@ +import bpy +from bpy.types import Panel + +class NTPGeoNodesPanel(Panel): + bl_label = "Geometry Nodes to Python" + bl_idname = "NODE_PT_geo_nodes" + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = "NodeToPython" + + @classmethod + def poll(cls, context): + return True + + def draw_header(self, context): + layout = self.layout + + def draw(self, context): + layout = self.layout + col = layout.column() + row = col.row() + + # Disables menu when len of geometry nodes is 0 + geo_node_groups = [node_tree for node_tree in bpy.data.node_groups + if node_tree.bl_idname == 'GeometryNodeTree'] + geo_node_groups_exist = len(geo_node_groups) > 0 + row.enabled = geo_node_groups_exist + + row.alignment = 'EXPAND' + row.operator_context = 'INVOKE_DEFAULT' + row.menu("NODE_MT_ntp_geo_nodes", text="Geometry Nodes") \ No newline at end of file From b793e8c488ce5c74d19cc61c7aaafa2f6f26a574 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 12 Sep 2023 20:06:13 -0500 Subject: [PATCH 124/286] refactor: material package creation --- __init__.py | 16 +- geometry/node_settings.py | 2 +- material/__init__.py | 15 ++ material/menu.py | 20 ++ materials.py => material/node_settings.py | 250 +--------------------- material/operator.py | 203 ++++++++++++++++++ material/panel.py | 30 +++ 7 files changed, 280 insertions(+), 256 deletions(-) create mode 100644 material/__init__.py create mode 100644 material/menu.py rename materials.py => material/node_settings.py (51%) create mode 100644 material/operator.py create mode 100644 material/panel.py diff --git a/__init__.py b/__init__.py index c070e19..d64930f 100644 --- a/__init__.py +++ b/__init__.py @@ -12,12 +12,12 @@ import importlib importlib.reload(compositor) importlib.reload(geometry) - importlib.reload(materials) + importlib.reload(node_settings) importlib.reload(options) else: from . import compositor from . import geometry - from . import materials + from .material import node_settings from . import options import bpy @@ -38,18 +38,22 @@ def draw(self, context): classes = [NodeToPythonMenu, + #options options.NTPOptions, + options.NTPOptionsPanel, + #compositor compositor.NTPCompositorOperator, compositor.NTPCompositorScenesMenu, compositor.NTPCompositorGroupsMenu, compositor.NTPCompositorPanel, + #geometry geometry.operator.NTPGeoNodesOperator, geometry.menu.NTPGeoNodesMenu, geometry.panel.NTPGeoNodesPanel, - materials.NTPMaterialOperator, - materials.NTPMaterialMenu, - materials.NTPMaterialPanel, - options.NTPOptionsPanel + #material + material.operator.NTPMaterialOperator, + material.menu.NTPMaterialMenu, + material.panel.NTPMaterialPanel, ] def register(): diff --git a/geometry/node_settings.py b/geometry/node_settings.py index fb2786d..1900660 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -1,4 +1,4 @@ -from ..utils import * +from ..utils import ST geo_node_settings : dict[str, list[(str, ST)]] = { # ATTRIBUTE diff --git a/material/__init__.py b/material/__init__.py new file mode 100644 index 0000000..b7380e4 --- /dev/null +++ b/material/__init__.py @@ -0,0 +1,15 @@ +if "bpy" in locals(): + import importlib + importlib.reload(menu) + importlib.reload(node_settings) + #importlib.reload(node_tree) + importlib.reload(operator) + importlib.reload(panel) +else: + from . import menu + from . import node_settings + #from . import node_tree + from . import operator + from . import panel + +import bpy \ No newline at end of file diff --git a/material/menu.py b/material/menu.py new file mode 100644 index 0000000..069fbb5 --- /dev/null +++ b/material/menu.py @@ -0,0 +1,20 @@ +import bpy +from bpy.types import Menu +from .operator import NTPMaterialOperator + +class NTPMaterialMenu(Menu): + bl_idname = "NODE_MT_ntp_material" + bl_label = "Select Material" + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + for mat in bpy.data.materials: + if mat.node_tree: + op = layout.operator(NTPMaterialOperator.bl_idname, + text=mat.name) + op.material_name = mat.name \ No newline at end of file diff --git a/materials.py b/material/node_settings.py similarity index 51% rename from materials.py rename to material/node_settings.py index 5126e50..30b3b08 100644 --- a/materials.py +++ b/material/node_settings.py @@ -1,12 +1,5 @@ -import bpy -import os +from ..utils import ST -from .utils import * -from io import StringIO - -MAT_VAR = "mat" - -#TODO: move to a json, different ones for each blender version? shader_node_settings : dict[str, list[(str, ST)]] = { # INPUT 'ShaderNodeAmbientOcclusion' : [("inside", ST.BOOL), @@ -278,244 +271,3 @@ ("script", ST.TEXT), ("use_auto_update", ST.BOOL)] } - -image_nodes = {'ShaderNodeTexEnvironment', - 'ShaderNodeTexImage'} - -class NTPMaterialOperator(bpy.types.Operator): - bl_idname = "node.ntp_material" - bl_label = "Material to Python" - bl_options = {'REGISTER', 'UNDO'} - - mode : bpy.props.EnumProperty( - name = "Mode", - items = [ - ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") - ] - ) - material_name: bpy.props.StringProperty(name="Node Group") - - def execute(self, context): - #find node group to replicate - nt = bpy.data.materials[self.material_name].node_tree - if nt is None: - self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " - "valid material. Is Use Nodes selected?")) - return {'CANCELLED'} - - #set up names to use in generated addon - mat_var = clean_string(self.material_name) - - addon_dir = None - if self.mode == 'ADDON': - dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blender file before using " - "NodeToPython!")) - return {'CANCELLED'} - - zip_dir = os.path.join(dir, mat_var) - addon_dir = os.path.join(zip_dir, mat_var) - if not os.path.exists(addon_dir): - os.makedirs(addon_dir) - file = open(f"{addon_dir}/__init__.py", "w") - - create_header(file, self.material_name) - class_name = clean_string(self.material_name, lower=False) - init_operator(file, class_name, mat_var, self.material_name) - - file.write("\tdef execute(self, context):\n") - else: - file = StringIO("") - - def create_material(indent: str): - file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" - f"name = {str_to_py_str(self.material_name)})\n")) - file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") - - if self.mode == 'ADDON': - create_material("\t\t") - elif self.mode == 'SCRIPT': #TODO: should add option for just creating the node group - create_material("") - - #set to keep track of already created node trees - node_trees: set[bpy.types.NodeTree] = set() - - #dictionary to keep track of node->variable name pairs - node_vars: dict[bpy.types.Node, str] = {} - - #keeps track of all used base variable names and usage counts - used_vars: dict[str, int] = {} - - def is_outermost_node_group(level: int) -> bool: - if self.mode == 'ADDON' and level == 2: - return True - elif self.mode == 'SCRIPT' and level == 0: - return True - return False - - def process_mat_node_group(node_tree: bpy.types.NodeTree, - level: int - ) -> None: - """ - Generates a Python function to recreate a node tree - - Parameters: - node_tree (bpy.types.NodeTree): node tree to be recreated - level (int): number of tabs to use for each line, used with - node groups within node groups and script/add-on differences - """ - - if is_outermost_node_group(level): - nt_var = create_var(self.material_name, used_vars) - nt_name = self.material_name - else: - nt_var = create_var(node_tree.name, used_vars) - nt_name = node_tree.name - - outer, inner = make_indents(level) - - #initialize node group - file.write(f"{outer}#initialize {nt_var} node group\n") - file.write(f"{outer}def {nt_var}_node_group():\n") - - if is_outermost_node_group(level): #outermost node group - file.write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") - file.write(f"{inner}#start with a clean node tree\n") - file.write(f"{inner}for node in {nt_var}.nodes:\n") - file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") - else: - file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'ShaderNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - file.write("\n") - - inputs_set = False - outputs_set = False - - #initialize nodes - file.write(f"{inner}#initialize {nt_var} nodes\n") - - #dictionary to keep track of node->variable name pairs - node_vars = {} - - for node in node_tree.nodes: - if node.bl_idname == 'ShaderNodeGroup': - node_nt = node.node_tree - if node_nt is not None and node_nt not in node_trees: - process_mat_node_group(node_nt, level + 1) - node_trees.add(node_nt) - - node_var = create_node(node, file, inner, nt_var, node_vars, - used_vars) - - set_settings_defaults(node, shader_node_settings, file, - addon_dir, inner, node_var) - hide_hidden_sockets(node, file, inner, node_var) - - if node.bl_idname == 'ShaderNodeGroup': - if node.node_tree is not None: - file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) - elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - group_io_settings(node, file, inner, "input", nt_var, node_tree) - inputs_set = True - - elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - group_io_settings(node, file, inner, "output", nt_var, node_tree) - outputs_set = True - - if self.mode == 'ADDON': - set_input_defaults(node, file, inner, node_var, addon_dir) - else: - set_input_defaults(node, file, inner, node_var) - set_output_defaults(node, file, inner, node_var) - - set_parents(node_tree, file, inner, node_vars) - set_locations(node_tree, file, inner, node_vars) - set_dimensions(node_tree, file, inner, node_vars) - - init_links(node_tree, file, inner, nt_var, node_vars) - - file.write(f"\n{outer}{nt_var}_node_group()\n\n") - - if self.mode == 'ADDON': - level = 2 - else: - level = 0 - process_mat_node_group(nt, level) - - if self.mode == 'ADDON': - file.write("\t\treturn {'FINISHED'}\n\n") - - create_menu_func(file, class_name) - create_register_func(file, class_name) - create_unregister_func(file, class_name) - create_main_func(file) - else: - context.window_manager.clipboard = file.getvalue() - - file.close() - - if self.mode == 'ADDON': - zip_addon(zip_dir) - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = dir - self.report({'INFO'}, f"NodeToPython: Saved material to {location}") - return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self) - def draw(self, context): - self.layout.prop(self, "mode") - -class NTPMaterialMenu(bpy.types.Menu): - bl_idname = "NODE_MT_ntp_material" - bl_label = "Select Material" - - @classmethod - def poll(cls, context): - return True - - def draw(self, context): - layout = self.layout.column_flow(columns=1) - layout.operator_context = 'INVOKE_DEFAULT' - for mat in bpy.data.materials: - if mat.node_tree: - op = layout.operator(NTPMaterialOperator.bl_idname, - text=mat.name) - op.material_name = mat.name - -class NTPMaterialPanel(bpy.types.Panel): - bl_label = "Material to Python" - bl_idname = "NODE_PT_mat_to_python" - bl_space_type = 'NODE_EDITOR' - bl_region_type = 'UI' - bl_context = '' - bl_category = "NodeToPython" - - @classmethod - def poll(cls, context): - return True - - def draw_header(self, context): - layout = self.layout - - def draw(self, context): - layout = self.layout - row = layout.row() - - # Disables menu when there are no materials - materials = [mat for mat in bpy.data.materials if mat.node_tree] - materials_exist = len(materials) > 0 - row.enabled = materials_exist - - row.alignment = 'EXPAND' - row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_ntp_material", text="Materials") \ No newline at end of file diff --git a/material/operator.py b/material/operator.py new file mode 100644 index 0000000..3a4ebd4 --- /dev/null +++ b/material/operator.py @@ -0,0 +1,203 @@ +import bpy +from bpy.types import Operator + +import os +from io import StringIO + +from ..utils import * +from .node_settings import shader_node_settings + +MAT_VAR = "mat" + +class NTPMaterialOperator(Operator): + bl_idname = "node.ntp_material" + bl_label = "Material to Python" + bl_options = {'REGISTER', 'UNDO'} + + mode : bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full addon") + ] + ) + material_name: bpy.props.StringProperty(name="Node Group") + + def execute(self, context): + #find node group to replicate + nt = bpy.data.materials[self.material_name].node_tree + if nt is None: + self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " + "valid material. Is Use Nodes selected?")) + return {'CANCELLED'} + + #set up names to use in generated addon + mat_var = clean_string(self.material_name) + + addon_dir = None + if self.mode == 'ADDON': + dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blender file before using " + "NodeToPython!")) + return {'CANCELLED'} + + zip_dir = os.path.join(dir, mat_var) + addon_dir = os.path.join(zip_dir, mat_var) + if not os.path.exists(addon_dir): + os.makedirs(addon_dir) + file = open(f"{addon_dir}/__init__.py", "w") + + create_header(file, self.material_name) + class_name = clean_string(self.material_name, lower=False) + init_operator(file, class_name, mat_var, self.material_name) + + file.write("\tdef execute(self, context):\n") + else: + file = StringIO("") + + def create_material(indent: str): + file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" + f"name = {str_to_py_str(self.material_name)})\n")) + file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") + + if self.mode == 'ADDON': + create_material("\t\t") + elif self.mode == 'SCRIPT': #TODO: should add option for just creating the node group + create_material("") + + #set to keep track of already created node trees + node_trees: set[bpy.types.NodeTree] = set() + + #dictionary to keep track of node->variable name pairs + node_vars: dict[bpy.types.Node, str] = {} + + #keeps track of all used base variable names and usage counts + used_vars: dict[str, int] = {} + + def is_outermost_node_group(level: int) -> bool: + if self.mode == 'ADDON' and level == 2: + return True + elif self.mode == 'SCRIPT' and level == 0: + return True + return False + + def process_mat_node_group(node_tree: bpy.types.NodeTree, + level: int + ) -> None: + """ + Generates a Python function to recreate a node tree + + Parameters: + node_tree (bpy.types.NodeTree): node tree to be recreated + level (int): number of tabs to use for each line, used with + node groups within node groups and script/add-on differences + """ + + if is_outermost_node_group(level): + nt_var = create_var(self.material_name, used_vars) + nt_name = self.material_name + else: + nt_var = create_var(node_tree.name, used_vars) + nt_name = node_tree.name + + outer, inner = make_indents(level) + + #initialize node group + file.write(f"{outer}#initialize {nt_var} node group\n") + file.write(f"{outer}def {nt_var}_node_group():\n") + + if is_outermost_node_group(level): #outermost node group + file.write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") + file.write(f"{inner}#start with a clean node tree\n") + file.write(f"{inner}for node in {nt_var}.nodes:\n") + file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + else: + file.write((f"{inner}{nt_var}" + f"= bpy.data.node_groups.new(" + f"type = \'ShaderNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) + file.write("\n") + + inputs_set = False + outputs_set = False + + #initialize nodes + file.write(f"{inner}#initialize {nt_var} nodes\n") + + #dictionary to keep track of node->variable name pairs + node_vars = {} + + for node in node_tree.nodes: + if node.bl_idname == 'ShaderNodeGroup': + node_nt = node.node_tree + if node_nt is not None and node_nt not in node_trees: + process_mat_node_group(node_nt, level + 1) + node_trees.add(node_nt) + + node_var = create_node(node, file, inner, nt_var, node_vars, + used_vars) + + set_settings_defaults(node, shader_node_settings, file, + addon_dir, inner, node_var) + hide_hidden_sockets(node, file, inner, node_var) + + if node.bl_idname == 'ShaderNodeGroup': + if node.node_tree is not None: + file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: + group_io_settings(node, file, inner, "input", nt_var, node_tree) + inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: + group_io_settings(node, file, inner, "output", nt_var, node_tree) + outputs_set = True + + if self.mode == 'ADDON': + set_input_defaults(node, file, inner, node_var, addon_dir) + else: + set_input_defaults(node, file, inner, node_var) + set_output_defaults(node, file, inner, node_var) + + set_parents(node_tree, file, inner, node_vars) + set_locations(node_tree, file, inner, node_vars) + set_dimensions(node_tree, file, inner, node_vars) + + init_links(node_tree, file, inner, nt_var, node_vars) + + file.write(f"\n{outer}{nt_var}_node_group()\n\n") + + if self.mode == 'ADDON': + level = 2 + else: + level = 0 + process_mat_node_group(nt, level) + + if self.mode == 'ADDON': + file.write("\t\treturn {'FINISHED'}\n\n") + + create_menu_func(file, class_name) + create_register_func(file, class_name) + create_unregister_func(file, class_name) + create_main_func(file) + else: + context.window_manager.clipboard = file.getvalue() + + file.close() + + if self.mode == 'ADDON': + zip_addon(zip_dir) + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = dir + self.report({'INFO'}, f"NodeToPython: Saved material to {location}") + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + def draw(self, context): + self.layout.prop(self, "mode") \ No newline at end of file diff --git a/material/panel.py b/material/panel.py new file mode 100644 index 0000000..3266bb6 --- /dev/null +++ b/material/panel.py @@ -0,0 +1,30 @@ +import bpy +from bpy.types import Panel + +class NTPMaterialPanel(Panel): + bl_label = "Material to Python" + bl_idname = "NODE_PT_mat_to_python" + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = "NodeToPython" + + @classmethod + def poll(cls, context): + return True + + def draw_header(self, context): + layout = self.layout + + def draw(self, context): + layout = self.layout + row = layout.row() + + # Disables menu when there are no materials + materials = [mat for mat in bpy.data.materials if mat.node_tree] + materials_exist = len(materials) > 0 + row.enabled = materials_exist + + row.alignment = 'EXPAND' + row.operator_context = 'INVOKE_DEFAULT' + row.menu("NODE_MT_ntp_material", text="Materials") \ No newline at end of file From 1121841f17ad6e27feb5f3737ed578db2c27a513 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 12 Sep 2023 20:53:15 -0500 Subject: [PATCH 125/286] refactor: split material operator into functions --- geometry/operator.py | 16 +- material/node_tree.py | 9 ++ material/operator.py | 334 +++++++++++++++++++++++------------------- 3 files changed, 205 insertions(+), 154 deletions(-) create mode 100644 material/node_tree.py diff --git a/geometry/operator.py b/geometry/operator.py index 5ba51fb..bdcafe0 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -8,11 +8,11 @@ from bpy.types import Operator import os +from io import StringIO from ..utils import * from .node_tree import NTP_GeoNodeTree from .node_settings import geo_node_settings -from io import StringIO class NTPGeoNodesOperator(Operator): bl_idname = "node.ntp_geo_nodes" @@ -33,6 +33,9 @@ def __init__(self): # File/string the add-on/script is generated into self._file: TextIO = None + # Path to the save directory + self._dir: str = None + # Path to the directory of the zip file self._zip_dir: str = None @@ -50,14 +53,14 @@ def __init__(self): def _setup_addon_directories(self, context: Context, nt_var: str): #find base directory to save new addon - dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not dir or dir == "": + self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not self._dir or self._dir == "": self.report({'ERROR'}, ("NodeToPython: Save your blend file before using " "NodeToPython!")) #TODO: Still valid?? - return {'CANCELLED'} + return {'CANCELLED'} #TODO - self._zip_dir = os.path.join(dir, nt_var) + self._zip_dir = os.path.join(self._dir, nt_var) self._addon_dir = os.path.join(self._zip_dir, nt_var) if not os.path.exists(self._addon_dir): @@ -163,6 +166,7 @@ def _process_geo_node_tree(self, node_tree: GeometryNodeTree, nt_var = create_var(node_tree.name, self._used_vars) outer, inner = make_indents(level) #TODO: put in NTP_NodeTree class? + # Eventually these should go away anyways, and level of indentation depends just on the mode #initialize node group self._file.write(f"{outer}#initialize {nt_var} node group\n") @@ -211,7 +215,7 @@ def _report_finished(self): if self.mode == 'SCRIPT': location = "clipboard" else: - location = dir + location = self._dir self.report({'INFO'}, f"NodeToPython: Saved geometry nodes group to {location}") diff --git a/material/node_tree.py b/material/node_tree.py new file mode 100644 index 0000000..02c014b --- /dev/null +++ b/material/node_tree.py @@ -0,0 +1,9 @@ +from bpy.types import ShaderNodeTree + +class NTP_ShaderNodeTree: #TODO: these should derive from a single base class + def __init__(self, node_tree: ShaderNodeTree, var_name: str): + self.node_tree: ShaderNodeTree = node_tree + self.var_name: str = var_name + + self.inputs_set: bool = False + self.outputs_set: bool = False \ No newline at end of file diff --git a/material/operator.py b/material/operator.py index 3a4ebd4..f688217 100644 --- a/material/operator.py +++ b/material/operator.py @@ -1,11 +1,15 @@ import bpy +from bpy.types import Context from bpy.types import Operator +from bpy.types import Node +from bpy.types import ShaderNodeTree import os from io import StringIO from ..utils import * from .node_settings import shader_node_settings +from .node_tree import NTP_ShaderNodeTree MAT_VAR = "mat" @@ -21,183 +25,217 @@ class NTPMaterialOperator(Operator): ('ADDON', "Addon", "Create a full addon") ] ) + + #TODO: add option for general shader node groups material_name: bpy.props.StringProperty(name="Node Group") + def __init__(self): + # File/string the add-on/script is generated into + self._file: TextIO = None + + # Path to the current directory + self._dir: str = None + + # Path to the directory of the zip file + self._zip_dir: str = None + + # Path to the directory for the generated addon + self._addon_dir: str = None + + # Class named for the generated operator + self._class_name: str = None + + # Set to keep track of already created node trees + self._node_trees: set[ShaderNodeTree] = set() + + # Dictionary to keep track of node->variable name pairs + self._node_vars: dict[Node, str] = {} + + # Dictionary to keep track of variables->usage count pairs + self._used_vars: dict[str, int] = {} + + def _setup_addon_directories(self, context: Context, mat_var: str): + self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not self._dir or self._dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blender file before using " + "NodeToPython!")) + return {'CANCELLED'} #TODO: check this doesn't make sad + + self._zip_dir = os.path.join(self._dir, mat_var) + self._addon_dir = os.path.join(self._zip_dir, mat_var) + if not os.path.exists(self._addon_dir): + os.makedirs(self._addon_dir) + self._file = open(f"{self._addon_dir}/__init__.py", "w") + + create_header(self._file, self.material_name) + self._class_name = clean_string(self.material_name, lower=False) + init_operator(self._file, self._class_name, mat_var, self.material_name) + + self._file.write("\tdef execute(self, context):\n") + + def _create_material(self, indent: str): + self._file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" + f"name = {str_to_py_str(self.material_name)})\n")) + self._file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") + + def _is_outermost_node_group(self, level: int) -> bool: + if self.mode == 'ADDON' and level == 2: + return True + elif self.mode == 'SCRIPT' and level == 0: + return True + return False + + def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): + #initialize node group + self._file.write(f"{outer}#initialize {nt_var} node group\n") + self._file.write(f"{outer}def {nt_var}_node_group():\n") + + if self._is_outermost_node_group(level): + self._file.write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") + self._file.write(f"{inner}#start with a clean node tree\n") + self._file.write(f"{inner}for node in {nt_var}.nodes:\n") + self._file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + else: + self._file.write((f"{inner}{nt_var}" + f"= bpy.data.node_groups.new(" + f"type = \'ShaderNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) + self._file.write("\n") + + def _process_shader_group_node(self, node, level, inner, node_var): + node_nt = node.node_tree + if node_nt is not None: + if node_nt not in self._node_trees: + self._process_shader_node_tree(node_nt, level + 1) + self._node_trees.add(node_nt) + + self._file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) + + def _set_socket_defaults(self, node, inner, node_var): + if self.mode == 'ADDON': + set_input_defaults(node, self._file, inner, node_var, self._addon_dir) + else: + set_input_defaults(node, self._file, inner, node_var) + set_output_defaults(node, self._file, inner, node_var) + + def _process_shader_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: str, level: int) -> None: + node_var = create_node(node, self._file, inner, ntp_node_tree.var_name, self._node_vars, + self._used_vars) + set_settings_defaults(node, shader_node_settings, self._file, + self._addon_dir, inner, node_var) + + if node.bl_idname == 'ShaderNodeGroup': + self._process_shader_group_node(node, level, inner, node_var) + + elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: + group_io_settings(node, self._file, inner, "input", ntp_node_tree.var_name, ntp_node_tree.node_tree) + ntp_node_tree.inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: + group_io_settings(node, self._file, inner, "output", ntp_node_tree.var_name, ntp_node_tree.node_tree) + ntp_node_tree.outputs_set = True + + hide_hidden_sockets(node, self._file, inner, node_var) + self._set_socket_defaults(node, inner, node_var) + + def _process_shader_node_tree(self, node_tree: bpy.types.NodeTree, + level: int + ) -> None: + """ + Generates a Python function to recreate a node tree + + Parameters: + node_tree (bpy.types.NodeTree): node tree to be recreated + level (int): number of tabs to use for each line, used with + node groups within node groups and script/add-on differences + """ + + if self._is_outermost_node_group(level): + nt_var = create_var(self.material_name, self._used_vars) + nt_name = self.material_name #TODO: this is probably overcomplicating things if we move to a harder material vs shader node tree difference + else: + nt_var = create_var(node_tree.name, self._used_vars) + nt_name = node_tree.name + + outer, inner = make_indents(level) + + self._initialize_shader_node_tree(outer, nt_var, level, inner, nt_name) + + ntp_nt = NTP_ShaderNodeTree(node_tree, nt_var) + + #initialize nodes + self._file.write(f"{inner}#initialize {nt_var} nodes\n") + + for node in node_tree.nodes: + self._process_shader_node(node, ntp_nt, inner, level) + + set_parents(node_tree, self._file, inner, self._node_vars) + set_locations(node_tree, self._file, inner, self._node_vars) + set_dimensions(node_tree, self._file, inner, self._node_vars) + + init_links(node_tree, self._file, inner, nt_var, self._node_vars) + + self._file.write(f"\n{outer}{nt_var}_node_group()\n\n") + + def _report_finished(self): + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = self._dir + + self.report({'INFO'}, f"NodeToPython: Saved material to {location}") + def execute(self, context): #find node group to replicate nt = bpy.data.materials[self.material_name].node_tree if nt is None: - self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " - "valid material. Is Use Nodes selected?")) + self.report({'ERROR'}, ("NodeToPython: This doesn't seem to be a " + "valid material. Is Use Nodes selected?")) return {'CANCELLED'} #set up names to use in generated addon mat_var = clean_string(self.material_name) - addon_dir = None if self.mode == 'ADDON': - dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blender file before using " - "NodeToPython!")) - return {'CANCELLED'} - - zip_dir = os.path.join(dir, mat_var) - addon_dir = os.path.join(zip_dir, mat_var) - if not os.path.exists(addon_dir): - os.makedirs(addon_dir) - file = open(f"{addon_dir}/__init__.py", "w") - - create_header(file, self.material_name) - class_name = clean_string(self.material_name, lower=False) - init_operator(file, class_name, mat_var, self.material_name) - - file.write("\tdef execute(self, context):\n") + self._setup_addon_directories(context, mat_var) else: - file = StringIO("") + self._file = StringIO("") - def create_material(indent: str): - file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" - f"name = {str_to_py_str(self.material_name)})\n")) - file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") - if self.mode == 'ADDON': - create_material("\t\t") - elif self.mode == 'SCRIPT': #TODO: should add option for just creating the node group - create_material("") - - #set to keep track of already created node trees - node_trees: set[bpy.types.NodeTree] = set() - - #dictionary to keep track of node->variable name pairs - node_vars: dict[bpy.types.Node, str] = {} - - #keeps track of all used base variable names and usage counts - used_vars: dict[str, int] = {} - - def is_outermost_node_group(level: int) -> bool: - if self.mode == 'ADDON' and level == 2: - return True - elif self.mode == 'SCRIPT' and level == 0: - return True - return False - - def process_mat_node_group(node_tree: bpy.types.NodeTree, - level: int - ) -> None: - """ - Generates a Python function to recreate a node tree - - Parameters: - node_tree (bpy.types.NodeTree): node tree to be recreated - level (int): number of tabs to use for each line, used with - node groups within node groups and script/add-on differences - """ - - if is_outermost_node_group(level): - nt_var = create_var(self.material_name, used_vars) - nt_name = self.material_name - else: - nt_var = create_var(node_tree.name, used_vars) - nt_name = node_tree.name - - outer, inner = make_indents(level) - - #initialize node group - file.write(f"{outer}#initialize {nt_var} node group\n") - file.write(f"{outer}def {nt_var}_node_group():\n") - - if is_outermost_node_group(level): #outermost node group - file.write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") - file.write(f"{inner}#start with a clean node tree\n") - file.write(f"{inner}for node in {nt_var}.nodes:\n") - file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") - else: - file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'ShaderNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - file.write("\n") - - inputs_set = False - outputs_set = False - - #initialize nodes - file.write(f"{inner}#initialize {nt_var} nodes\n") - - #dictionary to keep track of node->variable name pairs - node_vars = {} - - for node in node_tree.nodes: - if node.bl_idname == 'ShaderNodeGroup': - node_nt = node.node_tree - if node_nt is not None and node_nt not in node_trees: - process_mat_node_group(node_nt, level + 1) - node_trees.add(node_nt) - - node_var = create_node(node, file, inner, nt_var, node_vars, - used_vars) - - set_settings_defaults(node, shader_node_settings, file, - addon_dir, inner, node_var) - hide_hidden_sockets(node, file, inner, node_var) - - if node.bl_idname == 'ShaderNodeGroup': - if node.node_tree is not None: - file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) - elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - group_io_settings(node, file, inner, "input", nt_var, node_tree) - inputs_set = True - - elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - group_io_settings(node, file, inner, "output", nt_var, node_tree) - outputs_set = True - - if self.mode == 'ADDON': - set_input_defaults(node, file, inner, node_var, addon_dir) - else: - set_input_defaults(node, file, inner, node_var) - set_output_defaults(node, file, inner, node_var) - - set_parents(node_tree, file, inner, node_vars) - set_locations(node_tree, file, inner, node_vars) - set_dimensions(node_tree, file, inner, node_vars) - - init_links(node_tree, file, inner, nt_var, node_vars) - - file.write(f"\n{outer}{nt_var}_node_group()\n\n") + self._create_material("\t\t") + elif self.mode == 'SCRIPT': + self._create_material("") + if self.mode == 'ADDON': level = 2 else: level = 0 - process_mat_node_group(nt, level) + self._process_shader_node_tree(nt, level) if self.mode == 'ADDON': - file.write("\t\treturn {'FINISHED'}\n\n") - - create_menu_func(file, class_name) - create_register_func(file, class_name) - create_unregister_func(file, class_name) - create_main_func(file) + self._file.write("\t\treturn {'FINISHED'}\n\n") + create_menu_func(self._file, self._class_name) + create_register_func(self._file, self._class_name) + create_unregister_func(self._file, self._class_name) + create_main_func(self._file) else: - context.window_manager.clipboard = file.getvalue() + context.window_manager.clipboard = self._file.getvalue() - file.close() + self._file.close() if self.mode == 'ADDON': - zip_addon(zip_dir) - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = dir - self.report({'INFO'}, f"NodeToPython: Saved material to {location}") + zip_addon(self._zip_dir) + + self._report_finished() + return {'FINISHED'} def invoke(self, context, event): return context.window_manager.invoke_props_dialog(self) + def draw(self, context): self.layout.prop(self, "mode") \ No newline at end of file From 3140705e5e488756b666d752be544232ec14056d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 17 Sep 2023 19:51:27 -0500 Subject: [PATCH 126/286] refactor: started moving common functionality to a base class --- NTP_NodeTree.py | 16 +++++ NTP_Operator.py | 129 +++++++++++++++++++++++++++++++++++++ geometry/node_tree.py | 10 ++- geometry/operator.py | 107 +++++++------------------------ material/node_tree.py | 11 ++-- material/operator.py | 143 +++++++++++------------------------------- 6 files changed, 213 insertions(+), 203 deletions(-) create mode 100644 NTP_NodeTree.py create mode 100644 NTP_Operator.py diff --git a/NTP_NodeTree.py b/NTP_NodeTree.py new file mode 100644 index 0000000..8903d1b --- /dev/null +++ b/NTP_NodeTree.py @@ -0,0 +1,16 @@ +from bpy.types import NodeTree + +from .utils import ST + +class NTP_NodeTree: + def __init__(self, node_tree: NodeTree, var: str): + # Blender node tree object being copied + self.node_tree: NodeTree = node_tree + + # The variable named for the regenerated node tree + self.var: str = var + + # Keep track of if we need to set the default values for the node + # tree inputs and outputs + self.inputs_set: bool = False + self.outputs_set: bool = False \ No newline at end of file diff --git a/NTP_Operator.py b/NTP_Operator.py new file mode 100644 index 0000000..e2db991 --- /dev/null +++ b/NTP_Operator.py @@ -0,0 +1,129 @@ +import bpy +from bpy.types import Context, Operator +from bpy.types import Node, NodeTree + +from io import StringIO +import os +from typing import TextIO + +from .NTP_NodeTree import NTP_NodeTree +from .utils import * + +class NTP_Operator(Operator): + """ + "Abstract" base class for all NTP operators. Blender types and abstraction + don't seem to mix well, but this should only be inherited from + """ + + bl_idname = "" + bl_label = "" + + mode : bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full addon") + ] + ) + + def __init__(self): + super().__init__() + + # File (TextIO) or string (StringIO) the add-on/script is generated into + self._file = None + + # Path to the current directory + self._dir: str = None + + # Path to the directory of the zip file + self._zip_dir: str = None + + # Path to the directory for the generated addon + self._addon_dir: str = None + + # Class named for the generated operator + self._class_name: str = None + + # Set to keep track of already created node trees + self._node_trees: set[NodeTree] = set() + + # Dictionary to keep track of node->variable name pairs + self._node_vars: dict[Node, str] = {} + + # Dictionary to keep track of variables->usage count pairs + self._used_vars: dict[str, int] = {} + + # Dictionary used for setting node properties + self._settings: dict[str, list[(str, ST)]] = {} + + def _setup_addon_directories(self, context: Context, nt_var: str) -> None: + """ + Finds/creates directories to save add-on to + """ + #find base directory to save new addon + self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not self._dir or self._dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blend file before using " + "NodeToPython!")) #TODO: Still valid?? + return {'CANCELLED'} #TODO + + self._zip_dir = os.path.join(self._dir, nt_var) + self._addon_dir = os.path.join(self._zip_dir, nt_var) + + if not os.path.exists(self._addon_dir): + os.makedirs(self._addon_dir) + + def _process_group_node_tree(self, node: Node, node_var: str, level: int, inner: str) -> None: + """ + Processes node tree of group node if one is present + """ + node_tree = node.node_tree + if node_tree is not None: + if node_tree not in self._node_trees: + self._process_node_tree(node_tree, level + 1) + self._node_trees.add(node_tree) + self._file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) + + def _set_socket_defaults(self, node: Node, node_var: str, inner: str): + if self.mode == 'ADDON': + set_input_defaults(node, self._file, inner, node_var, self._addon_dir) + elif self.mode == 'SCRIPT': + set_input_defaults(node, self._file, inner, node_var) + set_output_defaults(node, self._file, inner, node_var) + + # ABSTRACT + def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, + level: int) -> None: + return + + # ABSTRACT + def _process_node_tree(self, node_tree: NodeTree, level: int) -> None: + return + + def _report_finished(self, object: str): + """ + Alert user that NTP is finished + + Parameters: + object (str): the copied node tree or encapsulating structure + (geometry node modifier, material, scene, etc.) + """ + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = self._dir + self.report({'INFO'}, + f"NodeToPython: Saved {object} to {location}") + + # ABSTRACT + def execute(self): + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + + def draw(self, context): + self.layout.prop(self, "mode") diff --git a/geometry/node_tree.py b/geometry/node_tree.py index 2f42452..a8408f0 100644 --- a/geometry/node_tree.py +++ b/geometry/node_tree.py @@ -1,10 +1,8 @@ from bpy.types import GeometryNodeTree, GeometryNodeSimulationInput -class NTP_GeoNodeTree: - def __init__(self, node_tree: GeometryNodeTree, var_name: str): - self.node_tree: GeometryNodeTree = node_tree - self.var_name: str = var_name +from ..NTP_NodeTree import NTP_NodeTree - self.inputs_set: bool = False - self.outputs_set: bool = False +class NTP_GeoNodeTree(NTP_NodeTree): + def __init__(self, node_tree: GeometryNodeTree, var: str): + super().__init__(node_tree, var) self.sim_inputs: list[GeometryNodeSimulationInput] = [] \ No newline at end of file diff --git a/geometry/operator.py b/geometry/operator.py index bdcafe0..2265b16 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -5,16 +5,16 @@ from bpy.types import GeometryNodeSimulationOutput from bpy.types import GeometryNodeTree from bpy.types import Node -from bpy.types import Operator import os from io import StringIO +from ..NTP_Operator import NTP_Operator from ..utils import * from .node_tree import NTP_GeoNodeTree from .node_settings import geo_node_settings -class NTPGeoNodesOperator(Operator): +class NTPGeoNodesOperator(NTP_Operator): bl_idname = "node.ntp_geo_nodes" bl_label = "Geo Nodes to Python" bl_options = {'REGISTER', 'UNDO'} @@ -28,55 +28,11 @@ class NTPGeoNodesOperator(Operator): ) geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") - - def __init__(self): - # File/string the add-on/script is generated into - self._file: TextIO = None - - # Path to the save directory - self._dir: str = None - - # Path to the directory of the zip file - self._zip_dir: str = None - - # Path to the directory for the generated addon - self._addon_dir: str = None - # Set to keep track of already created node trees - self._node_trees: set[GeometryNodeTree] = set() - - # Dictionary to keep track of node->variable name pairs - self._node_vars: dict[Node, str] = {} + def __init__(self): + super().__init__() + self._settings = geo_node_settings - # Dictionary to keep track of variables->usage count pairs - self._used_vars: dict[str, int] = {} - - def _setup_addon_directories(self, context: Context, nt_var: str): - #find base directory to save new addon - self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not self._dir or self._dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blend file before using " - "NodeToPython!")) #TODO: Still valid?? - return {'CANCELLED'} #TODO - - self._zip_dir = os.path.join(self._dir, nt_var) - self._addon_dir = os.path.join(self._zip_dir, nt_var) - - if not os.path.exists(self._addon_dir): - os.makedirs(self._addon_dir) - - def _process_geo_node_group_node(self, node: GeometryNodeGroup, - level: int, inner: str, node_var: str - ) -> None: - nt = node.node_tree - if nt is not None: - if nt not in self._node_trees: - self._process_geo_node_tree(nt, level + 1) - self._file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[{str_to_py_str(nt.name)}]\n")) - def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, inner: str, node_var: str) -> None: self._file.write(f"{inner}# Remove generated sim state items\n") @@ -94,32 +50,24 @@ def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, self._file.write((f"{inner}{si_var}.attribute_domain " f"= {attr_domain}\n")) - def _set_socket_defaults(self, node: Node, inner: str, - node_var: str) -> None: - if self.mode == 'ADDON': - set_input_defaults(node, self._file, inner, node_var, self._addon_dir) - else: - set_input_defaults(node, self._file, inner, node_var) - set_output_defaults(node, self._file, inner, node_var) - def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, inner: str, level: int) -> None: #create node - node_var: str = create_node(node, self._file, inner, ntp_node_tree.var_name, + node_var: str = create_node(node, self._file, inner, ntp_node_tree.var, self._node_vars, self._used_vars) - set_settings_defaults(node, geo_node_settings, self._file, + set_settings_defaults(node, self._settings, self._file, self._addon_dir, inner, node_var) if node.bl_idname == 'GeometryNodeGroup': - self._process_geo_node_group_node(node, level, inner, node_var) + self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - group_io_settings(node, self._file, inner, "input", ntp_node_tree.var_name, + group_io_settings(node, self._file, inner, "input", ntp_node_tree.var, ntp_node_tree.node_tree) #TODO: convert to using NTP_NodeTrees ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: group_io_settings(node, self._file, inner, "output", - ntp_node_tree.var_name, ntp_node_tree.node_tree) + ntp_node_tree.var, ntp_node_tree.node_tree) ntp_node_tree.outputs_set = True elif node.bl_idname == 'GeometryNodeSimulationInput': @@ -131,7 +79,8 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, hide_hidden_sockets(node, self._file, inner, node_var) if node.bl_idname != 'GeometryNodeSimulationInput': - self._set_socket_defaults(node, inner, node_var) + self._set_socket_defaults(node, node_var, inner) + def _process_sim_zones(self, sim_inputs: list[GeometryNodeSimulationInput], inner: str) -> None: @@ -150,10 +99,11 @@ def _process_sim_zones(self, sim_inputs: list[GeometryNodeSimulationInput], f"({sim_output_var})\n")) #must set defaults after paired with output - self._set_socket_defaults(sim_input, inner, sim_input_var) - self._set_socket_defaults(sim_output, inner, sim_output_var) + self._set_socket_defaults(sim_input, sim_input_var, inner) + self._set_socket_defaults(sim_output, sim_output_var, inner) - def _process_geo_node_tree(self, node_tree: GeometryNodeTree, + + def _process_node_tree(self, node_tree: GeometryNodeTree, level: int) -> None: """ Generates a Python function to recreate a node tree @@ -180,6 +130,7 @@ def _process_geo_node_tree(self, node_tree: GeometryNodeTree, self._file.write(f"{inner}#initialize {nt_var} nodes\n") ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) + for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) @@ -199,6 +150,7 @@ def _process_geo_node_tree(self, node_tree: GeometryNodeTree, self._file.write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") return self._used_vars + def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): #get object self._file.write(f"\t\tname = bpy.context.object.name\n") @@ -210,14 +162,6 @@ def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): f"type = 'NODES')\n")) self._file.write(f"\t\tmod.node_group = {nt_var}\n") - def _report_finished(self): - #alert user that NTP is finished - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = self._dir - self.report({'INFO'}, - f"NodeToPython: Saved geometry nodes group to {location}") def execute(self, context): #find node group to replicate @@ -232,8 +176,7 @@ def execute(self, context): self._file = open(f"{self._addon_dir}/__init__.py", "w") create_header(self._file, nt.name) - class_name = clean_string(nt.name.replace(" ", "").replace('.', ""), - lower = False) #TODO: should probably be standardized name to class name util method + class_name = clean_string(nt.name, lower = False) init_operator(self._file, class_name, nt_var, nt.name) self._file.write("\tdef execute(self, context):\n") else: @@ -243,7 +186,7 @@ def execute(self, context): level = 2 else: level = 0 - self._process_geo_node_tree(nt, level) + self._process_node_tree(nt, level) if self.mode == 'ADDON': self._apply_modifier(nt, nt_var) @@ -259,12 +202,6 @@ def execute(self, context): if self.mode == 'ADDON': zip_addon(self._zip_dir) - self._report_finished() - - return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self) + self._report_finished("geometry node group") - def draw(self, context): - self.layout.prop(self, "mode") + return {'FINISHED'} \ No newline at end of file diff --git a/material/node_tree.py b/material/node_tree.py index 02c014b..aa4822f 100644 --- a/material/node_tree.py +++ b/material/node_tree.py @@ -1,9 +1,6 @@ +from ..NTP_NodeTree import NTP_NodeTree from bpy.types import ShaderNodeTree -class NTP_ShaderNodeTree: #TODO: these should derive from a single base class - def __init__(self, node_tree: ShaderNodeTree, var_name: str): - self.node_tree: ShaderNodeTree = node_tree - self.var_name: str = var_name - - self.inputs_set: bool = False - self.outputs_set: bool = False \ No newline at end of file +class NTP_ShaderNodeTree(NTP_NodeTree): + def __init__(self, node_tree: ShaderNodeTree, var: str): + super().__init__(node_tree, var) \ No newline at end of file diff --git a/material/operator.py b/material/operator.py index f688217..1774eaf 100644 --- a/material/operator.py +++ b/material/operator.py @@ -8,77 +8,30 @@ from io import StringIO from ..utils import * +from ..NTP_Operator import NTP_Operator from .node_settings import shader_node_settings from .node_tree import NTP_ShaderNodeTree MAT_VAR = "mat" -class NTPMaterialOperator(Operator): +class NTPMaterialOperator(NTP_Operator): bl_idname = "node.ntp_material" bl_label = "Material to Python" bl_options = {'REGISTER', 'UNDO'} - - mode : bpy.props.EnumProperty( - name = "Mode", - items = [ - ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") - ] - ) #TODO: add option for general shader node groups material_name: bpy.props.StringProperty(name="Node Group") def __init__(self): - # File/string the add-on/script is generated into - self._file: TextIO = None - - # Path to the current directory - self._dir: str = None - - # Path to the directory of the zip file - self._zip_dir: str = None - - # Path to the directory for the generated addon - self._addon_dir: str = None - - # Class named for the generated operator - self._class_name: str = None - - # Set to keep track of already created node trees - self._node_trees: set[ShaderNodeTree] = set() - - # Dictionary to keep track of node->variable name pairs - self._node_vars: dict[Node, str] = {} - - # Dictionary to keep track of variables->usage count pairs - self._used_vars: dict[str, int] = {} - - def _setup_addon_directories(self, context: Context, mat_var: str): - self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not self._dir or self._dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blender file before using " - "NodeToPython!")) - return {'CANCELLED'} #TODO: check this doesn't make sad - - self._zip_dir = os.path.join(self._dir, mat_var) - self._addon_dir = os.path.join(self._zip_dir, mat_var) - if not os.path.exists(self._addon_dir): - os.makedirs(self._addon_dir) - self._file = open(f"{self._addon_dir}/__init__.py", "w") - - create_header(self._file, self.material_name) - self._class_name = clean_string(self.material_name, lower=False) - init_operator(self._file, self._class_name, mat_var, self.material_name) - - self._file.write("\tdef execute(self, context):\n") - + super().__init__() + self._settings = shader_node_settings + def _create_material(self, indent: str): self._file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" f"name = {str_to_py_str(self.material_name)})\n")) self._file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") + def _is_outermost_node_group(self, level: int) -> bool: if self.mode == 'ADDON' and level == 2: return True @@ -86,6 +39,7 @@ def _is_outermost_node_group(self, level: int) -> bool: return True return False + def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): #initialize node group self._file.write(f"{outer}#initialize {nt_var} node group\n") @@ -98,52 +52,35 @@ def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): self._file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") else: self._file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'ShaderNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) + f"= bpy.data.node_groups.new(" + f"type = \'ShaderNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) self._file.write("\n") - def _process_shader_group_node(self, node, level, inner, node_var): - node_nt = node.node_tree - if node_nt is not None: - if node_nt not in self._node_trees: - self._process_shader_node_tree(node_nt, level + 1) - self._node_trees.add(node_nt) - - self._file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) - - def _set_socket_defaults(self, node, inner, node_var): - if self.mode == 'ADDON': - set_input_defaults(node, self._file, inner, node_var, self._addon_dir) - else: - set_input_defaults(node, self._file, inner, node_var) - set_output_defaults(node, self._file, inner, node_var) - - def _process_shader_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: str, level: int) -> None: - node_var = create_node(node, self._file, inner, ntp_node_tree.var_name, self._node_vars, - self._used_vars) - set_settings_defaults(node, shader_node_settings, self._file, + def _process_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: str, level: int) -> None: + #create node + node_var: str = create_node(node, self._file, inner, ntp_node_tree.var, + self._node_vars, self._used_vars) + set_settings_defaults(node, self._settings, self._file, self._addon_dir, inner, node_var) - if node.bl_idname == 'ShaderNodeGroup': - self._process_shader_group_node(node, level, inner, node_var) + self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - group_io_settings(node, self._file, inner, "input", ntp_node_tree.var_name, ntp_node_tree.node_tree) + group_io_settings(node, self._file, inner, "input", + ntp_node_tree.var, ntp_node_tree.node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - group_io_settings(node, self._file, inner, "output", ntp_node_tree.var_name, ntp_node_tree.node_tree) + group_io_settings(node, self._file, inner, "output", + ntp_node_tree.var, ntp_node_tree.node_tree) ntp_node_tree.outputs_set = True hide_hidden_sockets(node, self._file, inner, node_var) - self._set_socket_defaults(node, inner, node_var) - - def _process_shader_node_tree(self, node_tree: bpy.types.NodeTree, - level: int - ) -> None: + self._set_socket_defaults(node, node_var, inner) + + + def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: """ Generates a Python function to recreate a node tree @@ -170,7 +107,7 @@ def _process_shader_node_tree(self, node_tree: bpy.types.NodeTree, self._file.write(f"{inner}#initialize {nt_var} nodes\n") for node in node_tree.nodes: - self._process_shader_node(node, ntp_nt, inner, level) + self._process_node(node, ntp_nt, inner, level) set_parents(node_tree, self._file, inner, self._node_vars) set_locations(node_tree, self._file, inner, self._node_vars) @@ -178,15 +115,9 @@ def _process_shader_node_tree(self, node_tree: bpy.types.NodeTree, init_links(node_tree, self._file, inner, nt_var, self._node_vars) - self._file.write(f"\n{outer}{nt_var}_node_group()\n\n") + self._file.write(f"{inner}return {nt_var}\n") - def _report_finished(self): - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = self._dir - - self.report({'INFO'}, f"NodeToPython: Saved material to {location}") + self._file.write(f"\n{outer}{nt_var}_node_group()\n\n") def execute(self, context): #find node group to replicate @@ -201,6 +132,14 @@ def execute(self, context): if self.mode == 'ADDON': self._setup_addon_directories(context, mat_var) + + self._file = open(f"{self._addon_dir}/__init__.py", "w") + + create_header(self._file, self.material_name) + self._class_name = clean_string(self.material_name, lower=False) + init_operator(self._file, self._class_name, mat_var, self.material_name) + + self._file.write("\tdef execute(self, context):\n") else: self._file = StringIO("") @@ -214,7 +153,7 @@ def execute(self, context): level = 2 else: level = 0 - self._process_shader_node_tree(nt, level) + self._process_node_tree(nt, level) if self.mode == 'ADDON': self._file.write("\t\treturn {'FINISHED'}\n\n") @@ -230,12 +169,6 @@ def execute(self, context): if self.mode == 'ADDON': zip_addon(self._zip_dir) - self._report_finished() - - return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self) + self._report_finished("material") - def draw(self, context): - self.layout.prop(self, "mode") \ No newline at end of file + return {'FINISHED'} \ No newline at end of file From 2a3689889766ab2fb0ab3e674f9b439cff5d56fb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 18 Nov 2023 16:57:06 -0600 Subject: [PATCH 127/286] refactor: new compositor nodes structure --- __init__.py | 8 +- compositor/__init__.py | 13 + compositor.py => compositor/node_settings.py | 308 +------------------ compositor/node_tree.py | 7 + compositor/operator.py | 230 ++++++++++++++ compositor/ui.py | 80 +++++ geometry/menu.py | 9 +- geometry/operator.py | 2 - material/operator.py | 4 +- utils.py | 122 ++++---- 10 files changed, 407 insertions(+), 376 deletions(-) create mode 100644 compositor/__init__.py rename compositor.py => compositor/node_settings.py (63%) create mode 100644 compositor/node_tree.py create mode 100644 compositor/operator.py create mode 100644 compositor/ui.py diff --git a/__init__.py b/__init__.py index d64930f..a949fee 100644 --- a/__init__.py +++ b/__init__.py @@ -42,10 +42,10 @@ def draw(self, context): options.NTPOptions, options.NTPOptionsPanel, #compositor - compositor.NTPCompositorOperator, - compositor.NTPCompositorScenesMenu, - compositor.NTPCompositorGroupsMenu, - compositor.NTPCompositorPanel, + compositor.operator.NTPCompositorOperator, + compositor.ui.NTPCompositorScenesMenu, + compositor.ui.NTPCompositorGroupsMenu, + compositor.ui.NTPCompositorPanel, #geometry geometry.operator.NTPGeoNodesOperator, geometry.menu.NTPGeoNodesMenu, diff --git a/compositor/__init__.py b/compositor/__init__.py new file mode 100644 index 0000000..e2707b0 --- /dev/null +++ b/compositor/__init__.py @@ -0,0 +1,13 @@ +if "bpy" in locals(): + import importlib + importlib.reload(node_settings) + importlib.reload(node_tree) + importlib.reload(operator) + importlib.reload(ui) +else: + from . import node_settings + from . import node_tree + from . import operator + from . import ui + +import bpy \ No newline at end of file diff --git a/compositor.py b/compositor/node_settings.py similarity index 63% rename from compositor.py rename to compositor/node_settings.py index 4a1b222..ff8a377 100644 --- a/compositor.py +++ b/compositor/node_settings.py @@ -1,16 +1,4 @@ -import bpy -import os - -from .utils import * -from io import StringIO - -SCENE_VAR = "scene" -BASE_NAME_VAR = "base_name" -END_NAME_VAR = "end_name" - -ntp_vars = {SCENE_VAR, BASE_NAME_VAR, END_NAME_VAR} -#TODO: do something similar for geo nodes and materials, should be useful for -# possible conflicts between ntp_vars and node vars +from ..utils import ST compositor_node_settings : dict[str, list[(str, ST)]] = { # INPUT @@ -439,297 +427,3 @@ # LAYOUT 'CompositorNodeSwitch' : [("check", ST.BOOL)] } - -class NTPCompositorOperator(bpy.types.Operator): - bl_idname = "node.compositor_to_python" - bl_label = "Compositor to Python" - bl_options = {'REGISTER', 'UNDO'} - - mode : bpy.props.EnumProperty( - name = "Mode", - items = [ - ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") - ] - ) - - compositor_name: bpy.props.StringProperty(name="Node Group") - is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") - - def execute(self, context): - #find node group to replicate - if self.is_scene: - nt = bpy.data.scenes[self.compositor_name].node_tree - else: - nt = bpy.data.node_groups[self.compositor_name] - if nt is None: - #shouldn't happen - self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " - "valid compositor node tree. Is Use Nodes " - "selected?")) - return {'CANCELLED'} - - #set up names to use in generated addon - comp_var = clean_string(self.compositor_name) - - addon_dir = None - if self.mode == 'ADDON': - dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blender file before using " - "NodeToPython!")) - return {'CANCELLED'} - - zip_dir = os.path.join(dir, comp_var) - addon_dir = os.path.join(zip_dir, comp_var) - if not os.path.exists(addon_dir): - os.makedirs(addon_dir) - file = open(f"{addon_dir}/__init__.py", "w") - - create_header(file, self.compositor_name) - class_name = clean_string(self.compositor_name, lower=False) - init_operator(file, class_name, comp_var, self.compositor_name) - - file.write("\tdef execute(self, context):\n") - else: - file = StringIO("") - - if self.is_scene: - def create_scene(indent: str): - #TODO: wrap in more general unique name util function - file.write(f"{indent}# Generate unique scene name\n") - file.write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") - file.write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") - file.write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - file.write(f"{indent}\ti = 1\n") - file.write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - file.write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - file.write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - file.write(f"{indent}\t\ti += 1\n\n") - - file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") - file.write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") - file.write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") - file.write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") - - if self.mode == 'ADDON': - create_scene("\t\t") - elif self.mode == 'SCRIPT': - create_scene("") - - #set to keep track of already created node trees - node_trees = set() - - #dictionary to keep track of node->variable name pairs - node_vars = {} - - #keeps track of all used variables - used_vars = {} - - def is_outermost_node_group(level: int) -> bool: - if self.mode == 'ADDON' and level == 2: - return True - elif self.mode == 'SCRIPT' and level == 0: - return True - return False - - def process_comp_node_group(node_tree, level, node_vars, used_vars): - if is_outermost_node_group(level): - nt_var = create_var(self.compositor_name, used_vars) - nt_name = self.compositor_name - else: - nt_var = create_var(node_tree.name, used_vars) - nt_name = node_tree.name - - outer, inner = make_indents(level) - - #initialize node group - file.write(f"{outer}#initialize {nt_var} node group\n") - file.write(f"{outer}def {nt_var}_node_group():\n") - - if is_outermost_node_group(level): #outermost node group - file.write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") - file.write(f"{inner}#start with a clean node tree\n") - file.write(f"{inner}for node in {nt_var}.nodes:\n") - file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") - else: - file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'CompositorNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - file.write("\n") - - inputs_set = False - outputs_set = False - - #initialize nodes - file.write(f"{inner}#initialize {nt_var} nodes\n") - - #dictionary to keep track of node->variable name pairs - node_vars = {} - - for node in node_tree.nodes: - if node.bl_idname == 'CompositorNodeGroup': - node_nt = node.node_tree - if node_nt is not None and node_nt not in node_trees: - process_comp_node_group(node_nt, level + 1, node_vars, - used_vars) - node_trees.add(node_nt) - - node_var = create_node(node, file, inner, nt_var, node_vars, - used_vars) - - if node.bl_idname == 'CompositorNodeColorBalance': - if node.correction_method == 'LIFT_GAMMA_GAIN': - lst = [("correction_method", ST.ENUM), - ("gain", ST.COLOR), - ("gamma", ST.COLOR), - ("lift", ST.COLOR)] - else: - lst = [("correction_method", ST.ENUM), - ("offset", ST.COLOR), - ("offset_basis", ST.FLOAT), - ("power", ST.COLOR), - ("slope", ST.COLOR)] - - compositor_node_settings['CompositorNodeColorBalance'] = lst - - set_settings_defaults(node, compositor_node_settings, file, - addon_dir, inner, node_var) - hide_hidden_sockets(node, file, inner, node_var) - - if node.bl_idname == 'CompositorNodeGroup': - if node.node_tree is not None: - file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) - elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - group_io_settings(node, file, inner, "input", nt_var, node_tree) - inputs_set = True - - elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - group_io_settings(node, file, inner, "output", nt_var, node_tree) - outputs_set = True - if self.mode == 'ADDON': - set_input_defaults(node, file, inner, node_var, addon_dir) - else: - set_input_defaults(node, file, inner, node_var) - set_output_defaults(node, file, inner, node_var) - - set_parents(node_tree, file, inner, node_vars) - set_locations(node_tree, file, inner, node_vars) - set_dimensions(node_tree, file, inner, node_vars) - - init_links(node_tree, file, inner, nt_var, node_vars) - - file.write(f"\n{outer}{nt_var}_node_group()\n\n") - - if self.mode == 'ADDON': - level = 2 - else: - level = 0 - process_comp_node_group(nt, level, node_vars, used_vars) - - if self.mode == 'ADDON': - file.write("\t\treturn {'FINISHED'}\n\n") - - create_menu_func(file, class_name) - create_register_func(file, class_name) - create_unregister_func(file, class_name) - create_main_func(file) - else: - context.window_manager.clipboard = file.getvalue() - - file.close() - - if self.mode == 'ADDON': - zip_addon(zip_dir) - - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = dir - self.report({'INFO'}, f"NodeToPython: Saved compositor nodes to {location}") - return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self) - def draw(self, context): - self.layout.prop(self, "mode") - -class NTPCompositorScenesMenu(bpy.types.Menu): - bl_idname = "NODE_MT_ntp_comp_scenes" - bl_label = "Select " - - @classmethod - def poll(cls, context): - return True - - def draw(self, context): - layout = self.layout.column_flow(columns=1) - layout.operator_context = 'INVOKE_DEFAULT' - for scene in bpy.data.scenes: - if scene.node_tree: - op = layout.operator(NTPCompositorOperator.bl_idname, - text=scene.name) - op.compositor_name = scene.name - op.is_scene = True - -class NTPCompositorGroupsMenu(bpy.types.Menu): - bl_idname = "NODE_MT_ntp_comp_groups" - bl_label = "Select " - - @classmethod - def poll(cls, context): - return True - - def draw(self, context): - layout = self.layout.column_flow(columns=1) - layout.operator_context = 'INVOKE_DEFAULT' - for node_group in bpy.data.node_groups: - if node_group.bl_idname == 'CompositorNodeTree': - op = layout.operator(NTPCompositorOperator.bl_idname, - text=node_group.name) - op.compositor_name = node_group.name - op.is_scene = False - -class NTPCompositorPanel(bpy.types.Panel): - bl_label = "Compositor to Python" - bl_idname = "NODE_PT_ntp_compositor" - bl_space_type = 'NODE_EDITOR' - bl_region_type = 'UI' - bl_context = '' - bl_category = "NodeToPython" - - @classmethod - def poll(cls, context): - return True - - def draw_header(self, context): - layout = self.layout - - def draw(self, context): - layout = self.layout - scenes_row = layout.row() - - # Disables menu when there are no compositing node groups - scenes = [scene for scene in bpy.data.scenes if scene.node_tree] - scenes_exist = len(scenes) > 0 - scenes_row.enabled = scenes_exist - - scenes_row.alignment = 'EXPAND' - scenes_row.operator_context = 'INVOKE_DEFAULT' - scenes_row.menu("NODE_MT_ntp_comp_scenes", - text="Scene Compositor Nodes") - - groups_row = layout.row() - groups = [node_tree for node_tree in bpy.data.node_groups - if node_tree.bl_idname == 'CompositorNodeTree'] - groups_exist = len(groups) > 0 - groups_row.enabled = groups_exist - - groups_row.alignment = 'EXPAND' - groups_row.operator_context = 'INVOKE_DEFAULT' - groups_row.menu("NODE_MT_ntp_comp_groups", - text="Group Compositor Nodes") diff --git a/compositor/node_tree.py b/compositor/node_tree.py new file mode 100644 index 0000000..d799df0 --- /dev/null +++ b/compositor/node_tree.py @@ -0,0 +1,7 @@ +from bpy.types import CompositorNodeTree + +from ..NTP_NodeTree import NTP_NodeTree + +class NTP_CompositorNodeTree(NTP_NodeTree): + def __init__(self, node_tree: CompositorNodeTree, var: str): + super().__init__(node_tree, var) \ No newline at end of file diff --git a/compositor/operator.py b/compositor/operator.py new file mode 100644 index 0000000..dcb5be8 --- /dev/null +++ b/compositor/operator.py @@ -0,0 +1,230 @@ +import bpy +import os + +from ..utils import * +from io import StringIO +from .node_settings import compositor_node_settings + +SCENE_VAR = "scene" +BASE_NAME_VAR = "base_name" +END_NAME_VAR = "end_name" + +ntp_vars = {SCENE_VAR, BASE_NAME_VAR, END_NAME_VAR} + +class NTPCompositorOperator(bpy.types.Operator): + bl_idname = "node.compositor_to_python" + bl_label = "Compositor to Python" + bl_options = {'REGISTER', 'UNDO'} + + mode : bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full addon") + ] + ) + + compositor_name: bpy.props.StringProperty(name="Node Group") + is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") + + def execute(self, context): + #find node group to replicate + if self.is_scene: + nt = bpy.data.scenes[self.compositor_name].node_tree + else: + nt = bpy.data.node_groups[self.compositor_name] + if nt is None: + #shouldn't happen + self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " + "valid compositor node tree. Is Use Nodes " + "selected?")) + return {'CANCELLED'} + + #set up names to use in generated addon + comp_var = clean_string(self.compositor_name) + + addon_dir = None + if self.mode == 'ADDON': + dir = bpy.path.abspath(context.scene.ntp_options.dir_path) + if not dir or dir == "": + self.report({'ERROR'}, + ("NodeToPython: Save your blender file before using " + "NodeToPython!")) + return {'CANCELLED'} + + zip_dir = os.path.join(dir, comp_var) + addon_dir = os.path.join(zip_dir, comp_var) + if not os.path.exists(addon_dir): + os.makedirs(addon_dir) + file = open(f"{addon_dir}/__init__.py", "w") + + create_header(file, self.compositor_name) + class_name = clean_string(self.compositor_name, lower=False) + init_operator(file, class_name, comp_var, self.compositor_name) + + file.write("\tdef execute(self, context):\n") + else: + file = StringIO("") + + if self.is_scene: + def create_scene(indent: str): + #TODO: wrap in more general unique name util function + file.write(f"{indent}# Generate unique scene name\n") + file.write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") + file.write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") + file.write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + file.write(f"{indent}\ti = 1\n") + file.write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + file.write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + file.write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + file.write(f"{indent}\t\ti += 1\n\n") + + file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") + file.write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") + file.write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") + file.write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") + + if self.mode == 'ADDON': + create_scene("\t\t") + elif self.mode == 'SCRIPT': + create_scene("") + + #set to keep track of already created node trees + node_trees = set() + + #dictionary to keep track of node->variable name pairs + node_vars = {} + + #keeps track of all used variables + used_vars = {} + + def is_outermost_node_group(level: int) -> bool: + if self.mode == 'ADDON' and level == 2: + return True + elif self.mode == 'SCRIPT' and level == 0: + return True + return False + + def process_comp_node_group(node_tree, level, node_vars, used_vars): + if is_outermost_node_group(level): + nt_var = create_var(self.compositor_name, used_vars) + nt_name = self.compositor_name + else: + nt_var = create_var(node_tree.name, used_vars) + nt_name = node_tree.name + + outer, inner = make_indents(level) + + #initialize node group + file.write(f"{outer}#initialize {nt_var} node group\n") + file.write(f"{outer}def {nt_var}_node_group():\n") + + if is_outermost_node_group(level): #outermost node group + file.write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") + file.write(f"{inner}#start with a clean node tree\n") + file.write(f"{inner}for node in {nt_var}.nodes:\n") + file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + else: + file.write((f"{inner}{nt_var}" + f"= bpy.data.node_groups.new(" + f"type = \'CompositorNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) + file.write("\n") + + inputs_set = False + outputs_set = False + + #initialize nodes + file.write(f"{inner}#initialize {nt_var} nodes\n") + + #dictionary to keep track of node->variable name pairs + node_vars = {} + + for node in node_tree.nodes: + if node.bl_idname == 'CompositorNodeGroup': + node_nt = node.node_tree + if node_nt is not None and node_nt not in node_trees: + process_comp_node_group(node_nt, level + 1, node_vars, + used_vars) + node_trees.add(node_nt) + + node_var = create_node(node, file, inner, nt_var, node_vars, + used_vars) + + if node.bl_idname == 'CompositorNodeColorBalance': + if node.correction_method == 'LIFT_GAMMA_GAIN': + lst = [("correction_method", ST.ENUM), + ("gain", ST.COLOR), + ("gamma", ST.COLOR), + ("lift", ST.COLOR)] + else: + lst = [("correction_method", ST.ENUM), + ("offset", ST.COLOR), + ("offset_basis", ST.FLOAT), + ("power", ST.COLOR), + ("slope", ST.COLOR)] + + compositor_node_settings['CompositorNodeColorBalance'] = lst + + set_settings_defaults(node, compositor_node_settings, file, + addon_dir, inner, node_var) + hide_hidden_sockets(node, file, inner, node_var) + + if node.bl_idname == 'CompositorNodeGroup': + if node.node_tree is not None: + file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: + group_io_settings(node, file, inner, "input", nt_var, node_tree) + inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: + group_io_settings(node, file, inner, "output", nt_var, node_tree) + outputs_set = True + if self.mode == 'ADDON': + set_input_defaults(node, file, inner, node_var, addon_dir) + else: + set_input_defaults(node, file, inner, node_var) + set_output_defaults(node, file, inner, node_var) + + set_parents(node_tree, file, inner, node_vars) + set_locations(node_tree, file, inner, node_vars) + set_dimensions(node_tree, file, inner, node_vars) + + init_links(node_tree, file, inner, nt_var, node_vars) + + file.write(f"\n{outer}{nt_var}_node_group()\n\n") + + if self.mode == 'ADDON': + level = 2 + else: + level = 0 + process_comp_node_group(nt, level, node_vars, used_vars) + + if self.mode == 'ADDON': + file.write("\t\treturn {'FINISHED'}\n\n") + + create_menu_func(file, class_name) + create_register_func(file, class_name) + create_unregister_func(file, class_name) + create_main_func(file) + else: + context.window_manager.clipboard = file.getvalue() + + file.close() + + if self.mode == 'ADDON': + zip_addon(zip_dir) + + if self.mode == 'SCRIPT': + location = "clipboard" + else: + location = dir + self.report({'INFO'}, f"NodeToPython: Saved compositor nodes to {location}") + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + def draw(self, context): + self.layout.prop(self, "mode") \ No newline at end of file diff --git a/compositor/ui.py b/compositor/ui.py new file mode 100644 index 0000000..a1003ca --- /dev/null +++ b/compositor/ui.py @@ -0,0 +1,80 @@ +import bpy +from bpy.types import Panel +from bpy.types import Menu +from .operator import NTPCompositorOperator + +class NTPCompositorPanel(Panel): + bl_label = "Compositor to Python" + bl_idname = "NODE_PT_ntp_compositor" + bl_space_type = 'NODE_EDITOR' + bl_region_type = 'UI' + bl_context = '' + bl_category = "NodeToPython" + + @classmethod + def poll(cls, context): + return True + + def draw_header(self, context): + layout = self.layout + + def draw(self, context): + layout = self.layout + scenes_row = layout.row() + + # Disables menu when there are no compositing node groups + scenes = [scene for scene in bpy.data.scenes if scene.node_tree] + scenes_exist = len(scenes) > 0 + scenes_row.enabled = scenes_exist + + scenes_row.alignment = 'EXPAND' + scenes_row.operator_context = 'INVOKE_DEFAULT' + scenes_row.menu("NODE_MT_ntp_comp_scenes", + text="Scene Compositor Nodes") + + groups_row = layout.row() + groups = [node_tree for node_tree in bpy.data.node_groups + if node_tree.bl_idname == 'CompositorNodeTree'] + groups_exist = len(groups) > 0 + groups_row.enabled = groups_exist + + groups_row.alignment = 'EXPAND' + groups_row.operator_context = 'INVOKE_DEFAULT' + groups_row.menu("NODE_MT_ntp_comp_groups", + text="Group Compositor Nodes") + +class NTPCompositorScenesMenu(Menu): + bl_idname = "NODE_MT_ntp_comp_scenes" + bl_label = "Select " + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + for scene in bpy.data.scenes: + if scene.node_tree: + op = layout.operator(NTPCompositorOperator.bl_idname, + text=scene.name) + op.compositor_name = scene.name + op.is_scene = True + +class NTPCompositorGroupsMenu(Menu): + bl_idname = "NODE_MT_ntp_comp_groups" + bl_label = "Select " + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + for node_group in bpy.data.node_groups: + if node_group.bl_idname == 'CompositorNodeTree': + op = layout.operator(NTPCompositorOperator.bl_idname, + text=node_group.name) + op.compositor_name = node_group.name + op.is_scene = False \ No newline at end of file diff --git a/geometry/menu.py b/geometry/menu.py index 20299ca..7d5561f 100644 --- a/geometry/menu.py +++ b/geometry/menu.py @@ -18,8 +18,7 @@ def draw(self, context): geo_node_groups = [node_tree for node_tree in bpy.data.node_groups if node_tree.bl_idname == 'GeometryNodeTree'] - for node_tree in bpy.data.node_groups: - if node_tree.bl_idname == 'GeometryNodeTree': - op = layout.operator(NTPGeoNodesOperator.bl_idname, - text=node_tree.name) - op.geo_nodes_group_name = node_tree.name \ No newline at end of file + for node_tree in geo_node_groups: + op = layout.operator(NTPGeoNodesOperator.bl_idname, + text=node_tree.name) + op.geo_nodes_group_name = node_tree.name \ No newline at end of file diff --git a/geometry/operator.py b/geometry/operator.py index 2265b16..b49d9ca 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -1,6 +1,4 @@ import bpy -from bpy.types import Context -from bpy.types import GeometryNodeGroup from bpy.types import GeometryNodeSimulationInput from bpy.types import GeometryNodeSimulationOutput from bpy.types import GeometryNodeTree diff --git a/material/operator.py b/material/operator.py index 1774eaf..a3613ff 100644 --- a/material/operator.py +++ b/material/operator.py @@ -1,6 +1,4 @@ import bpy -from bpy.types import Context -from bpy.types import Operator from bpy.types import Node from bpy.types import ShaderNodeTree @@ -85,7 +83,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: Generates a Python function to recreate a node tree Parameters: - node_tree (bpy.types.NodeTree): node tree to be recreated + node_tree (NodeTree): node tree to be recreated level (int): number of tabs to use for each line, used with node groups within node groups and script/add-on differences """ diff --git a/utils.py b/utils.py index ae432d8..fe77587 100644 --- a/utils.py +++ b/utils.py @@ -186,7 +186,7 @@ def create_header(file: TextIO, name: str) -> None: file.write("\t\"author\" : \"Node To Python\",\n") file.write("\t\"version\" : (1, 0, 0),\n") file.write(f"\t\"blender\" : {bpy.app.version},\n") - file.write("\t\"location\" : \"Object\",\n") + file.write("\t\"location\" : \"Object\",\n") #TODO file.write("\t\"category\" : \"Node\"\n") file.write("}\n") file.write("\n") @@ -232,6 +232,7 @@ def create_var(name: str, used_vars: dict[str, int]) -> str: used_vars[var] = 0 return clean_name +#TODO: reconsider node tree definitions within node tree definitions def make_indents(level: int) -> Tuple[str, str]: """ Returns strings with the correct number of indentations @@ -314,53 +315,57 @@ def set_settings_defaults(node: bpy.types.Node, inner (str): indentation node_var (str): name of the variable we're using for the node in our add-on """ - if node.bl_idname in settings: - for (attr_name, type) in settings[node.bl_idname]: - attr = getattr(node, attr_name, None) - if attr is None: - print(f"\"{node_var}.{attr_name}\" not found") - continue - setting_str = f"{inner}{node_var}.{attr_name}" - if type == ST.ENUM: - if attr != '': - file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") - elif type == ST.ENUM_SET: - file.write(f"{setting_str} = {attr}\n") - elif type == ST.STRING: - file.write(f"{setting_str} = {str_to_py_str(attr)}\n") - elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: - file.write(f"{setting_str} = {attr}\n") - elif type == ST.VEC1: - file.write(f"{setting_str} = {vec1_to_py_str(attr)}\n") - elif type == ST.VEC2: - file.write(f"{setting_str} = {vec2_to_py_str(attr)}\n") - elif type == ST.VEC3: - file.write(f"{setting_str} = {vec3_to_py_str(attr)}\n") - elif type == ST.VEC4: - file.write(f"{setting_str} = {vec4_to_py_str(attr)}\n") - elif type == ST.COLOR: - file.write(f"{setting_str} = {color_to_py_str(attr)}\n") - elif type == ST.MATERIAL: - name = str_to_py_str(attr.name) - file.write((f"{inner}if {name} in bpy.data.materials:\n")) - file.write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.materials[{name}]\n")) - elif type == ST.OBJECT: - name = str_to_py_str(attr.name) - file.write((f"{inner}if {name} in bpy.data.objects:\n")) - file.write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.objects[{name}]\n")) - elif type == ST.COLOR_RAMP: - color_ramp_settings(node, file, inner, node_var, attr_name) - elif type == ST.CURVE_MAPPING: - curve_mapping_settings(node, file, inner, node_var, attr_name) - elif type == ST.IMAGE: - if addon_dir is not None and attr is not None: - if attr.source in {'FILE', 'GENERATED', 'TILED'}: - save_image(attr, addon_dir) - load_image(attr, file, inner, f"{node_var}.{attr_name}") - elif type == ST.IMAGE_USER: - image_user_settings(attr, file, inner, f"{node_var}.{attr_name}") + if node.bl_idname not in settings: + print((f"NodeToPython: couldn't find {node.bl_idname} in settings." + f"Your Blender version may not be supported")) + return + + for (attr_name, type) in settings[node.bl_idname]: + attr = getattr(node, attr_name, None) + if attr is None: + print(f"\"{node_var}.{attr_name}\" not found") + continue + setting_str = f"{inner}{node_var}.{attr_name}" + if type == ST.ENUM: + if attr != '': + file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") + elif type == ST.ENUM_SET: + file.write(f"{setting_str} = {attr}\n") + elif type == ST.STRING: + file.write(f"{setting_str} = {str_to_py_str(attr)}\n") + elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: + file.write(f"{setting_str} = {attr}\n") + elif type == ST.VEC1: + file.write(f"{setting_str} = {vec1_to_py_str(attr)}\n") + elif type == ST.VEC2: + file.write(f"{setting_str} = {vec2_to_py_str(attr)}\n") + elif type == ST.VEC3: + file.write(f"{setting_str} = {vec3_to_py_str(attr)}\n") + elif type == ST.VEC4: + file.write(f"{setting_str} = {vec4_to_py_str(attr)}\n") + elif type == ST.COLOR: + file.write(f"{setting_str} = {color_to_py_str(attr)}\n") + elif type == ST.MATERIAL: + name = str_to_py_str(attr.name) + file.write((f"{inner}if {name} in bpy.data.materials:\n")) + file.write((f"{inner}\t{node_var}.{attr_name} = " + f"bpy.data.materials[{name}]\n")) + elif type == ST.OBJECT: + name = str_to_py_str(attr.name) + file.write((f"{inner}if {name} in bpy.data.objects:\n")) + file.write((f"{inner}\t{node_var}.{attr_name} = " + f"bpy.data.objects[{name}]\n")) + elif type == ST.COLOR_RAMP: + color_ramp_settings(node, file, inner, node_var, attr_name) + elif type == ST.CURVE_MAPPING: + curve_mapping_settings(node, file, inner, node_var, attr_name) + elif type == ST.IMAGE: + if addon_dir is not None and attr is not None: + if attr.source in {'FILE', 'GENERATED', 'TILED'}: + save_image(attr, addon_dir) + load_image(attr, file, inner, f"{node_var}.{attr_name}") + elif type == ST.IMAGE_USER: + image_user_settings(attr, file, inner, f"{node_var}.{attr_name}") def hide_hidden_sockets(node: bpy.types.Node, file: TextIO, @@ -408,6 +413,7 @@ def group_io_settings(node: bpy.types.Node, else: ios = node.inputs ntio = node_tree.outputs + file.write(f"{inner}#{node_tree_var} {io}s\n") for i, inout in enumerate(ios): if inout.bl_idname == 'NodeSocketVirtual': @@ -420,6 +426,7 @@ def group_io_settings(node: bpy.types.Node, socket_var = f"{node_tree_var}.{io}s[{i}]" if inout.type in default_sockets: + #TODO: separate default socket function #default value if inout.type == 'RGBA': dv = vec4_to_py_str(socket.default_value) @@ -514,17 +521,18 @@ def color_ramp_settings(node: bpy.types.Node, file.write((f"{inner}{element_var} = " f"{ramp_str}.elements" f".new({element.position})\n")) + file.write((f"{inner}{element_var}.alpha = " f"{element.alpha}\n")) color_str = vec4_to_py_str(element.color) file.write((f"{inner}{element_var}.color = {color_str}\n\n")) def curve_mapping_settings(node: bpy.types.Node, - file: TextIO, - inner: str, - node_var: str, - curve_mapping_name: str - ) -> None: + file: TextIO, + inner: str, + node_var: str, + curve_mapping_name: str + ) -> None: """ Sets defaults for Float, Vector, and Color curves @@ -538,7 +546,8 @@ def curve_mapping_settings(node: bpy.types.Node, mapping = getattr(node, curve_mapping_name) if not mapping: - raise ValueError(f"Curve mapping \"{curve_mapping_name}\" not found in node \"{node.bl_idname}\"") + raise ValueError((f"Curve mapping \"{curve_mapping_name}\" not found " + f"in node \"{node.bl_idname}\"")) #mapping settings file.write(f"{inner}#mapping settings\n") @@ -574,6 +583,7 @@ def curve_mapping_settings(node: bpy.types.Node, #create curves for i, curve in enumerate(mapping.curves): + #TODO: curve function file.write(f"{inner}#curve {i}\n") curve_i = f"{node_var}_curve_{i}" file.write((f"{inner}{curve_i} = " @@ -587,6 +597,7 @@ def curve_mapping_settings(node: bpy.types.Node, file.write(f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") for j, point in enumerate(curve.points): + #TODO: point function point_j = f"{inner}{curve_i}_point_{j}" loc = point.location @@ -716,6 +727,7 @@ def set_input_defaults(node: bpy.types.Node, for i, input in enumerate(node.inputs): if input.bl_idname not in dont_set_defaults and not input.is_linked: + #TODO: this could be cleaner socket_var = f"{node_var}.inputs[{i}]" #colors @@ -787,7 +799,7 @@ def in_file_inputs(input: bpy.types.NodeSocket, name = str_to_py_str(input.default_value.name) file.write(f"{inner}if {name} in bpy.data.{type}:\n") file.write((f"{inner}\t{socket_var}.default_value = " - f"bpy.data.{type}[{name}]\n")) + f"bpy.data.{type}[{name}]\n")) def set_output_defaults(node: bpy.types.Node, file: TextIO, From 41e33eae48bc193f360ec7cec5ca0fb1007ea995 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 18 Nov 2023 17:47:07 -0600 Subject: [PATCH 128/286] refactor: compositor partial cleanup --- NTP_Operator.py | 9 +- compositor/operator.py | 317 +++++++++++++++++++---------------------- material/operator.py | 10 +- utils.py | 1 + 4 files changed, 160 insertions(+), 177 deletions(-) diff --git a/NTP_Operator.py b/NTP_Operator.py index e2db991..371618c 100644 --- a/NTP_Operator.py +++ b/NTP_Operator.py @@ -30,7 +30,7 @@ def __init__(self): super().__init__() # File (TextIO) or string (StringIO) the add-on/script is generated into - self._file = None + self._file : TextIO = None # Path to the current directory self._dir: str = None @@ -74,6 +74,13 @@ def _setup_addon_directories(self, context: Context, nt_var: str) -> None: if not os.path.exists(self._addon_dir): os.makedirs(self._addon_dir) + def _is_outermost_node_group(self, level: int) -> bool: + if self.mode == 'ADDON' and level == 2: + return True + elif self.mode == 'SCRIPT' and level == 0: + return True + return False + def _process_group_node_tree(self, node: Node, node_var: str, level: int, inner: str) -> None: """ Processes node tree of group node if one is present diff --git a/compositor/operator.py b/compositor/operator.py index dcb5be8..06bde78 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -1,6 +1,10 @@ import bpy import os +from bpy.types import Node + +from ..NTP_Operator import NTP_Operator +from .node_tree import NTP_CompositorNodeTree from ..utils import * from io import StringIO from .node_settings import compositor_node_settings @@ -11,8 +15,8 @@ ntp_vars = {SCENE_VAR, BASE_NAME_VAR, END_NAME_VAR} -class NTPCompositorOperator(bpy.types.Operator): - bl_idname = "node.compositor_to_python" +class NTPCompositorOperator(NTP_Operator): + bl_idname = "node.ntp_compositor" bl_label = "Compositor to Python" bl_options = {'REGISTER', 'UNDO'} @@ -27,12 +31,133 @@ class NTPCompositorOperator(bpy.types.Operator): compositor_name: bpy.props.StringProperty(name="Node Group") is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") + def __init__(self): + super().__init__() + self._settings = compositor_node_settings + + + def _create_scene(self, indent: str): + #TODO: wrap in more general unique name util function + self._file.write(f"{indent}# Generate unique scene name\n") + self._file.write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") + self._file.write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") + self._file.write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + self._file.write(f"{indent}\ti = 1\n") + self._file.write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + self._file.write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + self._file.write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + self._file.write(f"{indent}\t\ti += 1\n\n") + + self._file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") + self._file.write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") + self._file.write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") + self._file.write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") + + def _initialize_compositor_node_tree(self, outer, nt_var, level, inner, nt_name): + #initialize node group + self._file.write(f"{outer}#initialize {nt_var} node group\n") + self._file.write(f"{outer}def {nt_var}_node_group():\n") + + if self._is_outermost_node_group(level): #outermost node group + self._file.write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") + self._file.write(f"{inner}#start with a clean node tree\n") + self._file.write(f"{inner}for node in {nt_var}.nodes:\n") + self._file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + else: + self._file.write((f"{inner}{nt_var}" + f"= bpy.data.node_groups.new(" + f"type = \'CompositorNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) + self._file.write("\n") + + def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, level: int): + if node.bl_idname == 'CompositorNodeGroup': + node_nt = node.node_tree + if node_nt is not None and node_nt not in self._node_trees: + self._process_comp_node_group(node_nt, level + 1, self._node_vars, + self._used_vars) + self._node_trees.add(node_nt) + + node_var: str = create_node(node, self._file, inner, ntp_nt.var, self._node_vars, + self._used_vars) + + if node.bl_idname == 'CompositorNodeColorBalance': + if node.correction_method == 'LIFT_GAMMA_GAIN': + lst = [("correction_method", ST.ENUM), + ("gain", ST.COLOR), + ("gamma", ST.COLOR), + ("lift", ST.COLOR)] + else: + lst = [("correction_method", ST.ENUM), + ("offset", ST.COLOR), + ("offset_basis", ST.FLOAT), + ("power", ST.COLOR), + ("slope", ST.COLOR)] + + compositor_node_settings['CompositorNodeColorBalance'] = lst + + set_settings_defaults(node, compositor_node_settings, self._file, + self._addon_dir, inner, node_var) + hide_hidden_sockets(node, self._file, inner, node_var) + + if node.bl_idname == 'CompositorNodeGroup': + if node.node_tree is not None: + self._file.write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: + group_io_settings(node, self._file, inner, "input", ntp_nt.var, ntp_nt.node_tree) + inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: + group_io_settings(node, self._file, inner, "output", ntp_nt.var, ntp_nt.node_tree) + outputs_set = True + + self._set_socket_defaults(node, node_var, inner) + + def _process_node_tree(self, node_tree, level): + """ + Generates a Python function to recreate a compositor node tree + + Parameters: + node_tree (NodeTree): node tree to be recreated + level (int): number of tabs to use for each line + + """ + if self._is_outermost_node_group(level): + nt_var = create_var(self.compositor_name, self._used_vars) + nt_name = self.compositor_name + else: + nt_var = create_var(node_tree.name, self._used_vars) + nt_name = node_tree.name + + outer, inner = make_indents(level) + + self._initialize_compositor_node_tree(outer, nt_var, level, inner, nt_name) + + ntp_nt = NTP_CompositorNodeTree(node_tree, nt_var) + + #initialize nodes + self._file.write(f"{inner}#initialize {nt_var} nodes\n") + + for node in node_tree.nodes: + self._process_node(node, ntp_nt, inner, level) + + set_parents(node_tree, self._file, inner, self._node_vars) + set_locations(node_tree, self._file, inner, self._node_vars) + set_dimensions(node_tree, self._file, inner, self._node_vars) + + init_links(node_tree, self._file, inner, nt_var, self._node_vars) + + self._file.write(f"\n{outer}{nt_var}_node_group()\n\n") + def execute(self, context): #find node group to replicate if self.is_scene: nt = bpy.data.scenes[self.compositor_name].node_tree else: nt = bpy.data.node_groups[self.compositor_name] + if nt is None: #shouldn't happen self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " @@ -43,188 +168,46 @@ def execute(self, context): #set up names to use in generated addon comp_var = clean_string(self.compositor_name) - addon_dir = None if self.mode == 'ADDON': - dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not dir or dir == "": - self.report({'ERROR'}, - ("NodeToPython: Save your blender file before using " - "NodeToPython!")) - return {'CANCELLED'} - - zip_dir = os.path.join(dir, comp_var) - addon_dir = os.path.join(zip_dir, comp_var) - if not os.path.exists(addon_dir): - os.makedirs(addon_dir) - file = open(f"{addon_dir}/__init__.py", "w") - - create_header(file, self.compositor_name) + self._setup_addon_directories(context, comp_var) + + self._file = open(f"{self._addon_dir}/__init__.py", "w") + + create_header(self._file, self.compositor_name) class_name = clean_string(self.compositor_name, lower=False) - init_operator(file, class_name, comp_var, self.compositor_name) + init_operator(self._file, class_name, comp_var, self.compositor_name) - file.write("\tdef execute(self, context):\n") + self._file.write("\tdef execute(self, context):\n") else: - file = StringIO("") + self._file = StringIO("") if self.is_scene: - def create_scene(indent: str): - #TODO: wrap in more general unique name util function - file.write(f"{indent}# Generate unique scene name\n") - file.write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") - file.write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") - file.write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - file.write(f"{indent}\ti = 1\n") - file.write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - file.write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - file.write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - file.write(f"{indent}\t\ti += 1\n\n") - - file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") - file.write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") - file.write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") - file.write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") - if self.mode == 'ADDON': - create_scene("\t\t") + self._create_scene("\t\t") elif self.mode == 'SCRIPT': - create_scene("") - - #set to keep track of already created node trees - node_trees = set() - - #dictionary to keep track of node->variable name pairs - node_vars = {} - - #keeps track of all used variables - used_vars = {} - - def is_outermost_node_group(level: int) -> bool: - if self.mode == 'ADDON' and level == 2: - return True - elif self.mode == 'SCRIPT' and level == 0: - return True - return False - - def process_comp_node_group(node_tree, level, node_vars, used_vars): - if is_outermost_node_group(level): - nt_var = create_var(self.compositor_name, used_vars) - nt_name = self.compositor_name - else: - nt_var = create_var(node_tree.name, used_vars) - nt_name = node_tree.name - - outer, inner = make_indents(level) - - #initialize node group - file.write(f"{outer}#initialize {nt_var} node group\n") - file.write(f"{outer}def {nt_var}_node_group():\n") - - if is_outermost_node_group(level): #outermost node group - file.write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") - file.write(f"{inner}#start with a clean node tree\n") - file.write(f"{inner}for node in {nt_var}.nodes:\n") - file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") - else: - file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'CompositorNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - file.write("\n") - - inputs_set = False - outputs_set = False - - #initialize nodes - file.write(f"{inner}#initialize {nt_var} nodes\n") - - #dictionary to keep track of node->variable name pairs - node_vars = {} - - for node in node_tree.nodes: - if node.bl_idname == 'CompositorNodeGroup': - node_nt = node.node_tree - if node_nt is not None and node_nt not in node_trees: - process_comp_node_group(node_nt, level + 1, node_vars, - used_vars) - node_trees.add(node_nt) - - node_var = create_node(node, file, inner, nt_var, node_vars, - used_vars) - - if node.bl_idname == 'CompositorNodeColorBalance': - if node.correction_method == 'LIFT_GAMMA_GAIN': - lst = [("correction_method", ST.ENUM), - ("gain", ST.COLOR), - ("gamma", ST.COLOR), - ("lift", ST.COLOR)] - else: - lst = [("correction_method", ST.ENUM), - ("offset", ST.COLOR), - ("offset_basis", ST.FLOAT), - ("power", ST.COLOR), - ("slope", ST.COLOR)] - - compositor_node_settings['CompositorNodeColorBalance'] = lst - - set_settings_defaults(node, compositor_node_settings, file, - addon_dir, inner, node_var) - hide_hidden_sockets(node, file, inner, node_var) - - if node.bl_idname == 'CompositorNodeGroup': - if node.node_tree is not None: - file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) - elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - group_io_settings(node, file, inner, "input", nt_var, node_tree) - inputs_set = True - - elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - group_io_settings(node, file, inner, "output", nt_var, node_tree) - outputs_set = True - if self.mode == 'ADDON': - set_input_defaults(node, file, inner, node_var, addon_dir) - else: - set_input_defaults(node, file, inner, node_var) - set_output_defaults(node, file, inner, node_var) - - set_parents(node_tree, file, inner, node_vars) - set_locations(node_tree, file, inner, node_vars) - set_dimensions(node_tree, file, inner, node_vars) - - init_links(node_tree, file, inner, nt_var, node_vars) - - file.write(f"\n{outer}{nt_var}_node_group()\n\n") - + self._create_scene("") + if self.mode == 'ADDON': level = 2 else: level = 0 - process_comp_node_group(nt, level, node_vars, used_vars) + self._process_node_tree(nt, level) if self.mode == 'ADDON': - file.write("\t\treturn {'FINISHED'}\n\n") + self._file.write("\t\treturn {'FINISHED'}\n\n") - create_menu_func(file, class_name) - create_register_func(file, class_name) - create_unregister_func(file, class_name) - create_main_func(file) + create_menu_func(self._file, class_name) + create_register_func(self._file, class_name) + create_unregister_func(self._file, class_name) + create_main_func(self._file) else: - context.window_manager.clipboard = file.getvalue() + context.window_manager.clipboard = self._file.getvalue() - file.close() + self._file.close() if self.mode == 'ADDON': - zip_addon(zip_dir) + zip_addon(self._zip_dir) - if self.mode == 'SCRIPT': - location = "clipboard" - else: - location = dir - self.report({'INFO'}, f"NodeToPython: Saved compositor nodes to {location}") - return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self) - def draw(self, context): - self.layout.prop(self, "mode") \ No newline at end of file + self._report_finished("compositor nodes") + + return {'FINISHED'} \ No newline at end of file diff --git a/material/operator.py b/material/operator.py index a3613ff..282021b 100644 --- a/material/operator.py +++ b/material/operator.py @@ -28,15 +28,6 @@ def _create_material(self, indent: str): self._file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" f"name = {str_to_py_str(self.material_name)})\n")) self._file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") - - - def _is_outermost_node_group(self, level: int) -> bool: - if self.mode == 'ADDON' and level == 2: - return True - elif self.mode == 'SCRIPT' and level == 0: - return True - return False - def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): #initialize node group @@ -61,6 +52,7 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: st self._node_vars, self._used_vars) set_settings_defaults(node, self._settings, self._file, self._addon_dir, inner, node_var) + if node.bl_idname == 'ShaderNodeGroup': self._process_group_node_tree(node, node_var, level, inner) diff --git a/utils.py b/utils.py index fe77587..5d41f4e 100644 --- a/utils.py +++ b/utils.py @@ -191,6 +191,7 @@ def create_header(file: TextIO, name: str) -> None: file.write("}\n") file.write("\n") file.write("import bpy\n") + file.write("import mathutils\n") file.write("import os\n") file.write("\n") From e2c7a678f93313d9d0bd6f8076caea39dd09c501 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:23:10 -0600 Subject: [PATCH 129/286] refactor: moved a lot from the utils module to the base NTP_Operator class --- NTP_Operator.py | 744 ++++++++++++++++++++++++++++++++++++- compositor/operator.py | 42 +-- geometry/operator.py | 38 +- material/operator.py | 42 +-- utils.py | 822 +---------------------------------------- 5 files changed, 797 insertions(+), 891 deletions(-) diff --git a/NTP_Operator.py b/NTP_Operator.py index 371618c..ab019cf 100644 --- a/NTP_Operator.py +++ b/NTP_Operator.py @@ -74,6 +74,45 @@ def _setup_addon_directories(self, context: Context, nt_var: str) -> None: if not os.path.exists(self._addon_dir): os.makedirs(self._addon_dir) + def _create_header(self, name: str) -> None: + """ + Sets up the bl_info and imports the Blender API + + Parameters: + file (TextIO): the file for the generated add-on + name (str): name of the add-on + """ + + self._file.write("bl_info = {\n") + self._file.write(f"\t\"name\" : \"{name}\",\n") + self._file.write("\t\"author\" : \"Node To Python\",\n") + self._file.write("\t\"version\" : (1, 0, 0),\n") + self._file.write(f"\t\"blender\" : {bpy.app.version},\n") + self._file.write("\t\"location\" : \"Object\",\n") #TODO + self._file.write("\t\"category\" : \"Node\"\n") + self._file.write("}\n") + self._file.write("\n") + self._file.write("import bpy\n") + self._file.write("import mathutils\n") + self._file.write("import os\n") + self._file.write("\n") + + def _init_operator(self, idname: str, label: str) -> None: + """ + Initializes the add-on's operator + + Parameters: + file (TextIO): the file for the generated add-on + name (str): name for the class + idname (str): name for the operator + label (str): appearence inside Blender + """ + self._file.write(f"class {self._class_name}(bpy.types.Operator):\n") + self._file.write(f"\tbl_idname = \"object.{idname}\"\n") + self._file.write(f"\tbl_label = \"{label}\"\n") + self._file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") + self._file.write("\n") + def _is_outermost_node_group(self, level: int) -> bool: if self.mode == 'ADDON' and level == 2: return True @@ -81,7 +120,8 @@ def _is_outermost_node_group(self, level: int) -> bool: return True return False - def _process_group_node_tree(self, node: Node, node_var: str, level: int, inner: str) -> None: + def _process_group_node_tree(self, node: Node, node_var: str, level: int, + inner: str) -> None: """ Processes node tree of group node if one is present """ @@ -94,12 +134,704 @@ def _process_group_node_tree(self, node: Node, node_var: str, level: int, inner: f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) + def _create_var(self, name: str) -> str: + """ + Creates a unique variable name for a node tree + + Parameters: + name (str): basic string we'd like to create the variable name out of + used_vars (dict[str, int]): dictionary containing variable names and usage counts + + Returns: + clean_name (str): variable name for the node tree + """ + if name == "": + name = "unnamed" + clean_name = clean_string(name) + var = clean_name + if var in self._used_vars: + self._used_vars[var] += 1 + return f"{clean_name}_{self._used_vars[var]}" + else: + self._used_vars[var] = 0 + return clean_name + + def _create_node(self, node: bpy.types.Node, inner: str, node_tree_var: str + ) -> str: + """ + Initializes a new node with location, dimension, and label info + + Parameters: + node (bpy.types.Node): node to be copied + inner (str): indentation level for this logic + node_tree_var (str): variable name for the node tree + Returns: + node_var (str): variable name for the node + """ + + self._file.write(f"{inner}#node {node.name}\n") + + node_var = self._create_var(node.name) + self._node_vars[node] = node_var + + self._file.write((f"{inner}{node_var} " + f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) + #label + if node.label: + self._file.write(f"{inner}{node_var}.label = \"{node.label}\"\n") + + #color + if node.use_custom_color: + self._file.write(f"{inner}{node_var}.use_custom_color = True\n") + self._file.write(f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") + + #mute + if node.mute: + self._file.write(f"{inner}{node_var}.mute = True\n") + + return node_var + + def _set_settings_defaults(self, node: bpy.types.Node, inner: str, + node_var: str) -> None: + """ + Sets the defaults for any settings a node may have + + Parameters: + node (bpy.types.Node): the node object we're copying settings from + inner (str): indentation + node_var (str): name of the variable we're using for the node in our add-on + """ + if node.bl_idname not in self._settings: + print((f"NodeToPython: couldn't find {node.bl_idname} in settings." + f"Your Blender version may not be supported")) + return + + for (attr_name, type) in self._settings[node.bl_idname]: + attr = getattr(node, attr_name, None) + if attr is None: + print(f"\"{node_var}.{attr_name}\" not found") + continue + setting_str = f"{inner}{node_var}.{attr_name}" + if type == ST.ENUM: + if attr != '': + self._file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") + elif type == ST.ENUM_SET: + self._file.write(f"{setting_str} = {attr}\n") + elif type == ST.STRING: + self._file.write(f"{setting_str} = {str_to_py_str(attr)}\n") + elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: + self._file.write(f"{setting_str} = {attr}\n") + elif type == ST.VEC1: + self._file.write(f"{setting_str} = {vec1_to_py_str(attr)}\n") + elif type == ST.VEC2: + self._file.write(f"{setting_str} = {vec2_to_py_str(attr)}\n") + elif type == ST.VEC3: + self._file.write(f"{setting_str} = {vec3_to_py_str(attr)}\n") + elif type == ST.VEC4: + self._file.write(f"{setting_str} = {vec4_to_py_str(attr)}\n") + elif type == ST.COLOR: + self._file.write(f"{setting_str} = {color_to_py_str(attr)}\n") + elif type == ST.MATERIAL: + name = str_to_py_str(attr.name) + self._file.write((f"{inner}if {name} in bpy.data.materials:\n")) + self._file.write((f"{inner}\t{node_var}.{attr_name} = " + f"bpy.data.materials[{name}]\n")) + elif type == ST.OBJECT: + name = str_to_py_str(attr.name) + self._file.write((f"{inner}if {name} in bpy.data.objects:\n")) + self._file.write((f"{inner}\t{node_var}.{attr_name} = " + f"bpy.data.objects[{name}]\n")) + elif type == ST.COLOR_RAMP: + self._color_ramp_settings(node, inner, node_var, attr_name) + elif type == ST.CURVE_MAPPING: + self._curve_mapping_settings(node, inner, node_var, attr_name) + elif type == ST.IMAGE: + if self._addon_dir is not None and attr is not None: + if attr.source in {'FILE', 'GENERATED', 'TILED'}: + self._save_image(attr) + self._load_image(attr, inner, f"{node_var}.{attr_name}") + elif type == ST.IMAGE_USER: + self._image_user_settings(attr, inner, f"{node_var}.{attr_name}") + + def _group_io_settings(self, node: bpy.types.Node, inner: str, + io: str, #TODO: convert to enum + node_tree_var: str, + node_tree: bpy.types.NodeTree) -> None: + """ + Set the settings for group input and output sockets + + Parameters: + node (bpy.types.Node) : group input/output node + inner (str): indentation string + io (str): whether we're generating the input or output settings + node_tree_var (str): variable name of the generated node tree + node_tree (bpy.types.NodeTree): node tree that we're generating input + and output settings for + """ + if io == "input": + ios = node.outputs #TODO: this doesn't seem right + """ + Are sockets and node tree default ios really coupled like this?? + """ + ntio = node_tree.inputs + else: + ios = node.inputs + ntio = node_tree.outputs + + self._file.write(f"{inner}#{node_tree_var} {io}s\n") + for i, inout in enumerate(ios): + if inout.bl_idname == 'NodeSocketVirtual': + continue + self._file.write(f"{inner}#{io} {inout.name}\n") + idname = enum_to_py_str(inout.bl_idname) + name = str_to_py_str(inout.name) + self._file.write(f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") + socket = ntio[i] + socket_var = f"{node_tree_var}.{io}s[{i}]" + + if inout.type in default_sockets: + #TODO: separate default socket function + #default value + if inout.type == 'RGBA': + dv = vec4_to_py_str(socket.default_value) + elif inout.type == 'VECTOR': + dv = vec3_to_py_str(socket.default_value) + else: + dv = socket.default_value + self._file.write(f"{inner}{socket_var}.default_value = {dv}\n") + + #min value + if hasattr(socket, "min_value"): + self._file.write(f"{inner}{socket_var}.min_value = {socket.min_value}\n") + #max value + if hasattr(socket, "min_value"): + self._file.write((f"{inner}{socket_var}.max_value = {socket.max_value}\n")) + + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + dan = str_to_py_str(socket.default_attribute_name) + self._file.write((f"{inner}{socket_var}" + f".default_attribute_name = {dan}\n")) + + #attribute domain + if hasattr(socket, "attribute_domain"): + ad = enum_to_py_str(socket.attribute_domain) + self._file.write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + + #tooltip + if socket.description != "": + description = str_to_py_str(socket.description) + self._file.write((f"{inner}{socket_var}.description = {description}\n")) + + #hide_value + if socket.hide_value is True: + self._file.write(f"{inner}{socket_var}.hide_value = True\n") + + #hide in modifier + if hasattr(socket, "hide_in_modifier"): + if socket.hide_in_modifier is True: + self._file.write(f"{inner}{socket_var}.hide_in_modifier = True\n") + + self._file.write("\n") + self._file.write("\n") + + def _set_input_defaults(self, node: bpy.types.Node, inner: str, + node_var: str) -> None: + """ + Sets defaults for input sockets + + Parameters: + node (bpy.types.Node): node we're setting inputs for + inner (str): indentation + node_var (str): variable name we're using for the copied node + addon_dir (str): directory of the add-on, for if we need to save other + objects for the add-on + """ + if node.bl_idname == 'NodeReroute': + return + + for i, input in enumerate(node.inputs): + if input.bl_idname not in dont_set_defaults and not input.is_linked: + #TODO: this could be cleaner + socket_var = f"{node_var}.inputs[{i}]" + + #colors + if input.bl_idname == 'NodeSocketColor': + default_val = vec4_to_py_str(input.default_value) + + #vector types + elif "Vector" in input.bl_idname: + default_val = vec3_to_py_str(input.default_value) + + #strings + elif input.bl_idname == 'NodeSocketString': + default_val = str_to_py_str(input.default_value) + + #images + elif input.bl_idname == 'NodeSocketImage': + img = input.default_value + if img is not None and self._addon_dir != None: #write in a better way + self._save_image(img) + self._load_image(img, inner, f"{socket_var}.default_value") + default_val = None + + #materials + elif input.bl_idname == 'NodeSocketMaterial': + self._in_file_inputs(input, inner, socket_var, "materials") + default_val = None + + #collections + elif input.bl_idname == 'NodeSocketCollection': + self._in_file_inputs(input, inner, socket_var, "collections") + default_val = None + + #objects + elif input.bl_idname == 'NodeSocketObject': + self._in_file_inputs(input, inner, socket_var, "objects") + default_val = None + + #textures + elif input.bl_idname == 'NodeSocketTexture': + self._in_file_inputs(input, inner, socket_var, "textures") + default_val = None + + else: + default_val = input.default_value + if default_val is not None: + self._file.write(f"{inner}#{input.identifier}\n") + self._file.write((f"{inner}{socket_var}.default_value" + f" = {default_val}\n")) + self._file.write("\n") + + def _set_output_defaults(self, node: bpy.types.Node, + inner: str, node_var: str) -> None: + """ + Some output sockets need default values set. It's rather annoying + + Parameters: + node (bpy.types.Node): node for the output we're setting + inner (str): indentation string + node_var (str): variable name for the node we're setting output defaults for + """ + #TODO: probably should define elsewhere + output_default_nodes = {'ShaderNodeValue', + 'ShaderNodeRGB', + 'ShaderNodeNormal', + 'CompositorNodeValue', + 'CompositorNodeRGB', + 'CompositorNodeNormal'} + + if node.bl_idname not in output_default_nodes: + return + + dv = node.outputs[0].default_value + if node.bl_idname in {'ShaderNodeRGB', 'CompositorNodeRGB'}: + dv = vec4_to_py_str(list(dv)) + if node.bl_idname in {'ShaderNodeNormal', 'CompositorNodeNormal'}: + dv = vec3_to_py_str(dv) + self._file.write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) + + def _in_file_inputs(self, input: bpy.types.NodeSocket, + inner: str, + socket_var: str, + type: str + ) -> None: + """ + Sets inputs for a node input if one already exists in the blend file + + Parameters: + input (bpy.types.NodeSocket): input socket we're setting the value for + inner (str): indentation string + socket_var (str): variable name we're using for the socket + type (str): from what section of bpy.data to pull the default value from + """ + + if input.default_value is None: + return + name = str_to_py_str(input.default_value.name) + self._file.write(f"{inner}if {name} in bpy.data.{type}:\n") + self._file.write((f"{inner}\t{socket_var}.default_value = " + f"bpy.data.{type}[{name}]\n")) + + def _color_ramp_settings(self, node: bpy.types.Node, + inner: str, + node_var: str, + color_ramp_name: str) -> None: + """ + Replicate a color ramp node + + Parameters + node (bpy.types.Node): node object we're copying settings from + inner (str): indentation + node_var (str): name of the variable we're using for the color ramp + color_ramp_name (str): name of the color ramp to be copied + """ + + color_ramp: bpy.types.ColorRamp = getattr(node, color_ramp_name) + if not color_ramp: + raise ValueError(f"No color ramp named \"{color_ramp_name}\" found") + + #settings + ramp_str = f"{inner}{node_var}.{color_ramp_name}" + + color_mode = enum_to_py_str(color_ramp.color_mode) + self._file.write(f"{ramp_str}.color_mode = {color_mode}\n") + + hue_interpolation = enum_to_py_str(color_ramp.hue_interpolation) + self._file.write((f"{ramp_str}.hue_interpolation = " + f"{hue_interpolation}\n")) + interpolation = enum_to_py_str(color_ramp.interpolation) + self._file.write((f"{ramp_str}.interpolation " + f"= {interpolation}\n")) + self._file.write("\n") + + #key points + self._file.write(f"{inner}#initialize color ramp elements\n") + self._file.write((f"{ramp_str}.elements.remove" + f"({ramp_str}.elements[0])\n")) + for i, element in enumerate(color_ramp.elements): + element_var = f"{node_var}_cre_{i}" + if i == 0: + self._file.write(f"{inner}{element_var} = " + f"{ramp_str}.elements[{i}]\n") + self._file.write(f"{inner}{element_var}.position = {element.position}\n") + else: + self._file.write((f"{inner}{element_var} = " + f"{ramp_str}.elements" + f".new({element.position})\n")) + + self._file.write((f"{inner}{element_var}.alpha = " + f"{element.alpha}\n")) + color_str = vec4_to_py_str(element.color) + self._file.write((f"{inner}{element_var}.color = {color_str}\n\n")) + + def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, + node_var: str, curve_mapping_name: str + ) -> None: + """ + Sets defaults for Float, Vector, and Color curves + + Parameters: + node (bpy.types.Node): curve node we're copying settings from + file (TextIO): file we're generating the add-on into + inner (str): indentation + node_var (str): variable name for the add-on's curve node + curve_mapping_name (str): name of the curve mapping to be set + """ + + mapping = getattr(node, curve_mapping_name) + if not mapping: + raise ValueError((f"Curve mapping \"{curve_mapping_name}\" not found " + f"in node \"{node.bl_idname}\"")) + + #mapping settings + self._file.write(f"{inner}#mapping settings\n") + mapping_var = f"{inner}{node_var}.{curve_mapping_name}" + + #extend + extend = enum_to_py_str(mapping.extend) + self._file.write(f"{mapping_var}.extend = {extend}\n") + #tone + tone = enum_to_py_str(mapping.tone) + self._file.write(f"{mapping_var}.tone = {tone}\n") + + #black level + b_lvl_str = vec3_to_py_str(mapping.black_level) + self._file.write((f"{mapping_var}.black_level = {b_lvl_str}\n")) + #white level + w_lvl_str = vec3_to_py_str(mapping.white_level) + self._file.write((f"{mapping_var}.white_level = {w_lvl_str}\n")) + + #minima and maxima + min_x = mapping.clip_min_x + self._file.write(f"{mapping_var}.clip_min_x = {min_x}\n") + min_y = mapping.clip_min_y + self._file.write(f"{mapping_var}.clip_min_y = {min_y}\n") + max_x = mapping.clip_max_x + self._file.write(f"{mapping_var}.clip_max_x = {max_x}\n") + max_y = mapping.clip_max_y + self._file.write(f"{mapping_var}.clip_max_y = {max_y}\n") + + #use_clip + use_clip = mapping.use_clip + self._file.write(f"{mapping_var}.use_clip = {use_clip}\n") + + #create curves + for i, curve in enumerate(mapping.curves): + #TODO: curve function + self._file.write(f"{inner}#curve {i}\n") + curve_i = f"{node_var}_curve_{i}" + self._file.write((f"{inner}{curve_i} = " + f"{node_var}.{curve_mapping_name}.curves[{i}]\n")) + + # Remove default points when CurveMap is initialized with more than + # two points (just CompositorNodeHueCorrect) + if (node.bl_idname == 'CompositorNodeHueCorrect'): + self._file.write((f"{inner}for i in " + f"range(len({curve_i}.points.values()) - 1, 1, -1):\n")) + self._file.write(f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") + + for j, point in enumerate(curve.points): + #TODO: point function + point_j = f"{inner}{curve_i}_point_{j}" + + loc = point.location + loc_str = f"{loc[0]}, {loc[1]}" + if j < 2: + self._file.write(f"{point_j} = {curve_i}.points[{j}]\n") + self._file.write(f"{point_j}.location = ({loc_str})\n") + else: + self._file.write((f"{point_j} = {curve_i}.points.new({loc_str})\n")) + + handle = enum_to_py_str(point.handle_type) + self._file.write(f"{point_j}.handle_type = {handle}\n") + + #update curve + self._file.write(f"{inner}#update curve after changes\n") + self._file.write(f"{mapping_var}.update()\n") + + def _save_image(self, img: bpy.types.Image) -> None: + """ + Saves an image to an image directory of the add-on + + Parameters: + img (bpy.types.Image): image to be saved + """ + + if img is None: + return + + #create image dir if one doesn't exist + img_dir = os.path.join(self._addon_dir, IMAGE_DIR_NAME) + if not os.path.exists(img_dir): + os.mkdir(img_dir) + + #save the image + img_str = img_to_py_str(img) + img_path = f"{img_dir}/{img_str}" + if not os.path.exists(img_path): + img.save_render(img_path) + + def _load_image(self, img: bpy.types.Image, + inner: str, + img_var: str + ) -> None: + """ + Loads an image from the add-on into a blend file and assigns it + + Parameters: + img (bpy.types.Image): Blender image from the original node group + inner (str): indentation string + img_var (str): variable name to be used for the image + """ + + if img is None: + return + + img_str = img_to_py_str(img) + + #TODO: convert to special variables + self._file.write(f"{inner}#load image {img_str}\n") + self._file.write((f"{inner}base_dir = " + f"os.path.dirname(os.path.abspath(__file__))\n")) + self._file.write((f"{inner}image_path = " + f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " + f"\"{img_str}\")\n")) + self._file.write((f"{inner}{img_var} = " + f"bpy.data.images.load(image_path, check_existing = True)\n")) + + #copy image settings + self._file.write(f"{inner}#set image settings\n") + + #source + source = enum_to_py_str(img.source) + self._file.write(f"{inner}{img_var}.source = {source}\n") + + #color space settings + color_space = enum_to_py_str(img.colorspace_settings.name) + self._file.write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") + + #alpha mode + alpha_mode = enum_to_py_str(img.alpha_mode) + self._file.write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") + + def _image_user_settings(self, img_user: bpy.types.ImageUser, + inner: str, + img_user_var: str) -> None: + """ + Replicate the image user of an image node + + Parameters + img_usr (bpy.types.ImageUser): image user to be copied + inner (str): indentation + img_usr_var (str): variable name for the generated image user + """ + + img_usr_attrs = ["frame_current", "frame_duration", "frame_offset", + "frame_start", "tile", "use_auto_refresh", "use_cyclic"] + + for img_usr_attr in img_usr_attrs: + self._file.write((f"{inner}{img_user_var}.{img_usr_attr} = " + f"{getattr(img_user, img_usr_attr)}\n")) + + def _set_parents(self, node_tree: bpy.types.NodeTree, + inner: str) -> None: + """ + Sets parents for all nodes, mostly used to put nodes in frames + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from + inner (str): indentation string + """ + parent_comment = False + for node in node_tree.nodes: + if node is not None and node.parent is not None: + if not parent_comment: + self._file.write(f"{inner}#Set parents\n") + parent_comment = True + node_var = self._node_vars[node] + parent_var = self._node_vars[node.parent] + self._file.write(f"{inner}{node_var}.parent = {parent_var}\n") + self._file.write("\n") + + def _set_locations(self, node_tree: bpy.types.NodeTree, inner: str) -> None: + """ + Set locations for all nodes + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from + inner (str): indentation string + """ + + self._file.write(f"{inner}#Set locations\n") + for node in node_tree.nodes: + node_var = self._node_vars[node] + self._file.write((f"{inner}{node_var}.location " + f"= ({node.location.x}, {node.location.y})\n")) + self._file.write("\n") + + def _set_dimensions(self, node_tree: bpy.types.NodeTree, inner: str, + ) -> None: + """ + Set dimensions for all nodes + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from + inner (str): indentation string + """ + self._file.write(f"{inner}#Set dimensions\n") + for node in node_tree.nodes: + node_var = self._node_vars[node] + self._file.write((f"{inner}{node_var}.width, {node_var}.height " + f"= {node.width}, {node.height}\n")) + self._file.write("\n") + + def _init_links(self, node_tree: bpy.types.NodeTree, + inner: str, + node_tree_var: str) -> None: + """ + Create all the links between nodes + + Parameters: + node_tree (bpy.types.NodeTree): node tree we're copying + inner (str): indentation + node_tree_var (str): variable name we're using for the copied node tree + """ + + if node_tree.links: + self._file.write(f"{inner}#initialize {node_tree_var} links\n") + for link in node_tree.links: + in_node_var = self._node_vars[link.from_node] + input_socket = link.from_socket + + """ + Blender's socket dictionary doesn't guarantee + unique keys, which has caused much wailing and + gnashing of teeth. This is a quick fix that + doesn't run quick + """ + #TODO: try using index() method + for i, item in enumerate(link.from_node.outputs.items()): + if item[1] == input_socket: + input_idx = i + break + + out_node_var = self._node_vars[link.to_node] + output_socket = link.to_socket + + for i, item in enumerate(link.to_node.inputs.items()): + if item[1] == output_socket: + output_idx = i + break + + self._file.write((f"{inner}#{in_node_var}.{input_socket.name} " + f"-> {out_node_var}.{output_socket.name}\n")) + self._file.write((f"{inner}{node_tree_var}.links.new({in_node_var}" + f".outputs[{input_idx}], " + f"{out_node_var}.inputs[{output_idx}])\n")) + + def _hide_hidden_sockets(self, node: bpy.types.Node, inner: str, + node_var: str) -> None: + """ + Hide hidden sockets + + Parameters: + node (bpy.types.Node): node object we're copying socket settings from + inner (str): indentation string + node_var (str): name of the variable we're using for this node + """ + for i, socket in enumerate(node.inputs): + if socket.hide is True: + self._file.write(f"{inner}{node_var}.inputs[{i}].hide = True\n") + for i, socket in enumerate(node.outputs): + if socket.hide is True: + self._file.write(f"{inner}{node_var}.outputs[{i}].hide = True\n") + def _set_socket_defaults(self, node: Node, node_var: str, inner: str): - if self.mode == 'ADDON': - set_input_defaults(node, self._file, inner, node_var, self._addon_dir) - elif self.mode == 'SCRIPT': - set_input_defaults(node, self._file, inner, node_var) - set_output_defaults(node, self._file, inner, node_var) + self._set_input_defaults(node, inner, node_var) + self._set_output_defaults(node, inner, node_var) + + def _create_menu_func(self) -> None: + """ + Creates the menu function + """ + + self._file.write("def menu_func(self, context):\n") + self._file.write(f"\tself.layout.operator({self._class_name}.bl_idname)\n") + self._file.write("\n") + + def _create_register_func(self) -> None: + """ + Creates the register function + """ + self._file.write("def register():\n") + self._file.write(f"\tbpy.utils.register_class({self._class_name})\n") + self._file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") + self._file.write("\n") + + def _create_unregister_func(self) -> None: + """ + Creates the unregister function + """ + self._file.write("def unregister():\n") + self._file.write(f"\tbpy.utils.unregister_class({self._class_name})\n") + self._file.write("\tbpy.types.VIEW3D_MT_object.remove(menu_func)\n") + self._file.write("\n") + + def _create_main_func(self) -> None: + """ + Creates the main function + """ + self._file.write("if __name__ == \"__main__\":\n") + self._file.write("\tregister()") + + def _zip_addon(self) -> None: + """ + Zips up the addon and removes the directory + """ + shutil.make_archive(self._zip_dir, "zip", self._zip_dir) + shutil.rmtree(self._zip_dir) # ABSTRACT def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, diff --git a/compositor/operator.py b/compositor/operator.py index 06bde78..a4989d6 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -78,8 +78,7 @@ def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, self._used_vars) self._node_trees.add(node_nt) - node_var: str = create_node(node, self._file, inner, ntp_nt.var, self._node_vars, - self._used_vars) + node_var: str = self._create_node(node, inner, ntp_nt.var) if node.bl_idname == 'CompositorNodeColorBalance': if node.correction_method == 'LIFT_GAMMA_GAIN': @@ -94,11 +93,10 @@ def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, ("power", ST.COLOR), ("slope", ST.COLOR)] - compositor_node_settings['CompositorNodeColorBalance'] = lst + self._settings['CompositorNodeColorBalance'] = lst - set_settings_defaults(node, compositor_node_settings, self._file, - self._addon_dir, inner, node_var) - hide_hidden_sockets(node, self._file, inner, node_var) + self._set_settings_defaults(node, inner, node_var) + self._hide_hidden_sockets(node, inner, node_var) if node.bl_idname == 'CompositorNodeGroup': if node.node_tree is not None: @@ -106,11 +104,11 @@ def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - group_io_settings(node, self._file, inner, "input", ntp_nt.var, ntp_nt.node_tree) + self._group_io_settings(node, inner, "input", ntp_nt.var, ntp_nt.node_tree) inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - group_io_settings(node, self._file, inner, "output", ntp_nt.var, ntp_nt.node_tree) + self._group_io_settings(node, inner, "output", ntp_nt.var, ntp_nt.node_tree) outputs_set = True self._set_socket_defaults(node, node_var, inner) @@ -125,10 +123,10 @@ def _process_node_tree(self, node_tree, level): """ if self._is_outermost_node_group(level): - nt_var = create_var(self.compositor_name, self._used_vars) + nt_var = self._create_var(self.compositor_name) nt_name = self.compositor_name else: - nt_var = create_var(node_tree.name, self._used_vars) + nt_var = self._create_var(node_tree.name) nt_name = node_tree.name outer, inner = make_indents(level) @@ -143,11 +141,11 @@ def _process_node_tree(self, node_tree, level): for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) - set_parents(node_tree, self._file, inner, self._node_vars) - set_locations(node_tree, self._file, inner, self._node_vars) - set_dimensions(node_tree, self._file, inner, self._node_vars) + self._set_parents(node_tree, inner) + self._set_locations(node_tree, inner) + self._set_dimensions(node_tree, inner) - init_links(node_tree, self._file, inner, nt_var, self._node_vars) + self._init_links(node_tree, inner, nt_var) self._file.write(f"\n{outer}{nt_var}_node_group()\n\n") @@ -173,9 +171,9 @@ def execute(self, context): self._file = open(f"{self._addon_dir}/__init__.py", "w") - create_header(self._file, self.compositor_name) - class_name = clean_string(self.compositor_name, lower=False) - init_operator(self._file, class_name, comp_var, self.compositor_name) + self._create_header(self.compositor_name) + self._class_name = clean_string(self.compositor_name, lower=False) + self._init_operator(comp_var, self.compositor_name) self._file.write("\tdef execute(self, context):\n") else: @@ -196,17 +194,17 @@ def execute(self, context): if self.mode == 'ADDON': self._file.write("\t\treturn {'FINISHED'}\n\n") - create_menu_func(self._file, class_name) - create_register_func(self._file, class_name) - create_unregister_func(self._file, class_name) - create_main_func(self._file) + self._create_menu_func() + self._create_register_func() + self._create_unregister_func() + self._create_main_func() else: context.window_manager.clipboard = self._file.getvalue() self._file.close() if self.mode == 'ADDON': - zip_addon(self._zip_dir) + self._zip_addon() self._report_finished("compositor nodes") diff --git a/geometry/operator.py b/geometry/operator.py index b49d9ca..facb8d1 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -51,20 +51,18 @@ def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, inner: str, level: int) -> None: #create node - node_var: str = create_node(node, self._file, inner, ntp_node_tree.var, - self._node_vars, self._used_vars) - set_settings_defaults(node, self._settings, self._file, - self._addon_dir, inner, node_var) + node_var: str = self._create_node(node, inner, ntp_node_tree.var) + self._set_settings_defaults(node, inner, node_var) if node.bl_idname == 'GeometryNodeGroup': self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - group_io_settings(node, self._file, inner, "input", ntp_node_tree.var, + self._group_io_settings(node, inner, "input", ntp_node_tree.var, ntp_node_tree.node_tree) #TODO: convert to using NTP_NodeTrees ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - group_io_settings(node, self._file, inner, "output", + self._group_io_settings(node, inner, "output", ntp_node_tree.var, ntp_node_tree.node_tree) ntp_node_tree.outputs_set = True @@ -74,7 +72,7 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, elif node.bl_idname == 'GeometryNodeSimulationOutput': self._process_sim_output_node(node, inner, node_var) - hide_hidden_sockets(node, self._file, inner, node_var) + self._hide_hidden_sockets(node, inner, node_var) if node.bl_idname != 'GeometryNodeSimulationInput': self._set_socket_defaults(node, node_var, inner) @@ -112,7 +110,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, node groups within node groups and script/add-on differences """ - nt_var = create_var(node_tree.name, self._used_vars) + nt_var = self._create_var(node_tree.name) outer, inner = make_indents(level) #TODO: put in NTP_NodeTree class? # Eventually these should go away anyways, and level of indentation depends just on the mode @@ -135,12 +133,12 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, self._process_sim_zones(ntp_nt.sim_inputs, inner) #set look of nodes - set_parents(node_tree, self._file, inner, self._node_vars) - set_locations(node_tree, self._file, inner, self._node_vars) - set_dimensions(node_tree, self._file, inner, self._node_vars) + self._set_parents(node_tree, inner) + self._set_locations(node_tree, inner) + self._set_dimensions(node_tree, inner) #create connections - init_links(node_tree, self._file, inner, nt_var, self._node_vars) + self._init_links(node_tree, inner, nt_var) self._file.write(f"{inner}return {nt_var}\n") @@ -173,9 +171,9 @@ def execute(self, context): self._file = open(f"{self._addon_dir}/__init__.py", "w") - create_header(self._file, nt.name) - class_name = clean_string(nt.name, lower = False) - init_operator(self._file, class_name, nt_var, nt.name) + self._create_header(nt.name) + self._class_name = clean_string(nt.name, lower = False) + self._init_operator(nt_var, nt.name) self._file.write("\tdef execute(self, context):\n") else: self._file = StringIO("") @@ -189,16 +187,16 @@ def execute(self, context): if self.mode == 'ADDON': self._apply_modifier(nt, nt_var) self._file.write("\t\treturn {'FINISHED'}\n\n") - create_menu_func(self._file, class_name) - create_register_func(self._file, class_name) - create_unregister_func(self._file, class_name) - create_main_func(self._file) + self._create_menu_func() + self._create_register_func() + self._create_unregister_func() + self._create_main_func() else: context.window_manager.clipboard = self._file.getvalue() self._file.close() if self.mode == 'ADDON': - zip_addon(self._zip_dir) + self._zip_addon() self._report_finished("geometry node group") diff --git a/material/operator.py b/material/operator.py index 282021b..9077d5b 100644 --- a/material/operator.py +++ b/material/operator.py @@ -48,28 +48,26 @@ def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): def _process_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: str, level: int) -> None: #create node - node_var: str = create_node(node, self._file, inner, ntp_node_tree.var, - self._node_vars, self._used_vars) - set_settings_defaults(node, self._settings, self._file, - self._addon_dir, inner, node_var) + node_var: str = self._create_node(node, inner, ntp_node_tree.var) + self._set_settings_defaults(node, inner, node_var) if node.bl_idname == 'ShaderNodeGroup': self._process_group_node_tree(node, node_var, level, inner) - + #TODO: should probably be lumped into one function, + #it's always called like this and we're double checking it elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - group_io_settings(node, self._file, inner, "input", + self._group_io_settings(node, inner, "input", ntp_node_tree.var, ntp_node_tree.node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - group_io_settings(node, self._file, inner, "output", + self._group_io_settings(node, inner, "output", ntp_node_tree.var, ntp_node_tree.node_tree) ntp_node_tree.outputs_set = True - hide_hidden_sockets(node, self._file, inner, node_var) + self._hide_hidden_sockets(node, inner, node_var) self._set_socket_defaults(node, node_var, inner) - def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: """ Generates a Python function to recreate a node tree @@ -81,10 +79,10 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: """ if self._is_outermost_node_group(level): - nt_var = create_var(self.material_name, self._used_vars) + nt_var = self._create_var(self.material_name) nt_name = self.material_name #TODO: this is probably overcomplicating things if we move to a harder material vs shader node tree difference else: - nt_var = create_var(node_tree.name, self._used_vars) + nt_var = self._create_var(node_tree.name) nt_name = node_tree.name outer, inner = make_indents(level) @@ -99,11 +97,11 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) - set_parents(node_tree, self._file, inner, self._node_vars) - set_locations(node_tree, self._file, inner, self._node_vars) - set_dimensions(node_tree, self._file, inner, self._node_vars) + self._set_parents(node_tree, inner) + self._set_locations(node_tree, inner) + self._set_dimensions(node_tree, inner) - init_links(node_tree, self._file, inner, nt_var, self._node_vars) + self._init_links(node_tree, inner, nt_var) self._file.write(f"{inner}return {nt_var}\n") @@ -125,9 +123,9 @@ def execute(self, context): self._file = open(f"{self._addon_dir}/__init__.py", "w") - create_header(self._file, self.material_name) + self._create_header(self.material_name) self._class_name = clean_string(self.material_name, lower=False) - init_operator(self._file, self._class_name, mat_var, self.material_name) + self._init_operator(mat_var, self.material_name) self._file.write("\tdef execute(self, context):\n") else: @@ -147,17 +145,17 @@ def execute(self, context): if self.mode == 'ADDON': self._file.write("\t\treturn {'FINISHED'}\n\n") - create_menu_func(self._file, self._class_name) - create_register_func(self._file, self._class_name) - create_unregister_func(self._file, self._class_name) - create_main_func(self._file) + self._create_menu_func() + self._create_register_func() + self._create_unregister_func() + self._create_main_func() else: context.window_manager.clipboard = self._file.getvalue() self._file.close() if self.mode == 'ADDON': - zip_addon(self._zip_dir) + self._zip_addon(self._zip_dir) self._report_finished("material") diff --git a/utils.py b/utils.py index 5d41f4e..bec9a44 100644 --- a/utils.py +++ b/utils.py @@ -172,67 +172,6 @@ def img_to_py_str(img : bpy.types.Image) -> str: format = img.file_format.lower() return f"{name}.{format}" -def create_header(file: TextIO, name: str) -> None: - """ - Sets up the bl_info and imports the Blender API - - Parameters: - file (TextIO): the file for the generated add-on - name (str): name of the add-on - """ - - file.write("bl_info = {\n") - file.write(f"\t\"name\" : \"{name}\",\n") - file.write("\t\"author\" : \"Node To Python\",\n") - file.write("\t\"version\" : (1, 0, 0),\n") - file.write(f"\t\"blender\" : {bpy.app.version},\n") - file.write("\t\"location\" : \"Object\",\n") #TODO - file.write("\t\"category\" : \"Node\"\n") - file.write("}\n") - file.write("\n") - file.write("import bpy\n") - file.write("import mathutils\n") - file.write("import os\n") - file.write("\n") - -def init_operator(file: TextIO, name: str, idname: str, label: str) -> None: - """ - Initializes the add-on's operator - - Parameters: - file (TextIO): the file for the generated add-on - name (str): name for the class - idname (str): name for the operator - label (str): appearence inside Blender - """ - file.write(f"class {name}(bpy.types.Operator):\n") - file.write(f"\tbl_idname = \"object.{idname}\"\n") - file.write(f"\tbl_label = \"{label}\"\n") - file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") - file.write("\n") - -def create_var(name: str, used_vars: dict[str, int]) -> str: - """ - Creates a unique variable name for a node tree - - Parameters: - name (str): basic string we'd like to create the variable name out of - used_vars (dict[str, int]): dictionary containing variable names and usage counts - - Returns: - clean_name (str): variable name for the node tree - """ - if name == "": - name = "unnamed" - clean_name = clean_string(name) - var = clean_name - if var in used_vars: - used_vars[var] += 1 - return f"{clean_name}_{used_vars[var]}" - else: - used_vars[var] = 0 - return clean_name - #TODO: reconsider node tree definitions within node tree definitions def make_indents(level: int) -> Tuple[str, str]: """ @@ -251,763 +190,4 @@ def make_indents(level: int) -> Tuple[str, str]: """ outer = "\t"*level inner = "\t"*(level + 1) - return outer, inner - -def create_node(node: bpy.types.Node, - file: TextIO, - inner: str, - node_tree_var: str, - node_vars: dict[bpy.types.Node, str], - used_vars: dict[str, int] - ) -> str: - """ - Initializes a new node with location, dimension, and label info - - Parameters: - node (bpy.types.Node): node to be copied - file (TextIO): file containing the generated add-on - inner (str): indentation level for this logic - node_tree_var (str): variable name for the node tree - node_vars (dict): dictionary containing Node to corresponding variable name - pairs - used_vars dict[str, int]: dictionary of base variable names to usage counts - - Returns: - node_var (str): variable name for the node - """ - - file.write(f"{inner}#node {node.name}\n") - - node_var = create_var(node.name, used_vars) - node_vars[node] = node_var - - file.write((f"{inner}{node_var} " - f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) - #label - if node.label: - file.write(f"{inner}{node_var}.label = \"{node.label}\"\n") - - #color - if node.use_custom_color: - file.write(f"{inner}{node_var}.use_custom_color = True\n") - file.write(f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") - - #mute - if node.mute: - file.write(f"{inner}{node_var}.mute = True\n") - - return node_var - -def set_settings_defaults(node: bpy.types.Node, - settings: dict[str, list[(str, ST)]], - file: TextIO, - addon_dir: str, - inner: str, - node_var: str - ) -> None: - """ - Sets the defaults for any settings a node may have - - Parameters: - node (bpy.types.Node): the node object we're copying settings from - settings (dict): a predefined dictionary of all settings every node has - file (TextIO): file we're generating the add-on into - addon_dir (str): directory that the addon is saved into - inner (str): indentation - node_var (str): name of the variable we're using for the node in our add-on - """ - if node.bl_idname not in settings: - print((f"NodeToPython: couldn't find {node.bl_idname} in settings." - f"Your Blender version may not be supported")) - return - - for (attr_name, type) in settings[node.bl_idname]: - attr = getattr(node, attr_name, None) - if attr is None: - print(f"\"{node_var}.{attr_name}\" not found") - continue - setting_str = f"{inner}{node_var}.{attr_name}" - if type == ST.ENUM: - if attr != '': - file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") - elif type == ST.ENUM_SET: - file.write(f"{setting_str} = {attr}\n") - elif type == ST.STRING: - file.write(f"{setting_str} = {str_to_py_str(attr)}\n") - elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: - file.write(f"{setting_str} = {attr}\n") - elif type == ST.VEC1: - file.write(f"{setting_str} = {vec1_to_py_str(attr)}\n") - elif type == ST.VEC2: - file.write(f"{setting_str} = {vec2_to_py_str(attr)}\n") - elif type == ST.VEC3: - file.write(f"{setting_str} = {vec3_to_py_str(attr)}\n") - elif type == ST.VEC4: - file.write(f"{setting_str} = {vec4_to_py_str(attr)}\n") - elif type == ST.COLOR: - file.write(f"{setting_str} = {color_to_py_str(attr)}\n") - elif type == ST.MATERIAL: - name = str_to_py_str(attr.name) - file.write((f"{inner}if {name} in bpy.data.materials:\n")) - file.write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.materials[{name}]\n")) - elif type == ST.OBJECT: - name = str_to_py_str(attr.name) - file.write((f"{inner}if {name} in bpy.data.objects:\n")) - file.write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.objects[{name}]\n")) - elif type == ST.COLOR_RAMP: - color_ramp_settings(node, file, inner, node_var, attr_name) - elif type == ST.CURVE_MAPPING: - curve_mapping_settings(node, file, inner, node_var, attr_name) - elif type == ST.IMAGE: - if addon_dir is not None and attr is not None: - if attr.source in {'FILE', 'GENERATED', 'TILED'}: - save_image(attr, addon_dir) - load_image(attr, file, inner, f"{node_var}.{attr_name}") - elif type == ST.IMAGE_USER: - image_user_settings(attr, file, inner, f"{node_var}.{attr_name}") - -def hide_hidden_sockets(node: bpy.types.Node, - file: TextIO, - inner: str, - node_var: str - ) -> None: - """ - Hide hidden sockets - - Parameters: - node (bpy.types.Node): node object we're copying socket settings from - file (TextIO): file we're generating the add-on into - inner (str): indentation string - node_var (str): name of the variable we're using for this node - """ - for i, socket in enumerate(node.inputs): - if socket.hide is True: - file.write(f"{inner}{node_var}.inputs[{i}].hide = True\n") - for i, socket in enumerate(node.outputs): - if socket.hide is True: - file.write(f"{inner}{node_var}.outputs[{i}].hide = True\n") - -def group_io_settings(node: bpy.types.Node, - file: TextIO, - inner: str, - io: str, #TODO: convert to enum - node_tree_var: str, - node_tree: bpy.types.NodeTree - ) -> None: - """ - Set the settings for group input and output sockets - - Parameters: - node (bpy.types.Node) : group input/output node - file (TextIO): file we're generating the add-on into - inner (str): indentation string - io (str): whether we're generating the input or output settings - node_tree_var (str): variable name of the generated node tree - node_tree (bpy.types.NodeTree): node tree that we're generating input - and output settings for - """ - if io == "input": - ios = node.outputs - ntio = node_tree.inputs - else: - ios = node.inputs - ntio = node_tree.outputs - - file.write(f"{inner}#{node_tree_var} {io}s\n") - for i, inout in enumerate(ios): - if inout.bl_idname == 'NodeSocketVirtual': - continue - file.write(f"{inner}#{io} {inout.name}\n") - idname = enum_to_py_str(inout.bl_idname) - name = str_to_py_str(inout.name) - file.write(f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") - socket = ntio[i] - socket_var = f"{node_tree_var}.{io}s[{i}]" - - if inout.type in default_sockets: - #TODO: separate default socket function - #default value - if inout.type == 'RGBA': - dv = vec4_to_py_str(socket.default_value) - elif inout.type == 'VECTOR': - dv = vec3_to_py_str(socket.default_value) - else: - dv = socket.default_value - file.write(f"{inner}{socket_var}.default_value = {dv}\n") - - #min value - if hasattr(socket, "min_value"): - file.write(f"{inner}{socket_var}.min_value = {socket.min_value}\n") - #max value - if hasattr(socket, "min_value"): - file.write((f"{inner}{socket_var}.max_value = {socket.max_value}\n")) - - #default attribute name - if hasattr(socket, "default_attribute_name"): - if socket.default_attribute_name != "": - dan = str_to_py_str(socket.default_attribute_name) - file.write((f"{inner}{socket_var}" - f".default_attribute_name = {dan}\n")) - - #attribute domain - if hasattr(socket, "attribute_domain"): - ad = enum_to_py_str(socket.attribute_domain) - file.write(f"{inner}{socket_var}.attribute_domain = {ad}\n") - - #tooltip - if socket.description != "": - description = str_to_py_str(socket.description) - file.write((f"{inner}{socket_var}.description = {description}\n")) - - #hide_value - if socket.hide_value is True: - file.write(f"{inner}{socket_var}.hide_value = True\n") - - #hide in modifier - if hasattr(socket, "hide_in_modifier"): - if socket.hide_in_modifier is True: - file.write(f"{inner}{socket_var}.hide_in_modifier = True\n") - - file.write("\n") - file.write("\n") - -def color_ramp_settings(node: bpy.types.Node, - file: TextIO, - inner: str, - node_var: str, - color_ramp_name: str - ) -> None: - """ - Replicate a color ramp node - - Parameters - node (bpy.types.Node): node object we're copying settings from - file (TextIO): file we're generating the add-on into - inner (str): indentation - node_var (str): name of the variable we're using for the color ramp - color_ramp_name (str): name of the color ramp to be copied - """ - - color_ramp: bpy.types.ColorRamp = getattr(node, color_ramp_name) - if not color_ramp: - raise ValueError(f"No color ramp named \"{color_ramp_name}\" found") - - #settings - ramp_str = f"{inner}{node_var}.{color_ramp_name}" - - color_mode = enum_to_py_str(color_ramp.color_mode) - file.write(f"{ramp_str}.color_mode = {color_mode}\n") - - hue_interpolation = enum_to_py_str(color_ramp.hue_interpolation) - file.write((f"{ramp_str}.hue_interpolation = " - f"{hue_interpolation}\n")) - interpolation = enum_to_py_str(color_ramp.interpolation) - file.write((f"{ramp_str}.interpolation " - f"= {interpolation}\n")) - file.write("\n") - - #key points - file.write(f"{inner}#initialize color ramp elements\n") - file.write((f"{ramp_str}.elements.remove" - f"({ramp_str}.elements[0])\n")) - for i, element in enumerate(color_ramp.elements): - element_var = f"{node_var}_cre_{i}" - if i == 0: - file.write(f"{inner}{element_var} = " - f"{ramp_str}.elements[{i}]\n") - file.write(f"{inner}{element_var}.position = {element.position}\n") - else: - file.write((f"{inner}{element_var} = " - f"{ramp_str}.elements" - f".new({element.position})\n")) - - file.write((f"{inner}{element_var}.alpha = " - f"{element.alpha}\n")) - color_str = vec4_to_py_str(element.color) - file.write((f"{inner}{element_var}.color = {color_str}\n\n")) - -def curve_mapping_settings(node: bpy.types.Node, - file: TextIO, - inner: str, - node_var: str, - curve_mapping_name: str - ) -> None: - """ - Sets defaults for Float, Vector, and Color curves - - Parameters: - node (bpy.types.Node): curve node we're copying settings from - file (TextIO): file we're generating the add-on into - inner (str): indentation - node_var (str): variable name for the add-on's curve node - curve_mapping_name (str): name of the curve mapping to be set - """ - - mapping = getattr(node, curve_mapping_name) - if not mapping: - raise ValueError((f"Curve mapping \"{curve_mapping_name}\" not found " - f"in node \"{node.bl_idname}\"")) - - #mapping settings - file.write(f"{inner}#mapping settings\n") - mapping_var = f"{inner}{node_var}.{curve_mapping_name}" - - #extend - extend = enum_to_py_str(mapping.extend) - file.write(f"{mapping_var}.extend = {extend}\n") - #tone - tone = enum_to_py_str(mapping.tone) - file.write(f"{mapping_var}.tone = {tone}\n") - - #black level - b_lvl_str = vec3_to_py_str(mapping.black_level) - file.write((f"{mapping_var}.black_level = {b_lvl_str}\n")) - #white level - w_lvl_str = vec3_to_py_str(mapping.white_level) - file.write((f"{mapping_var}.white_level = {w_lvl_str}\n")) - - #minima and maxima - min_x = mapping.clip_min_x - file.write(f"{mapping_var}.clip_min_x = {min_x}\n") - min_y = mapping.clip_min_y - file.write(f"{mapping_var}.clip_min_y = {min_y}\n") - max_x = mapping.clip_max_x - file.write(f"{mapping_var}.clip_max_x = {max_x}\n") - max_y = mapping.clip_max_y - file.write(f"{mapping_var}.clip_max_y = {max_y}\n") - - #use_clip - use_clip = mapping.use_clip - file.write(f"{mapping_var}.use_clip = {use_clip}\n") - - #create curves - for i, curve in enumerate(mapping.curves): - #TODO: curve function - file.write(f"{inner}#curve {i}\n") - curve_i = f"{node_var}_curve_{i}" - file.write((f"{inner}{curve_i} = " - f"{node_var}.{curve_mapping_name}.curves[{i}]\n")) - - # Remove default points when CurveMap is initialized with more than - # two points (just CompositorNodeHueCorrect) - if (node.bl_idname == 'CompositorNodeHueCorrect'): - file.write((f"{inner}for i in " - f"range(len({curve_i}.points.values()) - 1, 1, -1):\n")) - file.write(f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") - - for j, point in enumerate(curve.points): - #TODO: point function - point_j = f"{inner}{curve_i}_point_{j}" - - loc = point.location - loc_str = f"{loc[0]}, {loc[1]}" - if j < 2: - file.write(f"{point_j} = {curve_i}.points[{j}]\n") - file.write(f"{point_j}.location = ({loc_str})\n") - else: - file.write((f"{point_j} = {curve_i}.points.new({loc_str})\n")) - - handle = enum_to_py_str(point.handle_type) - file.write(f"{point_j}.handle_type = {handle}\n") - - #update curve - file.write(f"{inner}#update curve after changes\n") - file.write(f"{mapping_var}.update()\n") - -def save_image(img: bpy.types.Image, addon_dir: str) -> None: - """ - Saves an image to an image directory of the add-on - - Parameters: - img (bpy.types.Image): image to be saved - addon_dir (str): directory of the addon - """ - - if img is None: - return - - #create image dir if one doesn't exist - img_dir = os.path.join(addon_dir, IMAGE_DIR_NAME) - if not os.path.exists(img_dir): - os.mkdir(img_dir) - - #save the image - img_str = img_to_py_str(img) - img_path = f"{img_dir}/{img_str}" - if not os.path.exists(img_path): - img.save_render(img_path) - -def load_image(img: bpy.types.Image, - file: TextIO, - inner: str, - img_var: str - ) -> None: - """ - Loads an image from the add-on into a blend file and assigns it - - Parameters: - img (bpy.types.Image): Blender image from the original node group - file (TextIO): file for the generated add-on - inner (str): indentation string - img_var (str): variable name to be used for the image - """ - - if img is None: - return - - img_str = img_to_py_str(img) - - #TODO: convert to special variables - file.write(f"{inner}#load image {img_str}\n") - file.write((f"{inner}base_dir = " - f"os.path.dirname(os.path.abspath(__file__))\n")) - file.write((f"{inner}image_path = " - f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " - f"\"{img_str}\")\n")) - file.write((f"{inner}{img_var} = " - f"bpy.data.images.load(image_path, check_existing = True)\n")) - - #copy image settings - file.write(f"{inner}#set image settings\n") - - #source - source = enum_to_py_str(img.source) - file.write(f"{inner}{img_var}.source = {source}\n") - - #color space settings - color_space = enum_to_py_str(img.colorspace_settings.name) - file.write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") - - #alpha mode - alpha_mode = enum_to_py_str(img.alpha_mode) - file.write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") - -def image_user_settings(img_user: bpy.types.ImageUser, - file: TextIO, - inner: str, - img_user_var: str - ) -> None: - """ - Replicate the image user of an image node - - Parameters - img_usr (bpy.types.ImageUser): image user to be copied - file (TextIO): file we're generating the add-on into - inner (str): indentation - img_usr_var (str): variable name for the generated image user - """ - - img_usr_attrs = ["frame_current", "frame_duration", "frame_offset", - "frame_start", "tile", "use_auto_refresh", "use_cyclic"] - - for img_usr_attr in img_usr_attrs: - file.write((f"{inner}{img_user_var}.{img_usr_attr} = " - f"{getattr(img_user, img_usr_attr)}\n")) - -def set_input_defaults(node: bpy.types.Node, - file: TextIO, - inner: str, - node_var: str, - addon_dir: str = "" - ) -> None: - """ - Sets defaults for input sockets - - Parameters: - node (bpy.types.Node): node we're setting inputs for - file (TextIO): file we're generating the add-on into - inner (str): indentation - node_var (str): variable name we're using for the copied node - addon_dir (str): directory of the add-on, for if we need to save other - objects for the add-on - """ - if node.bl_idname == 'NodeReroute': - return - - for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults and not input.is_linked: - #TODO: this could be cleaner - socket_var = f"{node_var}.inputs[{i}]" - - #colors - if input.bl_idname == 'NodeSocketColor': - default_val = vec4_to_py_str(input.default_value) - - #vector types - elif "Vector" in input.bl_idname: - default_val = vec3_to_py_str(input.default_value) - - #strings - elif input.bl_idname == 'NodeSocketString': - default_val = str_to_py_str(input.default_value) - - #images - elif input.bl_idname == 'NodeSocketImage': - img = input.default_value - if img is not None and addon_dir != "": #write in a better way - save_image(img, addon_dir) - load_image(img, file, inner, f"{socket_var}.default_value") - default_val = None - - #materials - elif input.bl_idname == 'NodeSocketMaterial': - in_file_inputs(input, file, inner, socket_var, "materials") - default_val = None - - #collections - elif input.bl_idname == 'NodeSocketCollection': - in_file_inputs(input, file, inner, socket_var, "collections") - default_val = None - - #objects - elif input.bl_idname == 'NodeSocketObject': - in_file_inputs(input, file, inner, socket_var, "objects") - default_val = None - - #textures - elif input.bl_idname == 'NodeSocketTexture': - in_file_inputs(input, file, inner, socket_var, "textures") - default_val = None - - else: - default_val = input.default_value - if default_val is not None: - file.write(f"{inner}#{input.identifier}\n") - file.write((f"{inner}{socket_var}.default_value" - f" = {default_val}\n")) - file.write("\n") - -def in_file_inputs(input: bpy.types.NodeSocket, - file: TextIO, - inner: str, - socket_var: str, - type: str - ) -> None: - """ - Sets inputs for a node input if one already exists in the blend file - - Parameters: - input (bpy.types.NodeSocket): input socket we're setting the value for - file (TextIO): file we're writing the add-on into - inner (str): indentation string - socket_var (str): variable name we're using for the socket - type (str): from what section of bpy.data to pull the default value from - """ - - if input.default_value is not None: - name = str_to_py_str(input.default_value.name) - file.write(f"{inner}if {name} in bpy.data.{type}:\n") - file.write((f"{inner}\t{socket_var}.default_value = " - f"bpy.data.{type}[{name}]\n")) - -def set_output_defaults(node: bpy.types.Node, - file: TextIO, - inner: str, - node_var: str - ) -> None: - """ - Some output sockets need default values set. It's rather annoying - - Parameters: - node (bpy.types.Node): node for the output we're setting - file (TextIO): file we're generating the add-on into - inner (str): indentation string - node_var (str): variable name for the node we're setting output defaults for - """ - output_default_nodes = {'ShaderNodeValue', - 'ShaderNodeRGB', - 'ShaderNodeNormal', - 'CompositorNodeValue', - 'CompositorNodeRGB', - 'CompositorNodeNormal'} - - if node.bl_idname in output_default_nodes: - dv = node.outputs[0].default_value - if node.bl_idname in {'ShaderNodeRGB', 'CompositorNodeRGB'}: - dv = vec4_to_py_str(list(dv)) - if node.bl_idname in {'ShaderNodeNormal', 'CompositorNodeNormal'}: - dv = vec3_to_py_str(dv) - file.write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) - -def set_parents(node_tree: bpy.types.NodeTree, - file: TextIO, - inner: str, - node_vars: dict[bpy.types.Node, str] - ) -> None: - """ - Sets parents for all nodes, mostly used to put nodes in frames - - Parameters: - node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from - file (TextIO): file for the generated add-on - inner (str): indentation string - node_vars (dict[bpy.types.Node, str]): dictionary for node->variable name - pairs - """ - parent_comment = False - for node in node_tree.nodes: - if node is not None and node.parent is not None: - if not parent_comment: - file.write(f"{inner}#Set parents\n") - parent_comment = True - node_var = node_vars[node] - parent_var = node_vars[node.parent] - file.write(f"{inner}{node_var}.parent = {parent_var}\n") - file.write("\n") - -def set_locations(node_tree: bpy.types.NodeTree, - file: TextIO, - inner: str, - node_vars: dict[bpy.types.Node, str] - ) -> None: - """ - Set locations for all nodes - - Parameters: - node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from - file (TextIO): file for the generated add-on - inner (str): indentation string - node_vars (dict[bpy.types.Node, str]): dictionary for (node, variable) name - pairs - """ - - file.write(f"{inner}#Set locations\n") - for node in node_tree.nodes: - node_var = node_vars[node] - file.write((f"{inner}{node_var}.location " - f"= ({node.location.x}, {node.location.y})\n")) - file.write("\n") - -def set_dimensions(node_tree: bpy.types.NodeTree, - file: TextIO, - inner: str, - node_vars: dict[bpy.types.Node, str] - ) -> None: - """ - Set dimensions for all nodes - - Parameters: - node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from - file (TextIO): file for the generated add-on - inner (str): indentation string - node_vars (dict[bpy.types.Node, str]): dictionary for (node, variable) name - pairs - """ - - file.write(f"{inner}#Set dimensions\n") - for node in node_tree.nodes: - node_var = node_vars[node] - file.write((f"{inner}{node_var}.width, {node_var}.height " - f"= {node.width}, {node.height}\n")) - file.write("\n") - -def init_links(node_tree: bpy.types.NodeTree, - file: TextIO, - inner: str, - node_tree_var: str, - node_vars: dict[bpy.types.Node, str] - ) -> None: - """ - Create all the links between nodes - - Parameters: - node_tree (bpy.types.NodeTree): node tree we're copying - file (TextIO): file we're generating the add-on into - inner (str): indentation - node_tree_var (str): variable name we're using for the copied node tree - node_vars (dict[bpy.types.Node, str]): dictionary containing node to - variable name pairs - """ - - if node_tree.links: - file.write(f"{inner}#initialize {node_tree_var} links\n") - for link in node_tree.links: - in_node_var = node_vars[link.from_node] - input_socket = link.from_socket - - """ - Blender's socket dictionary doesn't guarantee - unique keys, which has caused much wailing and - gnashing of teeth. This is a quick fix that - doesn't run quick - """ - #TODO: try using index() method - for i, item in enumerate(link.from_node.outputs.items()): - if item[1] == input_socket: - input_idx = i - break - - out_node_var = node_vars[link.to_node] - output_socket = link.to_socket - - for i, item in enumerate(link.to_node.inputs.items()): - if item[1] == output_socket: - output_idx = i - break - - file.write((f"{inner}#{in_node_var}.{input_socket.name} " - f"-> {out_node_var}.{output_socket.name}\n")) - file.write((f"{inner}{node_tree_var}.links.new({in_node_var}" - f".outputs[{input_idx}], " - f"{out_node_var}.inputs[{output_idx}])\n")) - -def create_menu_func(file: TextIO, name: str) -> None: - """ - Creates the menu function - - Parameters: - file (TextIO): file we're generating the add-on into - name (str): name of the generated operator class - """ - - file.write("def menu_func(self, context):\n") - file.write(f"\tself.layout.operator({name}.bl_idname)\n") - file.write("\n") - -def create_register_func(file: TextIO, name: str) -> None: - """ - Creates the register function - - Parameters: - file (TextIO): file we're generating the add-on into - name (str): name of the generated operator class - """ - file.write("def register():\n") - file.write(f"\tbpy.utils.register_class({name})\n") - file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") - file.write("\n") - -def create_unregister_func(file: TextIO, name: str) -> None: - """ - Creates the unregister function - - Parameters: - file (TextIO): file we're generating the add-on into - name (str): name of the generated operator class - """ - file.write("def unregister():\n") - file.write(f"\tbpy.utils.unregister_class({name})\n") - file.write("\tbpy.types.VIEW3D_MT_object.remove(menu_func)\n") - file.write("\n") - -def create_main_func(file: TextIO) -> None: - """ - Creates the main function - - Parameters: - file (TextIO): file we're generating the add-on into - """ - file.write("if __name__ == \"__main__\":\n") - file.write("\tregister()") - -def zip_addon(zip_dir: str) -> None: - """ - Zips up the addon and removes the directory - - Parameters: - zip_dir (str): path to the top-level addon directory - """ - shutil.make_archive(zip_dir, "zip", zip_dir) - shutil.rmtree(zip_dir) \ No newline at end of file + return outer, inner \ No newline at end of file From ce1a976cdb63f9645d991bbcf61650a73c5bcb1c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 19 Nov 2023 17:03:13 -0600 Subject: [PATCH 130/286] refactor: moved geo/shader nodes ui stuff into common module --- __init__.py | 8 ++++---- geometry/__init__.py | 6 ++---- geometry/menu.py | 24 ------------------------ geometry/{panel.py => ui.py} | 25 ++++++++++++++++++++++++- material/__init__.py | 10 ++++------ material/menu.py | 20 -------------------- material/{panel.py => ui.py} | 21 ++++++++++++++++++++- 7 files changed, 54 insertions(+), 60 deletions(-) delete mode 100644 geometry/menu.py rename geometry/{panel.py => ui.py} (56%) delete mode 100644 material/menu.py rename material/{panel.py => ui.py} (54%) diff --git a/__init__.py b/__init__.py index a949fee..0668ee9 100644 --- a/__init__.py +++ b/__init__.py @@ -48,12 +48,12 @@ def draw(self, context): compositor.ui.NTPCompositorPanel, #geometry geometry.operator.NTPGeoNodesOperator, - geometry.menu.NTPGeoNodesMenu, - geometry.panel.NTPGeoNodesPanel, + geometry.ui.NTPGeoNodesMenu, + geometry.ui.NTPGeoNodesPanel, #material material.operator.NTPMaterialOperator, - material.menu.NTPMaterialMenu, - material.panel.NTPMaterialPanel, + material.ui.NTPMaterialMenu, + material.ui.NTPMaterialPanel, ] def register(): diff --git a/geometry/__init__.py b/geometry/__init__.py index 80134d4..e2707b0 100644 --- a/geometry/__init__.py +++ b/geometry/__init__.py @@ -1,15 +1,13 @@ if "bpy" in locals(): import importlib - importlib.reload(menu) importlib.reload(node_settings) importlib.reload(node_tree) importlib.reload(operator) - importlib.reload(panel) + importlib.reload(ui) else: - from . import menu from . import node_settings from . import node_tree from . import operator - from . import panel + from . import ui import bpy \ No newline at end of file diff --git a/geometry/menu.py b/geometry/menu.py deleted file mode 100644 index 7d5561f..0000000 --- a/geometry/menu.py +++ /dev/null @@ -1,24 +0,0 @@ -import bpy -from bpy.types import Menu - -from .operator import NTPGeoNodesOperator - -class NTPGeoNodesMenu(Menu): - bl_idname = "NODE_MT_ntp_geo_nodes" - bl_label = "Select Geo Nodes" - - @classmethod - def poll(cls, context): - return True - - def draw(self, context): - layout = self.layout.column_flow(columns=1) - layout.operator_context = 'INVOKE_DEFAULT' - - geo_node_groups = [node_tree for node_tree in bpy.data.node_groups - if node_tree.bl_idname == 'GeometryNodeTree'] - - for node_tree in geo_node_groups: - op = layout.operator(NTPGeoNodesOperator.bl_idname, - text=node_tree.name) - op.geo_nodes_group_name = node_tree.name \ No newline at end of file diff --git a/geometry/panel.py b/geometry/ui.py similarity index 56% rename from geometry/panel.py rename to geometry/ui.py index c6f568b..b3a8283 100644 --- a/geometry/panel.py +++ b/geometry/ui.py @@ -1,5 +1,8 @@ import bpy from bpy.types import Panel +from bpy.types import Menu + +from .operator import NTPGeoNodesOperator class NTPGeoNodesPanel(Panel): bl_label = "Geometry Nodes to Python" @@ -29,4 +32,24 @@ def draw(self, context): row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_ntp_geo_nodes", text="Geometry Nodes") \ No newline at end of file + row.menu("NODE_MT_ntp_geo_nodes", text="Geometry Nodes") + +class NTPGeoNodesMenu(Menu): + bl_idname = "NODE_MT_ntp_geo_nodes" + bl_label = "Select Geo Nodes" + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + + geo_node_groups = [node_tree for node_tree in bpy.data.node_groups + if node_tree.bl_idname == 'GeometryNodeTree'] + + for node_tree in geo_node_groups: + op = layout.operator(NTPGeoNodesOperator.bl_idname, + text=node_tree.name) + op.geo_nodes_group_name = node_tree.name \ No newline at end of file diff --git a/material/__init__.py b/material/__init__.py index b7380e4..e2707b0 100644 --- a/material/__init__.py +++ b/material/__init__.py @@ -1,15 +1,13 @@ if "bpy" in locals(): import importlib - importlib.reload(menu) importlib.reload(node_settings) - #importlib.reload(node_tree) + importlib.reload(node_tree) importlib.reload(operator) - importlib.reload(panel) + importlib.reload(ui) else: - from . import menu from . import node_settings - #from . import node_tree + from . import node_tree from . import operator - from . import panel + from . import ui import bpy \ No newline at end of file diff --git a/material/menu.py b/material/menu.py deleted file mode 100644 index 069fbb5..0000000 --- a/material/menu.py +++ /dev/null @@ -1,20 +0,0 @@ -import bpy -from bpy.types import Menu -from .operator import NTPMaterialOperator - -class NTPMaterialMenu(Menu): - bl_idname = "NODE_MT_ntp_material" - bl_label = "Select Material" - - @classmethod - def poll(cls, context): - return True - - def draw(self, context): - layout = self.layout.column_flow(columns=1) - layout.operator_context = 'INVOKE_DEFAULT' - for mat in bpy.data.materials: - if mat.node_tree: - op = layout.operator(NTPMaterialOperator.bl_idname, - text=mat.name) - op.material_name = mat.name \ No newline at end of file diff --git a/material/panel.py b/material/ui.py similarity index 54% rename from material/panel.py rename to material/ui.py index 3266bb6..1bf6181 100644 --- a/material/panel.py +++ b/material/ui.py @@ -1,5 +1,7 @@ import bpy from bpy.types import Panel +from bpy.types import Menu +from .operator import NTPMaterialOperator class NTPMaterialPanel(Panel): bl_label = "Material to Python" @@ -27,4 +29,21 @@ def draw(self, context): row.alignment = 'EXPAND' row.operator_context = 'INVOKE_DEFAULT' - row.menu("NODE_MT_ntp_material", text="Materials") \ No newline at end of file + row.menu("NODE_MT_ntp_material", text="Materials") + +class NTPMaterialMenu(Menu): + bl_idname = "NODE_MT_ntp_material" + bl_label = "Select Material" + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + layout = self.layout.column_flow(columns=1) + layout.operator_context = 'INVOKE_DEFAULT' + for mat in bpy.data.materials: + if mat.node_tree: + op = layout.operator(NTPMaterialOperator.bl_idname, + text=mat.name) + op.material_name = mat.name \ No newline at end of file From 94df0cbcdeaabb4b6d312b4ed40612a3e0b19824 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 20 Nov 2023 23:14:56 -0600 Subject: [PATCH 131/286] refactor: cleanup, group io stuff --- NTP_Operator.py | 100 ++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 46 deletions(-) diff --git a/NTP_Operator.py b/NTP_Operator.py index ab019cf..789be59 100644 --- a/NTP_Operator.py +++ b/NTP_Operator.py @@ -1,8 +1,7 @@ import bpy from bpy.types import Context, Operator -from bpy.types import Node, NodeTree +from bpy.types import Node, NodeTree, NodeSocketInterface -from io import StringIO import os from typing import TextIO @@ -156,8 +155,7 @@ def _create_var(self, name: str) -> str: self._used_vars[var] = 0 return clean_name - def _create_node(self, node: bpy.types.Node, inner: str, node_tree_var: str - ) -> str: + def _create_node(self, node: Node, inner: str, node_tree_var: str) -> str: """ Initializes a new node with location, dimension, and label info @@ -191,8 +189,8 @@ def _create_node(self, node: bpy.types.Node, inner: str, node_tree_var: str return node_var - def _set_settings_defaults(self, node: bpy.types.Node, inner: str, - node_var: str) -> None: + def _set_settings_defaults(self, node: Node, inner: str, node_var: str + ) -> None: """ Sets the defaults for any settings a node may have @@ -203,7 +201,7 @@ def _set_settings_defaults(self, node: bpy.types.Node, inner: str, """ if node.bl_idname not in self._settings: print((f"NodeToPython: couldn't find {node.bl_idname} in settings." - f"Your Blender version may not be supported")) + f"Your Blender version may not be supported")) return for (attr_name, type) in self._settings[node.bl_idname]: @@ -253,6 +251,35 @@ def _set_settings_defaults(self, node: bpy.types.Node, inner: str, elif type == ST.IMAGE_USER: self._image_user_settings(attr, inner, f"{node_var}.{attr_name}") + def _set_group_socket_default(self, socket_interface: NodeSocketInterface, + inner: str, socket_var: str) -> None: + """ + Set a node group input/output's default properties if they exist + + Parameters: + socket_interface (NodeSocketInterface): socket interface associated + with the input/output + inner (str): indentation string + socket_var (str): variable name for the socket + """ + if socket_interface.type not in default_sockets: + return + + if socket_interface.type == 'RGBA': + dv = vec4_to_py_str(socket_interface.default_value) + elif socket_interface.type == 'VECTOR': + dv = vec3_to_py_str(socket_interface.default_value) + else: + dv = socket_interface.default_value + self._file.write(f"{inner}{socket_var}.default_value = {dv}\n") + + #min value + if hasattr(socket_interface, "min_value"): + self._file.write(f"{inner}{socket_var}.min_value = {socket_interface.min_value}\n") + #max value + if hasattr(socket_interface, "min_value"): + self._file.write((f"{inner}{socket_var}.max_value = {socket_interface.max_value}\n")) + def _group_io_settings(self, node: bpy.types.Node, inner: str, io: str, #TODO: convert to enum node_tree_var: str, @@ -269,68 +296,49 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, and output settings for """ if io == "input": - ios = node.outputs #TODO: this doesn't seem right - """ - Are sockets and node tree default ios really coupled like this?? - """ - ntio = node_tree.inputs + io_sockets = node.outputs + io_socket_interfaces = node_tree.inputs else: - ios = node.inputs - ntio = node_tree.outputs + io_sockets = node.inputs + io_socket_interfaces = node_tree.outputs self._file.write(f"{inner}#{node_tree_var} {io}s\n") - for i, inout in enumerate(ios): + for i, inout in enumerate(io_sockets): if inout.bl_idname == 'NodeSocketVirtual': continue self._file.write(f"{inner}#{io} {inout.name}\n") idname = enum_to_py_str(inout.bl_idname) name = str_to_py_str(inout.name) self._file.write(f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") - socket = ntio[i] + socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" - if inout.type in default_sockets: - #TODO: separate default socket function - #default value - if inout.type == 'RGBA': - dv = vec4_to_py_str(socket.default_value) - elif inout.type == 'VECTOR': - dv = vec3_to_py_str(socket.default_value) - else: - dv = socket.default_value - self._file.write(f"{inner}{socket_var}.default_value = {dv}\n") - - #min value - if hasattr(socket, "min_value"): - self._file.write(f"{inner}{socket_var}.min_value = {socket.min_value}\n") - #max value - if hasattr(socket, "min_value"): - self._file.write((f"{inner}{socket_var}.max_value = {socket.max_value}\n")) + self._set_group_socket_default(socket_interface, inner, socket_var) #default attribute name - if hasattr(socket, "default_attribute_name"): - if socket.default_attribute_name != "": - dan = str_to_py_str(socket.default_attribute_name) + if hasattr(socket_interface, "default_attribute_name"): + if socket_interface.default_attribute_name != "": + dan = str_to_py_str(socket_interface.default_attribute_name) self._file.write((f"{inner}{socket_var}" f".default_attribute_name = {dan}\n")) #attribute domain - if hasattr(socket, "attribute_domain"): - ad = enum_to_py_str(socket.attribute_domain) + if hasattr(socket_interface, "attribute_domain"): + ad = enum_to_py_str(socket_interface.attribute_domain) self._file.write(f"{inner}{socket_var}.attribute_domain = {ad}\n") #tooltip - if socket.description != "": - description = str_to_py_str(socket.description) + if socket_interface.description != "": + description = str_to_py_str(socket_interface.description) self._file.write((f"{inner}{socket_var}.description = {description}\n")) #hide_value - if socket.hide_value is True: + if socket_interface.hide_value is True: self._file.write(f"{inner}{socket_var}.hide_value = True\n") #hide in modifier - if hasattr(socket, "hide_in_modifier"): - if socket.hide_in_modifier is True: + if hasattr(socket_interface, "hide_in_modifier"): + if socket_interface.hide_in_modifier is True: self._file.write(f"{inner}{socket_var}.hide_in_modifier = True\n") self._file.write("\n") @@ -505,10 +513,10 @@ def _color_ramp_settings(self, node: bpy.types.Node, f"{element.alpha}\n")) color_str = vec4_to_py_str(element.color) self._file.write((f"{inner}{element_var}.color = {color_str}\n\n")) - + def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, - node_var: str, curve_mapping_name: str - ) -> None: + node_var: str, curve_mapping_name: str + ) -> None: """ Sets defaults for Float, Vector, and Color curves From 5449347fae9fc9a59f275a1b7ff236345fc41769 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 20 Nov 2023 23:17:14 -0600 Subject: [PATCH 132/286] fix: material import typo --- __init__.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/__init__.py b/__init__.py index 0668ee9..2378569 100644 --- a/__init__.py +++ b/__init__.py @@ -12,16 +12,17 @@ import importlib importlib.reload(compositor) importlib.reload(geometry) - importlib.reload(node_settings) + importlib.reload(material) importlib.reload(options) else: from . import compositor from . import geometry - from .material import node_settings + from . import material from . import options import bpy + class NodeToPythonMenu(bpy.types.Menu): bl_idname = "NODE_MT_node_to_python" bl_label = "Node To Python" @@ -35,8 +36,6 @@ def draw(self, context): layout.operator_context = 'INVOKE_DEFAULT' - - classes = [NodeToPythonMenu, #options options.NTPOptions, From 03c40a2b048f819ecf37193070f698f3359e092f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 20 Nov 2023 23:33:05 -0600 Subject: [PATCH 133/286] refactor: abstracted write function --- NTP_Operator.py | 298 +++++++++++++++++++++-------------------- compositor/operator.py | 64 ++++----- geometry/operator.py | 51 ++++--- material/operator.py | 35 +++-- 4 files changed, 225 insertions(+), 223 deletions(-) diff --git a/NTP_Operator.py b/NTP_Operator.py index 789be59..50e6c6a 100644 --- a/NTP_Operator.py +++ b/NTP_Operator.py @@ -55,6 +55,9 @@ def __init__(self): # Dictionary used for setting node properties self._settings: dict[str, list[(str, ST)]] = {} + def _write(self, string: str): + self._file.write(string) + def _setup_addon_directories(self, context: Context, nt_var: str) -> None: """ Finds/creates directories to save add-on to @@ -82,19 +85,19 @@ def _create_header(self, name: str) -> None: name (str): name of the add-on """ - self._file.write("bl_info = {\n") - self._file.write(f"\t\"name\" : \"{name}\",\n") - self._file.write("\t\"author\" : \"Node To Python\",\n") - self._file.write("\t\"version\" : (1, 0, 0),\n") - self._file.write(f"\t\"blender\" : {bpy.app.version},\n") - self._file.write("\t\"location\" : \"Object\",\n") #TODO - self._file.write("\t\"category\" : \"Node\"\n") - self._file.write("}\n") - self._file.write("\n") - self._file.write("import bpy\n") - self._file.write("import mathutils\n") - self._file.write("import os\n") - self._file.write("\n") + self._write("bl_info = {\n") + self._write(f"\t\"name\" : \"{name}\",\n") + self._write("\t\"author\" : \"Node To Python\",\n") + self._write("\t\"version\" : (1, 0, 0),\n") + self._write(f"\t\"blender\" : {bpy.app.version},\n") + self._write("\t\"location\" : \"Object\",\n") #TODO + self._write("\t\"category\" : \"Node\"\n") + self._write("}\n") + self._write("\n") + self._write("import bpy\n") + self._write("import mathutils\n") + self._write("import os\n") + self._write("\n") def _init_operator(self, idname: str, label: str) -> None: """ @@ -106,11 +109,11 @@ def _init_operator(self, idname: str, label: str) -> None: idname (str): name for the operator label (str): appearence inside Blender """ - self._file.write(f"class {self._class_name}(bpy.types.Operator):\n") - self._file.write(f"\tbl_idname = \"object.{idname}\"\n") - self._file.write(f"\tbl_label = \"{label}\"\n") - self._file.write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") - self._file.write("\n") + self._write(f"class {self._class_name}(bpy.types.Operator):\n") + self._write(f"\tbl_idname = \"object.{idname}\"\n") + self._write(f"\tbl_label = \"{label}\"\n") + self._write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") + self._write("\n") def _is_outermost_node_group(self, level: int) -> bool: if self.mode == 'ADDON' and level == 2: @@ -129,9 +132,8 @@ def _process_group_node_tree(self, node: Node, node_var: str, level: int, if node_tree not in self._node_trees: self._process_node_tree(node_tree, level + 1) self._node_trees.add(node_tree) - self._file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) + self._write((f"{inner}{node_var}.node_tree = bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) def _create_var(self, name: str) -> str: """ @@ -167,25 +169,25 @@ def _create_node(self, node: Node, inner: str, node_tree_var: str) -> str: node_var (str): variable name for the node """ - self._file.write(f"{inner}#node {node.name}\n") + self._write(f"{inner}#node {node.name}\n") node_var = self._create_var(node.name) self._node_vars[node] = node_var - self._file.write((f"{inner}{node_var} " + self._write((f"{inner}{node_var} " f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) #label if node.label: - self._file.write(f"{inner}{node_var}.label = \"{node.label}\"\n") + self._write(f"{inner}{node_var}.label = \"{node.label}\"\n") #color if node.use_custom_color: - self._file.write(f"{inner}{node_var}.use_custom_color = True\n") - self._file.write(f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") + self._write(f"{inner}{node_var}.use_custom_color = True\n") + self._write(f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") #mute if node.mute: - self._file.write(f"{inner}{node_var}.mute = True\n") + self._write(f"{inner}{node_var}.mute = True\n") return node_var @@ -212,33 +214,33 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str setting_str = f"{inner}{node_var}.{attr_name}" if type == ST.ENUM: if attr != '': - self._file.write(f"{setting_str} = {enum_to_py_str(attr)}\n") + self._write(f"{setting_str} = {enum_to_py_str(attr)}\n") elif type == ST.ENUM_SET: - self._file.write(f"{setting_str} = {attr}\n") + self._write(f"{setting_str} = {attr}\n") elif type == ST.STRING: - self._file.write(f"{setting_str} = {str_to_py_str(attr)}\n") + self._write(f"{setting_str} = {str_to_py_str(attr)}\n") elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: - self._file.write(f"{setting_str} = {attr}\n") + self._write(f"{setting_str} = {attr}\n") elif type == ST.VEC1: - self._file.write(f"{setting_str} = {vec1_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec1_to_py_str(attr)}\n") elif type == ST.VEC2: - self._file.write(f"{setting_str} = {vec2_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec2_to_py_str(attr)}\n") elif type == ST.VEC3: - self._file.write(f"{setting_str} = {vec3_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec3_to_py_str(attr)}\n") elif type == ST.VEC4: - self._file.write(f"{setting_str} = {vec4_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec4_to_py_str(attr)}\n") elif type == ST.COLOR: - self._file.write(f"{setting_str} = {color_to_py_str(attr)}\n") + self._write(f"{setting_str} = {color_to_py_str(attr)}\n") elif type == ST.MATERIAL: name = str_to_py_str(attr.name) - self._file.write((f"{inner}if {name} in bpy.data.materials:\n")) - self._file.write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.materials[{name}]\n")) + self._write((f"{inner}if {name} in bpy.data.materials:\n")) + self._write((f"{inner}\t{node_var}.{attr_name} = " + f"bpy.data.materials[{name}]\n")) elif type == ST.OBJECT: name = str_to_py_str(attr.name) - self._file.write((f"{inner}if {name} in bpy.data.objects:\n")) - self._file.write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.objects[{name}]\n")) + self._write((f"{inner}if {name} in bpy.data.objects:\n")) + self._write((f"{inner}\t{node_var}.{attr_name} = " + f"bpy.data.objects[{name}]\n")) elif type == ST.COLOR_RAMP: self._color_ramp_settings(node, inner, node_var, attr_name) elif type == ST.CURVE_MAPPING: @@ -271,14 +273,16 @@ def _set_group_socket_default(self, socket_interface: NodeSocketInterface, dv = vec3_to_py_str(socket_interface.default_value) else: dv = socket_interface.default_value - self._file.write(f"{inner}{socket_var}.default_value = {dv}\n") + self._write(f"{inner}{socket_var}.default_value = {dv}\n") #min value if hasattr(socket_interface, "min_value"): - self._file.write(f"{inner}{socket_var}.min_value = {socket_interface.min_value}\n") + min_val = socket_interface.min_value + self._write(f"{inner}{socket_var}.min_value = {min_val}\n") #max value if hasattr(socket_interface, "min_value"): - self._file.write((f"{inner}{socket_var}.max_value = {socket_interface.max_value}\n")) + max_val = socket_interface.max_value + self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) def _group_io_settings(self, node: bpy.types.Node, inner: str, io: str, #TODO: convert to enum @@ -302,14 +306,14 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, io_sockets = node.inputs io_socket_interfaces = node_tree.outputs - self._file.write(f"{inner}#{node_tree_var} {io}s\n") + self._write(f"{inner}#{node_tree_var} {io}s\n") for i, inout in enumerate(io_sockets): if inout.bl_idname == 'NodeSocketVirtual': continue - self._file.write(f"{inner}#{io} {inout.name}\n") + self._write(f"{inner}#{io} {inout.name}\n") idname = enum_to_py_str(inout.bl_idname) name = str_to_py_str(inout.name) - self._file.write(f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") + self._write(f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" @@ -319,30 +323,30 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, if hasattr(socket_interface, "default_attribute_name"): if socket_interface.default_attribute_name != "": dan = str_to_py_str(socket_interface.default_attribute_name) - self._file.write((f"{inner}{socket_var}" - f".default_attribute_name = {dan}\n")) + self._write((f"{inner}{socket_var}" + f".default_attribute_name = {dan}\n")) #attribute domain if hasattr(socket_interface, "attribute_domain"): ad = enum_to_py_str(socket_interface.attribute_domain) - self._file.write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") #tooltip if socket_interface.description != "": description = str_to_py_str(socket_interface.description) - self._file.write((f"{inner}{socket_var}.description = {description}\n")) + self._write((f"{inner}{socket_var}.description = {description}\n")) #hide_value if socket_interface.hide_value is True: - self._file.write(f"{inner}{socket_var}.hide_value = True\n") + self._write(f"{inner}{socket_var}.hide_value = True\n") #hide in modifier if hasattr(socket_interface, "hide_in_modifier"): if socket_interface.hide_in_modifier is True: - self._file.write(f"{inner}{socket_var}.hide_in_modifier = True\n") + self._write(f"{inner}{socket_var}.hide_in_modifier = True\n") - self._file.write("\n") - self._file.write("\n") + self._write("\n") + self._write("\n") def _set_input_defaults(self, node: bpy.types.Node, inner: str, node_var: str) -> None: @@ -407,10 +411,10 @@ def _set_input_defaults(self, node: bpy.types.Node, inner: str, else: default_val = input.default_value if default_val is not None: - self._file.write(f"{inner}#{input.identifier}\n") - self._file.write((f"{inner}{socket_var}.default_value" + self._write(f"{inner}#{input.identifier}\n") + self._write((f"{inner}{socket_var}.default_value" f" = {default_val}\n")) - self._file.write("\n") + self._write("\n") def _set_output_defaults(self, node: bpy.types.Node, inner: str, node_var: str) -> None: @@ -438,7 +442,7 @@ def _set_output_defaults(self, node: bpy.types.Node, dv = vec4_to_py_str(list(dv)) if node.bl_idname in {'ShaderNodeNormal', 'CompositorNodeNormal'}: dv = vec3_to_py_str(dv) - self._file.write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) + self._write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) def _in_file_inputs(self, input: bpy.types.NodeSocket, inner: str, @@ -458,9 +462,9 @@ def _in_file_inputs(self, input: bpy.types.NodeSocket, if input.default_value is None: return name = str_to_py_str(input.default_value.name) - self._file.write(f"{inner}if {name} in bpy.data.{type}:\n") - self._file.write((f"{inner}\t{socket_var}.default_value = " - f"bpy.data.{type}[{name}]\n")) + self._write(f"{inner}if {name} in bpy.data.{type}:\n") + self._write((f"{inner}\t{socket_var}.default_value = " + f"bpy.data.{type}[{name}]\n")) def _color_ramp_settings(self, node: bpy.types.Node, inner: str, @@ -484,35 +488,35 @@ def _color_ramp_settings(self, node: bpy.types.Node, ramp_str = f"{inner}{node_var}.{color_ramp_name}" color_mode = enum_to_py_str(color_ramp.color_mode) - self._file.write(f"{ramp_str}.color_mode = {color_mode}\n") + self._write(f"{ramp_str}.color_mode = {color_mode}\n") hue_interpolation = enum_to_py_str(color_ramp.hue_interpolation) - self._file.write((f"{ramp_str}.hue_interpolation = " - f"{hue_interpolation}\n")) + self._write((f"{ramp_str}.hue_interpolation = " + f"{hue_interpolation}\n")) interpolation = enum_to_py_str(color_ramp.interpolation) - self._file.write((f"{ramp_str}.interpolation " - f"= {interpolation}\n")) - self._file.write("\n") + self._write((f"{ramp_str}.interpolation " + f"= {interpolation}\n")) + self._write("\n") #key points - self._file.write(f"{inner}#initialize color ramp elements\n") - self._file.write((f"{ramp_str}.elements.remove" + self._write(f"{inner}#initialize color ramp elements\n") + self._write((f"{ramp_str}.elements.remove" f"({ramp_str}.elements[0])\n")) for i, element in enumerate(color_ramp.elements): element_var = f"{node_var}_cre_{i}" if i == 0: - self._file.write(f"{inner}{element_var} = " - f"{ramp_str}.elements[{i}]\n") - self._file.write(f"{inner}{element_var}.position = {element.position}\n") + self._write(f"{inner}{element_var} = " + f"{ramp_str}.elements[{i}]\n") + self._write(f"{inner}{element_var}.position = {element.position}\n") else: - self._file.write((f"{inner}{element_var} = " - f"{ramp_str}.elements" - f".new({element.position})\n")) + self._write((f"{inner}{element_var} = " + f"{ramp_str}.elements" + f".new({element.position})\n")) - self._file.write((f"{inner}{element_var}.alpha = " - f"{element.alpha}\n")) + self._write((f"{inner}{element_var}.alpha = " + f"{element.alpha}\n")) color_str = vec4_to_py_str(element.color) - self._file.write((f"{inner}{element_var}.color = {color_str}\n\n")) + self._write((f"{inner}{element_var}.color = {color_str}\n\n")) def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, node_var: str, curve_mapping_name: str @@ -534,51 +538,51 @@ def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, f"in node \"{node.bl_idname}\"")) #mapping settings - self._file.write(f"{inner}#mapping settings\n") + self._write(f"{inner}#mapping settings\n") mapping_var = f"{inner}{node_var}.{curve_mapping_name}" #extend extend = enum_to_py_str(mapping.extend) - self._file.write(f"{mapping_var}.extend = {extend}\n") + self._write(f"{mapping_var}.extend = {extend}\n") #tone tone = enum_to_py_str(mapping.tone) - self._file.write(f"{mapping_var}.tone = {tone}\n") + self._write(f"{mapping_var}.tone = {tone}\n") #black level b_lvl_str = vec3_to_py_str(mapping.black_level) - self._file.write((f"{mapping_var}.black_level = {b_lvl_str}\n")) + self._write((f"{mapping_var}.black_level = {b_lvl_str}\n")) #white level w_lvl_str = vec3_to_py_str(mapping.white_level) - self._file.write((f"{mapping_var}.white_level = {w_lvl_str}\n")) + self._write((f"{mapping_var}.white_level = {w_lvl_str}\n")) #minima and maxima min_x = mapping.clip_min_x - self._file.write(f"{mapping_var}.clip_min_x = {min_x}\n") + self._write(f"{mapping_var}.clip_min_x = {min_x}\n") min_y = mapping.clip_min_y - self._file.write(f"{mapping_var}.clip_min_y = {min_y}\n") + self._write(f"{mapping_var}.clip_min_y = {min_y}\n") max_x = mapping.clip_max_x - self._file.write(f"{mapping_var}.clip_max_x = {max_x}\n") + self._write(f"{mapping_var}.clip_max_x = {max_x}\n") max_y = mapping.clip_max_y - self._file.write(f"{mapping_var}.clip_max_y = {max_y}\n") + self._write(f"{mapping_var}.clip_max_y = {max_y}\n") #use_clip use_clip = mapping.use_clip - self._file.write(f"{mapping_var}.use_clip = {use_clip}\n") + self._write(f"{mapping_var}.use_clip = {use_clip}\n") #create curves for i, curve in enumerate(mapping.curves): #TODO: curve function - self._file.write(f"{inner}#curve {i}\n") + self._write(f"{inner}#curve {i}\n") curve_i = f"{node_var}_curve_{i}" - self._file.write((f"{inner}{curve_i} = " - f"{node_var}.{curve_mapping_name}.curves[{i}]\n")) + self._write((f"{inner}{curve_i} = " + f"{node_var}.{curve_mapping_name}.curves[{i}]\n")) # Remove default points when CurveMap is initialized with more than # two points (just CompositorNodeHueCorrect) if (node.bl_idname == 'CompositorNodeHueCorrect'): - self._file.write((f"{inner}for i in " - f"range(len({curve_i}.points.values()) - 1, 1, -1):\n")) - self._file.write(f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") + self._write((f"{inner}for i in range" + f"(len({curve_i}.points.values()) - 1, 1, -1):\n")) + self._write(f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") for j, point in enumerate(curve.points): #TODO: point function @@ -587,17 +591,17 @@ def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, loc = point.location loc_str = f"{loc[0]}, {loc[1]}" if j < 2: - self._file.write(f"{point_j} = {curve_i}.points[{j}]\n") - self._file.write(f"{point_j}.location = ({loc_str})\n") + self._write(f"{point_j} = {curve_i}.points[{j}]\n") + self._write(f"{point_j}.location = ({loc_str})\n") else: - self._file.write((f"{point_j} = {curve_i}.points.new({loc_str})\n")) + self._write((f"{point_j} = {curve_i}.points.new({loc_str})\n")) handle = enum_to_py_str(point.handle_type) - self._file.write(f"{point_j}.handle_type = {handle}\n") + self._write(f"{point_j}.handle_type = {handle}\n") #update curve - self._file.write(f"{inner}#update curve after changes\n") - self._file.write(f"{mapping_var}.update()\n") + self._write(f"{inner}#update curve after changes\n") + self._write(f"{mapping_var}.update()\n") def _save_image(self, img: bpy.types.Image) -> None: """ @@ -640,29 +644,29 @@ def _load_image(self, img: bpy.types.Image, img_str = img_to_py_str(img) #TODO: convert to special variables - self._file.write(f"{inner}#load image {img_str}\n") - self._file.write((f"{inner}base_dir = " - f"os.path.dirname(os.path.abspath(__file__))\n")) - self._file.write((f"{inner}image_path = " - f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " - f"\"{img_str}\")\n")) - self._file.write((f"{inner}{img_var} = " - f"bpy.data.images.load(image_path, check_existing = True)\n")) + self._write(f"{inner}#load image {img_str}\n") + self._write((f"{inner}base_dir = " + f"os.path.dirname(os.path.abspath(__file__))\n")) + self._write((f"{inner}image_path = " + f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " + f"\"{img_str}\")\n")) + self._write((f"{inner}{img_var} = bpy.data.images.load" + f"(image_path, check_existing = True)\n")) #copy image settings - self._file.write(f"{inner}#set image settings\n") + self._write(f"{inner}#set image settings\n") #source source = enum_to_py_str(img.source) - self._file.write(f"{inner}{img_var}.source = {source}\n") + self._write(f"{inner}{img_var}.source = {source}\n") #color space settings color_space = enum_to_py_str(img.colorspace_settings.name) - self._file.write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") + self._write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") #alpha mode alpha_mode = enum_to_py_str(img.alpha_mode) - self._file.write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") + self._write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") def _image_user_settings(self, img_user: bpy.types.ImageUser, inner: str, @@ -680,8 +684,8 @@ def _image_user_settings(self, img_user: bpy.types.ImageUser, "frame_start", "tile", "use_auto_refresh", "use_cyclic"] for img_usr_attr in img_usr_attrs: - self._file.write((f"{inner}{img_user_var}.{img_usr_attr} = " - f"{getattr(img_user, img_usr_attr)}\n")) + self._write((f"{inner}{img_user_var}.{img_usr_attr} = " + f"{getattr(img_user, img_usr_attr)}\n")) def _set_parents(self, node_tree: bpy.types.NodeTree, inner: str) -> None: @@ -696,12 +700,12 @@ def _set_parents(self, node_tree: bpy.types.NodeTree, for node in node_tree.nodes: if node is not None and node.parent is not None: if not parent_comment: - self._file.write(f"{inner}#Set parents\n") + self._write(f"{inner}#Set parents\n") parent_comment = True node_var = self._node_vars[node] parent_var = self._node_vars[node.parent] - self._file.write(f"{inner}{node_var}.parent = {parent_var}\n") - self._file.write("\n") + self._write(f"{inner}{node_var}.parent = {parent_var}\n") + self._write("\n") def _set_locations(self, node_tree: bpy.types.NodeTree, inner: str) -> None: """ @@ -712,12 +716,12 @@ def _set_locations(self, node_tree: bpy.types.NodeTree, inner: str) -> None: inner (str): indentation string """ - self._file.write(f"{inner}#Set locations\n") + self._write(f"{inner}#Set locations\n") for node in node_tree.nodes: node_var = self._node_vars[node] - self._file.write((f"{inner}{node_var}.location " + self._write((f"{inner}{node_var}.location " f"= ({node.location.x}, {node.location.y})\n")) - self._file.write("\n") + self._write("\n") def _set_dimensions(self, node_tree: bpy.types.NodeTree, inner: str, ) -> None: @@ -728,12 +732,12 @@ def _set_dimensions(self, node_tree: bpy.types.NodeTree, inner: str, node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from inner (str): indentation string """ - self._file.write(f"{inner}#Set dimensions\n") + self._write(f"{inner}#Set dimensions\n") for node in node_tree.nodes: node_var = self._node_vars[node] - self._file.write((f"{inner}{node_var}.width, {node_var}.height " - f"= {node.width}, {node.height}\n")) - self._file.write("\n") + self._write((f"{inner}{node_var}.width, {node_var}.height " + f"= {node.width}, {node.height}\n")) + self._write("\n") def _init_links(self, node_tree: bpy.types.NodeTree, inner: str, @@ -748,7 +752,7 @@ def _init_links(self, node_tree: bpy.types.NodeTree, """ if node_tree.links: - self._file.write(f"{inner}#initialize {node_tree_var} links\n") + self._write(f"{inner}#initialize {node_tree_var} links\n") for link in node_tree.links: in_node_var = self._node_vars[link.from_node] input_socket = link.from_socket @@ -773,11 +777,11 @@ def _init_links(self, node_tree: bpy.types.NodeTree, output_idx = i break - self._file.write((f"{inner}#{in_node_var}.{input_socket.name} " - f"-> {out_node_var}.{output_socket.name}\n")) - self._file.write((f"{inner}{node_tree_var}.links.new({in_node_var}" - f".outputs[{input_idx}], " - f"{out_node_var}.inputs[{output_idx}])\n")) + self._write((f"{inner}#{in_node_var}.{input_socket.name} " + f"-> {out_node_var}.{output_socket.name}\n")) + self._write((f"{inner}{node_tree_var}.links.new({in_node_var}" + f".outputs[{input_idx}], " + f"{out_node_var}.inputs[{output_idx}])\n")) def _hide_hidden_sockets(self, node: bpy.types.Node, inner: str, node_var: str) -> None: @@ -791,10 +795,10 @@ def _hide_hidden_sockets(self, node: bpy.types.Node, inner: str, """ for i, socket in enumerate(node.inputs): if socket.hide is True: - self._file.write(f"{inner}{node_var}.inputs[{i}].hide = True\n") + self._write(f"{inner}{node_var}.inputs[{i}].hide = True\n") for i, socket in enumerate(node.outputs): if socket.hide is True: - self._file.write(f"{inner}{node_var}.outputs[{i}].hide = True\n") + self._write(f"{inner}{node_var}.outputs[{i}].hide = True\n") def _set_socket_defaults(self, node: Node, node_var: str, inner: str): self._set_input_defaults(node, inner, node_var) @@ -805,34 +809,34 @@ def _create_menu_func(self) -> None: Creates the menu function """ - self._file.write("def menu_func(self, context):\n") - self._file.write(f"\tself.layout.operator({self._class_name}.bl_idname)\n") - self._file.write("\n") + self._write("def menu_func(self, context):\n") + self._write(f"\tself.layout.operator({self._class_name}.bl_idname)\n") + self._write("\n") def _create_register_func(self) -> None: """ Creates the register function """ - self._file.write("def register():\n") - self._file.write(f"\tbpy.utils.register_class({self._class_name})\n") - self._file.write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") - self._file.write("\n") + self._write("def register():\n") + self._write(f"\tbpy.utils.register_class({self._class_name})\n") + self._write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") + self._write("\n") def _create_unregister_func(self) -> None: """ Creates the unregister function """ - self._file.write("def unregister():\n") - self._file.write(f"\tbpy.utils.unregister_class({self._class_name})\n") - self._file.write("\tbpy.types.VIEW3D_MT_object.remove(menu_func)\n") - self._file.write("\n") + self._write("def unregister():\n") + self._write(f"\tbpy.utils.unregister_class({self._class_name})\n") + self._write("\tbpy.types.VIEW3D_MT_object.remove(menu_func)\n") + self._write("\n") def _create_main_func(self) -> None: """ Creates the main function """ - self._file.write("if __name__ == \"__main__\":\n") - self._file.write("\tregister()") + self._write("if __name__ == \"__main__\":\n") + self._write("\tregister()") def _zip_addon(self) -> None: """ diff --git a/compositor/operator.py b/compositor/operator.py index a4989d6..3e7ffff 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -38,37 +38,37 @@ def __init__(self): def _create_scene(self, indent: str): #TODO: wrap in more general unique name util function - self._file.write(f"{indent}# Generate unique scene name\n") - self._file.write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") - self._file.write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") - self._file.write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - self._file.write(f"{indent}\ti = 1\n") - self._file.write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - self._file.write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - self._file.write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - self._file.write(f"{indent}\t\ti += 1\n\n") - - self._file.write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") - self._file.write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") - self._file.write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") - self._file.write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") + self._write(f"{indent}# Generate unique scene name\n") + self._write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") + self._write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") + self._write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + self._write(f"{indent}\ti = 1\n") + self._write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + self._write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") + self._write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") + self._write(f"{indent}\t\ti += 1\n\n") + + self._write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") + self._write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") + self._write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") + self._write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") def _initialize_compositor_node_tree(self, outer, nt_var, level, inner, nt_name): #initialize node group - self._file.write(f"{outer}#initialize {nt_var} node group\n") - self._file.write(f"{outer}def {nt_var}_node_group():\n") + self._write(f"{outer}#initialize {nt_var} node group\n") + self._write(f"{outer}def {nt_var}_node_group():\n") if self._is_outermost_node_group(level): #outermost node group - self._file.write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") - self._file.write(f"{inner}#start with a clean node tree\n") - self._file.write(f"{inner}for node in {nt_var}.nodes:\n") - self._file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + self._write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") + self._write(f"{inner}#start with a clean node tree\n") + self._write(f"{inner}for node in {nt_var}.nodes:\n") + self._write(f"{inner}\t{nt_var}.nodes.remove(node)\n") else: - self._file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'CompositorNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - self._file.write("\n") + self._write((f"{inner}{nt_var}" + f"= bpy.data.node_groups.new(" + f"type = \'CompositorNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) + self._write("\n") def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, level: int): if node.bl_idname == 'CompositorNodeGroup': @@ -100,9 +100,9 @@ def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, if node.bl_idname == 'CompositorNodeGroup': if node.node_tree is not None: - self._file.write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) + self._write((f"{inner}{node_var}.node_tree = " + f"bpy.data.node_groups" + f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: self._group_io_settings(node, inner, "input", ntp_nt.var, ntp_nt.node_tree) inputs_set = True @@ -136,7 +136,7 @@ def _process_node_tree(self, node_tree, level): ntp_nt = NTP_CompositorNodeTree(node_tree, nt_var) #initialize nodes - self._file.write(f"{inner}#initialize {nt_var} nodes\n") + self._write(f"{inner}#initialize {nt_var} nodes\n") for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) @@ -147,7 +147,7 @@ def _process_node_tree(self, node_tree, level): self._init_links(node_tree, inner, nt_var) - self._file.write(f"\n{outer}{nt_var}_node_group()\n\n") + self._write(f"\n{outer}{nt_var}_node_group()\n\n") def execute(self, context): #find node group to replicate @@ -175,7 +175,7 @@ def execute(self, context): self._class_name = clean_string(self.compositor_name, lower=False) self._init_operator(comp_var, self.compositor_name) - self._file.write("\tdef execute(self, context):\n") + self._write("\tdef execute(self, context):\n") else: self._file = StringIO("") @@ -192,7 +192,7 @@ def execute(self, context): self._process_node_tree(nt, level) if self.mode == 'ADDON': - self._file.write("\t\treturn {'FINISHED'}\n\n") + self._write("\t\treturn {'FINISHED'}\n\n") self._create_menu_func() self._create_register_func() diff --git a/geometry/operator.py b/geometry/operator.py index facb8d1..a222b7d 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -33,20 +33,19 @@ def __init__(self): def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, inner: str, node_var: str) -> None: - self._file.write(f"{inner}# Remove generated sim state items\n") - self._file.write(f"{inner}for item in {node_var}.state_items:\n") - self._file.write(f"{inner}\t{node_var}.state_items.remove(item)\n") + self._write(f"{inner}# Remove generated sim state items\n") + self._write(f"{inner}for item in {node_var}.state_items:\n") + self._write(f"{inner}\t{node_var}.state_items.remove(item)\n") for i, si in enumerate(node.state_items): socket_type = enum_to_py_str(si.socket_type) name = str_to_py_str(si.name) - self._file.write(f"{inner}#create SSI {name}\n") - self._file.write((f"{inner}{node_var}.state_items.new" - f"({socket_type}, {name})\n")) + self._write(f"{inner}#create SSI {name}\n") + self._write((f"{inner}{node_var}.state_items.new" + f"({socket_type}, {name})\n")) si_var = f"{node_var}.state_items[{i}]" attr_domain = enum_to_py_str(si.attribute_domain) - self._file.write((f"{inner}{si_var}.attribute_domain " - f"= {attr_domain}\n")) + self._write((f"{inner}{si_var}.attribute_domain = {attr_domain}\n")) def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, inner: str, level: int) -> None: @@ -91,8 +90,8 @@ def _process_sim_zones(self, sim_inputs: list[GeometryNodeSimulationInput], sim_input_var = self._node_vars[sim_input] sim_output_var = self._node_vars[sim_output] - self._file.write((f"{inner}{sim_input_var}.pair_with_output" - f"({sim_output_var})\n")) + self._write((f"{inner}{sim_input_var}.pair_with_output" + f"({sim_output_var})\n")) #must set defaults after paired with output self._set_socket_defaults(sim_input, sim_input_var, inner) @@ -115,15 +114,15 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, # Eventually these should go away anyways, and level of indentation depends just on the mode #initialize node group - self._file.write(f"{outer}#initialize {nt_var} node group\n") - self._file.write(f"{outer}def {nt_var}_node_group():\n") - self._file.write((f"{inner}{nt_var} = bpy.data.node_groups.new(" - f"type = \'GeometryNodeTree\', " - f"name = {str_to_py_str(node_tree.name)})\n")) - self._file.write("\n") + self._write(f"{outer}#initialize {nt_var} node group\n") + self._write(f"{outer}def {nt_var}_node_group():\n") + self._write((f"{inner}{nt_var} = bpy.data.node_groups.new(" + f"type = \'GeometryNodeTree\', " + f"name = {str_to_py_str(node_tree.name)})\n")) + self._write("\n") #initialize nodes - self._file.write(f"{inner}#initialize {nt_var} nodes\n") + self._write(f"{inner}#initialize {nt_var} nodes\n") ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) @@ -140,23 +139,23 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, #create connections self._init_links(node_tree, inner, nt_var) - self._file.write(f"{inner}return {nt_var}\n") + self._write(f"{inner}return {nt_var}\n") #create node group - self._file.write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") + self._write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") return self._used_vars def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): #get object - self._file.write(f"\t\tname = bpy.context.object.name\n") - self._file.write(f"\t\tobj = bpy.data.objects[name]\n") + self._write(f"\t\tname = bpy.context.object.name\n") + self._write(f"\t\tobj = bpy.data.objects[name]\n") #set modifier to the one we just created mod_name = str_to_py_str(nt.name) - self._file.write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " - f"type = 'NODES')\n")) - self._file.write(f"\t\tmod.node_group = {nt_var}\n") + self._write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " + f"type = 'NODES')\n")) + self._write(f"\t\tmod.node_group = {nt_var}\n") def execute(self, context): @@ -174,7 +173,7 @@ def execute(self, context): self._create_header(nt.name) self._class_name = clean_string(nt.name, lower = False) self._init_operator(nt_var, nt.name) - self._file.write("\tdef execute(self, context):\n") + self._write("\tdef execute(self, context):\n") else: self._file = StringIO("") @@ -186,7 +185,7 @@ def execute(self, context): if self.mode == 'ADDON': self._apply_modifier(nt, nt_var) - self._file.write("\t\treturn {'FINISHED'}\n\n") + self._write("\t\treturn {'FINISHED'}\n\n") self._create_menu_func() self._create_register_func() self._create_unregister_func() diff --git a/material/operator.py b/material/operator.py index 9077d5b..0a42168 100644 --- a/material/operator.py +++ b/material/operator.py @@ -25,26 +25,25 @@ def __init__(self): self._settings = shader_node_settings def _create_material(self, indent: str): - self._file.write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" + self._write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" f"name = {str_to_py_str(self.material_name)})\n")) - self._file.write(f"{indent}{MAT_VAR}.use_nodes = True\n") + self._write(f"{indent}{MAT_VAR}.use_nodes = True\n") def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): #initialize node group - self._file.write(f"{outer}#initialize {nt_var} node group\n") - self._file.write(f"{outer}def {nt_var}_node_group():\n") + self._write(f"{outer}#initialize {nt_var} node group\n") + self._write(f"{outer}def {nt_var}_node_group():\n") if self._is_outermost_node_group(level): - self._file.write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") - self._file.write(f"{inner}#start with a clean node tree\n") - self._file.write(f"{inner}for node in {nt_var}.nodes:\n") - self._file.write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + self._write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") + self._write(f"{inner}#start with a clean node tree\n") + self._write(f"{inner}for node in {nt_var}.nodes:\n") + self._write(f"{inner}\t{nt_var}.nodes.remove(node)\n") else: - self._file.write((f"{inner}{nt_var}" - f"= bpy.data.node_groups.new(" - f"type = \'ShaderNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - self._file.write("\n") + self._write((f"{inner}{nt_var} = bpy.data.node_groups.new(" + f"type = \'ShaderNodeTree\', " + f"name = {str_to_py_str(nt_name)})\n")) + self._write("\n") def _process_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: str, level: int) -> None: #create node @@ -92,7 +91,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: ntp_nt = NTP_ShaderNodeTree(node_tree, nt_var) #initialize nodes - self._file.write(f"{inner}#initialize {nt_var} nodes\n") + self._write(f"{inner}#initialize {nt_var} nodes\n") for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) @@ -103,9 +102,9 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: self._init_links(node_tree, inner, nt_var) - self._file.write(f"{inner}return {nt_var}\n") + self._write(f"{inner}return {nt_var}\n") - self._file.write(f"\n{outer}{nt_var}_node_group()\n\n") + self._write(f"\n{outer}{nt_var}_node_group()\n\n") def execute(self, context): #find node group to replicate @@ -127,7 +126,7 @@ def execute(self, context): self._class_name = clean_string(self.material_name, lower=False) self._init_operator(mat_var, self.material_name) - self._file.write("\tdef execute(self, context):\n") + self._write("\tdef execute(self, context):\n") else: self._file = StringIO("") @@ -144,7 +143,7 @@ def execute(self, context): self._process_node_tree(nt, level) if self.mode == 'ADDON': - self._file.write("\t\treturn {'FINISHED'}\n\n") + self._write("\t\treturn {'FINISHED'}\n\n") self._create_menu_func() self._create_register_func() self._create_unregister_func() From 01f5950beea6c8f2c26787592997508804ffd1ad Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Dec 2023 15:37:02 -0600 Subject: [PATCH 134/286] refactor: use NTP_NodeTree class in group_io_settings function --- NTP_Operator.py | 6 ++++-- compositor/operator.py | 4 ++-- geometry/operator.py | 6 ++---- material/operator.py | 8 ++------ 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/NTP_Operator.py b/NTP_Operator.py index 50e6c6a..d76c6a9 100644 --- a/NTP_Operator.py +++ b/NTP_Operator.py @@ -286,8 +286,7 @@ def _set_group_socket_default(self, socket_interface: NodeSocketInterface, def _group_io_settings(self, node: bpy.types.Node, inner: str, io: str, #TODO: convert to enum - node_tree_var: str, - node_tree: bpy.types.NodeTree) -> None: + ntp_node_tree: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets @@ -299,6 +298,9 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, node_tree (bpy.types.NodeTree): node tree that we're generating input and output settings for """ + node_tree_var = ntp_node_tree.var + node_tree = ntp_node_tree.node_tree + if io == "input": io_sockets = node.outputs io_socket_interfaces = node_tree.inputs diff --git a/compositor/operator.py b/compositor/operator.py index 3e7ffff..94c5d60 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -104,11 +104,11 @@ def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - self._group_io_settings(node, inner, "input", ntp_nt.var, ntp_nt.node_tree) + self._group_io_settings(node, inner, "input", ntp_nt) inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - self._group_io_settings(node, inner, "output", ntp_nt.var, ntp_nt.node_tree) + self._group_io_settings(node, inner, "output", ntp_nt) outputs_set = True self._set_socket_defaults(node, node_var, inner) diff --git a/geometry/operator.py b/geometry/operator.py index a222b7d..d1f55f1 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -56,13 +56,11 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", ntp_node_tree.var, - ntp_node_tree.node_tree) #TODO: convert to using NTP_NodeTrees + self._group_io_settings(node, inner, "input", ntp_node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", - ntp_node_tree.var, ntp_node_tree.node_tree) + self._group_io_settings(node, inner, "output", ntp_node_tree) ntp_node_tree.outputs_set = True elif node.bl_idname == 'GeometryNodeSimulationInput': diff --git a/material/operator.py b/material/operator.py index 0a42168..880bb50 100644 --- a/material/operator.py +++ b/material/operator.py @@ -52,16 +52,12 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: st if node.bl_idname == 'ShaderNodeGroup': self._process_group_node_tree(node, node_var, level, inner) - #TODO: should probably be lumped into one function, - #it's always called like this and we're double checking it elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", - ntp_node_tree.var, ntp_node_tree.node_tree) + self._group_io_settings(node, inner, "input", ntp_node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", - ntp_node_tree.var, ntp_node_tree.node_tree) + self._group_io_settings(node, inner, "output", ntp_node_tree) ntp_node_tree.outputs_set = True self._hide_hidden_sockets(node, inner, node_var) From 7743d5856da6ac9d87f17a594f1532588fb4a97b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Dec 2023 15:56:59 -0600 Subject: [PATCH 135/286] refactor: cleanup, removed child ntp_node_tree classes --- compositor/node_tree.py | 7 ------- compositor/operator.py | 9 ++++----- geometry/node_tree.py | 8 -------- geometry/operator.py | 7 +++---- material/node_tree.py | 6 ------ material/operator.py | 9 ++++----- NTP_NodeTree.py => ntp_node_tree.py | 2 -- NTP_Operator.py => ntp_operator.py | 2 +- 8 files changed, 12 insertions(+), 38 deletions(-) delete mode 100644 compositor/node_tree.py delete mode 100644 geometry/node_tree.py delete mode 100644 material/node_tree.py rename NTP_NodeTree.py => ntp_node_tree.py (95%) rename NTP_Operator.py => ntp_operator.py (99%) diff --git a/compositor/node_tree.py b/compositor/node_tree.py deleted file mode 100644 index d799df0..0000000 --- a/compositor/node_tree.py +++ /dev/null @@ -1,7 +0,0 @@ -from bpy.types import CompositorNodeTree - -from ..NTP_NodeTree import NTP_NodeTree - -class NTP_CompositorNodeTree(NTP_NodeTree): - def __init__(self, node_tree: CompositorNodeTree, var: str): - super().__init__(node_tree, var) \ No newline at end of file diff --git a/compositor/operator.py b/compositor/operator.py index 94c5d60..b521e77 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -1,10 +1,9 @@ import bpy -import os from bpy.types import Node -from ..NTP_Operator import NTP_Operator -from .node_tree import NTP_CompositorNodeTree +from ..ntp_operator import NTP_Operator +from ..ntp_node_tree import NTP_NodeTree from ..utils import * from io import StringIO from .node_settings import compositor_node_settings @@ -70,7 +69,7 @@ def _initialize_compositor_node_tree(self, outer, nt_var, level, inner, nt_name) f"name = {str_to_py_str(nt_name)})\n")) self._write("\n") - def _process_node(self, node: Node, ntp_nt: NTP_CompositorNodeTree, inner: str, level: int): + def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str, level: int): if node.bl_idname == 'CompositorNodeGroup': node_nt = node.node_tree if node_nt is not None and node_nt not in self._node_trees: @@ -133,7 +132,7 @@ def _process_node_tree(self, node_tree, level): self._initialize_compositor_node_tree(outer, nt_var, level, inner, nt_name) - ntp_nt = NTP_CompositorNodeTree(node_tree, nt_var) + ntp_nt = NTP_NodeTree(node_tree, nt_var) #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") diff --git a/geometry/node_tree.py b/geometry/node_tree.py deleted file mode 100644 index a8408f0..0000000 --- a/geometry/node_tree.py +++ /dev/null @@ -1,8 +0,0 @@ -from bpy.types import GeometryNodeTree, GeometryNodeSimulationInput - -from ..NTP_NodeTree import NTP_NodeTree - -class NTP_GeoNodeTree(NTP_NodeTree): - def __init__(self, node_tree: GeometryNodeTree, var: str): - super().__init__(node_tree, var) - self.sim_inputs: list[GeometryNodeSimulationInput] = [] \ No newline at end of file diff --git a/geometry/operator.py b/geometry/operator.py index d1f55f1..a0a7fde 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -4,12 +4,11 @@ from bpy.types import GeometryNodeTree from bpy.types import Node -import os from io import StringIO -from ..NTP_Operator import NTP_Operator +from ..ntp_operator import NTP_Operator +from ..ntp_node_tree import NTP_NodeTree from ..utils import * -from .node_tree import NTP_GeoNodeTree from .node_settings import geo_node_settings class NTPGeoNodesOperator(NTP_Operator): @@ -47,7 +46,7 @@ def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, attr_domain = enum_to_py_str(si.attribute_domain) self._write((f"{inner}{si_var}.attribute_domain = {attr_domain}\n")) - def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, + def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, level: int) -> None: #create node node_var: str = self._create_node(node, inner, ntp_node_tree.var) diff --git a/material/node_tree.py b/material/node_tree.py deleted file mode 100644 index aa4822f..0000000 --- a/material/node_tree.py +++ /dev/null @@ -1,6 +0,0 @@ -from ..NTP_NodeTree import NTP_NodeTree -from bpy.types import ShaderNodeTree - -class NTP_ShaderNodeTree(NTP_NodeTree): - def __init__(self, node_tree: ShaderNodeTree, var: str): - super().__init__(node_tree, var) \ No newline at end of file diff --git a/material/operator.py b/material/operator.py index 880bb50..cc84f24 100644 --- a/material/operator.py +++ b/material/operator.py @@ -2,13 +2,12 @@ from bpy.types import Node from bpy.types import ShaderNodeTree -import os from io import StringIO from ..utils import * -from ..NTP_Operator import NTP_Operator +from ..ntp_operator import NTP_Operator +from ..ntp_node_tree import NTP_NodeTree from .node_settings import shader_node_settings -from .node_tree import NTP_ShaderNodeTree MAT_VAR = "mat" @@ -45,7 +44,7 @@ def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): f"name = {str_to_py_str(nt_name)})\n")) self._write("\n") - def _process_node(self, node: Node, ntp_node_tree: NTP_ShaderNodeTree, inner: str, level: int) -> None: + def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, level: int) -> None: #create node node_var: str = self._create_node(node, inner, ntp_node_tree.var) self._set_settings_defaults(node, inner, node_var) @@ -84,7 +83,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: self._initialize_shader_node_tree(outer, nt_var, level, inner, nt_name) - ntp_nt = NTP_ShaderNodeTree(node_tree, nt_var) + ntp_nt = NTP_NodeTree(node_tree, nt_var) #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") diff --git a/NTP_NodeTree.py b/ntp_node_tree.py similarity index 95% rename from NTP_NodeTree.py rename to ntp_node_tree.py index 8903d1b..5469ba1 100644 --- a/NTP_NodeTree.py +++ b/ntp_node_tree.py @@ -1,7 +1,5 @@ from bpy.types import NodeTree -from .utils import ST - class NTP_NodeTree: def __init__(self, node_tree: NodeTree, var: str): # Blender node tree object being copied diff --git a/NTP_Operator.py b/ntp_operator.py similarity index 99% rename from NTP_Operator.py rename to ntp_operator.py index d76c6a9..32acf0c 100644 --- a/NTP_Operator.py +++ b/ntp_operator.py @@ -5,7 +5,7 @@ import os from typing import TextIO -from .NTP_NodeTree import NTP_NodeTree +from .ntp_node_tree import NTP_NodeTree from .utils import * class NTP_Operator(Operator): From 30b26dc04dceb6ff1ed3ee9c05b94e590fea1962 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Dec 2023 15:59:05 -0600 Subject: [PATCH 136/286] fix: removed imports for deleted modules --- compositor/__init__.py | 2 -- geometry/__init__.py | 2 -- material/__init__.py | 2 -- 3 files changed, 6 deletions(-) diff --git a/compositor/__init__.py b/compositor/__init__.py index e2707b0..ceb3a04 100644 --- a/compositor/__init__.py +++ b/compositor/__init__.py @@ -1,12 +1,10 @@ if "bpy" in locals(): import importlib importlib.reload(node_settings) - importlib.reload(node_tree) importlib.reload(operator) importlib.reload(ui) else: from . import node_settings - from . import node_tree from . import operator from . import ui diff --git a/geometry/__init__.py b/geometry/__init__.py index e2707b0..ceb3a04 100644 --- a/geometry/__init__.py +++ b/geometry/__init__.py @@ -1,12 +1,10 @@ if "bpy" in locals(): import importlib importlib.reload(node_settings) - importlib.reload(node_tree) importlib.reload(operator) importlib.reload(ui) else: from . import node_settings - from . import node_tree from . import operator from . import ui diff --git a/material/__init__.py b/material/__init__.py index e2707b0..ceb3a04 100644 --- a/material/__init__.py +++ b/material/__init__.py @@ -1,12 +1,10 @@ if "bpy" in locals(): import importlib importlib.reload(node_settings) - importlib.reload(node_tree) importlib.reload(operator) importlib.reload(ui) else: from . import node_settings - from . import node_tree from . import operator from . import ui From 433d3b51f105c65cc6011dc5223b52348d031d01 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Dec 2023 16:32:56 -0600 Subject: [PATCH 137/286] fix: cleaned up reference to old NTP_NodeTree --- geometry/operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometry/operator.py b/geometry/operator.py index a0a7fde..d1893a9 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -121,7 +121,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") - ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) + ntp_nt = NTP_NodeTree(node_tree, nt_var) for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) From f63b85424c1605fd7551e2e3658516dad00bd043 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Dec 2023 16:40:06 -0600 Subject: [PATCH 138/286] fix: restore necessary child NTP_GeoNodeTree class --- geometry/node_tree.py | 8 ++++++++ geometry/operator.py | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 geometry/node_tree.py diff --git a/geometry/node_tree.py b/geometry/node_tree.py new file mode 100644 index 0000000..64be218 --- /dev/null +++ b/geometry/node_tree.py @@ -0,0 +1,8 @@ +from bpy.types import GeometryNodeTree, GeometryNodeSimulationInput + +from ..ntp_node_tree import NTP_NodeTree + +class NTP_GeoNodeTree(NTP_NodeTree): + def __init__(self, node_tree: GeometryNodeTree, var: str): + super().__init__(node_tree, var) + self.sim_inputs: list[GeometryNodeSimulationInput] = [] diff --git a/geometry/operator.py b/geometry/operator.py index d1893a9..79f9cf1 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -7,8 +7,8 @@ from io import StringIO from ..ntp_operator import NTP_Operator -from ..ntp_node_tree import NTP_NodeTree from ..utils import * +from .node_tree import NTP_GeoNodeTree from .node_settings import geo_node_settings class NTPGeoNodesOperator(NTP_Operator): @@ -46,7 +46,7 @@ def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, attr_domain = enum_to_py_str(si.attribute_domain) self._write((f"{inner}{si_var}.attribute_domain = {attr_domain}\n")) - def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, + def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, inner: str, level: int) -> None: #create node node_var: str = self._create_node(node, inner, ntp_node_tree.var) @@ -121,7 +121,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") - ntp_nt = NTP_NodeTree(node_tree, nt_var) + ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) From 87dd46e4e336b3b146d31f8c8d37919b9a7e0e53 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Dec 2023 16:41:45 -0600 Subject: [PATCH 139/286] fix: import geo node tree module in package --- geometry/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/geometry/__init__.py b/geometry/__init__.py index ceb3a04..e50e3c0 100644 --- a/geometry/__init__.py +++ b/geometry/__init__.py @@ -1,9 +1,11 @@ if "bpy" in locals(): import importlib + importlib.reload(node_tree) importlib.reload(node_settings) importlib.reload(operator) importlib.reload(ui) else: + from . import node_tree from . import node_settings from . import operator from . import ui From 532ba17106175ec20855ca6af1f046d136ec660b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 2 Dec 2023 17:20:37 -0600 Subject: [PATCH 140/286] feat: node names now copied also --- ntp_operator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index 32acf0c..4a8b699 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -179,6 +179,9 @@ def _create_node(self, node: Node, inner: str, node_tree_var: str) -> str: #label if node.label: self._write(f"{inner}{node_var}.label = \"{node.label}\"\n") + + #name + self._write(f"{inner}{node_var}.name = \"{node.name}\"\n") #color if node.use_custom_color: From 9b883ccbaf548806a9ca4244961b95a7aec4d7bb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 9 Dec 2023 15:36:13 -0600 Subject: [PATCH 141/286] fix: NodeToPython now registers in v4.0 --- geometry/__init__.py | 4 +-- ntp_operator.py | 67 ++++++++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/geometry/__init__.py b/geometry/__init__.py index e50e3c0..e2707b0 100644 --- a/geometry/__init__.py +++ b/geometry/__init__.py @@ -1,12 +1,12 @@ if "bpy" in locals(): import importlib - importlib.reload(node_tree) importlib.reload(node_settings) + importlib.reload(node_tree) importlib.reload(operator) importlib.reload(ui) else: - from . import node_tree from . import node_settings + from . import node_tree from . import operator from . import ui diff --git a/ntp_operator.py b/ntp_operator.py index 4a8b699..a0651e9 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1,6 +1,9 @@ import bpy from bpy.types import Context, Operator -from bpy.types import Node, NodeTree, NodeSocketInterface +from bpy.types import Node, NodeTree + +if bpy.app.version < (4, 0, 0): + from bpy.types import NodeSocketInterface import os from typing import TextIO @@ -255,37 +258,38 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str self._load_image(attr, inner, f"{node_var}.{attr_name}") elif type == ST.IMAGE_USER: self._image_user_settings(attr, inner, f"{node_var}.{attr_name}") + + if bpy.app.version < (4, 0, 0): + def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, + inner: str, socket_var: str) -> None: + """ + Set a node group input/output's default properties if they exist - def _set_group_socket_default(self, socket_interface: NodeSocketInterface, - inner: str, socket_var: str) -> None: - """ - Set a node group input/output's default properties if they exist - - Parameters: - socket_interface (NodeSocketInterface): socket interface associated - with the input/output - inner (str): indentation string - socket_var (str): variable name for the socket - """ - if socket_interface.type not in default_sockets: - return + Parameters: + socket_interface (NodeSocketInterface): socket interface associated + with the input/output + inner (str): indentation string + socket_var (str): variable name for the socket + """ + if socket_interface.type not in default_sockets: + return - if socket_interface.type == 'RGBA': - dv = vec4_to_py_str(socket_interface.default_value) - elif socket_interface.type == 'VECTOR': - dv = vec3_to_py_str(socket_interface.default_value) - else: - dv = socket_interface.default_value - self._write(f"{inner}{socket_var}.default_value = {dv}\n") - - #min value - if hasattr(socket_interface, "min_value"): - min_val = socket_interface.min_value - self._write(f"{inner}{socket_var}.min_value = {min_val}\n") - #max value - if hasattr(socket_interface, "min_value"): - max_val = socket_interface.max_value - self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) + if socket_interface.type == 'RGBA': + dv = vec4_to_py_str(socket_interface.default_value) + elif socket_interface.type == 'VECTOR': + dv = vec3_to_py_str(socket_interface.default_value) + else: + dv = socket_interface.default_value + self._write(f"{inner}{socket_var}.default_value = {dv}\n") + + #min value + if hasattr(socket_interface, "min_value"): + min_val = socket_interface.min_value + self._write(f"{inner}{socket_var}.min_value = {min_val}\n") + #max value + if hasattr(socket_interface, "min_value"): + max_val = socket_interface.max_value + self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) def _group_io_settings(self, node: bpy.types.Node, inner: str, io: str, #TODO: convert to enum @@ -322,7 +326,8 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" - self._set_group_socket_default(socket_interface, inner, socket_var) + if bpy.app.version < (4, 0, 0): + self._set_group_socket_default_v3(socket_interface, inner, socket_var) #default attribute name if hasattr(socket_interface, "default_attribute_name"): From 23a863e2cf452435577a03bfe94f97a6cee33644 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 9 Dec 2023 15:51:37 -0600 Subject: [PATCH 142/286] fix: compositing nodes now run, no group settings --- compositor/operator.py | 6 +- geometry/operator.py | 6 +- material/operator.py | 6 +- ntp_operator.py | 258 ++++++++++++++++++++++------------------- 4 files changed, 149 insertions(+), 127 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index b521e77..c5829c3 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -103,11 +103,13 @@ def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str, level: int f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - self._group_io_settings(node, inner, "input", ntp_nt) + if bpy.app.version < (4, 0, 0): + self._group_io_settings_v3(node, inner, "input", ntp_nt) inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - self._group_io_settings(node, inner, "output", ntp_nt) + if bpy.app.version < (4, 0, 0): + self._group_io_settings_v3(node, inner, "output", ntp_nt) outputs_set = True self._set_socket_defaults(node, node_var, inner) diff --git a/geometry/operator.py b/geometry/operator.py index 79f9cf1..21c7c9b 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -55,11 +55,13 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", ntp_node_tree) + if bpy.app.version < (4, 0, 0): + self._group_io_settings_v3(node, inner, "input", ntp_node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", ntp_node_tree) + if bpy.app.version < (4, 0, 0): + self._group_io_settings_v3(node, inner, "output", ntp_node_tree) ntp_node_tree.outputs_set = True elif node.bl_idname == 'GeometryNodeSimulationInput': diff --git a/material/operator.py b/material/operator.py index cc84f24..48147de 100644 --- a/material/operator.py +++ b/material/operator.py @@ -52,11 +52,13 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, lev if node.bl_idname == 'ShaderNodeGroup': self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", ntp_node_tree) + if bpy.app.version < (4, 0, 0): + self._group_io_settings_v3(node, inner, "input", ntp_node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", ntp_node_tree) + if bpy.app.version < (4, 0, 0): + self._group_io_settings_v3(node, inner, "output", ntp_node_tree) ntp_node_tree.outputs_set = True self._hide_hidden_sockets(node, inner, node_var) diff --git a/ntp_operator.py b/ntp_operator.py index a0651e9..b5c308f 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -11,18 +11,19 @@ from .ntp_node_tree import NTP_NodeTree from .utils import * + class NTP_Operator(Operator): """ "Abstract" base class for all NTP operators. Blender types and abstraction don't seem to mix well, but this should only be inherited from """ - + bl_idname = "" bl_label = "" - mode : bpy.props.EnumProperty( - name = "Mode", - items = [ + mode: bpy.props.EnumProperty( + name="Mode", + items=[ ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), ('ADDON', "Addon", "Create a full addon") ] @@ -32,7 +33,7 @@ def __init__(self): super().__init__() # File (TextIO) or string (StringIO) the add-on/script is generated into - self._file : TextIO = None + self._file: TextIO = None # Path to the current directory self._dir: str = None @@ -65,13 +66,13 @@ def _setup_addon_directories(self, context: Context, nt_var: str) -> None: """ Finds/creates directories to save add-on to """ - #find base directory to save new addon + # find base directory to save new addon self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) if not self._dir or self._dir == "": - self.report({'ERROR'}, + self.report({'ERROR'}, ("NodeToPython: Save your blend file before using " - "NodeToPython!")) #TODO: Still valid?? - return {'CANCELLED'} #TODO + "NodeToPython!")) # TODO: Still valid?? + return {'CANCELLED'} # TODO self._zip_dir = os.path.join(self._dir, nt_var) self._addon_dir = os.path.join(self._zip_dir, nt_var) @@ -93,7 +94,7 @@ def _create_header(self, name: str) -> None: self._write("\t\"author\" : \"Node To Python\",\n") self._write("\t\"version\" : (1, 0, 0),\n") self._write(f"\t\"blender\" : {bpy.app.version},\n") - self._write("\t\"location\" : \"Object\",\n") #TODO + self._write("\t\"location\" : \"Object\",\n") # TODO self._write("\t\"category\" : \"Node\"\n") self._write("}\n") self._write("\n") @@ -125,7 +126,7 @@ def _is_outermost_node_group(self, level: int) -> bool: return True return False - def _process_group_node_tree(self, node: Node, node_var: str, level: int, + def _process_group_node_tree(self, node: Node, node_var: str, level: int, inner: str) -> None: """ Processes node tree of group node if one is present @@ -179,26 +180,27 @@ def _create_node(self, node: Node, inner: str, node_tree_var: str) -> str: self._write((f"{inner}{node_var} " f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) - #label + # label if node.label: self._write(f"{inner}{node_var}.label = \"{node.label}\"\n") - - #name + + # name self._write(f"{inner}{node_var}.name = \"{node.name}\"\n") - #color + # color if node.use_custom_color: self._write(f"{inner}{node_var}.use_custom_color = True\n") - self._write(f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") + self._write( + f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") - #mute + # mute if node.mute: self._write(f"{inner}{node_var}.mute = True\n") - + return node_var def _set_settings_defaults(self, node: Node, inner: str, node_var: str - ) -> None: + ) -> None: """ Sets the defaults for any settings a node may have @@ -255,13 +257,15 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str if self._addon_dir is not None and attr is not None: if attr.source in {'FILE', 'GENERATED', 'TILED'}: self._save_image(attr) - self._load_image(attr, inner, f"{node_var}.{attr_name}") + self._load_image( + attr, inner, f"{node_var}.{attr_name}") elif type == ST.IMAGE_USER: - self._image_user_settings(attr, inner, f"{node_var}.{attr_name}") - + self._image_user_settings( + attr, inner, f"{node_var}.{attr_name}") + if bpy.app.version < (4, 0, 0): - def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, - inner: str, socket_var: str) -> None: + def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, + inner: str, socket_var: str) -> None: """ Set a node group input/output's default properties if they exist @@ -282,17 +286,17 @@ def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, dv = socket_interface.default_value self._write(f"{inner}{socket_var}.default_value = {dv}\n") - #min value + # min value if hasattr(socket_interface, "min_value"): min_val = socket_interface.min_value self._write(f"{inner}{socket_var}.min_value = {min_val}\n") - #max value + # max value if hasattr(socket_interface, "min_value"): max_val = socket_interface.max_value self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) - def _group_io_settings(self, node: bpy.types.Node, inner: str, - io: str, #TODO: convert to enum + def _group_io_settings(self, node: bpy.types.Node, inner: str, + io: str, # TODO: convert to enum ntp_node_tree: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets @@ -322,43 +326,48 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, self._write(f"{inner}#{io} {inout.name}\n") idname = enum_to_py_str(inout.bl_idname) name = str_to_py_str(inout.name) - self._write(f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") + self._write( + f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" if bpy.app.version < (4, 0, 0): - self._set_group_socket_default_v3(socket_interface, inner, socket_var) - - #default attribute name + self._set_group_socket_default_v3( + socket_interface, inner, socket_var) + + # default attribute name if hasattr(socket_interface, "default_attribute_name"): if socket_interface.default_attribute_name != "": - dan = str_to_py_str(socket_interface.default_attribute_name) + dan = str_to_py_str( + socket_interface.default_attribute_name) self._write((f"{inner}{socket_var}" f".default_attribute_name = {dan}\n")) - #attribute domain + # attribute domain if hasattr(socket_interface, "attribute_domain"): ad = enum_to_py_str(socket_interface.attribute_domain) self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") - #tooltip + # tooltip if socket_interface.description != "": description = str_to_py_str(socket_interface.description) - self._write((f"{inner}{socket_var}.description = {description}\n")) + self._write( + (f"{inner}{socket_var}.description = {description}\n")) - #hide_value + # hide_value if socket_interface.hide_value is True: self._write(f"{inner}{socket_var}.hide_value = True\n") - #hide in modifier + # hide in modifier if hasattr(socket_interface, "hide_in_modifier"): if socket_interface.hide_in_modifier is True: - self._write(f"{inner}{socket_var}.hide_in_modifier = True\n") + self._write( + f"{inner}{socket_var}.hide_in_modifier = True\n") self._write("\n") self._write("\n") - def _set_input_defaults(self, node: bpy.types.Node, inner: str, + def _set_input_defaults(self, node: bpy.types.Node, inner: str, node_var: str) -> None: """ Sets defaults for input sockets @@ -375,45 +384,47 @@ def _set_input_defaults(self, node: bpy.types.Node, inner: str, for i, input in enumerate(node.inputs): if input.bl_idname not in dont_set_defaults and not input.is_linked: - #TODO: this could be cleaner + # TODO: this could be cleaner socket_var = f"{node_var}.inputs[{i}]" - #colors + # colors if input.bl_idname == 'NodeSocketColor': default_val = vec4_to_py_str(input.default_value) - #vector types + # vector types elif "Vector" in input.bl_idname: default_val = vec3_to_py_str(input.default_value) - #strings + # strings elif input.bl_idname == 'NodeSocketString': default_val = str_to_py_str(input.default_value) - #images + # images elif input.bl_idname == 'NodeSocketImage': img = input.default_value - if img is not None and self._addon_dir != None: #write in a better way + if img is not None and self._addon_dir != None: # write in a better way self._save_image(img) - self._load_image(img, inner, f"{socket_var}.default_value") + self._load_image( + img, inner, f"{socket_var}.default_value") default_val = None - #materials + # materials elif input.bl_idname == 'NodeSocketMaterial': self._in_file_inputs(input, inner, socket_var, "materials") default_val = None - #collections + # collections elif input.bl_idname == 'NodeSocketCollection': - self._in_file_inputs(input, inner, socket_var, "collections") + self._in_file_inputs( + input, inner, socket_var, "collections") default_val = None - #objects + # objects elif input.bl_idname == 'NodeSocketObject': self._in_file_inputs(input, inner, socket_var, "objects") default_val = None - - #textures + + # textures elif input.bl_idname == 'NodeSocketTexture': self._in_file_inputs(input, inner, socket_var, "textures") default_val = None @@ -436,11 +447,11 @@ def _set_output_defaults(self, node: bpy.types.Node, inner (str): indentation string node_var (str): variable name for the node we're setting output defaults for """ - #TODO: probably should define elsewhere - output_default_nodes = {'ShaderNodeValue', - 'ShaderNodeRGB', + # TODO: probably should define elsewhere + output_default_nodes = {'ShaderNodeValue', + 'ShaderNodeRGB', 'ShaderNodeNormal', - 'CompositorNodeValue', + 'CompositorNodeValue', 'CompositorNodeRGB', 'CompositorNodeNormal'} @@ -454,11 +465,11 @@ def _set_output_defaults(self, node: bpy.types.Node, dv = vec3_to_py_str(dv) self._write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) - def _in_file_inputs(self, input: bpy.types.NodeSocket, - inner: str, - socket_var: str, - type: str - ) -> None: + def _in_file_inputs(self, input: bpy.types.NodeSocket, + inner: str, + socket_var: str, + type: str + ) -> None: """ Sets inputs for a node input if one already exists in the blend file @@ -476,8 +487,8 @@ def _in_file_inputs(self, input: bpy.types.NodeSocket, self._write((f"{inner}\t{socket_var}.default_value = " f"bpy.data.{type}[{name}]\n")) - def _color_ramp_settings(self, node: bpy.types.Node, - inner: str, + def _color_ramp_settings(self, node: bpy.types.Node, + inner: str, node_var: str, color_ramp_name: str) -> None: """ @@ -492,9 +503,10 @@ def _color_ramp_settings(self, node: bpy.types.Node, color_ramp: bpy.types.ColorRamp = getattr(node, color_ramp_name) if not color_ramp: - raise ValueError(f"No color ramp named \"{color_ramp_name}\" found") + raise ValueError( + f"No color ramp named \"{color_ramp_name}\" found") - #settings + # settings ramp_str = f"{inner}{node_var}.{color_ramp_name}" color_mode = enum_to_py_str(color_ramp.color_mode) @@ -508,7 +520,7 @@ def _color_ramp_settings(self, node: bpy.types.Node, f"= {interpolation}\n")) self._write("\n") - #key points + # key points self._write(f"{inner}#initialize color ramp elements\n") self._write((f"{ramp_str}.elements.remove" f"({ramp_str}.elements[0])\n")) @@ -517,7 +529,8 @@ def _color_ramp_settings(self, node: bpy.types.Node, if i == 0: self._write(f"{inner}{element_var} = " f"{ramp_str}.elements[{i}]\n") - self._write(f"{inner}{element_var}.position = {element.position}\n") + self._write( + f"{inner}{element_var}.position = {element.position}\n") else: self._write((f"{inner}{element_var} = " f"{ramp_str}.elements" @@ -527,10 +540,10 @@ def _color_ramp_settings(self, node: bpy.types.Node, f"{element.alpha}\n")) color_str = vec4_to_py_str(element.color) self._write((f"{inner}{element_var}.color = {color_str}\n\n")) - - def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, + + def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, node_var: str, curve_mapping_name: str - ) -> None: + ) -> None: """ Sets defaults for Float, Vector, and Color curves @@ -545,27 +558,27 @@ def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, mapping = getattr(node, curve_mapping_name) if not mapping: raise ValueError((f"Curve mapping \"{curve_mapping_name}\" not found " - f"in node \"{node.bl_idname}\"")) + f"in node \"{node.bl_idname}\"")) - #mapping settings + # mapping settings self._write(f"{inner}#mapping settings\n") mapping_var = f"{inner}{node_var}.{curve_mapping_name}" - #extend + # extend extend = enum_to_py_str(mapping.extend) self._write(f"{mapping_var}.extend = {extend}\n") - #tone + # tone tone = enum_to_py_str(mapping.tone) self._write(f"{mapping_var}.tone = {tone}\n") - #black level + # black level b_lvl_str = vec3_to_py_str(mapping.black_level) self._write((f"{mapping_var}.black_level = {b_lvl_str}\n")) - #white level + # white level w_lvl_str = vec3_to_py_str(mapping.white_level) self._write((f"{mapping_var}.white_level = {w_lvl_str}\n")) - #minima and maxima + # minima and maxima min_x = mapping.clip_min_x self._write(f"{mapping_var}.clip_min_x = {min_x}\n") min_y = mapping.clip_min_y @@ -575,13 +588,13 @@ def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, max_y = mapping.clip_max_y self._write(f"{mapping_var}.clip_max_y = {max_y}\n") - #use_clip + # use_clip use_clip = mapping.use_clip self._write(f"{mapping_var}.use_clip = {use_clip}\n") - #create curves + # create curves for i, curve in enumerate(mapping.curves): - #TODO: curve function + # TODO: curve function self._write(f"{inner}#curve {i}\n") curve_i = f"{node_var}_curve_{i}" self._write((f"{inner}{curve_i} = " @@ -592,10 +605,11 @@ def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, if (node.bl_idname == 'CompositorNodeHueCorrect'): self._write((f"{inner}for i in range" f"(len({curve_i}.points.values()) - 1, 1, -1):\n")) - self._write(f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") - + self._write( + f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") + for j, point in enumerate(curve.points): - #TODO: point function + # TODO: point function point_j = f"{inner}{curve_i}_point_{j}" loc = point.location @@ -604,12 +618,13 @@ def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, self._write(f"{point_j} = {curve_i}.points[{j}]\n") self._write(f"{point_j}.location = ({loc_str})\n") else: - self._write((f"{point_j} = {curve_i}.points.new({loc_str})\n")) + self._write( + (f"{point_j} = {curve_i}.points.new({loc_str})\n")) handle = enum_to_py_str(point.handle_type) self._write(f"{point_j}.handle_type = {handle}\n") - - #update curve + + # update curve self._write(f"{inner}#update curve after changes\n") self._write(f"{mapping_var}.update()\n") @@ -624,19 +639,19 @@ def _save_image(self, img: bpy.types.Image) -> None: if img is None: return - #create image dir if one doesn't exist + # create image dir if one doesn't exist img_dir = os.path.join(self._addon_dir, IMAGE_DIR_NAME) if not os.path.exists(img_dir): os.mkdir(img_dir) - #save the image + # save the image img_str = img_to_py_str(img) img_path = f"{img_dir}/{img_str}" if not os.path.exists(img_path): img.save_render(img_path) def _load_image(self, img: bpy.types.Image, - inner: str, + inner: str, img_var: str ) -> None: """ @@ -650,10 +665,10 @@ def _load_image(self, img: bpy.types.Image, if img is None: return - + img_str = img_to_py_str(img) - #TODO: convert to special variables + # TODO: convert to special variables self._write(f"{inner}#load image {img_str}\n") self._write((f"{inner}base_dir = " f"os.path.dirname(os.path.abspath(__file__))\n")) @@ -663,24 +678,25 @@ def _load_image(self, img: bpy.types.Image, self._write((f"{inner}{img_var} = bpy.data.images.load" f"(image_path, check_existing = True)\n")) - #copy image settings + # copy image settings self._write(f"{inner}#set image settings\n") - #source + # source source = enum_to_py_str(img.source) self._write(f"{inner}{img_var}.source = {source}\n") - #color space settings + # color space settings color_space = enum_to_py_str(img.colorspace_settings.name) - self._write(f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") - - #alpha mode + self._write( + f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") + + # alpha mode alpha_mode = enum_to_py_str(img.alpha_mode) self._write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") def _image_user_settings(self, img_user: bpy.types.ImageUser, - inner: str, - img_user_var: str) -> None: + inner: str, + img_user_var: str) -> None: """ Replicate the image user of an image node @@ -691,14 +707,14 @@ def _image_user_settings(self, img_user: bpy.types.ImageUser, """ img_usr_attrs = ["frame_current", "frame_duration", "frame_offset", - "frame_start", "tile", "use_auto_refresh", "use_cyclic"] - + "frame_start", "tile", "use_auto_refresh", "use_cyclic"] + for img_usr_attr in img_usr_attrs: self._write((f"{inner}{img_user_var}.{img_usr_attr} = " f"{getattr(img_user, img_usr_attr)}\n")) def _set_parents(self, node_tree: bpy.types.NodeTree, - inner: str) -> None: + inner: str) -> None: """ Sets parents for all nodes, mostly used to put nodes in frames @@ -733,8 +749,8 @@ def _set_locations(self, node_tree: bpy.types.NodeTree, inner: str) -> None: f"= ({node.location.x}, {node.location.y})\n")) self._write("\n") - def _set_dimensions(self, node_tree: bpy.types.NodeTree, inner: str, - ) -> None: + def _set_dimensions(self, node_tree: bpy.types.NodeTree, inner: str, + ) -> None: """ Set dimensions for all nodes @@ -749,8 +765,8 @@ def _set_dimensions(self, node_tree: bpy.types.NodeTree, inner: str, f"= {node.width}, {node.height}\n")) self._write("\n") - def _init_links(self, node_tree: bpy.types.NodeTree, - inner: str, + def _init_links(self, node_tree: bpy.types.NodeTree, + inner: str, node_tree_var: str) -> None: """ Create all the links between nodes @@ -762,39 +778,39 @@ def _init_links(self, node_tree: bpy.types.NodeTree, """ if node_tree.links: - self._write(f"{inner}#initialize {node_tree_var} links\n") + self._write(f"{inner}#initialize {node_tree_var} links\n") for link in node_tree.links: in_node_var = self._node_vars[link.from_node] input_socket = link.from_socket - + """ Blender's socket dictionary doesn't guarantee unique keys, which has caused much wailing and gnashing of teeth. This is a quick fix that doesn't run quick """ - #TODO: try using index() method + # TODO: try using index() method for i, item in enumerate(link.from_node.outputs.items()): if item[1] == input_socket: input_idx = i break - + out_node_var = self._node_vars[link.to_node] output_socket = link.to_socket - + for i, item in enumerate(link.to_node.inputs.items()): if item[1] == output_socket: output_idx = i break - + self._write((f"{inner}#{in_node_var}.{input_socket.name} " f"-> {out_node_var}.{output_socket.name}\n")) self._write((f"{inner}{node_tree_var}.links.new({in_node_var}" f".outputs[{input_idx}], " f"{out_node_var}.inputs[{output_idx}])\n")) - def _hide_hidden_sockets(self, node: bpy.types.Node, inner: str, - node_var: str) -> None: + def _hide_hidden_sockets(self, node: bpy.types.Node, inner: str, + node_var: str) -> None: """ Hide hidden sockets @@ -808,7 +824,7 @@ def _hide_hidden_sockets(self, node: bpy.types.Node, inner: str, self._write(f"{inner}{node_var}.inputs[{i}].hide = True\n") for i, socket in enumerate(node.outputs): if socket.hide is True: - self._write(f"{inner}{node_var}.outputs[{i}].hide = True\n") + self._write(f"{inner}{node_var}.outputs[{i}].hide = True\n") def _set_socket_defaults(self, node: Node, node_var: str, inner: str): self._set_input_defaults(node, inner, node_var) @@ -847,7 +863,7 @@ def _create_main_func(self) -> None: """ self._write("if __name__ == \"__main__\":\n") self._write("\tregister()") - + def _zip_addon(self) -> None: """ Zips up the addon and removes the directory @@ -856,13 +872,13 @@ def _zip_addon(self) -> None: shutil.rmtree(self._zip_dir) # ABSTRACT - def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, + def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, level: int) -> None: return # ABSTRACT def _process_node_tree(self, node_tree: NodeTree, level: int) -> None: - return + return def _report_finished(self, object: str): """ @@ -876,9 +892,9 @@ def _report_finished(self, object: str): location = "clipboard" else: location = self._dir - self.report({'INFO'}, + self.report({'INFO'}, f"NodeToPython: Saved {object} to {location}") - + # ABSTRACT def execute(self): return {'FINISHED'} From 344e4c5df216cec0d854614c0ae60b5d9f8b00a0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 9 Dec 2023 16:00:14 -0600 Subject: [PATCH 143/286] feat: support for rotation sockets --- ntp_operator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index b5c308f..9762d02 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -395,6 +395,10 @@ def _set_input_defaults(self, node: bpy.types.Node, inner: str, elif "Vector" in input.bl_idname: default_val = vec3_to_py_str(input.default_value) + #rotation types + elif input.bl_idname == 'NodeSocketRotation': + default_val = vec3_to_py_str(input.default_value) + # strings elif input.bl_idname == 'NodeSocketString': default_val = str_to_py_str(input.default_value) From 89d9d48f38f7116e27c985f4eda2003de4d778c6 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Wed, 3 Jan 2024 00:26:28 -0600 Subject: [PATCH 144/286] feat: 4.0 node tree changes --- compositor/operator.py | 6 +- geometry/operator.py | 6 +- material/operator.py | 6 +- ntp_operator.py | 287 +++++++++++++++++++++++++++++++++-------- utils.py | 3 - 5 files changed, 236 insertions(+), 72 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index c5829c3..b521e77 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -103,13 +103,11 @@ def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str, level: int f"bpy.data.node_groups" f"[\"{node.node_tree.name}\"]\n")) elif node.bl_idname == 'NodeGroupInput' and not inputs_set: - if bpy.app.version < (4, 0, 0): - self._group_io_settings_v3(node, inner, "input", ntp_nt) + self._group_io_settings(node, inner, "input", ntp_nt) inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: - if bpy.app.version < (4, 0, 0): - self._group_io_settings_v3(node, inner, "output", ntp_nt) + self._group_io_settings(node, inner, "output", ntp_nt) outputs_set = True self._set_socket_defaults(node, node_var, inner) diff --git a/geometry/operator.py b/geometry/operator.py index 21c7c9b..79f9cf1 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -55,13 +55,11 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - if bpy.app.version < (4, 0, 0): - self._group_io_settings_v3(node, inner, "input", ntp_node_tree) + self._group_io_settings(node, inner, "input", ntp_node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - if bpy.app.version < (4, 0, 0): - self._group_io_settings_v3(node, inner, "output", ntp_node_tree) + self._group_io_settings(node, inner, "output", ntp_node_tree) ntp_node_tree.outputs_set = True elif node.bl_idname == 'GeometryNodeSimulationInput': diff --git a/material/operator.py b/material/operator.py index 48147de..cc84f24 100644 --- a/material/operator.py +++ b/material/operator.py @@ -52,13 +52,11 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, lev if node.bl_idname == 'ShaderNodeGroup': self._process_group_node_tree(node, node_var, level, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - if bpy.app.version < (4, 0, 0): - self._group_io_settings_v3(node, inner, "input", ntp_node_tree) + self._group_io_settings(node, inner, "input", ntp_node_tree) ntp_node_tree.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - if bpy.app.version < (4, 0, 0): - self._group_io_settings_v3(node, inner, "output", ntp_node_tree) + self._group_io_settings(node, inner, "output", ntp_node_tree) ntp_node_tree.outputs_set = True self._hide_hidden_sockets(node, inner, node_var) diff --git a/ntp_operator.py b/ntp_operator.py index 9762d02..e7da207 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -29,6 +29,20 @@ class NTP_Operator(Operator): ] ) + #node tree input sockets that have default properties + if bpy.app.version < (4, 0, 0): + default_sockets_v3 = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} + else: + nondefault_sockets_v4 = { + bpy.types.NodeTreeInterfaceSocketCollection, + bpy.types.NodeTreeInterfaceSocketGeometry, + bpy.types.NodeTreeInterfaceSocketImage, + bpy.types.NodeTreeInterfaceSocketMaterial, + bpy.types.NodeTreeInterfaceSocketObject, + bpy.types.NodeTreeInterfaceSocketShader, + bpy.types.NodeTreeInterfaceSocketTexture + } + def __init__(self): super().__init__() @@ -275,7 +289,7 @@ def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, inner (str): indentation string socket_var (str): variable name for the socket """ - if socket_interface.type not in default_sockets: + if socket_interface.type not in self.default_sockets_v3: return if socket_interface.type == 'RGBA': @@ -295,77 +309,236 @@ def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, max_val = socket_interface.max_value self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) - def _group_io_settings(self, node: bpy.types.Node, inner: str, - io: str, # TODO: convert to enum - ntp_node_tree: NTP_NodeTree) -> None: - """ - Set the settings for group input and output sockets + def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, + io: str, # TODO: convert to enum + ntp_node_tree: NTP_NodeTree) -> None: + """ + Set the settings for group input and output sockets - Parameters: - node (bpy.types.Node) : group input/output node - inner (str): indentation string - io (str): whether we're generating the input or output settings - node_tree_var (str): variable name of the generated node tree - node_tree (bpy.types.NodeTree): node tree that we're generating input - and output settings for - """ - node_tree_var = ntp_node_tree.var - node_tree = ntp_node_tree.node_tree + Parameters: + node (bpy.types.Node) : group input/output node + inner (str): indentation string + io (str): whether we're generating the input or output settings + node_tree_var (str): variable name of the generated node tree + node_tree (bpy.types.NodeTree): node tree that we're generating + input and output settings for + """ + node_tree_var = ntp_node_tree.var + node_tree = ntp_node_tree.node_tree - if io == "input": - io_sockets = node.outputs - io_socket_interfaces = node_tree.inputs - else: - io_sockets = node.inputs - io_socket_interfaces = node_tree.outputs + if io == "input": + io_sockets = node.outputs + io_socket_interfaces = node_tree.inputs + else: + io_sockets = node.inputs + io_socket_interfaces = node_tree.outputs + + self._write(f"{inner}#{node_tree_var} {io}s\n") + for i, inout in enumerate(io_sockets): + if inout.bl_idname == 'NodeSocketVirtual': + continue + self._write(f"{inner}#{io} {inout.name}\n") + idname = enum_to_py_str(inout.bl_idname) + name = str_to_py_str(inout.name) + self._write( + f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") + socket_interface = io_socket_interfaces[i] + socket_var = f"{node_tree_var}.{io}s[{i}]" + + self._set_group_socket_default_v3(socket_interface, inner, + socket_var) + + # default attribute name + if hasattr(socket_interface, "default_attribute_name"): + if socket_interface.default_attribute_name != "": + dan = str_to_py_str( + socket_interface.default_attribute_name) + self._write((f"{inner}{socket_var}" + f".default_attribute_name = {dan}\n")) + + # attribute domain + if hasattr(socket_interface, "attribute_domain"): + ad = enum_to_py_str(socket_interface.attribute_domain) + self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + + # tooltip + if socket_interface.description != "": + description = str_to_py_str(socket_interface.description) + self._write( + (f"{inner}{socket_var}.description = {description}\n")) - self._write(f"{inner}#{node_tree_var} {io}s\n") - for i, inout in enumerate(io_sockets): - if inout.bl_idname == 'NodeSocketVirtual': - continue - self._write(f"{inner}#{io} {inout.name}\n") - idname = enum_to_py_str(inout.bl_idname) - name = str_to_py_str(inout.name) - self._write( - f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") - socket_interface = io_socket_interfaces[i] - socket_var = f"{node_tree_var}.{io}s[{i}]" + # hide_value + if socket_interface.hide_value is True: + self._write(f"{inner}{socket_var}.hide_value = True\n") + + # hide in modifier + if hasattr(socket_interface, "hide_in_modifier"): + if socket_interface.hide_in_modifier is True: + self._write( + f"{inner}{socket_var}.hide_in_modifier = True\n") + + self._write("\n") + self._write("\n") + + elif bpy.app.version >= (4, 0, 0): + def _set_group_socket_default_v4(self, socket_interface: bpy.types.NodeTreeInterfaceSocket, + inner: str, socket_var: str) -> None: + """ + Set a node group input/output's default properties if they exist + + Parameters: + socket_interface (NodeTreeInterfaceSocket): socket interface associated + with the input/output + inner (str): indentation string + socket_var (str): variable name for the socket + """ + if type(socket_interface) in self.nondefault_sockets_v4: + return - if bpy.app.version < (4, 0, 0): - self._set_group_socket_default_v3( - socket_interface, inner, socket_var) + dv = socket_interface.default_value - # default attribute name - if hasattr(socket_interface, "default_attribute_name"): + if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: + dv = vec4_to_py_str(dv) + elif type(dv) in {mathutils.Vector, mathutils.Euler}: + dv = vec3_to_py_str(dv) + elif type(dv) == str: + dv = str_to_py_str(dv) + self._write(f"{inner}{socket_var}.default_value = {dv}\n") + + # min value + if hasattr(socket_interface, "min_value"): + min_val = socket_interface.min_value + self._write(f"{inner}{socket_var}.min_value = {min_val}\n") + # max value + if hasattr(socket_interface, "min_value"): + max_val = socket_interface.max_value + self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) + + def _group_io_settings_v4(self, node: bpy.types.Node, inner: str, + io: str, # TODO: convert to enum + ntp_node_tree: NTP_NodeTree) -> None: + """ + Set the settings for group input and output sockets + + Parameters: + node (bpy.types.Node) : group input/output node + inner (str): indentation string + io (str): whether we're generating the input or output settings + node_tree_var (str): variable name of the generated node tree + node_tree (bpy.types.NodeTree): node tree that we're generating + input and output settings for + """ + node_tree_var = ntp_node_tree.var + node_tree = ntp_node_tree.node_tree + + if io == "input": + io_sockets = node.outputs # Might be removeable, + # think we can get all the info from the inouts + # from the socket interfaces, need to double check. + # If so, then we can just run these at the initialization + # of the node tree, meaning we can clean up the clunky + # Group Input/Group Output node reliance, two calls + # Should be pretty easy to add in panels afterwards, + # looks like those are tied fairly close to the new socket + # system + items_tree = node_tree.interface.items_tree + io_socket_interfaces = [item for item in items_tree + if item.item_type == 'SOCKET' + and item.in_out == 'INPUT'] + else: + io_sockets = node.inputs + items_tree = node_tree.interface.items_tree + io_socket_interfaces = [item for item in items_tree + if item.item_type == 'SOCKET' + and item.in_out == 'OUTPUT'] + + self._write(f"{inner}#{node_tree_var} {io}s\n") + for i, socket_interface in enumerate(io_socket_interfaces): + self._write(f"{inner}#{io} {socket_interface.name}\n") + + socket_interface: bpy.types.NodeTreeInterfaceSocket = io_socket_interfaces[i] + + #initialization + socket_var = clean_string(socket_interface.name) + "_socket" + name = str_to_py_str(socket_interface.name) + in_out_enum = enum_to_py_str(socket_interface.in_out) + + socket_type = enum_to_py_str(socket_interface.bl_socket_idname) + """ + I might be missing something, but the Python API's set up a bit + weird here now. The new socket initialization only accepts types + from a list of basic ones, but there doesn't seem to be a way of + retrieving just this basic typewithout the subtype information. + """ + if 'Float' in socket_type: + socket_type = enum_to_py_str('NodeSocketFloat') + elif 'Int' in socket_type: + socket_type = enum_to_py_str('NodeSocketInt') + elif 'Vector' in socket_type: + socket_type = enum_to_py_str('NodeSocketVector') + + + self._write(f"{inner}{socket_var} = " + f"{node_tree_var}.interface.new_socket(" + f"name = {name}, in_out={in_out_enum}, " + f"socket_type = {socket_type})\n") + + #subtype + if hasattr(socket_interface, "subtype"): + subtype = enum_to_py_str(socket_interface.subtype) + self._write(f"{inner}{socket_var}.subtype = {subtype}\n") + + self._set_group_socket_default_v4(socket_interface, inner, + socket_var) + + # default attribute name if socket_interface.default_attribute_name != "": - dan = str_to_py_str( - socket_interface.default_attribute_name) - self._write((f"{inner}{socket_var}" - f".default_attribute_name = {dan}\n")) + dan = str_to_py_str(socket_interface.default_attribute_name) + self._write((f"{inner}{socket_var}.default_attribute_name = {dan}\n")) - # attribute domain - if hasattr(socket_interface, "attribute_domain"): + # attribute domain ad = enum_to_py_str(socket_interface.attribute_domain) self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") - # tooltip - if socket_interface.description != "": - description = str_to_py_str(socket_interface.description) - self._write( - (f"{inner}{socket_var}.description = {description}\n")) + # tooltip + if socket_interface.description != "": + description = str_to_py_str(socket_interface.description) + self._write( + (f"{inner}{socket_var}.description = {description}\n")) - # hide_value - if socket_interface.hide_value is True: - self._write(f"{inner}{socket_var}.hide_value = True\n") + # hide_value + if socket_interface.hide_value is True: + self._write(f"{inner}{socket_var}.hide_value = True\n") - # hide in modifier - if hasattr(socket_interface, "hide_in_modifier"): + # hide in modifier if socket_interface.hide_in_modifier is True: - self._write( - f"{inner}{socket_var}.hide_in_modifier = True\n") + self._write(f"{inner}{socket_var}.hide_in_modifier = True\n") + + #force non field + if socket_interface.force_non_field is True: + self._write(f"{inner}{socket_var}.force_non_field = True\n") + self._write("\n") self._write("\n") - self._write("\n") + + def _group_io_settings(self, node: bpy.types.Node, inner: str, + io: str, # TODO: convert to enum + ntp_node_tree: NTP_NodeTree) -> None: + """ + Set the settings for group input and output sockets + + Parameters: + node (bpy.types.Node) : group input/output node + inner (str): indentation string + io (str): whether we're generating the input or output settings + node_tree_var (str): variable name of the generated node tree + node_tree (bpy.types.NodeTree): node tree that we're generating + input and output settings for + """ + if bpy.app.version < (4, 0, 0): + self._group_io_settings_v3(node, inner, io, ntp_node_tree) + else: + self._group_io_settings_v4(node, inner, io, ntp_node_tree) def _set_input_defaults(self, node: bpy.types.Node, inner: str, node_var: str) -> None: diff --git a/utils.py b/utils.py index bec9a44..68e6798 100644 --- a/utils.py +++ b/utils.py @@ -55,9 +55,6 @@ class ST(Enum): FILE_SLOTS = auto() LAYER_SLOTS = auto() #unimplemented -#node tree input sockets that have default properties -default_sockets = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} - def clean_string(string: str, lower: bool = True) -> str: """ Cleans up a string for use as a variable or file name From 38553b58abe3d73f60204951820b6ab0a01dbdc6 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 15:08:14 -0600 Subject: [PATCH 145/286] feat: geo node modifier and tool setting --- geometry/operator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/geometry/operator.py b/geometry/operator.py index 79f9cf1..90f45a9 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -118,6 +118,10 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, f"name = {str_to_py_str(node_tree.name)})\n")) self._write("\n") + if bpy.app.version >= (4, 0, 0): + self._write(f"{inner}{nt_var}.is_modifier = {node_tree.is_modifier}\n") + self._write(f"{inner}{nt_var}.is_tool = {node_tree.is_tool}\n") + #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") From 2a9c54533c4c87f1ba4da84f55b35e75051dad19 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 15:09:16 -0600 Subject: [PATCH 146/286] fix: generic node types no longer warned about when trying to apply settings --- compositor/node_settings.py | 11 +++++++++-- geometry/node_settings.py | 9 ++++++++- material/node_settings.py | 10 +++++++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/compositor/node_settings.py b/compositor/node_settings.py index ff8a377..781eee6 100644 --- a/compositor/node_settings.py +++ b/compositor/node_settings.py @@ -414,7 +414,7 @@ ("offset_y", ST.FLOAT), ("space", ST.ENUM)], - 'CompositorNodeStablize' : [("clip", ST.MOVIE_CLIP), + 'CompositorNodeStabilize' : [("clip", ST.MOVIE_CLIP), ("filter_type", ST.ENUM), ("invert", ST.BOOL)], @@ -425,5 +425,12 @@ # LAYOUT - 'CompositorNodeSwitch' : [("check", ST.BOOL)] + 'CompositorNodeSwitch' : [("check", ST.BOOL)], + + + # MISC + 'NodeFrame' : [], + 'NodeGroupInput' : [], + 'NodeGroupOutput' : [], + 'NodeReroute' : [] } diff --git a/geometry/node_settings.py b/geometry/node_settings.py index 1900660..50d645e 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -494,5 +494,12 @@ ("pivot_axis", ST.ENUM)], 'FunctionNodeRotateEuler' : [("space", ST.ENUM), - ("type", ST.ENUM)] + ("type", ST.ENUM)], + + # MISC + 'NodeFrame' : [], + 'NodeGroupInput' : [], + 'NodeGroupOutput' : [], + 'NodeReroute' : [] + } \ No newline at end of file diff --git a/material/node_settings.py b/material/node_settings.py index 30b3b08..c6b339e 100644 --- a/material/node_settings.py +++ b/material/node_settings.py @@ -215,6 +215,8 @@ 'ShaderNodeMapping' : [("vector_type", ST.ENUM)], + 'ShaderNodeNormal' : [], + 'ShaderNodeNormalMap' : [("space", ST.ENUM), ("uv_map", ST.STRING)], #TODO @@ -269,5 +271,11 @@ ("filepath", ST.STRING), ("mode", ST.ENUM), ("script", ST.TEXT), - ("use_auto_update", ST.BOOL)] + ("use_auto_update", ST.BOOL)], + + # MISC + 'NodeFrame' : [], + 'NodeGroupInput' : [], + 'NodeGroupOutput' : [], + 'NodeReroute' : [] } From 55f41901f7308701bd02f863c3e68a385637a21b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 15:58:11 -0600 Subject: [PATCH 147/286] feat: new geo node tree flags --- geometry/node_settings.py | 95 ++++++++++++--------------------------- geometry/operator.py | 14 ++++-- 2 files changed, 39 insertions(+), 70 deletions(-) diff --git a/geometry/node_settings.py b/geometry/node_settings.py index 50d645e..7596821 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -43,16 +43,16 @@ 'NodeGroupInput' : [], # Input > Scene + 'GeometryNodeTool3DCursor' : [], + 'GeometryNodeCollectionInfo' : [("transform_space", ST.ENUM)], 'GeometryNodeImageInfo' : [], - 'GeometryNodeIsViewport' : [], 'GeometryNodeObjectInfo' : [("transform_space", ST.ENUM)], 'GeometryNodeSelfObject' : [], - 'GeometryNodeInputSceneTime' : [], @@ -64,21 +64,18 @@ # GEOMETRY 'GeometryNodeJoinGeometry' : [], - 'GeometryNodeGeometryToInstance' : [], # Geometry > Read 'GeometryNodeInputID' : [], - 'GeometryNodeInputIndex' : [], 'GeometryNodeInputNamedAttribute' : [("data_type", ST.ENUM)], 'GeometryNodeInputNormal' : [], - 'GeometryNodeInputPosition' : [], - 'GeometryNodeInputRadius' : [], + 'GeometryNodeToolSelection' : [], # Geometry > Sample 'GeometryNodeProximity' : [("target_element", ST.ENUM)], @@ -95,13 +92,12 @@ 'GeometryNodeSampleNearest' : [("domain", ST.ENUM)], # Geometry > Write - 'GeometryNodeSetID' : [], - - 'GeometryNodeSetPosition' : [], + 'GeometryNodeSetID' : [], + 'GeometryNodeSetPosition' : [], + 'GeometryNodeToolSetSelection' : [], # Geometry > Operations 'GeometryNodeBoundBox' : [], - 'GeometryNodeConvexHull' : [], 'GeometryNodeDeleteGeometry' : [("domain", ST.ENUM), @@ -112,7 +108,6 @@ 'GeometryNodeMergeByDistance' : [("mode", ST.ENUM)], 'GeometryNodeTransform' : [], - 'GeometryNodeSeparateComponents' : [], 'GeometryNodeSeparateGeometry' : [("domain", ST.ENUM)], @@ -121,24 +116,17 @@ # CURVE # Curve > Read 'GeometryNodeInputCurveHandlePositions' : [], - 'GeometryNodeCurveLength' : [], - 'GeometryNodeInputTangent' : [], - 'GeometryNodeInputCurveTilt' : [], - 'GeometryNodeCurveEndpointSelection' : [], 'GeometryNodeCurveHandleTypeSelection' : [("handle_type", ST.ENUM), ("mode", ST.ENUM_SET)], 'GeometryNodeInputSplineCyclic' : [], - 'GeometryNodeSplineLength' : [], - 'GeometryNodeSplineParameter' : [], - 'GeometryNodeInputSplineResolution' : [], # Curve > Sample @@ -150,7 +138,6 @@ 'GeometryNodeSetCurveNormal' : [("mode", ST.ENUM)], 'GeometryNodeSetCurveRadius' : [], - 'GeometryNodeSetCurveTilt' : [], 'GeometryNodeSetCurveHandlePositions' : [("mode", ST.ENUM)], @@ -159,7 +146,6 @@ ("mode", ST.ENUM_SET)], 'GeometryNodeSetSplineCyclic' : [], - 'GeometryNodeSetSplineResolution' : [], 'GeometryNodeCurveSplineType' : [("spline_type", ST.ENUM)], @@ -180,7 +166,6 @@ 'GeometryNodeResampleCurve' : [("mode", ST.ENUM)], 'GeometryNodeReverseCurve' : [], - 'GeometryNodeSubdivideCurve' : [], 'GeometryNodeTrimCurve' : [("mode", ST.ENUM)], @@ -195,7 +180,6 @@ 'GeometryNodeCurvePrimitiveLine' : [("mode", ST.ENUM)], 'GeometryNodeCurveSpiral' : [], - 'GeometryNodeCurveQuadraticBezier' : [], 'GeometryNodeCurvePrimitiveQuadrilateral' : [("mode", ST.ENUM)], @@ -204,54 +188,38 @@ # Curve > Topology 'GeometryNodeOffsetPointInCurve' : [], - 'GeometryNodeCurveOfPoint' : [], - 'GeometryNodePointsOfCurve' : [], # INSTANCES 'GeometryNodeInstanceOnPoints' : [], - 'GeometryNodeInstancesToPoints' : [], 'GeometryNodeRealizeInstances' : [("legacy_behavior", ST.BOOL)], 'GeometryNodeRotateInstances' : [], - 'GeometryNodeScaleInstances' : [], - 'GeometryNodeTranslateInstances' : [], - 'GeometryNodeInputInstanceRotation' : [], - 'GeometryNodeInputInstanceScale' : [], # MESH # Mesh > Read 'GeometryNodeInputMeshEdgeAngle' : [], - 'GeometryNodeInputMeshEdgeNeighbors' : [], - 'GeometryNodeInputMeshEdgeVertices' : [], - 'GeometryNodeEdgesToFaceGroups' : [], - 'GeometryNodeInputMeshFaceArea' : [], - 'GeometryNodeInputMeshFaceNeighbors' : [], - + 'GeometryNodeToolFaceSet' : [], 'GeometryNodeMeshFaceSetBoundaries' : [], - 'GeometryNodeInputMeshFaceIsPlanar' : [], - 'GeometryNodeInputShadeSmooth' : [], - + 'GeometryNodeInputEdgeSmooth' : [], 'GeometryNodeInputMeshIsland' : [], - 'GeometryNodeInputShortestEdgePaths' : [], - 'GeometryNodeInputMeshVertexNeighbors' : [], # Mesh > Sample @@ -260,13 +228,12 @@ 'GeometryNodeSampleUVSurface' : [("data_type", ST.ENUM)], # Mesh > Write + 'GeometryNodeToolSetFaceSet' : [], 'GeometryNodeSetShadeSmooth' : [], # Mesh > Operations 'GeometryNodeDualMesh' : [], - 'GeometryNodeEdgePathsToCurves' : [], - 'GeometryNodeEdgePathsToSelection' : [], 'GeometryNodeExtrudeMesh' : [("mode", ST.ENUM)], @@ -285,7 +252,6 @@ ("scale_mode", ST.ENUM)], 'GeometryNodeSplitEdges' : [], - 'GeometryNodeSubdivideMesh' : [], 'GeometryNodeSubdivisionSurface' : [("boundary_smooth", ST.ENUM), @@ -302,7 +268,6 @@ 'GeometryNodeMeshCylinder' : [("fill_type", ST.ENUM)], 'GeometryNodeMeshGrid' : [], - 'GeometryNodeMeshIcoSphere' : [], 'GeometryNodeMeshCircle' : [("fill_type", ST.ENUM)], @@ -314,17 +279,11 @@ # Mesh > Topology 'GeometryNodeCornersOfFace' : [], - 'GeometryNodeCornersOfVertex' : [], - 'GeometryNodeEdgesOfCorner' : [], - 'GeometryNodeEdgesOfVertex' : [], - 'GeometryNodeFaceOfCorner' : [], - 'GeometryNodeOffsetCornerInFace' : [], - 'GeometryNodeVertexOfCorner' : [], # Mesh > UV @@ -340,7 +299,7 @@ ("use_legacy_normal", ST.BOOL)], 'GeometryNodePoints' : [], - + 'GeometryNodePointsToCurves' : [], 'GeometryNodePointsToVertices' : [], 'GeometryNodePointsToVolume' : [("resolution_mode", ST.ENUM)], @@ -350,25 +309,19 @@ # VOLUME 'GeometryNodeVolumeCube' : [], - 'GeometryNodeVolumeToMesh' : [("resolution_mode", ST.ENUM)], # SIMULATION 'GeometryNodeSimulationInput' : [], - 'GeometryNodeSimulationOutput' : [], # MATERIAL 'GeometryNodeReplaceMaterial' : [], - 'GeometryNodeInputMaterialIndex' : [], - 'GeometryNodeMaterialSelection' : [], - 'GeometryNodeSetMaterial' : [], - 'GeometryNodeSetMaterialIndex' : [], @@ -413,7 +366,10 @@ 'FunctionNodeRandomValue' : [("data_type", ST.ENUM)], - 'GeometryNodeSwitch' : [("input_type", ST.ENUM)], + 'GeometryNodeRepeatInput' : [], + 'GeometryNodeRepeatOutput' : [], + + 'GeometryNodeSwitch' : [("input_type", ST.ENUM)], # Utilities > Color 'ShaderNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], @@ -430,11 +386,8 @@ # Utilities > Text 'GeometryNodeStringJoin' : [], - 'FunctionNodeReplaceString' : [], - 'FunctionNodeSliceString' : [], - 'FunctionNodeStringLength' : [], 'GeometryNodeStringToCurves' : [("align_x", ST.ENUM), @@ -444,7 +397,6 @@ ("pivot_mode", ST.ENUM)], 'FunctionNodeValueToString' : [], - 'FunctionNodeInputSpecialCharacters' : [], # Utilities > Vector @@ -456,7 +408,6 @@ ("rotation_type", ST.ENUM)], 'ShaderNodeCombineXYZ' : [], - 'ShaderNodeSeparateXYZ' : [], # Utilities > Field @@ -490,11 +441,21 @@ ("use_clamp", ST.BOOL)], # Utilities > Rotation - 'FunctionNodeAlignEulerToVector' : [("axis", ST.ENUM), - ("pivot_axis", ST.ENUM)], + 'FunctionNodeAlignEulerToVector' : [("axis", ST.ENUM), + ("pivot_axis", ST.ENUM)], + + 'FunctionNodeAxisAngleToRotation' : [], + 'FunctionNodeEulerToRotation' : [], + 'FunctionNodeInvertRotation' : [], - 'FunctionNodeRotateEuler' : [("space", ST.ENUM), - ("type", ST.ENUM)], + 'FunctionNodeRotateEuler' : [("space", ST.ENUM), + ("type", ST.ENUM)], + + 'FunctionNodeRotateVector' : [], + 'FunctionNodeRotationToAxisAngle' : [], + 'FunctionNodeRotationToEuler' : [], + 'FunctionNodeRotationToQuaternion' : [], + 'FunctionNodeQuaternionToRotation' : [], # MISC 'NodeFrame' : [], diff --git a/geometry/operator.py b/geometry/operator.py index 90f45a9..a9f0db3 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -119,9 +119,17 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, self._write("\n") if bpy.app.version >= (4, 0, 0): - self._write(f"{inner}{nt_var}.is_modifier = {node_tree.is_modifier}\n") - self._write(f"{inner}{nt_var}.is_tool = {node_tree.is_tool}\n") - + geo_node_tree_flags = ["is_mode_edit", + "is_mode_sculpt", + "is_modifier", + "is_tool", + "is_type_curve", + "is_type_mesh", + "is_type_point_cloud"] + for flag in geo_node_tree_flags: + self._write(f"{inner}{nt_var}.{flag} = {getattr(node_tree, flag)}\n") + self._write("\n") + #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") From e6ad11cc5a0df9af1a813966d0910ac4291d3550 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 16:10:04 -0600 Subject: [PATCH 148/286] feat: more robust variable name creation --- utils.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/utils.py b/utils.py index 68e6798..7a3af7d 100644 --- a/utils.py +++ b/utils.py @@ -2,10 +2,9 @@ import mathutils from enum import Enum, auto -import os +import keyword import re -import shutil -from typing import TextIO, Tuple +from typing import Tuple IMAGE_DIR_NAME = "imgs" @@ -63,13 +62,19 @@ def clean_string(string: str, lower: bool = True) -> str: string (str): The input string Returns: - clean_str: The input string with nasty characters converted to underscores + string (str): The input string ready to be used as a variable """ if lower: string = string.lower() - clean_str = re.sub(r"[^a-zA-Z0-9_]", '_', string) - return clean_str + string = re.sub(r"[^a-zA-Z0-9_]", '_', string) + + if keyword.iskeyword(string): + string = "_" + string + elif not (string[0].isalpha() or string[0] == '_'): + string = "_" + string + + return string def enum_to_py_str(enum: str) -> str: """ From ae630f6518558bce6657357c6721c50ee1400607 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 16:19:01 -0600 Subject: [PATCH 149/286] feat: only write geo node tool settings if tool --- geometry/operator.py | 25 ++++++++++++++++--------- utils.py | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/geometry/operator.py b/geometry/operator.py index a9f0db3..716214b 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -119,15 +119,22 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, self._write("\n") if bpy.app.version >= (4, 0, 0): - geo_node_tree_flags = ["is_mode_edit", - "is_mode_sculpt", - "is_modifier", - "is_tool", - "is_type_curve", - "is_type_mesh", - "is_type_point_cloud"] - for flag in geo_node_tree_flags: - self._write(f"{inner}{nt_var}.{flag} = {getattr(node_tree, flag)}\n") + is_mod = node_tree.is_modifier + is_tool = node_tree.is_tool + if is_mod: + self._write(f"{inner}{nt_var}.is_modifier = True\n") + if is_tool: + self._write(f"{inner}{nt_var}.is_tool = True\n") + + tool_flags = ["is_mode_edit", + "is_mode_sculpt", + "is_type_curve", + "is_type_mesh", + "is_type_point_cloud"] + + for flag in tool_flags: + self._write(f"{inner}{nt_var}.{flag} = " + f"{getattr(node_tree, flag)}\n") self._write("\n") #initialize nodes diff --git a/utils.py b/utils.py index 7a3af7d..1fbdf16 100644 --- a/utils.py +++ b/utils.py @@ -62,7 +62,7 @@ def clean_string(string: str, lower: bool = True) -> str: string (str): The input string Returns: - string (str): The input string ready to be used as a variable + string (str): The input string ready to be used as a variable/file """ if lower: From a75050ddaa0a9fc6ab55a1eee1d33854e197f500 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 16:39:57 -0600 Subject: [PATCH 150/286] feat: new shader node settings --- material/node_settings.py | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/material/node_settings.py b/material/node_settings.py index c6b339e..2aa1f34 100644 --- a/material/node_settings.py +++ b/material/node_settings.py @@ -16,21 +16,13 @@ 'ShaderNodeVertexColor' : [("layer_name", ST.STRING)], #TODO: separate color attribute type? 'ShaderNodeHairInfo' : [], - 'ShaderNodeFresnel' : [], - 'ShaderNodeNewGeometry' : [], - 'ShaderNodeLayerWeight' : [], - 'ShaderNodeLightPath' : [], - 'ShaderNodeObjectInfo' : [], - 'ShaderNodeParticleInfo' : [], - 'ShaderNodePointInfo' : [], - 'ShaderNodeRGB' : [], 'ShaderNodeTangent' : [("axis", ST.ENUM), @@ -46,7 +38,6 @@ ("uv_map", ST.STRING)], #TODO: see ShaderNodeTangent 'ShaderNodeValue' : [], - 'ShaderNodeVolumeInfo' : [], 'ShaderNodeWireframe' : [("use_pixel_size", ST.BOOL)], @@ -77,9 +68,7 @@ 'ShaderNodeBsdfAnisotropic' : [("distribution", ST.ENUM)], 'ShaderNodeBackground' : [], - 'ShaderNodeBsdfDiffuse' : [], - 'ShaderNodeEmission' : [], 'ShaderNodeBsdfGlass' : [("distribution", ST.ENUM)], @@ -89,18 +78,20 @@ 'ShaderNodeBsdfHair' : [("component", ST.ENUM)], 'ShaderNodeHoldout' : [], - 'ShaderNodeMixShader' : [], 'ShaderNodeBsdfPrincipled' : [("distribution", ST.ENUM), ("subsurface_method", ST.ENUM)], - 'ShaderNodeBsdfHairPrincipled' : [("parametrization", ST.ENUM)], + 'ShaderNodeBsdfHairPrincipled' : [("model", ST.ENUM), + ("parametrization", ST.ENUM)], 'ShaderNodeVolumePrincipled' : [], 'ShaderNodeBsdfRefraction' : [("distribution", ST.ENUM)], + 'ShaderNodeBsdfSheen' : [("distribution", ST.ENUM)], + 'ShaderNodeEeveeSpecular' : [], 'ShaderNodeSubsurfaceScattering' : [("falloff", ST.ENUM)], @@ -108,13 +99,9 @@ 'ShaderNodeBsdfToon' : [("component", ST.ENUM)], 'ShaderNodeBsdfTranslucent' : [], - 'ShaderNodeBsdfTransparent' : [], - 'ShaderNodeBsdfVelvet' : [], - 'ShaderNodeVolumeAbsorption' : [], - 'ShaderNodeVolumeScatter' : [], @@ -149,7 +136,8 @@ 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", ST.ENUM), ("musgrave_type", ST.ENUM)], - 'ShaderNodeTexNoise' : [("noise_dimensions", ST.ENUM)], + 'ShaderNodeTexNoise' : [("noise_dimensions", ST.ENUM), + ("normalize", ST.BOOL)], 'ShaderNodeTexPointDensity' : [("interpolation", ST.ENUM), ("object", ST.OBJECT), @@ -178,6 +166,7 @@ 'ShaderNodeTexVoronoi' : [("distance", ST.ENUM), ("feature", ST.ENUM), + ("normalize", ST.BOOL), ("voronoi_dimensions", ST.ENUM)], 'ShaderNodeTexWave' : [("bands_direction", ST.ENUM), From a3975dd794e07041f954dfc001bbb323fd80c2bc Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 17:12:23 -0600 Subject: [PATCH 151/286] feat: added settings for node frames and group outputs --- compositor/node_settings.py | 53 ++++++++++++++++++++++--------------- geometry/node_settings.py | 13 ++++++--- material/node_settings.py | 13 ++++++--- 3 files changed, 49 insertions(+), 30 deletions(-) diff --git a/compositor/node_settings.py b/compositor/node_settings.py index 781eee6..982832a 100644 --- a/compositor/node_settings.py +++ b/compositor/node_settings.py @@ -29,28 +29,25 @@ 'CompositorNodeMovieClip' : [("clip", ST.MOVIE_CLIP)], - 'CompositorNodeRLayers' : [("layer", ST.ENUM), - ("scene", ST.SCENE)], + 'CompositorNodeTexture' : [("node_output", ST.INT), #TODO: ?? + ("texture", ST.TEXTURE)], + + # Input > Constant 'CompositorNodeRGB' : [], + 'CompositorNodeValue' : [], - 'CompositorNodeSceneTime' : [], + # Input > Scene - 'CompositorNodeTexture' : [("node_output", ST.INT), #TODO: ?? - ("texture", ST.TEXTURE)], + 'CompositorNodeRLayers' : [("layer", ST.ENUM), + ("scene", ST.SCENE)], + + 'CompositorNodeSceneTime' : [], 'CompositorNodeTime' : [("curve", ST.CURVE_MAPPING), ("frame_end", ST.INT), ("frame_start", ST.INT)], - 'CompositorNodeTrackPos' : [("clip", ST.MOVIE_CLIP), - ("frame_relative", ST.INT), - ("position", ST.ENUM), - ("track_name", ST.STRING), #TODO: probably not right - ("tracking_object", ST.STRING)], - - 'CompositorNodeValue' : [], - # OUTPUT 'CompositorNodeComposite' : [("use_alpha", ST.BOOL)], @@ -62,16 +59,14 @@ ("format", ST.IMAGE_FORMAT_SETTINGS), ("layer_slots", ST.LAYER_SLOTS)], - 'CompositorNodeLevels' : [("channel", ST.ENUM)], - - 'CompositorNodeSplitViewer' : [("axis", ST.ENUM), - ("factor", ST.INT)], - 'CompositorNodeViewer' : [("center_x", ST.FLOAT), ("center_y", ST.FLOAT), ("tile_order", ST.ENUM), ("use_alpha", ST.BOOL)], + 'CompositorNodeSplitViewer' : [("axis", ST.ENUM), + ("factor", ST.INT)], + # COLOR 'CompositorNodeAlphaOver' : [("premul", ST.FLOAT), @@ -423,14 +418,28 @@ 'CompositorNodeTranslate' : [("use_relative", ST.BOOL), ("wrap_axis", ST.ENUM)], + # TRACKING + 'CompositorNodeTrackPos' : [("clip", ST.MOVIE_CLIP), + ("frame_relative", ST.INT), + ("position", ST.ENUM), + ("track_name", ST.STRING), #TODO: probably not right + ("tracking_object", ST.STRING)], + + # UTILITIES + 'CompositorNodeLevels' : [("channel", ST.ENUM)], # LAYOUT 'CompositorNodeSwitch' : [("check", ST.BOOL)], # MISC - 'NodeFrame' : [], - 'NodeGroupInput' : [], - 'NodeGroupOutput' : [], - 'NodeReroute' : [] + 'NodeFrame' : [("label_size", ST.INT), + ("shrink", ST.BOOL), + ("text", ST.TEXT)], + + 'NodeGroupInput' : [], + + 'NodeGroupOutput' : [("is_active_output", ST.BOOL)], + + 'NodeReroute' : [] } diff --git a/geometry/node_settings.py b/geometry/node_settings.py index 7596821..02352ae 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -458,9 +458,14 @@ 'FunctionNodeQuaternionToRotation' : [], # MISC - 'NodeFrame' : [], - 'NodeGroupInput' : [], - 'NodeGroupOutput' : [], - 'NodeReroute' : [] + 'NodeFrame' : [("label_size", ST.INT), + ("shrink", ST.BOOL), + ("text", ST.TEXT)], + + 'NodeGroupInput' : [], + + 'NodeGroupOutput' : [("is_active_output", ST.BOOL)], + + 'NodeReroute' : [] } \ No newline at end of file diff --git a/material/node_settings.py b/material/node_settings.py index 2aa1f34..0858187 100644 --- a/material/node_settings.py +++ b/material/node_settings.py @@ -263,8 +263,13 @@ ("use_auto_update", ST.BOOL)], # MISC - 'NodeFrame' : [], - 'NodeGroupInput' : [], - 'NodeGroupOutput' : [], - 'NodeReroute' : [] + 'NodeFrame' : [("label_size", ST.INT), + ("shrink", ST.BOOL), + ("text", ST.TEXT)], + + 'NodeGroupInput' : [], + + 'NodeGroupOutput' : [("is_active_output", ST.BOOL)], + + 'NodeReroute' : [] } From 4135354a30c4224b16176d730804bd176d4eb24a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 6 Jan 2024 18:10:08 -0600 Subject: [PATCH 152/286] feat: added kuwahara, reorganized compositor node settings to align with blender v4 add menu --- compositor/node_settings.py | 368 +++++++++++++++++++----------------- 1 file changed, 195 insertions(+), 173 deletions(-) diff --git a/compositor/node_settings.py b/compositor/node_settings.py index 982832a..71fcf18 100644 --- a/compositor/node_settings.py +++ b/compositor/node_settings.py @@ -69,9 +69,23 @@ # COLOR - 'CompositorNodeAlphaOver' : [("premul", ST.FLOAT), - ("use_premultiply", ST.BOOL)], + 'CompositorNodePremulKey' : [("mapping", ST.ENUM)], + + 'CompositorNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], + + 'CompositorNodeConvertColorSpace' : [("from_color_space", ST.ENUM), + ("to_color_space", ST.ENUM)], + + + 'CompositorNodeSetAlpha' : [("mode", ST.ENUM)], + + 'CompositorNodeInvert' : [("invert_alpha", ST.BOOL), + ("invert_rgb", ST.BOOL)], + 'CompositorNodeRGBToBW' : [], + + + # Color > Adjust 'CompositorNodeBrightContrast' : [("use_premultiply", ST.BOOL)], 'CompositorNodeColorBalance' : [("correction_method", ST.ENUM), @@ -115,22 +129,12 @@ ("midtones_end", ST.FLOAT)], 'CompositorNodeExposure' : [], - 'CompositorNodeGamma' : [], 'CompositorNodeHueCorrect' : [("mapping", ST.CURVE_MAPPING)], 'CompositorNodeHueSat' : [], - 'CompositorNodeInvert' : [("invert_alpha", ST.BOOL), - ("invert_rgb", ST.BOOL)], - - 'CompositorNodeMixRGB' : [("blend_type", ST.ENUM), - ("use_alpha", ST.BOOL), - ("use_clamp", ST.BOOL)], #TODO: what is update() method for? - - 'CompositorNodePosterize' : [], - 'CompositorNodeCurveRGB' : [("mapping", ST.CURVE_MAPPING)], 'CompositorNodeTonemap' : [("adaptation", ST.FLOAT), @@ -142,46 +146,73 @@ ("offset", ST.FLOAT), ("tonemap_type", ST.ENUM)], - 'CompositorNodeZcombine' : [("use_alpha", ST.BOOL), - ("use_antialias_z", ST.BOOL)], + + # Color > Mix + 'CompositorNodeAlphaOver' : [("premul", ST.FLOAT), + ("use_premultiply", ST.BOOL)], + 'CompositorNodeCombineColor' : [("mode", ST.ENUM), + ("ycc_mode", ST.ENUM)], - # CONVERTER - 'CompositorNodePremulKey' : [("mapping", ST.ENUM)], + 'CompositorNodeSeparateColor' : [("mode", ST.ENUM), + ("ycc_mode", ST.ENUM)], - 'CompositorNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], + 'CompositorNodeMixRGB' : [("blend_type", ST.ENUM), + ("use_alpha", ST.BOOL), + ("use_clamp", ST.BOOL)], #TODO: what is update() method for? + + 'CompositorNodeZcombine' : [("use_alpha", ST.BOOL), + ("use_antialias_z", ST.BOOL)], - 'CompositorNodeConvertColorSpace' : [("from_color_space", ST.ENUM), - ("to_color_space", ST.ENUM)], - 'CompositorNodeCombineColor' : [("mode", ST.ENUM), - ("ycc_mode", ST.ENUM)], - 'CompositorNodeCombineXYZ' : [], + # FILTER + 'CompositorNodeAntiAliasing' : [("contrast_limit", ST.FLOAT), + ("corner_rounding", ST.FLOAT), + ("threshold", ST.FLOAT)], + + 'CompositorNodeDenoise' : [("prefilter", ST.ENUM), + ("use_hdr", ST.BOOL)], - 'CompositorNodeIDMask' : [("index", ST.INT), - ("use_antialiasing", ST.BOOL)], + 'CompositorNodeDespeckle' : [("threshold", ST.FLOAT), + ("threshold_neighbor", ST.FLOAT)], - 'CompositorNodeMath' : [("operation", ST.ENUM), - ("use_clamp", ST.BOOL)], - 'CompositorNodeRGBToBW' : [], + 'CompositorNodeDilateErode' : [("distance", ST.INT), + ("edge", ST.FLOAT), + ("falloff", ST.ENUM), + ("mode", ST.ENUM)], - 'CompositorNodeSeparateColor' : [("mode", ST.ENUM), - ("ycc_mode", ST.ENUM)], + 'CompositorNodeInpaint' : [("distance", ST.INT)], - 'CompositorNodeSeparateXYZ' : [], - 'CompositorNodeSetAlpha' : [("mode", ST.ENUM)], + 'CompositorNodeFilter' : [("filter_type", ST.ENUM)], - 'CompositorNodeSwitchView' : [], + 'CompositorNodeGlare' : [("angle_offset", ST.FLOAT), + ("color_modulation", ST.FLOAT), + ("fade", ST.FLOAT), + ("glare_type", ST.ENUM), + ("iterations", ST.INT), + ("mix", ST.FLOAT), + ("quality", ST.ENUM), + ("size", ST.INT), + ("streaks", ST.INT), + ("threshold", ST.FLOAT), + ("use_rotate_45", ST.BOOL)], + + 'CompositorNodeKuwahara' : [("eccentricity", ST.FLOAT), + ("sharpness", ST.FLOAT), + ("size", ST.INT), + ("uniformity", ST.INT), + ("variation", ST.ENUM)], + 'CompositorNodePixelate' : [], + 'CompositorNodePosterize' : [], - # FILTER - 'CompositorNodeAntiAliasing' : [("contrast_limit", ST.FLOAT), - ("corner_rounding", ST.FLOAT), - ("threshold", ST.FLOAT)], + 'CompositorNodeSunBeams' : [("ray_length", ST.FLOAT), + ("source", ST.VEC2)], + # Filter > Blur 'CompositorNodeBilateralblur' : [("iterations", ST.INT), ("sigma_color", ST.FLOAT), ("sigma_space", ST.FLOAT)], @@ -214,14 +245,6 @@ ("use_zbuffer", ST.BOOL), ("z_scale", ST.FLOAT)], - 'CompositorNodeDespeckle' : [("threshold", ST.FLOAT), - ("threshold_neighbor", ST.FLOAT)], - - 'CompositorNodeDilateErode' : [("distance", ST.INT), - ("edge", ST.FLOAT), - ("falloff", ST.ENUM), - ("mode", ST.ENUM)], - 'CompositorNodeDBlur' : [("angle", ST.FLOAT), ("center_x", ST.FLOAT), ("center_y", ST.FLOAT), @@ -229,93 +252,73 @@ ("iterations", ST.INT), ("spin", ST.FLOAT), ("zoom", ST.FLOAT)], - - 'CompositorNodeFilter' : [("filter_type", ST.ENUM)], - - 'CompositorNodeGlare' : [("angle_offset", ST.FLOAT), - ("color_modulation", ST.FLOAT), - ("fade", ST.FLOAT), - ("glare_type", ST.ENUM), - ("iterations", ST.INT), - ("mix", ST.FLOAT), - ("quality", ST.ENUM), - ("size", ST.INT), - ("streaks", ST.INT), - ("threshold", ST.FLOAT), - ("use_rotate_45", ST.BOOL)], - - 'CompositorNodeInpaint' : [("distance", ST.INT)], - - 'CompositorNodePixelate' : [], - - 'CompositorNodeSunBeams' : [("ray_length", ST.FLOAT), - ("source", ST.VEC2)], - + 'CompositorNodeVecBlur' : [("factor", ST.FLOAT), ("samples", ST.INT), ("speed_max", ST.INT), ("speed_min", ST.INT), ("use_curved", ST.BOOL)], - - # VECTOR - 'CompositorNodeMapRange' : [("use_clamp", ST.BOOL)], - - 'CompositorNodeMapValue' : [("max", ST.VEC1), - ("min", ST.VEC1), - ("offset", ST.VEC1), - ("size", ST.VEC1), - ("use_max", ST.BOOL), - ("use_min", ST.BOOL)], - - 'CompositorNodeNormal' : [], - - 'CompositorNodeNormalize' : [], - - 'CompositorNodeCurveVec' : [("mapping", ST.CURVE_MAPPING)], - - - # MATTE - 'CompositorNodeBoxMask' : [("height", ST.FLOAT), - ("mask_type", ST.ENUM), - ("rotation", ST.FLOAT), - ("width", ST.FLOAT), - ("x", ST.FLOAT), - ("y", ST.FLOAT)], - - 'CompositorNodeChannelMatte' : [("color_space", ST.ENUM), - ("limit_channel", ST.ENUM), - ("limit_max", ST.FLOAT), - ("limit_method", ST.ENUM), - ("limit_min", ST.FLOAT), - ("matte_channel", ST.ENUM)], - - 'CompositorNodeChromaMatte' : [("gain", ST.FLOAT), - ("lift", ST.FLOAT), + + # KEYING + 'CompositorNodeChannelMatte' : [("color_space", ST.ENUM), + ("limit_channel", ST.ENUM), + ("limit_max", ST.FLOAT), + ("limit_method", ST.ENUM), + ("limit_min", ST.FLOAT), + ("matte_channel", ST.ENUM)], + + 'CompositorNodeChromaMatte' : [("gain", ST.FLOAT), + ("lift", ST.FLOAT), ("shadow_adjust", ST.FLOAT), - ("threshold", ST.FLOAT), - ("tolerance", ST.FLOAT)], - - 'CompositorNodeColorMatte' : [("color_hue", ST.FLOAT), - ("color_saturation", ST.FLOAT), - ("color_value", ST.FLOAT)], - - 'CompositorNodeColorSpill' : [("channel", ST.ENUM), - ("limit_channel", ST.ENUM), - ("limit_method", ST.ENUM), - ("ratio", ST.FLOAT), - ("unspill_blue", ST.FLOAT), - ("unspill_green", ST.FLOAT), - ("unspill_red", ST.FLOAT), - ("use_unspill", ST.BOOL)], - + ("threshold", ST.FLOAT), + ("tolerance", ST.FLOAT)], + + 'CompositorNodeColorMatte' : [("color_hue", ST.FLOAT), + ("color_saturation", ST.FLOAT), + ("color_value", ST.FLOAT)], + + 'CompositorNodeColorSpill' : [("channel", ST.ENUM), + ("limit_channel", ST.ENUM), + ("limit_method", ST.ENUM), + ("ratio", ST.FLOAT), + ("unspill_blue", ST.FLOAT), + ("unspill_green", ST.FLOAT), + ("unspill_red", ST.FLOAT), + ("use_unspill", ST.BOOL)], + + 'CompositorNodeDiffMatte' : [("falloff", ST.FLOAT), + ("tolerance", ST.FLOAT)], + + 'CompositorNodeDistanceMatte' : [("channel", ST.ENUM), + ("falloff", ST.FLOAT), + ("tolerance", ST.FLOAT)], + + 'CompositorNodeKeying' : [("blur_post", ST.INT), + ("blur_pre", ST.INT), + ("clip_black", ST.FLOAT), + ("clip_white", ST.FLOAT), + ("despill_balance", ST.FLOAT), + ("despill_factor", ST.FLOAT), + ("dilate_distance", ST.INT), + ("edge_kernel_radius", ST.INT), + ("edge_kernel_tolerance", ST.FLOAT), + ("feather_distance", ST.INT), + ("feather_falloff", ST.ENUM), + ("screen_balance", ST.FLOAT)], + + 'CompositorNodeKeyingScreen' : [("clip", ST.MOVIE_CLIP), + ("tracing_object", ST.STRING)], + + 'CompositorNodeLumaMatte' : [("limit_max", ST.FLOAT), + ("limit_min", ST.FLOAT)], + + # MASK 'CompositorNodeCryptomatteV2' : [("add", ST.COLOR), ("entries", ST.CRYPTOMATTE_ENTRIES), ("frame_duration", ST.INT), ("frame_offset", ST.INT), ("frame_start", ST.INT), - #("has_layers", ST.BOOL), #TODO: readonly? - #("has_views", ST.BOOL), #TODO: readonly? ("image", ST.IMAGE), ("layer", ST.ENUM), ("layer_name", ST.ENUM), @@ -331,15 +334,13 @@ ("matte_id", ST.STRING), ("remove", ST.COLOR)], - 'CompositorNodeDiffMatte' : [("falloff", ST.FLOAT), - ("tolerance", ST.FLOAT)], - 'CompositorNodeDistanceMatte' : [("channel", ST.ENUM), - ("falloff", ST.FLOAT), - ("tolerance", ST.FLOAT)], - - 'CompositorNodeDoubleEdgeMask' : [("edge_mode", ST.ENUM), - ("inner_mode", ST.ENUM)], + 'CompositorNodeBoxMask' : [("height", ST.FLOAT), + ("mask_type", ST.ENUM), + ("rotation", ST.FLOAT), + ("width", ST.FLOAT), + ("x", ST.FLOAT), + ("y", ST.FLOAT)], 'CompositorNodeEllipseMask' : [("height", ST.FLOAT), ("mask_type", ST.ENUM), @@ -348,27 +349,49 @@ ("x", ST.FLOAT), ("y", ST.FLOAT)], - 'CompositorNodeKeying' : [("blur_post", ST.INT), - ("blur_pre", ST.INT), - ("clip_black", ST.FLOAT), - ("clip_white", ST.FLOAT), - ("despill_balance", ST.FLOAT), - ("despill_factor", ST.FLOAT), - ("dilate_distance", ST.INT), - ("edge_kernel_radius", ST.INT), - ("edge_kernel_tolerance", ST.FLOAT), - ("feather_distance", ST.INT), - ("feather_falloff", ST.ENUM), - ("screen_balance", ST.FLOAT)], - 'CompositorNodeKeyingScreen' : [("clip", ST.MOVIE_CLIP), - ("tracing_object", ST.STRING)], + 'CompositorNodeDoubleEdgeMask' : [("edge_mode", ST.ENUM), + ("inner_mode", ST.ENUM)], + + 'CompositorNodeIDMask' : [("index", ST.INT), + ("use_antialiasing", ST.BOOL)], + + + # TRACKING + 'CompositorNodePlaneTrackDeform' : [("clip", ST.MOVIE_CLIP), + ("motion_blur_samples", ST.INT), + ("motion_blur_shutter", ST.FLOAT), + ("plane_track_name", ST.STRING), + ("tracking_object", ST.STRING), + ("use_motion_blur", ST.BOOL)], + + 'CompositorNodeStabilize' : [("clip", ST.MOVIE_CLIP), + ("filter_type", ST.ENUM), + ("invert", ST.BOOL)], + + 'CompositorNodeTrackPos' : [("clip", ST.MOVIE_CLIP), + ("frame_relative", ST.INT), + ("position", ST.ENUM), + ("track_name", ST.STRING), #TODO: probably not right + ("tracking_object", ST.STRING)], + + - 'CompositorNodeLumaMatte' : [("limit_max", ST.FLOAT), - ("limit_min", ST.FLOAT)], + # TRANSFORM + 'CompositorNodeRotate' : [("filter_type", ST.ENUM)], + + 'CompositorNodeScale' : [("frame_method", ST.ENUM), + ("offset_x", ST.FLOAT), + ("offset_y", ST.FLOAT), + ("space", ST.ENUM)], + + + 'CompositorNodeTransform' : [("filter_type", ST.ENUM)], + + 'CompositorNodeTranslate' : [("use_relative", ST.BOOL), + ("wrap_axis", ST.ENUM)], - # DISTORT 'CompositorNodeCornerPin' : [], 'CompositorNodeCrop' : [("max_x", ST.INT), @@ -382,54 +405,53 @@ ("relative", ST.BOOL), ("use_crop_size", ST.BOOL)], + 'CompositorNodeDisplace' : [], 'CompositorNodeFlip' : [("axis", ST.ENUM)], + 'CompositorNodeMapUV' : [("alpha", ST.INT)], + + 'CompositorNodeLensdist' : [("use_fit", ST.BOOL), ("use_jitter", ST.BOOL), ("use_projector", ST.BOOL)], - 'CompositorNodeMapUV' : [("alpha", ST.INT)], - 'CompositorNodeMovieDistortion' : [("clip", ST.MOVIE_CLIP), ("distortion_type", ST.ENUM)], - 'CompositorNodePlaneTrackDeform' : [("clip", ST.MOVIE_CLIP), - ("motion_blur_samples", ST.INT), - ("motion_blur_shutter", ST.FLOAT), - ("plane_track_name", ST.STRING), - ("tracking_object", ST.STRING), - ("use_motion_blur", ST.BOOL)], - 'CompositorNodeRotate' : [("filter_type", ST.ENUM)], - 'CompositorNodeScale' : [("frame_method", ST.ENUM), - ("offset_x", ST.FLOAT), - ("offset_y", ST.FLOAT), - ("space", ST.ENUM)], + #UTILITIES + 'CompositorNodeMapRange' : [("use_clamp", ST.BOOL)], - 'CompositorNodeStabilize' : [("clip", ST.MOVIE_CLIP), - ("filter_type", ST.ENUM), - ("invert", ST.BOOL)], + 'CompositorNodeMapValue' : [("max", ST.VEC1), + ("min", ST.VEC1), + ("offset", ST.VEC1), + ("size", ST.VEC1), + ("use_max", ST.BOOL), + ("use_min", ST.BOOL)], - 'CompositorNodeTransform' : [("filter_type", ST.ENUM)], + 'CompositorNodeMath' : [("operation", ST.ENUM), + ("use_clamp", ST.BOOL)], + + + 'CompositorNodeLevels' : [("channel", ST.ENUM)], + + 'CompositorNodeNormalize' : [], - 'CompositorNodeTranslate' : [("use_relative", ST.BOOL), - ("wrap_axis", ST.ENUM)], - # TRACKING - 'CompositorNodeTrackPos' : [("clip", ST.MOVIE_CLIP), - ("frame_relative", ST.INT), - ("position", ST.ENUM), - ("track_name", ST.STRING), #TODO: probably not right - ("tracking_object", ST.STRING)], + 'CompositorNodeSwitch' : [("check", ST.BOOL)], + + 'CompositorNodeSwitchView' : [], - # UTILITIES - 'CompositorNodeLevels' : [("channel", ST.ENUM)], - # LAYOUT - 'CompositorNodeSwitch' : [("check", ST.BOOL)], + # VECTOR + 'CompositorNodeCombineXYZ' : [], + 'CompositorNodeSeparateXYZ' : [], + 'CompositorNodeNormal' : [], + + 'CompositorNodeCurveVec' : [("mapping", ST.CURVE_MAPPING)], # MISC From 3287f2c45d2a681fbffa228db915d72b26320fbb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 7 Jan 2024 13:33:59 -0600 Subject: [PATCH 153/286] feat: repeat zones --- compositor/node_settings.py | 2 +- geometry/node_settings.py | 2 +- geometry/node_tree.py | 14 ++++- geometry/operator.py | 115 ++++++++++++++++++++++-------------- ntp_operator.py | 3 +- 5 files changed, 87 insertions(+), 49 deletions(-) diff --git a/compositor/node_settings.py b/compositor/node_settings.py index 71fcf18..f2780a5 100644 --- a/compositor/node_settings.py +++ b/compositor/node_settings.py @@ -422,7 +422,7 @@ - #UTILITIES + # UTILITIES 'CompositorNodeMapRange' : [("use_clamp", ST.BOOL)], 'CompositorNodeMapValue' : [("max", ST.VEC1), diff --git a/geometry/node_settings.py b/geometry/node_settings.py index 02352ae..8714fea 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -367,7 +367,7 @@ 'FunctionNodeRandomValue' : [("data_type", ST.ENUM)], 'GeometryNodeRepeatInput' : [], - 'GeometryNodeRepeatOutput' : [], + 'GeometryNodeRepeatOutput' : [("inspection_index", ST.INT)], 'GeometryNodeSwitch' : [("input_type", ST.ENUM)], diff --git a/geometry/node_tree.py b/geometry/node_tree.py index 64be218..73b3565 100644 --- a/geometry/node_tree.py +++ b/geometry/node_tree.py @@ -1,8 +1,18 @@ -from bpy.types import GeometryNodeTree, GeometryNodeSimulationInput +import bpy +from bpy.types import GeometryNodeTree + +if bpy.app.version >= (3, 6, 0): + from bpy.types import GeometryNodeSimulationInput + +if bpy.app.version > (4, 0, 0): + from bpy.types import GeometryNodeRepeatInput from ..ntp_node_tree import NTP_NodeTree class NTP_GeoNodeTree(NTP_NodeTree): def __init__(self, node_tree: GeometryNodeTree, var: str): super().__init__(node_tree, var) - self.sim_inputs: list[GeometryNodeSimulationInput] = [] + if bpy.app.version >= (3, 6, 0): + self.sim_inputs: list[GeometryNodeSimulationInput] = [] + if bpy.app.version >= (4, 0, 0): + self.repeat_inputs: list[GeometryNodeRepeatInput] = [] diff --git a/geometry/operator.py b/geometry/operator.py index 716214b..6adbc56 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -1,9 +1,14 @@ import bpy -from bpy.types import GeometryNodeSimulationInput -from bpy.types import GeometryNodeSimulationOutput -from bpy.types import GeometryNodeTree +from bpy.types import GeometryNode, GeometryNodeTree from bpy.types import Node +if bpy.app.version >= (3, 6, 0): + from bpy.types import GeometryNodeSimulationInput + from bpy.types import GeometryNodeSimulationOutput +if bpy.app.version >= (4, 0, 0): + from bpy.types import GeometryNodeRepeatInput + from bpy.types import GeometryNodeRepeatOutput + from io import StringIO from ..ntp_operator import NTP_Operator @@ -30,21 +35,34 @@ def __init__(self): super().__init__() self._settings = geo_node_settings - def _process_sim_output_node(self, node: GeometryNodeSimulationOutput, - inner: str, node_var: str) -> None: - self._write(f"{inner}# Remove generated sim state items\n") - self._write(f"{inner}for item in {node_var}.state_items:\n") - self._write(f"{inner}\t{node_var}.state_items.remove(item)\n") - - for i, si in enumerate(node.state_items): - socket_type = enum_to_py_str(si.socket_type) - name = str_to_py_str(si.name) - self._write(f"{inner}#create SSI {name}\n") - self._write((f"{inner}{node_var}.state_items.new" - f"({socket_type}, {name})\n")) - si_var = f"{node_var}.state_items[{i}]" - attr_domain = enum_to_py_str(si.attribute_domain) - self._write((f"{inner}{si_var}.attribute_domain = {attr_domain}\n")) + if bpy.app.version >= (3, 6, 0): + def _process_zone_output_node(self, node: GeometryNode, inner: str, + node_var: str) -> None: + is_sim = False + if node.bl_idname == 'GeometryNodeSimulationOutput': + items = "state_items" + is_sim = True + elif node.bl_idname == 'GeometryNodeRepeatOutput': + items = "repeat_items" + else: + self.report({'WARNING'}, f"{node.bl_idname} is not recognized " + f" as avalid zone output") + + self._write(f"{inner}# Remove generated {items}\n") + self._write(f"{inner}for item in {node_var}.{items}:\n") + self._write(f"{inner}\t{node_var}.{items}.remove(item)\n") + + for i, item in enumerate(getattr(node, items)): + socket_type = enum_to_py_str(item.socket_type) + name = str_to_py_str(item.name) + self._write(f"{inner}# Create item {name}\n") + self._write(f"{inner}{node_var}.{items}.new" + f"({socket_type}, {name})\n") + if is_sim: + item_var = f"{node_var}.{items}[{i}]" + attr_domain = enum_to_py_str(item.attribute_domain) + self._write((f"{inner}{item_var}.attribute_domain = " + f"{attr_domain}\n")) def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, inner: str, level: int) -> None: @@ -66,34 +84,42 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, ntp_node_tree.sim_inputs.append(node) elif node.bl_idname == 'GeometryNodeSimulationOutput': - self._process_sim_output_node(node, inner, node_var) + self._process_zone_output_node(node, inner, node_var) + + elif node.bl_idname == 'GeometryNodeRepeatInput': + ntp_node_tree.repeat_inputs.append(node) + + elif node.bl_idname == 'GeometryNodeRepeatOutput': + self._process_zone_output_node(node, inner, node_var) self._hide_hidden_sockets(node, inner, node_var) - if node.bl_idname != 'GeometryNodeSimulationInput': + if node.bl_idname not in {'GeometryNodeSimulationInput', 'GeometryNodeRepeatInput'}: self._set_socket_defaults(node, node_var, inner) - - def _process_sim_zones(self, sim_inputs: list[GeometryNodeSimulationInput], - inner: str) -> None: - """ - Recreate simulation zones - sim_inputs (list[GeometryNodeSimulationInput]): list of - simulation input nodes - inner (str): identation string - """ - for sim_input in sim_inputs: - sim_output = sim_input.paired_output - - sim_input_var = self._node_vars[sim_input] - sim_output_var = self._node_vars[sim_output] - self._write((f"{inner}{sim_input_var}.pair_with_output" - f"({sim_output_var})\n")) - - #must set defaults after paired with output - self._set_socket_defaults(sim_input, sim_input_var, inner) - self._set_socket_defaults(sim_output, sim_output_var, inner) - + if bpy.app.version >= (3, 6, 0): + def _process_zones(self, zone_inputs: list[GeometryNode], + inner: str) -> None: + """ + Recreates a zone + zone_inputs (list[GeometryNodeSimulationInput]): list of + simulation input nodes + inner (str): identation string + """ + for zone_input in zone_inputs: + zone_output = zone_input.paired_output + + zone_input_var = self._node_vars[zone_input] + zone_output_var = self._node_vars[zone_output] + + self._write(f"{inner}#Process zone input {zone_input.name}\n") + self._write((f"{inner}{zone_input_var}.pair_with_output" + f"({zone_output_var})\n")) + + #must set defaults after paired with output + self._set_socket_defaults(zone_input, zone_input_var, inner) + self._set_socket_defaults(zone_output, zone_output_var, inner) + self._write("\n") def _process_node_tree(self, node_tree: GeometryNodeTree, level: int) -> None: @@ -145,8 +171,11 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, for node in node_tree.nodes: self._process_node(node, ntp_nt, inner, level) - self._process_sim_zones(ntp_nt.sim_inputs, inner) - + if bpy.app.version >= (3, 6, 0): + self._process_zones(ntp_nt.sim_inputs, inner) + if bpy.app.version >= (4, 0, 0): + self._process_zones(ntp_nt.repeat_inputs, inner) + #set look of nodes self._set_parents(node_tree, inner) self._set_locations(node_tree, inner) diff --git a/ntp_operator.py b/ntp_operator.py index e7da207..1d1a50f 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1069,8 +1069,7 @@ def _report_finished(self, object: str): location = "clipboard" else: location = self._dir - self.report({'INFO'}, - f"NodeToPython: Saved {object} to {location}") + self.report({'INFO'}, f"NodeToPython: Saved {object} to {location}") # ABSTRACT def execute(self): From 5dece56195f22ba5ba0757cecec1b77c306222d6 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 7 Jan 2024 13:41:57 -0600 Subject: [PATCH 154/286] feat: replace print statements with Blender reporting --- geometry/operator.py | 4 ++-- ntp_operator.py | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/geometry/operator.py b/geometry/operator.py index 6adbc56..c0eccb0 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -45,8 +45,8 @@ def _process_zone_output_node(self, node: GeometryNode, inner: str, elif node.bl_idname == 'GeometryNodeRepeatOutput': items = "repeat_items" else: - self.report({'WARNING'}, f"{node.bl_idname} is not recognized " - f" as avalid zone output") + self.report({'WARNING'}, f"NodeToPython: {node.bl_idname} is " + f"not recognized as a valid zone output") self._write(f"{inner}# Remove generated {items}\n") self._write(f"{inner}for item in {node_var}.{items}:\n") diff --git a/ntp_operator.py b/ntp_operator.py index 1d1a50f..d73127f 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -224,15 +224,22 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str node_var (str): name of the variable we're using for the node in our add-on """ if node.bl_idname not in self._settings: - print((f"NodeToPython: couldn't find {node.bl_idname} in settings." - f"Your Blender version may not be supported")) + self.report({'WARNING'}, + (f"NodeToPython: couldn't find {node.bl_idname} in " + f"settings. Your Blender version may not be supported")) return for (attr_name, type) in self._settings[node.bl_idname]: + if not hasattr(node, attr_name): + self.report({'WARNING'}, + f"NodeToPython: Couldn't find attribute " + f"\"{attr_name}\" for node {node.name} of type " + f"{node.bl_idname}") + continue attr = getattr(node, attr_name, None) if attr is None: - print(f"\"{node_var}.{attr_name}\" not found") continue + setting_str = f"{inner}{node_var}.{attr_name}" if type == ST.ENUM: if attr != '': From 2528ec2f1e19db5f058becf744564773d5a3efcf Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 7 Jan 2024 13:51:28 -0600 Subject: [PATCH 155/286] feat: add domain attribute to set shade smooth geo node --- geometry/node_settings.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/geometry/node_settings.py b/geometry/node_settings.py index 8714fea..a1e5011 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -229,7 +229,8 @@ # Mesh > Write 'GeometryNodeToolSetFaceSet' : [], - 'GeometryNodeSetShadeSmooth' : [], + + 'GeometryNodeSetShadeSmooth' : [("domain", ST.ENUM)], # Mesh > Operations 'GeometryNodeDualMesh' : [], From 8b5e4fe331e5082537c682c66877ab41c88771e1 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 13 Jan 2024 21:50:13 -0600 Subject: [PATCH 156/286] fix: added array_to_py_str function --- ntp_operator.py | 3 +++ utils.py | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index d73127f..a25a7ea 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1,6 +1,7 @@ import bpy from bpy.types import Context, Operator from bpy.types import Node, NodeTree +from bpy_types import bpy_types if bpy.app.version < (4, 0, 0): from bpy.types import NodeSocketInterface @@ -408,6 +409,8 @@ def _set_group_socket_default_v4(self, socket_interface: bpy.types.NodeTreeInter dv = vec4_to_py_str(dv) elif type(dv) in {mathutils.Vector, mathutils.Euler}: dv = vec3_to_py_str(dv) + elif type(dv) == bpy_types.bpy_prop_array: + dv = array_to_py_str(dv) elif type(dv) == str: dv = str_to_py_str(dv) self._write(f"{inner}{socket_var}.default_value = {dv}\n") diff --git a/utils.py b/utils.py index 1fbdf16..5f587ce 100644 --- a/utils.py +++ b/utils.py @@ -1,4 +1,5 @@ import bpy +from bpy_types import bpy_types import mathutils from enum import Enum, auto @@ -148,6 +149,24 @@ def vec4_to_py_str(vec4) -> str: """ return f"({vec4[0]}, {vec4[1]}, {vec4[2]}, {vec4[3]})" +def array_to_py_str(array: bpy_types.bpy_prop_array) -> str: + """ + Converts a bpy_prop_array into a string + + Parameters: + array (bpy_prop_array): Blender Python array + + Returns: + (str): string version + """ + string = "(" + for i in range(0, array.__len__()): + if i > 0: + string += ", " + string += f"{array[i]}" + string += ")" + return string + def color_to_py_str(color: mathutils.Color) -> str: """ Converts a mathutils.Color into a string From 86f6c0f3488cdcade930f643759438667914bf1a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 13 Jan 2024 23:08:43 -0600 Subject: [PATCH 157/286] fix: group logic better accounts for dependencies --- compositor/operator.py | 69 ++++++++++---------- geometry/operator.py | 15 +++-- material/operator.py | 65 ++++++++++++------- ntp_operator.py | 139 +++++++++++++++++++++++++++-------------- 4 files changed, 178 insertions(+), 110 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index b521e77..7631244 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -52,31 +52,25 @@ def _create_scene(self, indent: str): self._write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") self._write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") - def _initialize_compositor_node_tree(self, outer, nt_var, level, inner, nt_name): - #initialize node group - self._write(f"{outer}#initialize {nt_var} node group\n") - self._write(f"{outer}def {nt_var}_node_group():\n") - - if self._is_outermost_node_group(level): #outermost node group - self._write(f"{inner}{nt_var} = {SCENE_VAR}.node_tree\n") + def _initialize_compositor_node_tree(self, outer, ntp_nt, nt_name): + #initialize node group + self._write(f"{outer}#initialize {nt_name} node group\n") + self._write(f"{outer}def {ntp_nt.var}_node_group():\n") + + inner = f"{outer}\t" + if ntp_nt.node_tree == self._base_node_tree: + self._write(f"{inner}{ntp_nt.var} = {SCENE_VAR}.node_tree\n") self._write(f"{inner}#start with a clean node tree\n") - self._write(f"{inner}for node in {nt_var}.nodes:\n") - self._write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + self._write(f"{inner}for node in {ntp_nt.var}.nodes:\n") + self._write(f"{inner}\t{ntp_nt.var}.nodes.remove(node)\n") else: - self._write((f"{inner}{nt_var}" + self._write((f"{inner}{ntp_nt.var}" f"= bpy.data.node_groups.new(" f"type = \'CompositorNodeTree\', " f"name = {str_to_py_str(nt_name)})\n")) self._write("\n") - def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str, level: int): - if node.bl_idname == 'CompositorNodeGroup': - node_nt = node.node_tree - if node_nt is not None and node_nt not in self._node_trees: - self._process_comp_node_group(node_nt, level + 1, self._node_vars, - self._used_vars) - self._node_trees.add(node_nt) - + def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str): node_var: str = self._create_node(node, inner, ntp_nt.var) if node.bl_idname == 'CompositorNodeColorBalance': @@ -98,17 +92,14 @@ def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str, level: int self._hide_hidden_sockets(node, inner, node_var) if node.bl_idname == 'CompositorNodeGroup': - if node.node_tree is not None: - self._write((f"{inner}{node_var}.node_tree = " - f"bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) - elif node.bl_idname == 'NodeGroupInput' and not inputs_set: + self._process_group_node_tree(node, node_var, inner) + elif node.bl_idname == 'NodeGroupInput' and not ntp_nt.inputs_set: self._group_io_settings(node, inner, "input", ntp_nt) - inputs_set = True + ntp_nt.inputs_set = True - elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: + elif node.bl_idname == 'NodeGroupOutput' and not ntp_nt.outputs_set: self._group_io_settings(node, inner, "output", ntp_nt) - outputs_set = True + ntp_nt.outputs_set = True self._set_socket_defaults(node, node_var, inner) @@ -121,7 +112,7 @@ def _process_node_tree(self, node_tree, level): level (int): number of tabs to use for each line """ - if self._is_outermost_node_group(level): + if node_tree == self._base_node_tree: nt_var = self._create_var(self.compositor_name) nt_name = self.compositor_name else: @@ -130,15 +121,14 @@ def _process_node_tree(self, node_tree, level): outer, inner = make_indents(level) - self._initialize_compositor_node_tree(outer, nt_var, level, inner, nt_name) - ntp_nt = NTP_NodeTree(node_tree, nt_var) + self._initialize_compositor_node_tree(outer, ntp_nt, nt_name) #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") for node in node_tree.nodes: - self._process_node(node, ntp_nt, inner, level) + self._process_node(node, ntp_nt, inner) self._set_parents(node_tree, inner) self._set_locations(node_tree, inner) @@ -146,16 +136,19 @@ def _process_node_tree(self, node_tree, level): self._init_links(node_tree, inner, nt_var) - self._write(f"\n{outer}{nt_var}_node_group()\n\n") + self._write(f"{inner}return {nt_var}\n") + + self._write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") + self._node_trees[node_tree] = nt_var def execute(self, context): #find node group to replicate if self.is_scene: - nt = bpy.data.scenes[self.compositor_name].node_tree + self._base_node_tree = bpy.data.scenes[self.compositor_name].node_tree else: - nt = bpy.data.node_groups[self.compositor_name] + self._base_node_tree = bpy.data.node_groups[self.compositor_name] - if nt is None: + if self._base_node_tree is None: #shouldn't happen self.report({'ERROR'},("NodeToPython: This doesn't seem to be a " "valid compositor node tree. Is Use Nodes " @@ -187,8 +180,12 @@ def execute(self, context): if self.mode == 'ADDON': level = 2 else: - level = 0 - self._process_node_tree(nt, level) + level = 0 + + node_trees_to_process = self._topological_sort(self._base_node_tree) + + for node_tree in node_trees_to_process: + self._process_node_tree(node_tree, level) if self.mode == 'ADDON': self._write("\t\treturn {'FINISHED'}\n\n") diff --git a/geometry/operator.py b/geometry/operator.py index c0eccb0..fcf0ab4 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -65,12 +65,12 @@ def _process_zone_output_node(self, node: GeometryNode, inner: str, f"{attr_domain}\n")) def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, - inner: str, level: int) -> None: + inner: str) -> None: #create node node_var: str = self._create_node(node, inner, ntp_node_tree.var) self._set_settings_defaults(node, inner, node_var) if node.bl_idname == 'GeometryNodeGroup': - self._process_group_node_tree(node, node_var, level, inner) + self._process_group_node_tree(node, node_var, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: self._group_io_settings(node, inner, "input", ntp_node_tree) @@ -169,7 +169,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) for node in node_tree.nodes: - self._process_node(node, ntp_nt, inner, level) + self._process_node(node, ntp_nt, inner) if bpy.app.version >= (3, 6, 0): self._process_zones(ntp_nt.sim_inputs, inner) @@ -188,7 +188,8 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, #create node group self._write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") - return self._used_vars + + self._node_trees[node_tree] = nt_var def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): @@ -226,7 +227,11 @@ def execute(self, context): level = 2 else: level = 0 - self._process_node_tree(nt, level) + + node_trees_to_process = self._topological_sort(nt) + + for node_tree in node_trees_to_process: + self._process_node_tree(node_tree, level) if self.mode == 'ADDON': self._apply_modifier(nt, nt_var) diff --git a/material/operator.py b/material/operator.py index cc84f24..4e914e5 100644 --- a/material/operator.py +++ b/material/operator.py @@ -28,29 +28,46 @@ def _create_material(self, indent: str): f"name = {str_to_py_str(self.material_name)})\n")) self._write(f"{indent}{MAT_VAR}.use_nodes = True\n") - def _initialize_shader_node_tree(self, outer, nt_var, level, inner, nt_name): - #initialize node group - self._write(f"{outer}#initialize {nt_var} node group\n") - self._write(f"{outer}def {nt_var}_node_group():\n") + def _initialize_shader_node_tree(self, outer: str, ntp_node_tree: NTP_NodeTree, nt_name: str) -> None: + """ + Initialize the shader node group + + Parameters: + outer (str): indentation level + ntp_node_tree (NTP_NodeTree): node tree to be generated and + variable to use + nt_name (str): name to use for the node tree + """ + self._write(f"{outer}#initialize {nt_name} node group\n") + self._write(f"{outer}def {ntp_node_tree.var}_node_group():\n") - if self._is_outermost_node_group(level): - self._write(f"{inner}{nt_var} = {MAT_VAR}.node_tree\n") + inner = f"{outer}\t" + if ntp_node_tree.node_tree == self._base_node_tree: + self._write(f"{inner}{ntp_node_tree.var} = {MAT_VAR}.node_tree\n") self._write(f"{inner}#start with a clean node tree\n") - self._write(f"{inner}for node in {nt_var}.nodes:\n") - self._write(f"{inner}\t{nt_var}.nodes.remove(node)\n") + self._write(f"{inner}for node in {ntp_node_tree.var}.nodes:\n") + self._write(f"{inner}\t{ntp_node_tree.var}.nodes.remove(node)\n") else: - self._write((f"{inner}{nt_var} = bpy.data.node_groups.new(" + self._write((f"{inner}{ntp_node_tree.var} = bpy.data.node_groups.new(" f"type = \'ShaderNodeTree\', " f"name = {str_to_py_str(nt_name)})\n")) self._write("\n") - def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, level: int) -> None: - #create node + def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str) -> None: + """ + Creates a node and sets settings, inputs, outputs, and cosmetics + + Parameters: + node (Node): node to process + ntp_node_tree (NTP_NodeTree): node tree the node belongs to, and + variable to use + inner + """ node_var: str = self._create_node(node, inner, ntp_node_tree.var) self._set_settings_defaults(node, inner, node_var) if node.bl_idname == 'ShaderNodeGroup': - self._process_group_node_tree(node, node_var, level, inner) + self._process_group_node_tree(node, node_var, inner) elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: self._group_io_settings(node, inner, "input", ntp_node_tree) ntp_node_tree.inputs_set = True @@ -72,7 +89,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: node groups within node groups and script/add-on differences """ - if self._is_outermost_node_group(level): + if node_tree == self._base_node_tree: nt_var = self._create_var(self.material_name) nt_name = self.material_name #TODO: this is probably overcomplicating things if we move to a harder material vs shader node tree difference else: @@ -81,15 +98,15 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: outer, inner = make_indents(level) - self._initialize_shader_node_tree(outer, nt_var, level, inner, nt_name) - ntp_nt = NTP_NodeTree(node_tree, nt_var) + self._initialize_shader_node_tree(outer, ntp_nt, nt_name) + #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") for node in node_tree.nodes: - self._process_node(node, ntp_nt, inner, level) + self._process_node(node, ntp_nt, inner) self._set_parents(node_tree, inner) self._set_locations(node_tree, inner) @@ -99,12 +116,15 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: self._write(f"{inner}return {nt_var}\n") - self._write(f"\n{outer}{nt_var}_node_group()\n\n") + self._write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") + + self._node_trees[node_tree] = nt_var + def execute(self, context): #find node group to replicate - nt = bpy.data.materials[self.material_name].node_tree - if nt is None: + self._base_node_tree = bpy.data.materials[self.material_name].node_tree + if self._base_node_tree is None: self.report({'ERROR'}, ("NodeToPython: This doesn't seem to be a " "valid material. Is Use Nodes selected?")) return {'CANCELLED'} @@ -130,12 +150,15 @@ def execute(self, context): elif self.mode == 'SCRIPT': self._create_material("") - if self.mode == 'ADDON': level = 2 else: level = 0 - self._process_node_tree(nt, level) + + node_trees_to_process = self._topological_sort(self._base_node_tree) + + for node_tree in node_trees_to_process: + self._process_node_tree(node_tree, level) if self.mode == 'ADDON': self._write("\t\treturn {'FINISHED'}\n\n") diff --git a/ntp_operator.py b/ntp_operator.py index a25a7ea..1a6385a 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -30,7 +30,7 @@ class NTP_Operator(Operator): ] ) - #node tree input sockets that have default properties + # node tree input sockets that have default properties if bpy.app.version < (4, 0, 0): default_sockets_v3 = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} else: @@ -62,8 +62,11 @@ def __init__(self): # Class named for the generated operator self._class_name: str = None - # Set to keep track of already created node trees - self._node_trees: set[NodeTree] = set() + # Base node tree we're converting + self._base_node_tree: NodeTree = None + + # Dictionary to keep track of node tree->variable name pairs + self._node_trees: dict[NodeTree, str] = {} # Dictionary to keep track of node->variable name pairs self._node_vars: dict[Node, str] = {} @@ -134,25 +137,61 @@ def _init_operator(self, idname: str, label: str) -> None: self._write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") self._write("\n") - def _is_outermost_node_group(self, level: int) -> bool: - if self.mode == 'ADDON' and level == 2: - return True - elif self.mode == 'SCRIPT' and level == 0: - return True - return False + def _topological_sort(self, node_tree: NodeTree) -> list[NodeTree]: + """ + Perform a topological sort on the node graph to determine dependencies + and which node groups need processed first + + Parameters: + node_tree (NodeTree): the base node tree to convert - def _process_group_node_tree(self, node: Node, node_var: str, level: int, - inner: str) -> None: + Returns: + (list[NodeTree]): the node trees in order of processing + """ + if isinstance(node_tree, bpy.types.CompositorNodeTree): + group_node_type = 'CompositorNodeGroup' + elif isinstance(node_tree, bpy.types.GeometryNodeTree): + group_node_type = 'GeometryNodeGroup' + elif isinstance(node_tree, bpy.types.ShaderNodeTree): + group_node_type = 'ShaderNodeGroup' + + visited = set() + result: list[NodeTree] = [] + + def dfs(nt: NodeTree) -> None: + """ + Helper function to perform depth-first search on a NodeTree + + Parameters: + nt (NodeTree): current node tree in the dependency graph + """ + if nt not in visited: + visited.add(nt) + for group_node in [node for node in nt.nodes + if node.bl_idname == group_node_type]: + if group_node.node_tree not in visited: + dfs(group_node.node_tree) + result.append(nt) + + dfs(node_tree) + + return result + + + def _process_group_node_tree(self, node: Node, node_var: str, inner: str + ) -> None: """ Processes node tree of group node if one is present """ node_tree = node.node_tree - if node_tree is not None: - if node_tree not in self._node_trees: - self._process_node_tree(node_tree, level + 1) - self._node_trees.add(node_tree) - self._write((f"{inner}{node_var}.node_tree = bpy.data.node_groups" - f"[\"{node.node_tree.name}\"]\n")) + if node_tree is None: + return + if node_tree in self._node_trees: + nt_var = self._node_trees[node_tree] + self._write((f"{inner}{node_var}.node_tree = {nt_var}\n")) + else: + self.report({'WARNING'}, (f"NodeToPython: Node tree dependency graph " + f"wasn't properly initialized")) def _create_var(self, name: str) -> str: """ @@ -160,7 +199,8 @@ def _create_var(self, name: str) -> str: Parameters: name (str): basic string we'd like to create the variable name out of - used_vars (dict[str, int]): dictionary containing variable names and usage counts + used_vars (dict[str, int]): dictionary containing variable names and + usage counts Returns: clean_name (str): variable name for the node tree @@ -232,7 +272,7 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str for (attr_name, type) in self._settings[node.bl_idname]: if not hasattr(node, attr_name): - self.report({'WARNING'}, + self.report({'WARNING'}, f"NodeToPython: Couldn't find attribute " f"\"{attr_name}\" for node {node.name} of type " f"{node.bl_idname}") @@ -318,8 +358,8 @@ def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, - io: str, # TODO: convert to enum - ntp_node_tree: NTP_NodeTree) -> None: + io: str, # TODO: convert to enum + ntp_node_tree: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets @@ -353,7 +393,7 @@ def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" - self._set_group_socket_default_v3(socket_interface, inner, + self._set_group_socket_default_v3(socket_interface, inner, socket_var) # default attribute name @@ -367,7 +407,8 @@ def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, # attribute domain if hasattr(socket_interface, "attribute_domain"): ad = enum_to_py_str(socket_interface.attribute_domain) - self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + self._write( + f"{inner}{socket_var}.attribute_domain = {ad}\n") # tooltip if socket_interface.description != "": @@ -387,7 +428,7 @@ def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, self._write("\n") self._write("\n") - + elif bpy.app.version >= (4, 0, 0): def _set_group_socket_default_v4(self, socket_interface: bpy.types.NodeTreeInterfaceSocket, inner: str, socket_var: str) -> None: @@ -425,8 +466,8 @@ def _set_group_socket_default_v4(self, socket_interface: bpy.types.NodeTreeInter self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) def _group_io_settings_v4(self, node: bpy.types.Node, inner: str, - io: str, # TODO: convert to enum - ntp_node_tree: NTP_NodeTree) -> None: + io: str, # TODO: convert to enum + ntp_node_tree: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets @@ -442,7 +483,7 @@ def _group_io_settings_v4(self, node: bpy.types.Node, inner: str, node_tree = ntp_node_tree.node_tree if io == "input": - io_sockets = node.outputs # Might be removeable, + io_sockets = node.outputs # Might be removeable, # think we can get all the info from the inouts # from the socket interfaces, need to double check. # If so, then we can just run these at the initialization @@ -452,23 +493,23 @@ def _group_io_settings_v4(self, node: bpy.types.Node, inner: str, # looks like those are tied fairly close to the new socket # system items_tree = node_tree.interface.items_tree - io_socket_interfaces = [item for item in items_tree - if item.item_type == 'SOCKET' + io_socket_interfaces = [item for item in items_tree + if item.item_type == 'SOCKET' and item.in_out == 'INPUT'] else: io_sockets = node.inputs items_tree = node_tree.interface.items_tree - io_socket_interfaces = [item for item in items_tree - if item.item_type == 'SOCKET' + io_socket_interfaces = [item for item in items_tree + if item.item_type == 'SOCKET' and item.in_out == 'OUTPUT'] self._write(f"{inner}#{node_tree_var} {io}s\n") for i, socket_interface in enumerate(io_socket_interfaces): self._write(f"{inner}#{io} {socket_interface.name}\n") - + socket_interface: bpy.types.NodeTreeInterfaceSocket = io_socket_interfaces[i] - #initialization + # initialization socket_var = clean_string(socket_interface.name) + "_socket" name = str_to_py_str(socket_interface.name) in_out_enum = enum_to_py_str(socket_interface.in_out) @@ -486,25 +527,26 @@ def _group_io_settings_v4(self, node: bpy.types.Node, inner: str, socket_type = enum_to_py_str('NodeSocketInt') elif 'Vector' in socket_type: socket_type = enum_to_py_str('NodeSocketVector') - self._write(f"{inner}{socket_var} = " f"{node_tree_var}.interface.new_socket(" f"name = {name}, in_out={in_out_enum}, " f"socket_type = {socket_type})\n") - #subtype + # subtype if hasattr(socket_interface, "subtype"): subtype = enum_to_py_str(socket_interface.subtype) self._write(f"{inner}{socket_var}.subtype = {subtype}\n") - self._set_group_socket_default_v4(socket_interface, inner, + self._set_group_socket_default_v4(socket_interface, inner, socket_var) # default attribute name if socket_interface.default_attribute_name != "": - dan = str_to_py_str(socket_interface.default_attribute_name) - self._write((f"{inner}{socket_var}.default_attribute_name = {dan}\n")) + dan = str_to_py_str( + socket_interface.default_attribute_name) + self._write( + (f"{inner}{socket_var}.default_attribute_name = {dan}\n")) # attribute domain ad = enum_to_py_str(socket_interface.attribute_domain) @@ -522,18 +564,20 @@ def _group_io_settings_v4(self, node: bpy.types.Node, inner: str, # hide in modifier if socket_interface.hide_in_modifier is True: - self._write(f"{inner}{socket_var}.hide_in_modifier = True\n") + self._write( + f"{inner}{socket_var}.hide_in_modifier = True\n") - #force non field + # force non field if socket_interface.force_non_field is True: - self._write(f"{inner}{socket_var}.force_non_field = True\n") + self._write( + f"{inner}{socket_var}.force_non_field = True\n") self._write("\n") self._write("\n") - def _group_io_settings(self, node: bpy.types.Node, inner: str, - io: str, # TODO: convert to enum - ntp_node_tree: NTP_NodeTree) -> None: + def _group_io_settings(self, node: bpy.types.Node, inner: str, + io: str, # TODO: convert to enum + ntp_node_tree: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets @@ -578,10 +622,10 @@ def _set_input_defaults(self, node: bpy.types.Node, inner: str, elif "Vector" in input.bl_idname: default_val = vec3_to_py_str(input.default_value) - #rotation types + # rotation types elif input.bl_idname == 'NodeSocketRotation': default_val = vec3_to_py_str(input.default_value) - + # strings elif input.bl_idname == 'NodeSocketString': default_val = str_to_py_str(input.default_value) @@ -1059,8 +1103,7 @@ def _zip_addon(self) -> None: shutil.rmtree(self._zip_dir) # ABSTRACT - def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str, - level: int) -> None: + def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str) -> None: return # ABSTRACT From 630300ae7d33e18a94c29e665c1bf80d44fbf756 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 14 Jan 2024 21:58:44 -0600 Subject: [PATCH 158/286] feat: node panels --- geometry/operator.py | 3 + ntp_operator.py | 237 +++++++++++++++++++++++++------------------ 2 files changed, 139 insertions(+), 101 deletions(-) diff --git a/geometry/operator.py b/geometry/operator.py index fcf0ab4..f5b405d 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -168,6 +168,9 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) + if bpy.app.version >= (4, 0, 0): + self._tree_interface_settings_v4(inner, ntp_nt) + for node in node_tree.nodes: self._process_node(node, ntp_nt, inner) diff --git a/ntp_operator.py b/ntp_operator.py index 1a6385a..6ea64e9 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -5,6 +5,8 @@ if bpy.app.version < (4, 0, 0): from bpy.types import NodeSocketInterface +else: + from bpy.types import NodeTreeInterfacePanel, NodeTreeInterfaceItem import os from typing import TextIO @@ -465,114 +467,149 @@ def _set_group_socket_default_v4(self, socket_interface: bpy.types.NodeTreeInter max_val = socket_interface.max_value self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) - def _group_io_settings_v4(self, node: bpy.types.Node, inner: str, - io: str, # TODO: convert to enum - ntp_node_tree: NTP_NodeTree) -> None: + def _tree_interface_settings_v4(self, inner: str, + ntp_nt: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets Parameters: - node (bpy.types.Node) : group input/output node inner (str): indentation string - io (str): whether we're generating the input or output settings - node_tree_var (str): variable name of the generated node tree - node_tree (bpy.types.NodeTree): node tree that we're generating - input and output settings for + ntp_nt (NTP_NodeTree): the node tree to set the interface for """ - node_tree_var = ntp_node_tree.var - node_tree = ntp_node_tree.node_tree - - if io == "input": - io_sockets = node.outputs # Might be removeable, - # think we can get all the info from the inouts - # from the socket interfaces, need to double check. - # If so, then we can just run these at the initialization - # of the node tree, meaning we can clean up the clunky - # Group Input/Group Output node reliance, two calls - # Should be pretty easy to add in panels afterwards, - # looks like those are tied fairly close to the new socket - # system - items_tree = node_tree.interface.items_tree - io_socket_interfaces = [item for item in items_tree - if item.item_type == 'SOCKET' - and item.in_out == 'INPUT'] - else: - io_sockets = node.inputs - items_tree = node_tree.interface.items_tree - io_socket_interfaces = [item for item in items_tree - if item.item_type == 'SOCKET' - and item.in_out == 'OUTPUT'] - - self._write(f"{inner}#{node_tree_var} {io}s\n") - for i, socket_interface in enumerate(io_socket_interfaces): - self._write(f"{inner}#{io} {socket_interface.name}\n") - - socket_interface: bpy.types.NodeTreeInterfaceSocket = io_socket_interfaces[i] - - # initialization - socket_var = clean_string(socket_interface.name) + "_socket" - name = str_to_py_str(socket_interface.name) - in_out_enum = enum_to_py_str(socket_interface.in_out) - - socket_type = enum_to_py_str(socket_interface.bl_socket_idname) - """ - I might be missing something, but the Python API's set up a bit - weird here now. The new socket initialization only accepts types - from a list of basic ones, but there doesn't seem to be a way of - retrieving just this basic typewithout the subtype information. - """ - if 'Float' in socket_type: - socket_type = enum_to_py_str('NodeSocketFloat') - elif 'Int' in socket_type: - socket_type = enum_to_py_str('NodeSocketInt') - elif 'Vector' in socket_type: - socket_type = enum_to_py_str('NodeSocketVector') - - self._write(f"{inner}{socket_var} = " - f"{node_tree_var}.interface.new_socket(" - f"name = {name}, in_out={in_out_enum}, " - f"socket_type = {socket_type})\n") - - # subtype - if hasattr(socket_interface, "subtype"): - subtype = enum_to_py_str(socket_interface.subtype) - self._write(f"{inner}{socket_var}.subtype = {subtype}\n") - - self._set_group_socket_default_v4(socket_interface, inner, - socket_var) - - # default attribute name - if socket_interface.default_attribute_name != "": - dan = str_to_py_str( - socket_interface.default_attribute_name) - self._write( - (f"{inner}{socket_var}.default_attribute_name = {dan}\n")) - # attribute domain - ad = enum_to_py_str(socket_interface.attribute_domain) - self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") - - # tooltip - if socket_interface.description != "": - description = str_to_py_str(socket_interface.description) - self._write( - (f"{inner}{socket_var}.description = {description}\n")) - - # hide_value - if socket_interface.hide_value is True: - self._write(f"{inner}{socket_var}.hide_value = True\n") - - # hide in modifier - if socket_interface.hide_in_modifier is True: - self._write( - f"{inner}{socket_var}.hide_in_modifier = True\n") + self._write(f"{inner}#{ntp_nt.var} interface\n") + panel_dict: dict[NodeTreeInterfacePanel, str] = {} + items_processed: set[NodeTreeInterfaceItem] = set() - # force non field - if socket_interface.force_non_field is True: - self._write( - f"{inner}{socket_var}.force_non_field = True\n") + def _process_items(parent: NodeTreeInterfacePanel): + if parent is None: + items = ntp_nt.node_tree.interface.items_tree + else: + items = parent.interface_items + + for item in items: + if item.parent.index != -1 and item.parent not in panel_dict: + continue # child of panel not processed yet + if item in items_processed: + continue + + items_processed.add(item) + + print(item.name, items_processed) + + if item.item_type == 'SOCKET': + self._write(f"{inner}#Socket {item.name}\n") + # initialization + socket_var = clean_string(item.name) + "_socket" + name = str_to_py_str(item.name) + in_out_enum = enum_to_py_str(item.in_out) + + socket_type = enum_to_py_str(item.bl_socket_idname) + """ + I might be missing something, but the Python API's set up a bit + weird here now. The new socket initialization only accepts types + from a list of basic ones, but there doesn't seem to be a way of + retrieving just this basic type without the subtype information. + """ + if 'Float' in socket_type: + socket_type = enum_to_py_str('NodeSocketFloat') + elif 'Int' in socket_type: + socket_type = enum_to_py_str('NodeSocketInt') + elif 'Vector' in socket_type: + socket_type = enum_to_py_str('NodeSocketVector') + + if parent is None: + optional_parent_str = "" + else: + optional_parent_str = f", parent = {panel_dict[parent]}" + + self._write(f"{inner}{socket_var} = " + f"{ntp_nt.var}.interface.new_socket(" + f"name = {name}, in_out={in_out_enum}, " + f"socket_type = {socket_type}" + f"{optional_parent_str})\n") + + # subtype + if hasattr(item, "subtype"): + subtype = enum_to_py_str(item.subtype) + self._write(f"{inner}{socket_var}.subtype = {subtype}\n") + + self._set_group_socket_default_v4(item, inner, + socket_var) + + # default attribute name + if item.default_attribute_name != "": + dan = str_to_py_str( + item.default_attribute_name) + self._write( + (f"{inner}{socket_var}.default_attribute_name = {dan}\n")) + + # attribute domain + ad = enum_to_py_str(item.attribute_domain) + self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + + # hide_value + if item.hide_value is True: + self._write(f"{inner}{socket_var}.hide_value = True\n") + + # hide in modifier + if item.hide_in_modifier is True: + self._write( + f"{inner}{socket_var}.hide_in_modifier = True\n") + + # force non field + if item.force_non_field is True: + self._write( + f"{inner}{socket_var}.force_non_field = True\n") + + # tooltip + if item.description != "": + description = str_to_py_str(item.description) + self._write( + (f"{inner}{socket_var}.description = {description}\n")) + + self._write("\n") + + elif item.item_type == 'PANEL': + + self._write(f"{inner}#Panel {item.name}\n") + + panel_var = clean_string(item.name) + "_panel" + panel_dict[item] = panel_var + + description_str = "" + if item.description != "": + description_str = f", description = {str_to_py_str(item.description)}" + + closed_str = "" + if item.default_closed is True: + closed_str = f", default_closed=True" + + parent_str = "" + if parent is not None: + parent_str = f", parent = {panel_dict[parent]}" + + + self._write(f"{inner}{panel_var} = " + f"{ntp_nt.var}.interface.new_panel(" + f"{str_to_py_str(item.name)}{description_str}" + f"{closed_str}{parent_str})\n") + + # tooltip + if item.description != "": + description = str_to_py_str(item.description) + self._write( + (f"{inner}{panel_var}.description = {description}\n")) + + panel_dict[item] = panel_var + + if len(item.interface_items) > 0: + _process_items(item) + + self._write("\n") + + _process_items(None) - self._write("\n") self._write("\n") def _group_io_settings(self, node: bpy.types.Node, inner: str, @@ -591,8 +628,6 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, """ if bpy.app.version < (4, 0, 0): self._group_io_settings_v3(node, inner, io, ntp_node_tree) - else: - self._group_io_settings_v4(node, inner, io, ntp_node_tree) def _set_input_defaults(self, node: bpy.types.Node, inner: str, node_var: str) -> None: From 43871dee35ebc6d57e537fef2058b5e5e902dbd8 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 14 Jan 2024 22:26:13 -0600 Subject: [PATCH 159/286] refactor: cleanup --- compositor/operator.py | 17 ++- geometry/operator.py | 20 +-- material/operator.py | 21 +-- ntp_node_tree.py | 10 +- ntp_operator.py | 310 ++++++++++++++++++++--------------------- 5 files changed, 195 insertions(+), 183 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 7631244..1a03a96 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -93,13 +93,15 @@ def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str): if node.bl_idname == 'CompositorNodeGroup': self._process_group_node_tree(node, node_var, inner) - elif node.bl_idname == 'NodeGroupInput' and not ntp_nt.inputs_set: - self._group_io_settings(node, inner, "input", ntp_nt) - ntp_nt.inputs_set = True - elif node.bl_idname == 'NodeGroupOutput' and not ntp_nt.outputs_set: - self._group_io_settings(node, inner, "output", ntp_nt) - ntp_nt.outputs_set = True + if bpy.app.version < (4, 0, 0): + if node.bl_idname == 'NodeGroupInput' and not ntp_nt.inputs_set: + self._group_io_settings(node, inner, "input", ntp_nt) + ntp_nt.inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not ntp_nt.outputs_set: + self._group_io_settings(node, inner, "output", ntp_nt) + ntp_nt.outputs_set = True self._set_socket_defaults(node, node_var, inner) @@ -124,6 +126,9 @@ def _process_node_tree(self, node_tree, level): ntp_nt = NTP_NodeTree(node_tree, nt_var) self._initialize_compositor_node_tree(outer, ntp_nt, nt_name) + if bpy.app.version >= (4, 0, 0): + self._tree_interface_settings(inner, ntp_nt) + #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") diff --git a/geometry/operator.py b/geometry/operator.py index f5b405d..9698229 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -69,16 +69,18 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, #create node node_var: str = self._create_node(node, inner, ntp_node_tree.var) self._set_settings_defaults(node, inner, node_var) - if node.bl_idname == 'GeometryNodeGroup': - self._process_group_node_tree(node, node_var, inner) - elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", ntp_node_tree) - ntp_node_tree.inputs_set = True + if bpy.app.version < (4, 0, 0): + if node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: + self._group_io_settings(node, inner, "input", ntp_node_tree) + ntp_node_tree.inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: + self._group_io_settings(node, inner, "output", ntp_node_tree) + ntp_node_tree.outputs_set = True - elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", ntp_node_tree) - ntp_node_tree.outputs_set = True + if node.bl_idname == 'GeometryNodeGroup': + self._process_group_node_tree(node, node_var, inner) elif node.bl_idname == 'GeometryNodeSimulationInput': ntp_node_tree.sim_inputs.append(node) @@ -169,7 +171,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) if bpy.app.version >= (4, 0, 0): - self._tree_interface_settings_v4(inner, ntp_nt) + self._tree_interface_settings(inner, ntp_nt) for node in node_tree.nodes: self._process_node(node, ntp_nt, inner) diff --git a/material/operator.py b/material/operator.py index 4e914e5..72bd339 100644 --- a/material/operator.py +++ b/material/operator.py @@ -65,16 +65,18 @@ def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str) -> """ node_var: str = self._create_node(node, inner, ntp_node_tree.var) self._set_settings_defaults(node, inner, node_var) - + + if bpy.app.version < (4, 0, 0): + if node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: + self._group_io_settings(node, inner, "input", ntp_node_tree) + ntp_node_tree.inputs_set = True + + elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: + self._group_io_settings(node, inner, "output", ntp_node_tree) + ntp_node_tree.outputs_set = True + if node.bl_idname == 'ShaderNodeGroup': self._process_group_node_tree(node, node_var, inner) - elif node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", ntp_node_tree) - ntp_node_tree.inputs_set = True - - elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", ntp_node_tree) - ntp_node_tree.outputs_set = True self._hide_hidden_sockets(node, inner, node_var) self._set_socket_defaults(node, node_var, inner) @@ -102,6 +104,9 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: self._initialize_shader_node_tree(outer, ntp_nt, nt_name) + if bpy.app.version >= (4, 0, 0): + self._tree_interface_settings(inner, ntp_nt) + #initialize nodes self._write(f"{inner}#initialize {nt_var} nodes\n") diff --git a/ntp_node_tree.py b/ntp_node_tree.py index 5469ba1..a551d01 100644 --- a/ntp_node_tree.py +++ b/ntp_node_tree.py @@ -1,4 +1,5 @@ from bpy.types import NodeTree +import bpy class NTP_NodeTree: def __init__(self, node_tree: NodeTree, var: str): @@ -8,7 +9,8 @@ def __init__(self, node_tree: NodeTree, var: str): # The variable named for the regenerated node tree self.var: str = var - # Keep track of if we need to set the default values for the node - # tree inputs and outputs - self.inputs_set: bool = False - self.outputs_set: bool = False \ No newline at end of file + if bpy.app.version < (4, 0, 0): + # Keep track of if we need to set the default values for the node + # tree inputs and outputs + self.inputs_set: bool = False + self.outputs_set: bool = False \ No newline at end of file diff --git a/ntp_operator.py b/ntp_operator.py index 6ea64e9..516dd85 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -6,7 +6,7 @@ if bpy.app.version < (4, 0, 0): from bpy.types import NodeSocketInterface else: - from bpy.types import NodeTreeInterfacePanel, NodeTreeInterfaceItem + from bpy.types import NodeTreeInterfaceItem, NodeTreeInterfacePanel, NodeTreeInterfaceSocket import os from typing import TextIO @@ -328,10 +328,11 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str attr, inner, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): - def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, + def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, inner: str, socket_var: str) -> None: """ Set a node group input/output's default properties if they exist + Helper function to _group_io_settings() Parameters: socket_interface (NodeSocketInterface): socket interface associated @@ -359,9 +360,9 @@ def _set_group_socket_default_v3(self, socket_interface: NodeSocketInterface, max_val = socket_interface.max_value self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) - def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, - io: str, # TODO: convert to enum - ntp_node_tree: NTP_NodeTree) -> None: + def _group_io_settings(self, node: bpy.types.Node, inner: str, + io: str, # TODO: convert to enum + ntp_node_tree: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets @@ -395,7 +396,7 @@ def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" - self._set_group_socket_default_v3(socket_interface, inner, + self._set_group_socket_defaults(socket_interface, inner, socket_var) # default attribute name @@ -432,10 +433,10 @@ def _group_io_settings_v3(self, node: bpy.types.Node, inner: str, self._write("\n") elif bpy.app.version >= (4, 0, 0): - def _set_group_socket_default_v4(self, socket_interface: bpy.types.NodeTreeInterfaceSocket, - inner: str, socket_var: str) -> None: + def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, + inner: str, socket_var: str) -> None: """ - Set a node group input/output's default properties if they exist + Set a node tree input/output's default properties if they exist Parameters: socket_interface (NodeTreeInterfaceSocket): socket interface associated @@ -467,8 +468,149 @@ def _set_group_socket_default_v4(self, socket_interface: bpy.types.NodeTreeInter max_val = socket_interface.max_value self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) - def _tree_interface_settings_v4(self, inner: str, - ntp_nt: NTP_NodeTree) -> None: + def _create_socket(self, inner: str, socket: NodeTreeInterfaceSocket, + parent: NodeTreeInterfacePanel, + panel_dict: dict[NodeTreeInterfacePanel, str], + ntp_nt: NTP_NodeTree) -> None: + self._write(f"{inner}#Socket {socket.name}\n") + # initialization + socket_var = clean_string(socket.name) + "_socket" + name = str_to_py_str(socket.name) + in_out_enum = enum_to_py_str(socket.in_out) + + socket_type = enum_to_py_str(socket.bl_socket_idname) + """ + I might be missing something, but the Python API's set up a bit + weird here now. The new socket initialization only accepts types + from a list of basic ones, but there doesn't seem to be a way of + retrieving just this basic type without the subtype information. + """ + if 'Float' in socket_type: + socket_type = enum_to_py_str('NodeSocketFloat') + elif 'Int' in socket_type: + socket_type = enum_to_py_str('NodeSocketInt') + elif 'Vector' in socket_type: + socket_type = enum_to_py_str('NodeSocketVector') + + if parent is None: + optional_parent_str = "" + else: + optional_parent_str = f", parent = {panel_dict[parent]}" + + self._write(f"{inner}{socket_var} = " + f"{ntp_nt.var}.interface.new_socket(" + f"name = {name}, in_out={in_out_enum}, " + f"socket_type = {socket_type}" + f"{optional_parent_str})\n") + + # subtype + if hasattr(socket, "subtype"): + subtype = enum_to_py_str(socket.subtype) + self._write(f"{inner}{socket_var}.subtype = {subtype}\n") + + self._set_tree_socket_defaults(socket, inner, socket_var) + + # default attribute name + if socket.default_attribute_name != "": + dan = str_to_py_str( + socket.default_attribute_name) + self._write( + (f"{inner}{socket_var}.default_attribute_name = {dan}\n")) + + # attribute domain + ad = enum_to_py_str(socket.attribute_domain) + self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + + # hide_value + if socket.hide_value is True: + self._write(f"{inner}{socket_var}.hide_value = True\n") + + # hide in modifier + if socket.hide_in_modifier is True: + self._write( + f"{inner}{socket_var}.hide_in_modifier = True\n") + + # force non field + if socket.force_non_field is True: + self._write( + f"{inner}{socket_var}.force_non_field = True\n") + + # tooltip + if socket.description != "": + description = str_to_py_str(socket.description) + self._write( + (f"{inner}{socket_var}.description = {description}\n")) + + self._write("\n") + + def _create_panel(self, inner: str, panel: NodeTreeInterfacePanel, + panel_dict: dict[NodeTreeInterfacePanel], + items_processed: set[NodeTreeInterfacePanel], + parent: NodeTreeInterfacePanel, ntp_nt: NTP_NodeTree): + self._write(f"{inner}#Panel {panel.name}\n") + + panel_var = clean_string(panel.name) + "_panel" + panel_dict[panel] = panel_var + + description_str = "" + if panel.description != "": + description_str = f", description = {str_to_py_str(panel.description)}" + + closed_str = "" + if panel.default_closed is True: + closed_str = f", default_closed=True" + + parent_str = "" + if parent is not None: + parent_str = f", parent = {panel_dict[parent]}" + + + self._write(f"{inner}{panel_var} = " + f"{ntp_nt.var}.interface.new_panel(" + f"{str_to_py_str(panel.name)}{description_str}" + f"{closed_str}{parent_str})\n") + + # tooltip + if panel.description != "": + description = str_to_py_str(panel.description) + self._write( + (f"{inner}{panel_var}.description = {description}\n")) + + panel_dict[panel] = panel_var + + if len(panel.interface_items) > 0: + self._process_items(inner, panel, panel_dict, items_processed, ntp_nt) + + self._write("\n") + + def _process_items(self, inner: str, parent: NodeTreeInterfacePanel, + panel_dict: dict[NodeTreeInterfacePanel], + items_processed: set[NodeTreeInterfacePanel], + ntp_nt: NTP_NodeTree) -> None: + if parent is None: + items = ntp_nt.node_tree.interface.items_tree + else: + items = parent.interface_items + + for item in items: + if item.parent.index != -1 and item.parent not in panel_dict: + continue # child of panel not processed yet + if item in items_processed: + continue + + items_processed.add(item) + + print(item.name, items_processed) + + if item.item_type == 'SOCKET': + self._create_socket(inner, item, parent, panel_dict, ntp_nt) + + elif item.item_type == 'PANEL': + self._create_panel(inner, item, panel_dict, items_processed, + parent, ntp_nt) + + def _tree_interface_settings(self, inner: str, ntp_nt: NTP_NodeTree + ) -> None: """ Set the settings for group input and output sockets @@ -481,154 +623,10 @@ def _tree_interface_settings_v4(self, inner: str, panel_dict: dict[NodeTreeInterfacePanel, str] = {} items_processed: set[NodeTreeInterfaceItem] = set() - def _process_items(parent: NodeTreeInterfacePanel): - if parent is None: - items = ntp_nt.node_tree.interface.items_tree - else: - items = parent.interface_items - - for item in items: - if item.parent.index != -1 and item.parent not in panel_dict: - continue # child of panel not processed yet - if item in items_processed: - continue - - items_processed.add(item) - - print(item.name, items_processed) - - if item.item_type == 'SOCKET': - self._write(f"{inner}#Socket {item.name}\n") - # initialization - socket_var = clean_string(item.name) + "_socket" - name = str_to_py_str(item.name) - in_out_enum = enum_to_py_str(item.in_out) - - socket_type = enum_to_py_str(item.bl_socket_idname) - """ - I might be missing something, but the Python API's set up a bit - weird here now. The new socket initialization only accepts types - from a list of basic ones, but there doesn't seem to be a way of - retrieving just this basic type without the subtype information. - """ - if 'Float' in socket_type: - socket_type = enum_to_py_str('NodeSocketFloat') - elif 'Int' in socket_type: - socket_type = enum_to_py_str('NodeSocketInt') - elif 'Vector' in socket_type: - socket_type = enum_to_py_str('NodeSocketVector') - - if parent is None: - optional_parent_str = "" - else: - optional_parent_str = f", parent = {panel_dict[parent]}" - - self._write(f"{inner}{socket_var} = " - f"{ntp_nt.var}.interface.new_socket(" - f"name = {name}, in_out={in_out_enum}, " - f"socket_type = {socket_type}" - f"{optional_parent_str})\n") - - # subtype - if hasattr(item, "subtype"): - subtype = enum_to_py_str(item.subtype) - self._write(f"{inner}{socket_var}.subtype = {subtype}\n") - - self._set_group_socket_default_v4(item, inner, - socket_var) - - # default attribute name - if item.default_attribute_name != "": - dan = str_to_py_str( - item.default_attribute_name) - self._write( - (f"{inner}{socket_var}.default_attribute_name = {dan}\n")) - - # attribute domain - ad = enum_to_py_str(item.attribute_domain) - self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") - - # hide_value - if item.hide_value is True: - self._write(f"{inner}{socket_var}.hide_value = True\n") - - # hide in modifier - if item.hide_in_modifier is True: - self._write( - f"{inner}{socket_var}.hide_in_modifier = True\n") - - # force non field - if item.force_non_field is True: - self._write( - f"{inner}{socket_var}.force_non_field = True\n") - - # tooltip - if item.description != "": - description = str_to_py_str(item.description) - self._write( - (f"{inner}{socket_var}.description = {description}\n")) - - self._write("\n") - - elif item.item_type == 'PANEL': - - self._write(f"{inner}#Panel {item.name}\n") - - panel_var = clean_string(item.name) + "_panel" - panel_dict[item] = panel_var - - description_str = "" - if item.description != "": - description_str = f", description = {str_to_py_str(item.description)}" - - closed_str = "" - if item.default_closed is True: - closed_str = f", default_closed=True" - - parent_str = "" - if parent is not None: - parent_str = f", parent = {panel_dict[parent]}" - - - self._write(f"{inner}{panel_var} = " - f"{ntp_nt.var}.interface.new_panel(" - f"{str_to_py_str(item.name)}{description_str}" - f"{closed_str}{parent_str})\n") - - # tooltip - if item.description != "": - description = str_to_py_str(item.description) - self._write( - (f"{inner}{panel_var}.description = {description}\n")) - - panel_dict[item] = panel_var - - if len(item.interface_items) > 0: - _process_items(item) - - self._write("\n") - - _process_items(None) + self._process_items(inner, None, panel_dict, items_processed, ntp_nt) self._write("\n") - def _group_io_settings(self, node: bpy.types.Node, inner: str, - io: str, # TODO: convert to enum - ntp_node_tree: NTP_NodeTree) -> None: - """ - Set the settings for group input and output sockets - - Parameters: - node (bpy.types.Node) : group input/output node - inner (str): indentation string - io (str): whether we're generating the input or output settings - node_tree_var (str): variable name of the generated node tree - node_tree (bpy.types.NodeTree): node tree that we're generating - input and output settings for - """ - if bpy.app.version < (4, 0, 0): - self._group_io_settings_v3(node, inner, io, ntp_node_tree) - def _set_input_defaults(self, node: bpy.types.Node, inner: str, node_var: str) -> None: """ From 20009675c368d79293b67a15231e455e61cc9616 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 14 Jan 2024 22:32:44 -0600 Subject: [PATCH 160/286] fix: use variable creation function for nt interface item vars --- ntp_operator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 516dd85..1875a56 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -474,7 +474,7 @@ def _create_socket(self, inner: str, socket: NodeTreeInterfaceSocket, ntp_nt: NTP_NodeTree) -> None: self._write(f"{inner}#Socket {socket.name}\n") # initialization - socket_var = clean_string(socket.name) + "_socket" + socket_var = self._create_var(socket.name + "_socket") name = str_to_py_str(socket.name) in_out_enum = enum_to_py_str(socket.in_out) @@ -549,7 +549,7 @@ def _create_panel(self, inner: str, panel: NodeTreeInterfacePanel, parent: NodeTreeInterfacePanel, ntp_nt: NTP_NodeTree): self._write(f"{inner}#Panel {panel.name}\n") - panel_var = clean_string(panel.name) + "_panel" + panel_var = self._create_var(panel.name + "_panel") panel_dict[panel] = panel_var description_str = "" From f0467dde7b3e240cd9f155c68d2c37eb852008aa Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 14 Jan 2024 22:44:28 -0600 Subject: [PATCH 161/286] doc: added comments to new tree interface functions --- ntp_operator.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 1875a56..8f33e3e 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -6,10 +6,12 @@ if bpy.app.version < (4, 0, 0): from bpy.types import NodeSocketInterface else: - from bpy.types import NodeTreeInterfaceItem, NodeTreeInterfacePanel, NodeTreeInterfaceSocket + from bpy.types import NodeTreeInterfacePanel, NodeTreeInterfaceSocket + from bpy.types import NodeTreeInterfaceItem import os from typing import TextIO +import shutil from .ntp_node_tree import NTP_NodeTree from .utils import * @@ -179,11 +181,15 @@ def dfs(nt: NodeTree) -> None: return result - def _process_group_node_tree(self, node: Node, node_var: str, inner: str ) -> None: """ Processes node tree of group node if one is present + + Parameters: + node (Node): the group node + node_var (str): variable for the group node + inner (str): indentation """ node_tree = node.node_tree if node_tree is None: @@ -438,6 +444,8 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, """ Set a node tree input/output's default properties if they exist + Helper function to _create_socket() + Parameters: socket_interface (NodeTreeInterfaceSocket): socket interface associated with the input/output @@ -472,6 +480,20 @@ def _create_socket(self, inner: str, socket: NodeTreeInterfaceSocket, parent: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel, str], ntp_nt: NTP_NodeTree) -> None: + """ + Initialize a new tree socket + + Helper function to _process_items() + + Parameters: + inner (str): indentation string + socket (NodeTreeInterfaceSocket): the socket to recreate + parent (NodeTreeInterfacePanel): parent panel of the socket + (possibly None) + panel_dict (dict[NodeTreeInterfacePanel, str]: panel -> variable + ntp_nt (NTP_NodeTree): owner of the socket + """ + self._write(f"{inner}#Socket {socket.name}\n") # initialization socket_var = self._create_var(socket.name + "_socket") @@ -547,6 +569,22 @@ def _create_panel(self, inner: str, panel: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel], items_processed: set[NodeTreeInterfacePanel], parent: NodeTreeInterfacePanel, ntp_nt: NTP_NodeTree): + """ + Initialize a new tree panel and its subitems + + Helper function to _process_items() + + Parameters: + inner (str): indentation string + panel (NodeTreeInterfacePanel): the panel to recreate + panel_dict (dict[NodeTreeInterfacePanel, str]: panel -> variable + items_processed (set[NodeTreeInterfacePanel]): set of already + processed items, so none are done twice + parent (NodeTreeInterfacePanel): parent panel of the socket + (possibly None) + ntp_nt (NTP_NodeTree): owner of the socket + """ + self._write(f"{inner}#Panel {panel.name}\n") panel_var = self._create_var(panel.name + "_panel") @@ -587,6 +625,21 @@ def _process_items(self, inner: str, parent: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel], items_processed: set[NodeTreeInterfacePanel], ntp_nt: NTP_NodeTree) -> None: + """ + Recursive function to process all node tree interface items in a + given layer + + Helper function to _tree_interface_settings() + + Parameters: + inner (str): indentation string + parent (NodeTreeInterfacePanel): parent panel of the layer + (possibly None to signify the base) + panel_dict (dict[NodeTreeInterfacePanel, str]: panel -> variable + items_processed (set[NodeTreeInterfacePanel]): set of already + processed items, so none are done twice + ntp_nt (NTP_NodeTree): owner of the socket + """ if parent is None: items = ntp_nt.node_tree.interface.items_tree else: From 9da1d108e79267ed877e88a8dca787a1ff51c390 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 21 Jan 2024 15:59:47 -0600 Subject: [PATCH 162/286] refactor: moved indent logic to write function, cleaned up functions --- compositor/operator.py | 165 ++++++------ geometry/operator.py | 186 +++++++------- material/operator.py | 101 ++++---- ntp_operator.py | 567 +++++++++++++++++++---------------------- utils.py | 22 +- 5 files changed, 489 insertions(+), 552 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 1a03a96..0ce02e6 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -1,6 +1,6 @@ import bpy -from bpy.types import Node +from bpy.types import Node, CompositorNodeColorBalance, CompositorNodeTree from ..ntp_operator import NTP_Operator from ..ntp_node_tree import NTP_NodeTree @@ -37,82 +37,102 @@ def __init__(self): def _create_scene(self, indent: str): #TODO: wrap in more general unique name util function - self._write(f"{indent}# Generate unique scene name\n") - self._write(f"{indent}{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}\n") - self._write(f"{indent}{END_NAME_VAR} = {BASE_NAME_VAR}\n") - self._write(f"{indent}if bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - self._write(f"{indent}\ti = 1\n") - self._write(f"{indent}\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - self._write(f"{indent}\twhile bpy.data.scenes.get({END_NAME_VAR}) != None:\n") - self._write(f"{indent}\t\t{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"\n") - self._write(f"{indent}\t\ti += 1\n\n") - - self._write(f"{indent}{SCENE_VAR} = bpy.context.window.scene.copy()\n\n") - self._write(f"{indent}{SCENE_VAR}.name = {END_NAME_VAR}\n") - self._write(f"{indent}{SCENE_VAR}.use_fake_user = True\n") - self._write(f"{indent}bpy.context.window.scene = {SCENE_VAR}\n") - - def _initialize_compositor_node_tree(self, outer, ntp_nt, nt_name): + self._write(f"# Generate unique scene name", indent) + self._write(f"{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}", + indent) + self._write(f"{END_NAME_VAR} = {BASE_NAME_VAR}", indent) + self._write(f"if bpy.data.scenes.get({END_NAME_VAR}) != None:", indent) + + indent2 = f"{indent}\t" + self._write(f"i = 1", indent2) + self._write(f"{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"", + indent2) + self._write(f"while bpy.data.scenes.get({END_NAME_VAR}) != None:", + indent2) + + indent3 = f"{indent}\t\t" + self._write(f"{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"", indent3) + self._write(f"i += 1\n", indent3) + + self._write(f"{SCENE_VAR} = bpy.context.window.scene.copy()\n", indent) + self._write(f"{SCENE_VAR}.name = {END_NAME_VAR}", indent) + self._write(f"{SCENE_VAR}.use_fake_user = True", indent) + self._write(f"bpy.context.window.scene = {SCENE_VAR}", indent) + + def _initialize_compositor_node_tree(self, ntp_nt, nt_name): #initialize node group - self._write(f"{outer}#initialize {nt_name} node group\n") - self._write(f"{outer}def {ntp_nt.var}_node_group():\n") + self._write(f"#initialize {nt_name} node group", self._outer) + self._write(f"def {ntp_nt.var}_node_group():", self._outer) - inner = f"{outer}\t" if ntp_nt.node_tree == self._base_node_tree: - self._write(f"{inner}{ntp_nt.var} = {SCENE_VAR}.node_tree\n") - self._write(f"{inner}#start with a clean node tree\n") - self._write(f"{inner}for node in {ntp_nt.var}.nodes:\n") - self._write(f"{inner}\t{ntp_nt.var}.nodes.remove(node)\n") + self._write(f"{ntp_nt.var} = {SCENE_VAR}.node_tree") + self._write(f"#start with a clean node tree") + self._write(f"for node in {ntp_nt.var}.nodes:") + self._write(f"\t{ntp_nt.var}.nodes.remove(node)") else: - self._write((f"{inner}{ntp_nt.var}" - f"= bpy.data.node_groups.new(" + self._write((f"{ntp_nt.var} = bpy.data.node_groups.new(" f"type = \'CompositorNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - self._write("\n") + f"name = {str_to_py_str(nt_name)})")) + self._write("") + + def _set_color_balance_settings(self, node: CompositorNodeColorBalance + ) -> None: + """ + Sets the color balance settings so we only set the active variables, + preventing conflict + + node (CompositorNodeColorBalance): the color balance node + """ + if node.correction_method == 'LIFT_GAMMA_GAIN': + lst = [("correction_method", ST.ENUM), + ("gain", ST.COLOR), + ("gamma", ST.COLOR), + ("lift", ST.COLOR)] + else: + lst = [("correction_method", ST.ENUM), + ("offset", ST.COLOR), + ("offset_basis", ST.FLOAT), + ("power", ST.COLOR), + ("slope", ST.COLOR)] + + self._settings['CompositorNodeColorBalance'] = lst - def _process_node(self, node: Node, ntp_nt: NTP_NodeTree, inner: str): - node_var: str = self._create_node(node, inner, ntp_nt.var) + def _process_node(self, node: Node, ntp_nt: NTP_NodeTree): + """ + Create node and set settings, defaults, and cosmetics + + Parameters: + node (Node): node to process + ntp_nt (NTP_NodeTree): the node tree that node belongs to + """ + node_var: str = self._create_node(node, ntp_nt.var) if node.bl_idname == 'CompositorNodeColorBalance': - if node.correction_method == 'LIFT_GAMMA_GAIN': - lst = [("correction_method", ST.ENUM), - ("gain", ST.COLOR), - ("gamma", ST.COLOR), - ("lift", ST.COLOR)] - else: - lst = [("correction_method", ST.ENUM), - ("offset", ST.COLOR), - ("offset_basis", ST.FLOAT), - ("power", ST.COLOR), - ("slope", ST.COLOR)] - - self._settings['CompositorNodeColorBalance'] = lst - - self._set_settings_defaults(node, inner, node_var) - self._hide_hidden_sockets(node, inner, node_var) + self._set_color_balance_settings(node) + + self._set_settings_defaults(node) + self._hide_hidden_sockets(node) if node.bl_idname == 'CompositorNodeGroup': - self._process_group_node_tree(node, node_var, inner) + self._process_group_node_tree(node) if bpy.app.version < (4, 0, 0): if node.bl_idname == 'NodeGroupInput' and not ntp_nt.inputs_set: - self._group_io_settings(node, inner, "input", ntp_nt) + self._group_io_settings(node, "input", ntp_nt) ntp_nt.inputs_set = True elif node.bl_idname == 'NodeGroupOutput' and not ntp_nt.outputs_set: - self._group_io_settings(node, inner, "output", ntp_nt) + self._group_io_settings(node, "output", ntp_nt) ntp_nt.outputs_set = True - self._set_socket_defaults(node, node_var, inner) + self._set_socket_defaults(node) - def _process_node_tree(self, node_tree, level): + def _process_node_tree(self, node_tree: CompositorNodeTree): """ Generates a Python function to recreate a compositor node tree Parameters: - node_tree (NodeTree): node tree to be recreated - level (int): number of tabs to use for each line - + node_tree (CompositorNodeTree): node tree to be recreated """ if node_tree == self._base_node_tree: nt_var = self._create_var(self.compositor_name) @@ -121,30 +141,29 @@ def _process_node_tree(self, node_tree, level): nt_var = self._create_var(node_tree.name) nt_name = node_tree.name - outer, inner = make_indents(level) + self._node_tree_vars[node_tree] = nt_var ntp_nt = NTP_NodeTree(node_tree, nt_var) - self._initialize_compositor_node_tree(outer, ntp_nt, nt_name) + self._initialize_compositor_node_tree(ntp_nt, nt_name) if bpy.app.version >= (4, 0, 0): - self._tree_interface_settings(inner, ntp_nt) + self._tree_interface_settings(ntp_nt) #initialize nodes - self._write(f"{inner}#initialize {nt_var} nodes\n") + self._write(f"#initialize {nt_var} nodes") for node in node_tree.nodes: - self._process_node(node, ntp_nt, inner) + self._process_node(node, ntp_nt) - self._set_parents(node_tree, inner) - self._set_locations(node_tree, inner) - self._set_dimensions(node_tree, inner) + self._set_parents(node_tree) + self._set_locations(node_tree) + self._set_dimensions(node_tree) - self._init_links(node_tree, inner, nt_var) + self._init_links(node_tree) - self._write(f"{inner}return {nt_var}\n") + self._write(f"return {nt_var}\n") - self._write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") - self._node_trees[node_tree] = nt_var + self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) def execute(self, context): #find node group to replicate @@ -164,6 +183,9 @@ def execute(self, context): comp_var = clean_string(self.compositor_name) if self.mode == 'ADDON': + self._outer = "\t\t" + self._inner = "\t\t\t" + self._setup_addon_directories(context, comp_var) self._file = open(f"{self._addon_dir}/__init__.py", "w") @@ -172,7 +194,7 @@ def execute(self, context): self._class_name = clean_string(self.compositor_name, lower=False) self._init_operator(comp_var, self.compositor_name) - self._write("\tdef execute(self, context):\n") + self._write("def execute(self, context):", "\t") else: self._file = StringIO("") @@ -181,19 +203,14 @@ def execute(self, context): self._create_scene("\t\t") elif self.mode == 'SCRIPT': self._create_scene("") - - if self.mode == 'ADDON': - level = 2 - else: - level = 0 node_trees_to_process = self._topological_sort(self._base_node_tree) for node_tree in node_trees_to_process: - self._process_node_tree(node_tree, level) + self._process_node_tree(node_tree) if self.mode == 'ADDON': - self._write("\t\treturn {'FINISHED'}\n\n") + self._write("return {'FINISHED'}\n", self._outer) self._create_menu_func() self._create_register_func() diff --git a/geometry/operator.py b/geometry/operator.py index 9698229..3a1fc95 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -36,8 +36,7 @@ def __init__(self): self._settings = geo_node_settings if bpy.app.version >= (3, 6, 0): - def _process_zone_output_node(self, node: GeometryNode, inner: str, - node_var: str) -> None: + def _process_zone_output_node(self, node: GeometryNode) -> None: is_sim = False if node.bl_idname == 'GeometryNodeSimulationOutput': items = "state_items" @@ -48,65 +47,69 @@ def _process_zone_output_node(self, node: GeometryNode, inner: str, self.report({'WARNING'}, f"NodeToPython: {node.bl_idname} is " f"not recognized as a valid zone output") - self._write(f"{inner}# Remove generated {items}\n") - self._write(f"{inner}for item in {node_var}.{items}:\n") - self._write(f"{inner}\t{node_var}.{items}.remove(item)\n") + node_var = self._node_vars[node] + + self._write(f"# Remove generated {items}") + self._write(f"for item in {node_var}.{items}:") + self._write(f"\t{node_var}.{items}.remove(item)") for i, item in enumerate(getattr(node, items)): socket_type = enum_to_py_str(item.socket_type) name = str_to_py_str(item.name) - self._write(f"{inner}# Create item {name}\n") - self._write(f"{inner}{node_var}.{items}.new" - f"({socket_type}, {name})\n") + self._write(f"# Create item {name}") + self._write(f"{node_var}.{items}.new" + f"({socket_type}, {name})") if is_sim: item_var = f"{node_var}.{items}[{i}]" - attr_domain = enum_to_py_str(item.attribute_domain) - self._write((f"{inner}{item_var}.attribute_domain = " - f"{attr_domain}\n")) + ad = enum_to_py_str(item.attribute_domain) + self._write(f"{item_var}.attribute_domain = {ad}") + + def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: + """ + Create node and set settings, defaults, and cosmetics - def _process_node(self, node: Node, ntp_node_tree: NTP_GeoNodeTree, - inner: str) -> None: - #create node - node_var: str = self._create_node(node, inner, ntp_node_tree.var) - self._set_settings_defaults(node, inner, node_var) + Parameters: + node (Node): node to process + ntp_nt (NTP_NodeTree): the node tree that node belongs to + """ + node_var: str = self._create_node(node, ntp_nt.var) + self._set_settings_defaults(node) if bpy.app.version < (4, 0, 0): - if node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", ntp_node_tree) - ntp_node_tree.inputs_set = True + if node.bl_idname == 'NodeGroupInput' and not ntp_nt.inputs_set: + self._group_io_settings(node, "input", ntp_nt) + ntp_nt.inputs_set = True - elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", ntp_node_tree) - ntp_node_tree.outputs_set = True + elif node.bl_idname == 'NodeGroupOutput' and not ntp_nt.outputs_set: + self._group_io_settings(node, "output", ntp_nt) + ntp_nt.outputs_set = True if node.bl_idname == 'GeometryNodeGroup': - self._process_group_node_tree(node, node_var, inner) + self._process_group_node_tree(node) elif node.bl_idname == 'GeometryNodeSimulationInput': - ntp_node_tree.sim_inputs.append(node) + ntp_nt.sim_inputs.append(node) elif node.bl_idname == 'GeometryNodeSimulationOutput': - self._process_zone_output_node(node, inner, node_var) + self._process_zone_output_node(node) elif node.bl_idname == 'GeometryNodeRepeatInput': - ntp_node_tree.repeat_inputs.append(node) + ntp_nt.repeat_inputs.append(node) elif node.bl_idname == 'GeometryNodeRepeatOutput': - self._process_zone_output_node(node, inner, node_var) + self._process_zone_output_node(node) - self._hide_hidden_sockets(node, inner, node_var) + self._hide_hidden_sockets(node) if node.bl_idname not in {'GeometryNodeSimulationInput', 'GeometryNodeRepeatInput'}: - self._set_socket_defaults(node, node_var, inner) + self._set_socket_defaults(node) if bpy.app.version >= (3, 6, 0): - def _process_zones(self, zone_inputs: list[GeometryNode], - inner: str) -> None: + def _process_zones(self, zone_inputs: list[GeometryNode]) -> None: """ Recreates a zone zone_inputs (list[GeometryNodeSimulationInput]): list of simulation input nodes - inner (str): identation string """ for zone_input in zone_inputs: zone_output = zone_input.paired_output @@ -114,45 +117,26 @@ def _process_zones(self, zone_inputs: list[GeometryNode], zone_input_var = self._node_vars[zone_input] zone_output_var = self._node_vars[zone_output] - self._write(f"{inner}#Process zone input {zone_input.name}\n") - self._write((f"{inner}{zone_input_var}.pair_with_output" - f"({zone_output_var})\n")) + self._write(f"#Process zone input {zone_input.name}") + self._write(f"{zone_input_var}.pair_with_output" + f"({zone_output_var})") #must set defaults after paired with output - self._set_socket_defaults(zone_input, zone_input_var, inner) - self._set_socket_defaults(zone_output, zone_output_var, inner) - self._write("\n") - - def _process_node_tree(self, node_tree: GeometryNodeTree, - level: int) -> None: - """ - Generates a Python function to recreate a node tree - - Parameters: - node_tree (GeometryNodeTree): geometry node tree to be recreated - level (int): number of tabs to use for each line, used with - node groups within node groups and script/add-on differences - """ - - nt_var = self._create_var(node_tree.name) - outer, inner = make_indents(level) #TODO: put in NTP_NodeTree class? - # Eventually these should go away anyways, and level of indentation depends just on the mode + self._set_socket_defaults(zone_input) + self._set_socket_defaults(zone_output) + self._write("") - #initialize node group - self._write(f"{outer}#initialize {nt_var} node group\n") - self._write(f"{outer}def {nt_var}_node_group():\n") - self._write((f"{inner}{nt_var} = bpy.data.node_groups.new(" - f"type = \'GeometryNodeTree\', " - f"name = {str_to_py_str(node_tree.name)})\n")) - self._write("\n") - - if bpy.app.version >= (4, 0, 0): + if bpy.app.version >= (4, 0, 0): + def _set_geo_tree_properties(self, node_tree: GeometryNodeTree) -> None: is_mod = node_tree.is_modifier is_tool = node_tree.is_tool + + nt_var = self._node_tree_vars[node_tree] + if is_mod: - self._write(f"{inner}{nt_var}.is_modifier = True\n") + self._write(f"{nt_var}.is_modifier = True") if is_tool: - self._write(f"{inner}{nt_var}.is_tool = True\n") + self._write(f"{nt_var}.is_tool = True") tool_flags = ["is_mode_edit", "is_mode_sculpt", @@ -161,52 +145,70 @@ def _process_node_tree(self, node_tree: GeometryNodeTree, "is_type_point_cloud"] for flag in tool_flags: - self._write(f"{inner}{nt_var}.{flag} = " - f"{getattr(node_tree, flag)}\n") - self._write("\n") + self._write(f"{nt_var}.{flag} = {getattr(node_tree, flag)}") + self._write("") + + def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: + """ + Generates a Python function to recreate a node tree + + Parameters: + node_tree (GeometryNodeTree): geometry node tree to be recreated + """ + + nt_var = self._create_var(node_tree.name) + self._node_tree_vars[node_tree] = nt_var + + #initialize node group + self._write(f"#initialize {nt_var} node group", self._outer) + self._write(f"def {nt_var}_node_group():", self._outer) + self._write(f"{nt_var} = bpy.data.node_groups.new(" + f"type = \'GeometryNodeTree\', " + f"name = {str_to_py_str(node_tree.name)})\n") + + if bpy.app.version >= (4, 0, 0): + self._set_geo_tree_properties(node_tree) #initialize nodes - self._write(f"{inner}#initialize {nt_var} nodes\n") + self._write(f"#initialize {nt_var} nodes") ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) if bpy.app.version >= (4, 0, 0): - self._tree_interface_settings(inner, ntp_nt) + self._tree_interface_settings(ntp_nt) for node in node_tree.nodes: - self._process_node(node, ntp_nt, inner) + self._process_node(node, ntp_nt) if bpy.app.version >= (3, 6, 0): - self._process_zones(ntp_nt.sim_inputs, inner) + self._process_zones(ntp_nt.sim_inputs) if bpy.app.version >= (4, 0, 0): - self._process_zones(ntp_nt.repeat_inputs, inner) + self._process_zones(ntp_nt.repeat_inputs) #set look of nodes - self._set_parents(node_tree, inner) - self._set_locations(node_tree, inner) - self._set_dimensions(node_tree, inner) + self._set_parents(node_tree) + self._set_locations(node_tree) + self._set_dimensions(node_tree) #create connections - self._init_links(node_tree, inner, nt_var) + self._init_links(node_tree) - self._write(f"{inner}return {nt_var}\n") + self._write(f"return {nt_var}\n") #create node group - self._write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") - - self._node_trees[node_tree] = nt_var + self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): #get object - self._write(f"\t\tname = bpy.context.object.name\n") - self._write(f"\t\tobj = bpy.data.objects[name]\n") + self._write(f"name = bpy.context.object.name", self._outer) + self._write(f"obj = bpy.data.objects[name]", self._outer) #set modifier to the one we just created mod_name = str_to_py_str(nt.name) - self._write((f"\t\tmod = obj.modifiers.new(name = {mod_name}, " - f"type = 'NODES')\n")) - self._write(f"\t\tmod.node_group = {nt_var}\n") + self._write(f"mod = obj.modifiers.new(name = {mod_name}, " + f"type = 'NODES')", self._outer) + self._write(f"mod.node_group = {nt_var}", self._outer) def execute(self, context): @@ -217,6 +219,9 @@ def execute(self, context): nt_var = clean_string(nt.name) if self.mode == 'ADDON': + self._outer = "\t\t" + self._inner = "\t\t\t" + self._setup_addon_directories(context, nt_var) self._file = open(f"{self._addon_dir}/__init__.py", "w") @@ -224,23 +229,18 @@ def execute(self, context): self._create_header(nt.name) self._class_name = clean_string(nt.name, lower = False) self._init_operator(nt_var, nt.name) - self._write("\tdef execute(self, context):\n") + self._write("def execute(self, context):", "\t") else: self._file = StringIO("") - - if self.mode == 'ADDON': - level = 2 - else: - level = 0 node_trees_to_process = self._topological_sort(nt) for node_tree in node_trees_to_process: - self._process_node_tree(node_tree, level) + self._process_node_tree(node_tree) if self.mode == 'ADDON': self._apply_modifier(nt, nt_var) - self._write("\t\treturn {'FINISHED'}\n\n") + self._write("return {'FINISHED'}\n", self._outer) self._create_menu_func() self._create_register_func() self._create_unregister_func() diff --git a/material/operator.py b/material/operator.py index 72bd339..a253238 100644 --- a/material/operator.py +++ b/material/operator.py @@ -24,64 +24,61 @@ def __init__(self): self._settings = shader_node_settings def _create_material(self, indent: str): - self._write((f"{indent}{MAT_VAR} = bpy.data.materials.new(" - f"name = {str_to_py_str(self.material_name)})\n")) - self._write(f"{indent}{MAT_VAR}.use_nodes = True\n") + self._write(f"{MAT_VAR} = bpy.data.materials.new(" + f"name = {str_to_py_str(self.material_name)})", indent) + self._write(f"{MAT_VAR}.use_nodes = True", indent) - def _initialize_shader_node_tree(self, outer: str, ntp_node_tree: NTP_NodeTree, nt_name: str) -> None: + def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, + nt_name: str) -> None: """ Initialize the shader node group Parameters: - outer (str): indentation level ntp_node_tree (NTP_NodeTree): node tree to be generated and variable to use nt_name (str): name to use for the node tree """ - self._write(f"{outer}#initialize {nt_name} node group\n") - self._write(f"{outer}def {ntp_node_tree.var}_node_group():\n") + self._write(f"#initialize {nt_name} node group", self._outer) + self._write(f"def {ntp_node_tree.var}_node_group():\n", self._outer) - inner = f"{outer}\t" if ntp_node_tree.node_tree == self._base_node_tree: - self._write(f"{inner}{ntp_node_tree.var} = {MAT_VAR}.node_tree\n") - self._write(f"{inner}#start with a clean node tree\n") - self._write(f"{inner}for node in {ntp_node_tree.var}.nodes:\n") - self._write(f"{inner}\t{ntp_node_tree.var}.nodes.remove(node)\n") + self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree") + self._write(f"#start with a clean node tree") + self._write(f"for node in {ntp_node_tree.var}.nodes:") + self._write(f"\t{ntp_node_tree.var}.nodes.remove(node)") else: - self._write((f"{inner}{ntp_node_tree.var} = bpy.data.node_groups.new(" + self._write((f"{ntp_node_tree.var} = bpy.data.node_groups.new(" f"type = \'ShaderNodeTree\', " - f"name = {str_to_py_str(nt_name)})\n")) - self._write("\n") + f"name = {str_to_py_str(nt_name)})")) + self._write("") - def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str) -> None: + def _process_node(self, node: Node, ntp_nt: NTP_NodeTree) -> None: """ - Creates a node and sets settings, inputs, outputs, and cosmetics + Create node and set settings, defaults, and cosmetics Parameters: node (Node): node to process - ntp_node_tree (NTP_NodeTree): node tree the node belongs to, and - variable to use - inner + ntp_nt (NTP_NodeTree): the node tree that node belongs to """ - node_var: str = self._create_node(node, inner, ntp_node_tree.var) - self._set_settings_defaults(node, inner, node_var) + node_var: str = self._create_node(node, ntp_nt.var) + self._set_settings_defaults(node) if bpy.app.version < (4, 0, 0): - if node.bl_idname == 'NodeGroupInput' and not ntp_node_tree.inputs_set: - self._group_io_settings(node, inner, "input", ntp_node_tree) - ntp_node_tree.inputs_set = True + if node.bl_idname == 'NodeGroupInput' and not ntp_nt.inputs_set: + self._group_io_settings(node, "input", ntp_nt) + ntp_nt.inputs_set = True - elif node.bl_idname == 'NodeGroupOutput' and not ntp_node_tree.outputs_set: - self._group_io_settings(node, inner, "output", ntp_node_tree) - ntp_node_tree.outputs_set = True + elif node.bl_idname == 'NodeGroupOutput' and not ntp_nt.outputs_set: + self._group_io_settings(node, "output", ntp_nt) + ntp_nt.outputs_set = True if node.bl_idname == 'ShaderNodeGroup': - self._process_group_node_tree(node, node_var, inner) + self._process_group_node_tree(node) - self._hide_hidden_sockets(node, inner, node_var) - self._set_socket_defaults(node, node_var, inner) + self._hide_hidden_sockets(node) + self._set_socket_defaults(node) - def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: + def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: """ Generates a Python function to recreate a node tree @@ -98,32 +95,30 @@ def _process_node_tree(self, node_tree: ShaderNodeTree, level: int) -> None: nt_var = self._create_var(node_tree.name) nt_name = node_tree.name - outer, inner = make_indents(level) + self._node_tree_vars[node_tree] = nt_var ntp_nt = NTP_NodeTree(node_tree, nt_var) - self._initialize_shader_node_tree(outer, ntp_nt, nt_name) + self._initialize_shader_node_tree(ntp_nt, nt_name) if bpy.app.version >= (4, 0, 0): - self._tree_interface_settings(inner, ntp_nt) + self._tree_interface_settings(ntp_nt) #initialize nodes - self._write(f"{inner}#initialize {nt_var} nodes\n") + self._write(f"#initialize {nt_var} nodes") for node in node_tree.nodes: - self._process_node(node, ntp_nt, inner) - - self._set_parents(node_tree, inner) - self._set_locations(node_tree, inner) - self._set_dimensions(node_tree, inner) + self._process_node(node, ntp_nt) - self._init_links(node_tree, inner, nt_var) + self._set_parents(node_tree) + self._set_locations(node_tree) + self._set_dimensions(node_tree) - self._write(f"{inner}return {nt_var}\n") + self._init_links(node_tree) - self._write(f"\n{outer}{nt_var} = {nt_var}_node_group()\n\n") + self._write(f"return {nt_var}\n") - self._node_trees[node_tree] = nt_var + self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) def execute(self, context): @@ -138,6 +133,9 @@ def execute(self, context): mat_var = clean_string(self.material_name) if self.mode == 'ADDON': + self._outer = "\t\t" + self._inner = "\t\t\t" + self._setup_addon_directories(context, mat_var) self._file = open(f"{self._addon_dir}/__init__.py", "w") @@ -146,27 +144,22 @@ def execute(self, context): self._class_name = clean_string(self.material_name, lower=False) self._init_operator(mat_var, self.material_name) - self._write("\tdef execute(self, context):\n") + self._write("def execute(self, context):", "\t") else: self._file = StringIO("") if self.mode == 'ADDON': self._create_material("\t\t") elif self.mode == 'SCRIPT': - self._create_material("") - - if self.mode == 'ADDON': - level = 2 - else: - level = 0 + self._create_material("") node_trees_to_process = self._topological_sort(self._base_node_tree) for node_tree in node_trees_to_process: - self._process_node_tree(node_tree, level) + self._process_node_tree(node_tree) if self.mode == 'ADDON': - self._write("\t\treturn {'FINISHED'}\n\n") + self._write("return {'FINISHED'}", self._outer) self._create_menu_func() self._create_register_func() self._create_unregister_func() diff --git a/ntp_operator.py b/ntp_operator.py index 8f33e3e..a4b4181 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -66,11 +66,16 @@ def __init__(self): # Class named for the generated operator self._class_name: str = None + # Indentation to use for the default write function + self._outer: str = "" + self._inner: str = "\t" + + # Base node tree we're converting self._base_node_tree: NodeTree = None # Dictionary to keep track of node tree->variable name pairs - self._node_trees: dict[NodeTree, str] = {} + self._node_tree_vars: dict[NodeTree, str] = {} # Dictionary to keep track of node->variable name pairs self._node_vars: dict[Node, str] = {} @@ -81,8 +86,10 @@ def __init__(self): # Dictionary used for setting node properties self._settings: dict[str, list[(str, ST)]] = {} - def _write(self, string: str): - self._file.write(string) + def _write(self, string: str, indent: str = None): + if indent is None: + indent = self._inner + self._file.write(f"{indent}{string}\n") def _setup_addon_directories(self, context: Context, nt_var: str) -> None: """ @@ -111,19 +118,17 @@ def _create_header(self, name: str) -> None: name (str): name of the add-on """ - self._write("bl_info = {\n") - self._write(f"\t\"name\" : \"{name}\",\n") - self._write("\t\"author\" : \"Node To Python\",\n") - self._write("\t\"version\" : (1, 0, 0),\n") - self._write(f"\t\"blender\" : {bpy.app.version},\n") - self._write("\t\"location\" : \"Object\",\n") # TODO - self._write("\t\"category\" : \"Node\"\n") - self._write("}\n") - self._write("\n") - self._write("import bpy\n") - self._write("import mathutils\n") - self._write("import os\n") - self._write("\n") + self._write("bl_info = {", "") + self._write(f"\t\"name\" : \"{name}\",", "") + self._write("\t\"author\" : \"Node To Python\",", "") + self._write("\t\"version\" : (1, 0, 0),", "") + self._write(f"\t\"blender\" : {bpy.app.version},", "") + self._write("\t\"location\" : \"Object\",", "") # TODO + self._write("\t\"category\" : \"Node\"", "") + self._write("}\n", "") + self._write("import bpy", "") + self._write("import mathutils", "") + self._write("import os\n", "") def _init_operator(self, idname: str, label: str) -> None: """ @@ -135,11 +140,11 @@ def _init_operator(self, idname: str, label: str) -> None: idname (str): name for the operator label (str): appearence inside Blender """ - self._write(f"class {self._class_name}(bpy.types.Operator):\n") - self._write(f"\tbl_idname = \"object.{idname}\"\n") - self._write(f"\tbl_label = \"{label}\"\n") - self._write("\tbl_options = {\'REGISTER\', \'UNDO\'}\n") - self._write("\n") + self._write(f"class {self._class_name}(bpy.types.Operator):", "") + self._write(f"\tbl_idname = \"object.{idname}\"", "") + self._write(f"\tbl_label = \"{label}\"", "") + self._write("\tbl_options = {\'REGISTER\', \'UNDO\'}", "") + self._write("") def _topological_sort(self, node_tree: NodeTree) -> list[NodeTree]: """ @@ -181,22 +186,20 @@ def dfs(nt: NodeTree) -> None: return result - def _process_group_node_tree(self, node: Node, node_var: str, inner: str - ) -> None: + def _process_group_node_tree(self, node: Node) -> None: """ Processes node tree of group node if one is present Parameters: node (Node): the group node - node_var (str): variable for the group node - inner (str): indentation """ node_tree = node.node_tree if node_tree is None: return - if node_tree in self._node_trees: - nt_var = self._node_trees[node_tree] - self._write((f"{inner}{node_var}.node_tree = {nt_var}\n")) + if node_tree in self._node_tree_vars: + nt_var = self._node_tree_vars[node_tree] + node_var = self._node_vars[node] + self._write(f"{node_var}.node_tree = {nt_var}") else: self.report({'WARNING'}, (f"NodeToPython: Node tree dependency graph " f"wasn't properly initialized")) @@ -224,52 +227,49 @@ def _create_var(self, name: str) -> str: self._used_vars[var] = 0 return clean_name - def _create_node(self, node: Node, inner: str, node_tree_var: str) -> str: + def _create_node(self, node: Node, node_tree_var: str) -> str: """ Initializes a new node with location, dimension, and label info Parameters: node (bpy.types.Node): node to be copied - inner (str): indentation level for this logic node_tree_var (str): variable name for the node tree Returns: node_var (str): variable name for the node """ - self._write(f"{inner}#node {node.name}\n") + self._write(f"#node {node.name}") node_var = self._create_var(node.name) self._node_vars[node] = node_var - self._write((f"{inner}{node_var} " - f"= {node_tree_var}.nodes.new(\"{node.bl_idname}\")\n")) + idname = str_to_py_str(node.bl_idname) + self._write(f"{node_var} = {node_tree_var}.nodes.new({idname})") + # label if node.label: - self._write(f"{inner}{node_var}.label = \"{node.label}\"\n") + self._write(f"{node_var}.label = {str_to_py_str(node.label)}") # name - self._write(f"{inner}{node_var}.name = \"{node.name}\"\n") + self._write(f"{node_var}.name = {str_to_py_str(node.name)}") # color if node.use_custom_color: - self._write(f"{inner}{node_var}.use_custom_color = True\n") - self._write( - f"{inner}{node_var}.color = {vec3_to_py_str(node.color)}\n") + self._write(f"{node_var}.use_custom_color = True") + self._write(f"{node_var}.color = {vec3_to_py_str(node.color)}") # mute if node.mute: - self._write(f"{inner}{node_var}.mute = True\n") + self._write(f"{node_var}.mute = True") return node_var - def _set_settings_defaults(self, node: Node, inner: str, node_var: str - ) -> None: + def _set_settings_defaults(self, node: Node) -> None: """ Sets the defaults for any settings a node may have Parameters: node (bpy.types.Node): the node object we're copying settings from - inner (str): indentation node_var (str): name of the variable we're using for the node in our add-on """ if node.bl_idname not in self._settings: @@ -278,6 +278,8 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str f"settings. Your Blender version may not be supported")) return + node_var = self._node_vars[node] + for (attr_name, type) in self._settings[node.bl_idname]: if not hasattr(node, attr_name): self.report({'WARNING'}, @@ -289,53 +291,51 @@ def _set_settings_defaults(self, node: Node, inner: str, node_var: str if attr is None: continue - setting_str = f"{inner}{node_var}.{attr_name}" + setting_str = f"{node_var}.{attr_name}" if type == ST.ENUM: if attr != '': - self._write(f"{setting_str} = {enum_to_py_str(attr)}\n") + self._write(f"{setting_str} = {enum_to_py_str(attr)}") elif type == ST.ENUM_SET: - self._write(f"{setting_str} = {attr}\n") + self._write(f"{setting_str} = {attr}") elif type == ST.STRING: - self._write(f"{setting_str} = {str_to_py_str(attr)}\n") + self._write(f"{setting_str} = {str_to_py_str(attr)}") elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: - self._write(f"{setting_str} = {attr}\n") + self._write(f"{setting_str} = {attr}") elif type == ST.VEC1: - self._write(f"{setting_str} = {vec1_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec1_to_py_str(attr)}") elif type == ST.VEC2: - self._write(f"{setting_str} = {vec2_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec2_to_py_str(attr)}") elif type == ST.VEC3: - self._write(f"{setting_str} = {vec3_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec3_to_py_str(attr)}") elif type == ST.VEC4: - self._write(f"{setting_str} = {vec4_to_py_str(attr)}\n") + self._write(f"{setting_str} = {vec4_to_py_str(attr)}") elif type == ST.COLOR: - self._write(f"{setting_str} = {color_to_py_str(attr)}\n") + self._write(f"{setting_str} = {color_to_py_str(attr)}") elif type == ST.MATERIAL: name = str_to_py_str(attr.name) - self._write((f"{inner}if {name} in bpy.data.materials:\n")) - self._write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.materials[{name}]\n")) + self._write((f"if {name} in bpy.data.materials:")) + self._write((f"\t{node_var}.{attr_name} = " + f"bpy.data.materials[{name}]")) elif type == ST.OBJECT: name = str_to_py_str(attr.name) - self._write((f"{inner}if {name} in bpy.data.objects:\n")) - self._write((f"{inner}\t{node_var}.{attr_name} = " - f"bpy.data.objects[{name}]\n")) + self._write((f"if {name} in bpy.data.objects:")) + self._write((f"\t{node_var}.{attr_name} = " + f"bpy.data.objects[{name}]")) elif type == ST.COLOR_RAMP: - self._color_ramp_settings(node, inner, node_var, attr_name) + self._color_ramp_settings(node, attr_name) elif type == ST.CURVE_MAPPING: - self._curve_mapping_settings(node, inner, node_var, attr_name) + self._curve_mapping_settings(node, attr_name) elif type == ST.IMAGE: if self._addon_dir is not None and attr is not None: if attr.source in {'FILE', 'GENERATED', 'TILED'}: self._save_image(attr) - self._load_image( - attr, inner, f"{node_var}.{attr_name}") + self._load_image(attr, f"{node_var}.{attr_name}") elif type == ST.IMAGE_USER: - self._image_user_settings( - attr, inner, f"{node_var}.{attr_name}") + self._image_user_settings(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, - inner: str, socket_var: str) -> None: + socket_var: str) -> None: """ Set a node group input/output's default properties if they exist Helper function to _group_io_settings() @@ -343,7 +343,6 @@ def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, Parameters: socket_interface (NodeSocketInterface): socket interface associated with the input/output - inner (str): indentation string socket_var (str): variable name for the socket """ if socket_interface.type not in self.default_sockets_v3: @@ -355,18 +354,18 @@ def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, dv = vec3_to_py_str(socket_interface.default_value) else: dv = socket_interface.default_value - self._write(f"{inner}{socket_var}.default_value = {dv}\n") + self._write(f"{socket_var}.default_value = {dv}") # min value if hasattr(socket_interface, "min_value"): min_val = socket_interface.min_value - self._write(f"{inner}{socket_var}.min_value = {min_val}\n") + self._write(f"{socket_var}.min_value = {min_val}") # max value if hasattr(socket_interface, "min_value"): max_val = socket_interface.max_value - self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) + self._write(f"{socket_var}.max_value = {max_val}") - def _group_io_settings(self, node: bpy.types.Node, inner: str, + def _group_io_settings(self, node: Node, io: str, # TODO: convert to enum ntp_node_tree: NTP_NodeTree) -> None: """ @@ -374,7 +373,6 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, Parameters: node (bpy.types.Node) : group input/output node - inner (str): indentation string io (str): whether we're generating the input or output settings node_tree_var (str): variable name of the generated node tree node_tree (bpy.types.NodeTree): node tree that we're generating @@ -390,57 +388,50 @@ def _group_io_settings(self, node: bpy.types.Node, inner: str, io_sockets = node.inputs io_socket_interfaces = node_tree.outputs - self._write(f"{inner}#{node_tree_var} {io}s\n") + self._write(f"#{node_tree_var} {io}s") for i, inout in enumerate(io_sockets): if inout.bl_idname == 'NodeSocketVirtual': continue - self._write(f"{inner}#{io} {inout.name}\n") + self._write(f"#{io} {inout.name}") idname = enum_to_py_str(inout.bl_idname) name = str_to_py_str(inout.name) - self._write( - f"{inner}{node_tree_var}.{io}s.new({idname}, {name})\n") + self._write(f"{node_tree_var}.{io}s.new({idname}, {name})") socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" - self._set_group_socket_defaults(socket_interface, inner, - socket_var) + self._set_group_socket_default(socket_interface, socket_var) # default attribute name if hasattr(socket_interface, "default_attribute_name"): if socket_interface.default_attribute_name != "": - dan = str_to_py_str( - socket_interface.default_attribute_name) - self._write((f"{inner}{socket_var}" - f".default_attribute_name = {dan}\n")) + dan = str_to_py_str(socket_interface.default_attribute_name) + self._write(f"{socket_var}.default_attribute_name = {dan}") # attribute domain if hasattr(socket_interface, "attribute_domain"): ad = enum_to_py_str(socket_interface.attribute_domain) - self._write( - f"{inner}{socket_var}.attribute_domain = {ad}\n") + self._write(f"{socket_var}.attribute_domain = {ad}") # tooltip if socket_interface.description != "": description = str_to_py_str(socket_interface.description) - self._write( - (f"{inner}{socket_var}.description = {description}\n")) + self._write(f"{socket_var}.description = {description}") # hide_value if socket_interface.hide_value is True: - self._write(f"{inner}{socket_var}.hide_value = True\n") + self._write(f"{socket_var}.hide_value = True") # hide in modifier if hasattr(socket_interface, "hide_in_modifier"): if socket_interface.hide_in_modifier is True: - self._write( - f"{inner}{socket_var}.hide_in_modifier = True\n") + self._write(f"{socket_var}.hide_in_modifier = True") - self._write("\n") - self._write("\n") + self._write("") + self._write("") elif bpy.app.version >= (4, 0, 0): def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, - inner: str, socket_var: str) -> None: + socket_var: str) -> None: """ Set a node tree input/output's default properties if they exist @@ -449,7 +440,6 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, Parameters: socket_interface (NodeTreeInterfaceSocket): socket interface associated with the input/output - inner (str): indentation string socket_var (str): variable name for the socket """ if type(socket_interface) in self.nondefault_sockets_v4: @@ -465,18 +455,18 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, dv = array_to_py_str(dv) elif type(dv) == str: dv = str_to_py_str(dv) - self._write(f"{inner}{socket_var}.default_value = {dv}\n") + self._write(f"{socket_var}.default_value = {dv}") # min value if hasattr(socket_interface, "min_value"): min_val = socket_interface.min_value - self._write(f"{inner}{socket_var}.min_value = {min_val}\n") + self._write(f"{socket_var}.min_value = {min_val}") # max value if hasattr(socket_interface, "min_value"): max_val = socket_interface.max_value - self._write((f"{inner}{socket_var}.max_value = {max_val}\n")) + self._write(f"{socket_var}.max_value = {max_val}") - def _create_socket(self, inner: str, socket: NodeTreeInterfaceSocket, + def _create_socket(self, socket: NodeTreeInterfaceSocket, parent: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel, str], ntp_nt: NTP_NodeTree) -> None: @@ -486,7 +476,6 @@ def _create_socket(self, inner: str, socket: NodeTreeInterfaceSocket, Helper function to _process_items() Parameters: - inner (str): indentation string socket (NodeTreeInterfaceSocket): the socket to recreate parent (NodeTreeInterfacePanel): parent panel of the socket (possibly None) @@ -494,7 +483,7 @@ def _create_socket(self, inner: str, socket: NodeTreeInterfaceSocket, ntp_nt (NTP_NodeTree): owner of the socket """ - self._write(f"{inner}#Socket {socket.name}\n") + self._write(f"#Socket {socket.name}") # initialization socket_var = self._create_var(socket.name + "_socket") name = str_to_py_str(socket.name) @@ -519,53 +508,49 @@ def _create_socket(self, inner: str, socket: NodeTreeInterfaceSocket, else: optional_parent_str = f", parent = {panel_dict[parent]}" - self._write(f"{inner}{socket_var} = " + self._write(f"{socket_var} = " f"{ntp_nt.var}.interface.new_socket(" f"name = {name}, in_out={in_out_enum}, " f"socket_type = {socket_type}" - f"{optional_parent_str})\n") + f"{optional_parent_str})") # subtype if hasattr(socket, "subtype"): subtype = enum_to_py_str(socket.subtype) - self._write(f"{inner}{socket_var}.subtype = {subtype}\n") + self._write(f"{socket_var}.subtype = {subtype}") - self._set_tree_socket_defaults(socket, inner, socket_var) + self._set_tree_socket_defaults(socket, socket_var) # default attribute name if socket.default_attribute_name != "": dan = str_to_py_str( socket.default_attribute_name) - self._write( - (f"{inner}{socket_var}.default_attribute_name = {dan}\n")) + self._write(f"{socket_var}.default_attribute_name = {dan}") # attribute domain ad = enum_to_py_str(socket.attribute_domain) - self._write(f"{inner}{socket_var}.attribute_domain = {ad}\n") + self._write(f"{socket_var}.attribute_domain = {ad}") # hide_value if socket.hide_value is True: - self._write(f"{inner}{socket_var}.hide_value = True\n") + self._write(f"{socket_var}.hide_value = True") # hide in modifier if socket.hide_in_modifier is True: - self._write( - f"{inner}{socket_var}.hide_in_modifier = True\n") + self._write(f"{socket_var}.hide_in_modifier = True") # force non field if socket.force_non_field is True: - self._write( - f"{inner}{socket_var}.force_non_field = True\n") + self._write(f"{socket_var}.force_non_field = True") # tooltip if socket.description != "": description = str_to_py_str(socket.description) - self._write( - (f"{inner}{socket_var}.description = {description}\n")) + self._write(f"{socket_var}.description = {description}") - self._write("\n") + self._write("") - def _create_panel(self, inner: str, panel: NodeTreeInterfacePanel, + def _create_panel(self, panel: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel], items_processed: set[NodeTreeInterfacePanel], parent: NodeTreeInterfacePanel, ntp_nt: NTP_NodeTree): @@ -575,7 +560,6 @@ def _create_panel(self, inner: str, panel: NodeTreeInterfacePanel, Helper function to _process_items() Parameters: - inner (str): indentation string panel (NodeTreeInterfacePanel): the panel to recreate panel_dict (dict[NodeTreeInterfacePanel, str]: panel -> variable items_processed (set[NodeTreeInterfacePanel]): set of already @@ -585,7 +569,7 @@ def _create_panel(self, inner: str, panel: NodeTreeInterfacePanel, ntp_nt (NTP_NodeTree): owner of the socket """ - self._write(f"{inner}#Panel {panel.name}\n") + self._write(f"#Panel {panel.name}") panel_var = self._create_var(panel.name + "_panel") panel_dict[panel] = panel_var @@ -603,25 +587,24 @@ def _create_panel(self, inner: str, panel: NodeTreeInterfacePanel, parent_str = f", parent = {panel_dict[parent]}" - self._write(f"{inner}{panel_var} = " + self._write(f"{panel_var} = " f"{ntp_nt.var}.interface.new_panel(" f"{str_to_py_str(panel.name)}{description_str}" - f"{closed_str}{parent_str})\n") + f"{closed_str}{parent_str})") # tooltip if panel.description != "": description = str_to_py_str(panel.description) - self._write( - (f"{inner}{panel_var}.description = {description}\n")) + self._write(f"{panel_var}.description = {description}") panel_dict[panel] = panel_var if len(panel.interface_items) > 0: - self._process_items(inner, panel, panel_dict, items_processed, ntp_nt) + self._process_items(panel, panel_dict, items_processed, ntp_nt) - self._write("\n") + self._write("") - def _process_items(self, inner: str, parent: NodeTreeInterfacePanel, + def _process_items(self, parent: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel], items_processed: set[NodeTreeInterfacePanel], ntp_nt: NTP_NodeTree) -> None: @@ -632,7 +615,6 @@ def _process_items(self, inner: str, parent: NodeTreeInterfacePanel, Helper function to _tree_interface_settings() Parameters: - inner (str): indentation string parent (NodeTreeInterfacePanel): parent panel of the layer (possibly None to signify the base) panel_dict (dict[NodeTreeInterfacePanel, str]: panel -> variable @@ -653,48 +635,41 @@ def _process_items(self, inner: str, parent: NodeTreeInterfacePanel, items_processed.add(item) - print(item.name, items_processed) - if item.item_type == 'SOCKET': - self._create_socket(inner, item, parent, panel_dict, ntp_nt) + self._create_socket(item, parent, panel_dict, ntp_nt) elif item.item_type == 'PANEL': - self._create_panel(inner, item, panel_dict, items_processed, + self._create_panel(item, panel_dict, items_processed, parent, ntp_nt) - def _tree_interface_settings(self, inner: str, ntp_nt: NTP_NodeTree - ) -> None: + def _tree_interface_settings(self, ntp_nt: NTP_NodeTree) -> None: """ Set the settings for group input and output sockets Parameters: - inner (str): indentation string ntp_nt (NTP_NodeTree): the node tree to set the interface for """ - self._write(f"{inner}#{ntp_nt.var} interface\n") + self._write(f"#{ntp_nt.var} interface") panel_dict: dict[NodeTreeInterfacePanel, str] = {} items_processed: set[NodeTreeInterfaceItem] = set() - self._process_items(inner, None, panel_dict, items_processed, ntp_nt) + self._process_items(None, panel_dict, items_processed, ntp_nt) - self._write("\n") + self._write("") - def _set_input_defaults(self, node: bpy.types.Node, inner: str, - node_var: str) -> None: + def _set_input_defaults(self, node: Node) -> None: """ Sets defaults for input sockets Parameters: - node (bpy.types.Node): node we're setting inputs for - inner (str): indentation - node_var (str): variable name we're using for the copied node - addon_dir (str): directory of the add-on, for if we need to save other - objects for the add-on + node (Node): node we're setting inputs for """ if node.bl_idname == 'NodeReroute': return + node_var = self._node_vars[node] + for i, input in enumerate(node.inputs): if input.bl_idname not in dont_set_defaults and not input.is_linked: # TODO: this could be cleaner @@ -721,48 +696,42 @@ def _set_input_defaults(self, node: bpy.types.Node, inner: str, img = input.default_value if img is not None and self._addon_dir != None: # write in a better way self._save_image(img) - self._load_image( - img, inner, f"{socket_var}.default_value") + self._load_image(img, f"{socket_var}.default_value") default_val = None # materials elif input.bl_idname == 'NodeSocketMaterial': - self._in_file_inputs(input, inner, socket_var, "materials") + self._in_file_inputs(input, socket_var, "materials") default_val = None # collections elif input.bl_idname == 'NodeSocketCollection': - self._in_file_inputs( - input, inner, socket_var, "collections") + self._in_file_inputs(input, socket_var, "collections") default_val = None # objects elif input.bl_idname == 'NodeSocketObject': - self._in_file_inputs(input, inner, socket_var, "objects") + self._in_file_inputs(input, socket_var, "objects") default_val = None # textures elif input.bl_idname == 'NodeSocketTexture': - self._in_file_inputs(input, inner, socket_var, "textures") + self._in_file_inputs(input, socket_var, "textures") default_val = None else: default_val = input.default_value if default_val is not None: - self._write(f"{inner}#{input.identifier}\n") - self._write((f"{inner}{socket_var}.default_value" - f" = {default_val}\n")) - self._write("\n") + self._write(f"#{input.identifier}") + self._write(f"{socket_var}.default_value = {default_val}") + self._write("") - def _set_output_defaults(self, node: bpy.types.Node, - inner: str, node_var: str) -> None: + def _set_output_defaults(self, node: Node) -> None: """ Some output sockets need default values set. It's rather annoying Parameters: node (bpy.types.Node): node for the output we're setting - inner (str): indentation string - node_var (str): variable name for the node we're setting output defaults for """ # TODO: probably should define elsewhere output_default_nodes = {'ShaderNodeValue', @@ -775,24 +744,22 @@ def _set_output_defaults(self, node: bpy.types.Node, if node.bl_idname not in output_default_nodes: return + node_var = self._node_vars[node] + dv = node.outputs[0].default_value if node.bl_idname in {'ShaderNodeRGB', 'CompositorNodeRGB'}: dv = vec4_to_py_str(list(dv)) if node.bl_idname in {'ShaderNodeNormal', 'CompositorNodeNormal'}: dv = vec3_to_py_str(dv) - self._write((f"{inner}{node_var}.outputs[0].default_value = {dv}\n")) + self._write(f"{node_var}.outputs[0].default_value = {dv}") - def _in_file_inputs(self, input: bpy.types.NodeSocket, - inner: str, - socket_var: str, - type: str - ) -> None: + def _in_file_inputs(self, input: bpy.types.NodeSocket, socket_var: str, + type: str) -> None: """ Sets inputs for a node input if one already exists in the blend file Parameters: input (bpy.types.NodeSocket): input socket we're setting the value for - inner (str): indentation string socket_var (str): variable name we're using for the socket type (str): from what section of bpy.data to pull the default value from """ @@ -800,21 +767,22 @@ def _in_file_inputs(self, input: bpy.types.NodeSocket, if input.default_value is None: return name = str_to_py_str(input.default_value.name) - self._write(f"{inner}if {name} in bpy.data.{type}:\n") - self._write((f"{inner}\t{socket_var}.default_value = " - f"bpy.data.{type}[{name}]\n")) - - def _color_ramp_settings(self, node: bpy.types.Node, - inner: str, - node_var: str, - color_ramp_name: str) -> None: + self._write(f"if {name} in bpy.data.{type}:") + self._write(f"\t{socket_var}.default_value = bpy.data.{type}[{name}]") + + def _set_socket_defaults(self, node: Node): + """ + Set input and output socket defaults + """ + self._set_input_defaults(node) + self._set_output_defaults(node) + + def _color_ramp_settings(self, node: Node, color_ramp_name: str) -> None: """ Replicate a color ramp node Parameters - node (bpy.types.Node): node object we're copying settings from - inner (str): indentation - node_var (str): name of the variable we're using for the color ramp + node (Node): node object we're copying settings from color_ramp_name (str): name of the color ramp to be copied """ @@ -823,52 +791,48 @@ def _color_ramp_settings(self, node: bpy.types.Node, raise ValueError( f"No color ramp named \"{color_ramp_name}\" found") + node_var = self._node_vars[node] + # settings - ramp_str = f"{inner}{node_var}.{color_ramp_name}" + ramp_str = f"{node_var}.{color_ramp_name}" + #color mode color_mode = enum_to_py_str(color_ramp.color_mode) - self._write(f"{ramp_str}.color_mode = {color_mode}\n") + self._write(f"{ramp_str}.color_mode = {color_mode}") + #hue interpolation hue_interpolation = enum_to_py_str(color_ramp.hue_interpolation) - self._write((f"{ramp_str}.hue_interpolation = " - f"{hue_interpolation}\n")) + self._write(f"{ramp_str}.hue_interpolation = {hue_interpolation}") + + #interpolation interpolation = enum_to_py_str(color_ramp.interpolation) - self._write((f"{ramp_str}.interpolation " - f"= {interpolation}\n")) - self._write("\n") + self._write(f"{ramp_str}.interpolation = {interpolation}") + self._write("") # key points - self._write(f"{inner}#initialize color ramp elements\n") + self._write(f"#initialize color ramp elements") self._write((f"{ramp_str}.elements.remove" - f"({ramp_str}.elements[0])\n")) + f"({ramp_str}.elements[0])")) for i, element in enumerate(color_ramp.elements): element_var = f"{node_var}_cre_{i}" if i == 0: - self._write(f"{inner}{element_var} = " - f"{ramp_str}.elements[{i}]\n") - self._write( - f"{inner}{element_var}.position = {element.position}\n") + self._write(f"{element_var} = {ramp_str}.elements[{i}]") + self._write(f"{element_var}.position = {element.position}") else: - self._write((f"{inner}{element_var} = " - f"{ramp_str}.elements" - f".new({element.position})\n")) + self._write(f"{element_var} = {ramp_str}.elements" + f".new({element.position})") - self._write((f"{inner}{element_var}.alpha = " - f"{element.alpha}\n")) + self._write(f"{element_var}.alpha = {element.alpha}") color_str = vec4_to_py_str(element.color) - self._write((f"{inner}{element_var}.color = {color_str}\n\n")) + self._write(f"{element_var}.color = {color_str}\n") - def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, - node_var: str, curve_mapping_name: str - ) -> None: + def _curve_mapping_settings(self, node: Node, + curve_mapping_name: str) -> None: """ Sets defaults for Float, Vector, and Color curves Parameters: - node (bpy.types.Node): curve node we're copying settings from - file (TextIO): file we're generating the add-on into - inner (str): indentation - node_var (str): variable name for the add-on's curve node + node (Node): curve node we're copying settings from curve_mapping_name (str): name of the curve mapping to be set """ @@ -877,73 +841,74 @@ def _curve_mapping_settings(self, node: bpy.types.Node, inner: str, raise ValueError((f"Curve mapping \"{curve_mapping_name}\" not found " f"in node \"{node.bl_idname}\"")) + node_var = self._node_vars[node] + # mapping settings - self._write(f"{inner}#mapping settings\n") - mapping_var = f"{inner}{node_var}.{curve_mapping_name}" + self._write(f"#mapping settings") + mapping_var = f"{node_var}.{curve_mapping_name}" # extend extend = enum_to_py_str(mapping.extend) - self._write(f"{mapping_var}.extend = {extend}\n") + self._write(f"{mapping_var}.extend = {extend}") # tone tone = enum_to_py_str(mapping.tone) - self._write(f"{mapping_var}.tone = {tone}\n") + self._write(f"{mapping_var}.tone = {tone}") # black level b_lvl_str = vec3_to_py_str(mapping.black_level) - self._write((f"{mapping_var}.black_level = {b_lvl_str}\n")) + self._write(f"{mapping_var}.black_level = {b_lvl_str}") # white level w_lvl_str = vec3_to_py_str(mapping.white_level) - self._write((f"{mapping_var}.white_level = {w_lvl_str}\n")) + self._write(f"{mapping_var}.white_level = {w_lvl_str}") # minima and maxima min_x = mapping.clip_min_x - self._write(f"{mapping_var}.clip_min_x = {min_x}\n") + self._write(f"{mapping_var}.clip_min_x = {min_x}") min_y = mapping.clip_min_y - self._write(f"{mapping_var}.clip_min_y = {min_y}\n") + self._write(f"{mapping_var}.clip_min_y = {min_y}") max_x = mapping.clip_max_x - self._write(f"{mapping_var}.clip_max_x = {max_x}\n") + self._write(f"{mapping_var}.clip_max_x = {max_x}") max_y = mapping.clip_max_y - self._write(f"{mapping_var}.clip_max_y = {max_y}\n") + self._write(f"{mapping_var}.clip_max_y = {max_y}") # use_clip use_clip = mapping.use_clip - self._write(f"{mapping_var}.use_clip = {use_clip}\n") + self._write(f"{mapping_var}.use_clip = {use_clip}") # create curves for i, curve in enumerate(mapping.curves): # TODO: curve function - self._write(f"{inner}#curve {i}\n") + self._write(f"#curve {i}") curve_i = f"{node_var}_curve_{i}" - self._write((f"{inner}{curve_i} = " - f"{node_var}.{curve_mapping_name}.curves[{i}]\n")) + self._write(f"{curve_i} = " + f"{node_var}.{curve_mapping_name}.curves[{i}]") # Remove default points when CurveMap is initialized with more than # two points (just CompositorNodeHueCorrect) if (node.bl_idname == 'CompositorNodeHueCorrect'): - self._write((f"{inner}for i in range" - f"(len({curve_i}.points.values()) - 1, 1, -1):\n")) + self._write((f"for i in range" + f"(len({curve_i}.points.values()) - 1, 1, -1):")) self._write( - f"{inner}\t{curve_i}.points.remove({curve_i}.points[i])\n") + f"\t{curve_i}.points.remove({curve_i}.points[i])") for j, point in enumerate(curve.points): # TODO: point function - point_j = f"{inner}{curve_i}_point_{j}" + point_j = f"{curve_i}_point_{j}" loc = point.location loc_str = f"{loc[0]}, {loc[1]}" if j < 2: - self._write(f"{point_j} = {curve_i}.points[{j}]\n") - self._write(f"{point_j}.location = ({loc_str})\n") + self._write(f"{point_j} = {curve_i}.points[{j}]") + self._write(f"{point_j}.location = ({loc_str})") else: - self._write( - (f"{point_j} = {curve_i}.points.new({loc_str})\n")) + self._write(f"{point_j} = {curve_i}.points.new({loc_str})") handle = enum_to_py_str(point.handle_type) - self._write(f"{point_j}.handle_type = {handle}\n") + self._write(f"{point_j}.handle_type = {handle}") # update curve - self._write(f"{inner}#update curve after changes\n") - self._write(f"{mapping_var}.update()\n") + self._write(f"#update curve after changes") + self._write(f"{mapping_var}.update()") def _save_image(self, img: bpy.types.Image) -> None: """ @@ -967,16 +932,12 @@ def _save_image(self, img: bpy.types.Image) -> None: if not os.path.exists(img_path): img.save_render(img_path) - def _load_image(self, img: bpy.types.Image, - inner: str, - img_var: str - ) -> None: + def _load_image(self, img: bpy.types.Image, img_var: str) -> None: """ Loads an image from the add-on into a blend file and assigns it Parameters: img (bpy.types.Image): Blender image from the original node group - inner (str): indentation string img_var (str): variable name to be used for the image """ @@ -986,40 +947,37 @@ def _load_image(self, img: bpy.types.Image, img_str = img_to_py_str(img) # TODO: convert to special variables - self._write(f"{inner}#load image {img_str}\n") - self._write((f"{inner}base_dir = " - f"os.path.dirname(os.path.abspath(__file__))\n")) - self._write((f"{inner}image_path = " - f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " - f"\"{img_str}\")\n")) - self._write((f"{inner}{img_var} = bpy.data.images.load" - f"(image_path, check_existing = True)\n")) + self._write(f"#load image {img_str}") + self._write(f"base_dir = " + f"os.path.dirname(os.path.abspath(__file__))") + self._write(f"image_path = " + f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " + f"\"{img_str}\")") + self._write(f"{img_var} = bpy.data.images.load" + f"(image_path, check_existing = True)") # copy image settings - self._write(f"{inner}#set image settings\n") + self._write(f"#set image settings") # source source = enum_to_py_str(img.source) - self._write(f"{inner}{img_var}.source = {source}\n") + self._write(f"{img_var}.source = {source}") # color space settings color_space = enum_to_py_str(img.colorspace_settings.name) - self._write( - f"{inner}{img_var}.colorspace_settings.name = {color_space}\n") + self._write(f"{img_var}.colorspace_settings.name = {color_space}") # alpha mode alpha_mode = enum_to_py_str(img.alpha_mode) - self._write(f"{inner}{img_var}.alpha_mode = {alpha_mode}\n") + self._write(f"{img_var}.alpha_mode = {alpha_mode}") def _image_user_settings(self, img_user: bpy.types.ImageUser, - inner: str, img_user_var: str) -> None: """ Replicate the image user of an image node Parameters img_usr (bpy.types.ImageUser): image user to be copied - inner (str): indentation img_usr_var (str): variable name for the generated image user """ @@ -1027,76 +985,71 @@ def _image_user_settings(self, img_user: bpy.types.ImageUser, "frame_start", "tile", "use_auto_refresh", "use_cyclic"] for img_usr_attr in img_usr_attrs: - self._write((f"{inner}{img_user_var}.{img_usr_attr} = " - f"{getattr(img_user, img_usr_attr)}\n")) + self._write(f"{img_user_var}.{img_usr_attr} = " + f"{getattr(img_user, img_usr_attr)}") - def _set_parents(self, node_tree: bpy.types.NodeTree, - inner: str) -> None: + def _set_parents(self, node_tree: NodeTree) -> None: """ Sets parents for all nodes, mostly used to put nodes in frames Parameters: - node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from - inner (str): indentation string + node_tree (NodeTree): node tree we're obtaining nodes from """ parent_comment = False for node in node_tree.nodes: if node is not None and node.parent is not None: if not parent_comment: - self._write(f"{inner}#Set parents\n") + self._write(f"#Set parents") parent_comment = True node_var = self._node_vars[node] parent_var = self._node_vars[node.parent] - self._write(f"{inner}{node_var}.parent = {parent_var}\n") - self._write("\n") + self._write(f"{node_var}.parent = {parent_var}") + self._write("") - def _set_locations(self, node_tree: bpy.types.NodeTree, inner: str) -> None: + def _set_locations(self, node_tree: NodeTree) -> None: """ Set locations for all nodes Parameters: - node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from - inner (str): indentation string + node_tree (NodeTree): node tree we're obtaining nodes from """ - self._write(f"{inner}#Set locations\n") + self._write(f"#Set locations") for node in node_tree.nodes: node_var = self._node_vars[node] - self._write((f"{inner}{node_var}.location " - f"= ({node.location.x}, {node.location.y})\n")) - self._write("\n") + self._write(f"{node_var}.location " + f"= ({node.location.x}, {node.location.y})") + self._write("") - def _set_dimensions(self, node_tree: bpy.types.NodeTree, inner: str, - ) -> None: + def _set_dimensions(self, node_tree: NodeTree) -> None: """ Set dimensions for all nodes Parameters: - node_tree (bpy.types.NodeTree): node tree we're obtaining nodes from - inner (str): indentation string + node_tree (NodeTree): node tree we're obtaining nodes from """ - self._write(f"{inner}#Set dimensions\n") + self._write(f"#Set dimensions") for node in node_tree.nodes: node_var = self._node_vars[node] - self._write((f"{inner}{node_var}.width, {node_var}.height " - f"= {node.width}, {node.height}\n")) - self._write("\n") + self._write(f"{node_var}.width, {node_var}.height " + f"= {node.width}, {node.height}") + self._write("") - def _init_links(self, node_tree: bpy.types.NodeTree, - inner: str, - node_tree_var: str) -> None: + def _init_links(self, node_tree: NodeTree) -> None: """ Create all the links between nodes Parameters: - node_tree (bpy.types.NodeTree): node tree we're copying - inner (str): indentation - node_tree_var (str): variable name we're using for the copied node tree + node_tree (NodeTree): node tree to copy, with variable """ - if node_tree.links: - self._write(f"{inner}#initialize {node_tree_var} links\n") - for link in node_tree.links: + nt_var = self._node_tree_vars[node_tree] + + links = node_tree.links + if links: + self._write(f"#initialize {nt_var} links") + + for link in links: in_node_var = self._node_vars[link.from_node] input_socket = link.from_socket @@ -1120,66 +1073,60 @@ def _init_links(self, node_tree: bpy.types.NodeTree, output_idx = i break - self._write((f"{inner}#{in_node_var}.{input_socket.name} " - f"-> {out_node_var}.{output_socket.name}\n")) - self._write((f"{inner}{node_tree_var}.links.new({in_node_var}" - f".outputs[{input_idx}], " - f"{out_node_var}.inputs[{output_idx}])\n")) + self._write(f"#{in_node_var}.{input_socket.name} " + f"-> {out_node_var}.{output_socket.name}") + self._write(f"{nt_var}.links.new({in_node_var}" + f".outputs[{input_idx}], " + f"{out_node_var}.inputs[{output_idx}])") - def _hide_hidden_sockets(self, node: bpy.types.Node, inner: str, - node_var: str) -> None: + def _hide_hidden_sockets(self, node: Node) -> None: """ Hide hidden sockets Parameters: - node (bpy.types.Node): node object we're copying socket settings from - inner (str): indentation string - node_var (str): name of the variable we're using for this node + node (Node): node object we're copying socket settings from """ + node_var = self._node_vars[node] + for i, socket in enumerate(node.inputs): if socket.hide is True: - self._write(f"{inner}{node_var}.inputs[{i}].hide = True\n") + self._write(f"{node_var}.inputs[{i}].hide = True") for i, socket in enumerate(node.outputs): if socket.hide is True: - self._write(f"{inner}{node_var}.outputs[{i}].hide = True\n") - - def _set_socket_defaults(self, node: Node, node_var: str, inner: str): - self._set_input_defaults(node, inner, node_var) - self._set_output_defaults(node, inner, node_var) + self._write(f"{node_var}.outputs[{i}].hide = True") def _create_menu_func(self) -> None: """ Creates the menu function """ - - self._write("def menu_func(self, context):\n") - self._write(f"\tself.layout.operator({self._class_name}.bl_idname)\n") - self._write("\n") + self._write("def menu_func(self, context):", "") + self._write(f"self.layout.operator({self._class_name}.bl_idname)", "\t") + self._write("") def _create_register_func(self) -> None: """ Creates the register function """ - self._write("def register():\n") - self._write(f"\tbpy.utils.register_class({self._class_name})\n") - self._write("\tbpy.types.VIEW3D_MT_object.append(menu_func)\n") - self._write("\n") + self._write("def register():", "") + self._write(f"bpy.utils.register_class({self._class_name})", "\t") + self._write("bpy.types.VIEW3D_MT_object.append(menu_func)", "\t") + self._write("") def _create_unregister_func(self) -> None: """ Creates the unregister function """ - self._write("def unregister():\n") - self._write(f"\tbpy.utils.unregister_class({self._class_name})\n") - self._write("\tbpy.types.VIEW3D_MT_object.remove(menu_func)\n") - self._write("\n") + self._write("def unregister():", "") + self._write(f"bpy.utils.unregister_class({self._class_name})", "\t") + self._write("bpy.types.VIEW3D_MT_object.remove(menu_func)", "\t") + self._write("") def _create_main_func(self) -> None: """ Creates the main function """ - self._write("if __name__ == \"__main__\":\n") - self._write("\tregister()") + self._write("if __name__ == \"__main__\":", "") + self._write("register()", "\t") def _zip_addon(self) -> None: """ @@ -1189,11 +1136,11 @@ def _zip_addon(self) -> None: shutil.rmtree(self._zip_dir) # ABSTRACT - def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree, inner: str) -> None: + def _process_node(self, node: Node, ntp_node_tree: NTP_NodeTree) -> None: return # ABSTRACT - def _process_node_tree(self, node_tree: NodeTree, level: int) -> None: + def _process_node_tree(self, node_tree: NodeTree) -> None: return def _report_finished(self, object: str): diff --git a/utils.py b/utils.py index 5f587ce..bc0f131 100644 --- a/utils.py +++ b/utils.py @@ -191,24 +191,4 @@ def img_to_py_str(img : bpy.types.Image) -> str: """ name = img.name.split('.', 1)[0] format = img.file_format.lower() - return f"{name}.{format}" - -#TODO: reconsider node tree definitions within node tree definitions -def make_indents(level: int) -> Tuple[str, str]: - """ - Returns strings with the correct number of indentations - given the level in the function. - - Node groups need processed recursively, - so there can sometimes be functions in functions. - - Parameters: - level (int): base number of indentations need - - Returns: - outer (str): a basic level of indentation for a node group. - inner (str): a level of indentation beyond outer - """ - outer = "\t"*level - inner = "\t"*(level + 1) - return outer, inner \ No newline at end of file + return f"{name}.{format}" \ No newline at end of file From 5590f5ea274d33206932e0bdd99ccc6246cf1ffb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 21 Jan 2024 16:19:47 -0600 Subject: [PATCH 163/286] refactor: group nodes now just use ST.NODE_TREE --- compositor/node_settings.py | 2 ++ compositor/operator.py | 5 +---- geometry/node_settings.py | 2 ++ geometry/operator.py | 8 +++----- material/node_settings.py | 2 ++ material/operator.py | 5 +---- ntp_operator.py | 39 ++++++++++++++++++++----------------- utils.py | 1 + 8 files changed, 33 insertions(+), 31 deletions(-) diff --git a/compositor/node_settings.py b/compositor/node_settings.py index f2780a5..e4ae8ac 100644 --- a/compositor/node_settings.py +++ b/compositor/node_settings.py @@ -455,6 +455,8 @@ # MISC + 'CompositorNodeGroup' : [("node_tree", ST.NODE_TREE)], + 'NodeFrame' : [("label_size", ST.INT), ("shrink", ST.BOOL), ("text", ST.TEXT)], diff --git a/compositor/operator.py b/compositor/operator.py index 0ce02e6..b1daada 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -113,9 +113,6 @@ def _process_node(self, node: Node, ntp_nt: NTP_NodeTree): self._set_settings_defaults(node) self._hide_hidden_sockets(node) - if node.bl_idname == 'CompositorNodeGroup': - self._process_group_node_tree(node) - if bpy.app.version < (4, 0, 0): if node.bl_idname == 'NodeGroupInput' and not ntp_nt.inputs_set: self._group_io_settings(node, "input", ntp_nt) @@ -185,7 +182,7 @@ def execute(self, context): if self.mode == 'ADDON': self._outer = "\t\t" self._inner = "\t\t\t" - + self._setup_addon_directories(context, comp_var) self._file = open(f"{self._addon_dir}/__init__.py", "w") diff --git a/geometry/node_settings.py b/geometry/node_settings.py index a1e5011..d637180 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -459,6 +459,8 @@ 'FunctionNodeQuaternionToRotation' : [], # MISC + 'GeometryNodeGroup' : [("node_tree", ST.NODE_TREE)], + 'NodeFrame' : [("label_size", ST.INT), ("shrink", ST.BOOL), ("text", ST.TEXT)], diff --git a/geometry/operator.py b/geometry/operator.py index 3a1fc95..2f51c3a 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -84,10 +84,7 @@ def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: self._group_io_settings(node, "output", ntp_nt) ntp_nt.outputs_set = True - if node.bl_idname == 'GeometryNodeGroup': - self._process_group_node_tree(node) - - elif node.bl_idname == 'GeometryNodeSimulationInput': + if node.bl_idname == 'GeometryNodeSimulationInput': ntp_nt.sim_inputs.append(node) elif node.bl_idname == 'GeometryNodeSimulationOutput': @@ -101,7 +98,8 @@ def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: self._hide_hidden_sockets(node) - if node.bl_idname not in {'GeometryNodeSimulationInput', 'GeometryNodeRepeatInput'}: + if node.bl_idname not in {'GeometryNodeSimulationInput', + 'GeometryNodeRepeatInput'}: self._set_socket_defaults(node) if bpy.app.version >= (3, 6, 0): diff --git a/material/node_settings.py b/material/node_settings.py index 0858187..04ae778 100644 --- a/material/node_settings.py +++ b/material/node_settings.py @@ -263,6 +263,8 @@ ("use_auto_update", ST.BOOL)], # MISC + 'ShaderNodeGroup' : [('node_tree', ST.NODE_TREE)], + 'NodeFrame' : [("label_size", ST.INT), ("shrink", ST.BOOL), ("text", ST.TEXT)], diff --git a/material/operator.py b/material/operator.py index a253238..97bc342 100644 --- a/material/operator.py +++ b/material/operator.py @@ -72,9 +72,6 @@ def _process_node(self, node: Node, ntp_nt: NTP_NodeTree) -> None: self._group_io_settings(node, "output", ntp_nt) ntp_nt.outputs_set = True - if node.bl_idname == 'ShaderNodeGroup': - self._process_group_node_tree(node) - self._hide_hidden_sockets(node) self._set_socket_defaults(node) @@ -135,7 +132,7 @@ def execute(self, context): if self.mode == 'ADDON': self._outer = "\t\t" self._inner = "\t\t\t" - + self._setup_addon_directories(context, mat_var) self._file = open(f"{self._addon_dir}/__init__.py", "w") diff --git a/ntp_operator.py b/ntp_operator.py index a4b4181..1330df6 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -186,24 +186,6 @@ def dfs(nt: NodeTree) -> None: return result - def _process_group_node_tree(self, node: Node) -> None: - """ - Processes node tree of group node if one is present - - Parameters: - node (Node): the group node - """ - node_tree = node.node_tree - if node_tree is None: - return - if node_tree in self._node_tree_vars: - nt_var = self._node_tree_vars[node_tree] - node_var = self._node_vars[node] - self._write(f"{node_var}.node_tree = {nt_var}") - else: - self.report({'WARNING'}, (f"NodeToPython: Node tree dependency graph " - f"wasn't properly initialized")) - def _create_var(self, name: str) -> str: """ Creates a unique variable name for a node tree @@ -325,6 +307,8 @@ def _set_settings_defaults(self, node: Node) -> None: self._color_ramp_settings(node, attr_name) elif type == ST.CURVE_MAPPING: self._curve_mapping_settings(node, attr_name) + elif type == ST.NODE_TREE: + self._node_tree_settings(node, attr_name) elif type == ST.IMAGE: if self._addon_dir is not None and attr is not None: if attr.source in {'FILE', 'GENERATED', 'TILED'}: @@ -910,6 +894,25 @@ def _curve_mapping_settings(self, node: Node, self._write(f"#update curve after changes") self._write(f"{mapping_var}.update()") + def _node_tree_settings(self, node: Node, attr_name: str) -> None: + """ + Processes node tree of group node if one is present + + Parameters: + node (Node): the group node + attr_name (str): name of the node tree attribute + """ + node_tree = getattr(node, attr_name) + if node_tree is None: + return + if node_tree in self._node_tree_vars: + nt_var = self._node_tree_vars[node_tree] + node_var = self._node_vars[node] + self._write(f"{node_var}.{attr_name} = {nt_var}") + else: + self.report({'WARNING'}, (f"NodeToPython: Node tree dependency graph " + f"wasn't properly initialized")) + def _save_image(self, img: bpy.types.Image) -> None: """ Saves an image to an image directory of the add-on diff --git a/utils.py b/utils.py index bc0f131..ec5d04d 100644 --- a/utils.py +++ b/utils.py @@ -34,6 +34,7 @@ class ST(Enum): # Special settings COLOR_RAMP = auto() CURVE_MAPPING = auto() + NODE_TREE = auto() # Asset Library MATERIAL = auto() # Handle with asset library From eca90aae44bfc7c93acbf4713685304d54e59efd Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 21 Jan 2024 22:56:15 -0600 Subject: [PATCH 164/286] fix: typo --- ntp_operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ntp_operator.py b/ntp_operator.py index 1330df6..ab46e40 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -383,7 +383,7 @@ def _group_io_settings(self, node: Node, socket_interface = io_socket_interfaces[i] socket_var = f"{node_tree_var}.{io}s[{i}]" - self._set_group_socket_default(socket_interface, socket_var) + self._set_group_socket_defaults(socket_interface, socket_var) # default attribute name if hasattr(socket_interface, "default_attribute_name"): From d846b8a59b7963c568f96c37925b5381e93d726c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:54:38 -0600 Subject: [PATCH 165/286] fix: introduced NTP reserved names to prevent possible node name conflicts --- compositor/operator.py | 42 +++++++++------- geometry/operator.py | 24 ++++++--- material/operator.py | 8 ++- ntp_operator.py | 111 ++++++++++++++++++++++++++--------------- utils.py | 2 - 5 files changed, 117 insertions(+), 70 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index b1daada..41efd3b 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -8,11 +8,13 @@ from io import StringIO from .node_settings import compositor_node_settings -SCENE_VAR = "scene" -BASE_NAME_VAR = "base_name" -END_NAME_VAR = "end_name" +SCENE = "scene" +BASE_NAME = "base_name" +END_NAME = "end_name" +INDEX = "i" +NODE = "node" -ntp_vars = {SCENE_VAR, BASE_NAME_VAR, END_NAME_VAR} +comp_op_reserved_names = {SCENE, BASE_NAME, END_NAME, INDEX, NODE} class NTPCompositorOperator(NTP_Operator): bl_idname = "node.ntp_compositor" @@ -33,31 +35,33 @@ class NTPCompositorOperator(NTP_Operator): def __init__(self): super().__init__() self._settings = compositor_node_settings + for name in comp_op_reserved_names: + self._used_vars[name] = 1 def _create_scene(self, indent: str): #TODO: wrap in more general unique name util function self._write(f"# Generate unique scene name", indent) - self._write(f"{BASE_NAME_VAR} = {str_to_py_str(self.compositor_name)}", + self._write(f"{BASE_NAME} = {str_to_py_str(self.compositor_name)}", indent) - self._write(f"{END_NAME_VAR} = {BASE_NAME_VAR}", indent) - self._write(f"if bpy.data.scenes.get({END_NAME_VAR}) != None:", indent) + self._write(f"{END_NAME} = {BASE_NAME}", indent) + self._write(f"if bpy.data.scenes.get({END_NAME}) != None:", indent) indent2 = f"{indent}\t" - self._write(f"i = 1", indent2) - self._write(f"{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"", + self._write(f"{INDEX} = 1", indent2) + self._write(f"{END_NAME} = {BASE_NAME} + f\".{{i:03d}}\"", indent2) - self._write(f"while bpy.data.scenes.get({END_NAME_VAR}) != None:", + self._write(f"while bpy.data.scenes.get({END_NAME}) != None:", indent2) indent3 = f"{indent}\t\t" - self._write(f"{END_NAME_VAR} = {BASE_NAME_VAR} + f\".{{i:03d}}\"", indent3) - self._write(f"i += 1\n", indent3) + self._write(f"{END_NAME} = {BASE_NAME} + f\".{{{INDEX}:03d}}\"", indent3) + self._write(f"{INDEX} += 1\n", indent3) - self._write(f"{SCENE_VAR} = bpy.context.window.scene.copy()\n", indent) - self._write(f"{SCENE_VAR}.name = {END_NAME_VAR}", indent) - self._write(f"{SCENE_VAR}.use_fake_user = True", indent) - self._write(f"bpy.context.window.scene = {SCENE_VAR}", indent) + self._write(f"{SCENE} = bpy.context.window.scene.copy()\n", indent) + self._write(f"{SCENE}.name = {END_NAME}", indent) + self._write(f"{SCENE}.use_fake_user = True", indent) + self._write(f"bpy.context.window.scene = {SCENE}", indent) def _initialize_compositor_node_tree(self, ntp_nt, nt_name): #initialize node group @@ -65,10 +69,10 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): self._write(f"def {ntp_nt.var}_node_group():", self._outer) if ntp_nt.node_tree == self._base_node_tree: - self._write(f"{ntp_nt.var} = {SCENE_VAR}.node_tree") + self._write(f"{ntp_nt.var} = {SCENE}.node_tree") self._write(f"#start with a clean node tree") - self._write(f"for node in {ntp_nt.var}.nodes:") - self._write(f"\t{ntp_nt.var}.nodes.remove(node)") + self._write(f"for {NODE} in {ntp_nt.var}.nodes:") + self._write(f"\t{ntp_nt.var}.nodes.remove({NODE})") else: self._write((f"{ntp_nt.var} = bpy.data.node_groups.new(" f"type = \'CompositorNodeTree\', " diff --git a/geometry/operator.py b/geometry/operator.py index 2f51c3a..1688518 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -16,6 +16,15 @@ from .node_tree import NTP_GeoNodeTree from .node_settings import geo_node_settings +ITEM = "item" +OBJECT_NAME = "name" +OBJECT = "obj" +MODIFIER = "mod" +geo_op_reserved_names = {ITEM, + OBJECT_NAME, + OBJECT, + MODIFIER} + class NTPGeoNodesOperator(NTP_Operator): bl_idname = "node.ntp_geo_nodes" bl_label = "Geo Nodes to Python" @@ -34,6 +43,8 @@ class NTPGeoNodesOperator(NTP_Operator): def __init__(self): super().__init__() self._settings = geo_node_settings + for name in geo_op_reserved_names: + self._used_vars[name] = 1 if bpy.app.version >= (3, 6, 0): def _process_zone_output_node(self, node: GeometryNode) -> None: @@ -50,15 +61,14 @@ def _process_zone_output_node(self, node: GeometryNode) -> None: node_var = self._node_vars[node] self._write(f"# Remove generated {items}") - self._write(f"for item in {node_var}.{items}:") + self._write(f"for {ITEM} in {node_var}.{items}:") self._write(f"\t{node_var}.{items}.remove(item)") for i, item in enumerate(getattr(node, items)): socket_type = enum_to_py_str(item.socket_type) name = str_to_py_str(item.name) self._write(f"# Create item {name}") - self._write(f"{node_var}.{items}.new" - f"({socket_type}, {name})") + self._write(f"{node_var}.{items}.new({socket_type}, {name})") if is_sim: item_var = f"{node_var}.{items}[{i}]" ad = enum_to_py_str(item.attribute_domain) @@ -199,14 +209,14 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): #get object - self._write(f"name = bpy.context.object.name", self._outer) - self._write(f"obj = bpy.data.objects[name]", self._outer) + self._write(f"{OBJECT_NAME} = bpy.context.object.name", self._outer) + self._write(f"{OBJECT} = bpy.data.objects[{OBJECT_NAME}]", self._outer) #set modifier to the one we just created mod_name = str_to_py_str(nt.name) - self._write(f"mod = obj.modifiers.new(name = {mod_name}, " + self._write(f"{MODIFIER} = obj.modifiers.new(name = {mod_name}, " f"type = 'NODES')", self._outer) - self._write(f"mod.node_group = {nt_var}", self._outer) + self._write(f"{MODIFIER}.node_group = {nt_var}", self._outer) def execute(self, context): diff --git a/material/operator.py b/material/operator.py index 97bc342..16755ec 100644 --- a/material/operator.py +++ b/material/operator.py @@ -10,6 +10,8 @@ from .node_settings import shader_node_settings MAT_VAR = "mat" +NODE = "node" +shader_op_reserved_names = {MAT_VAR, NODE} class NTPMaterialOperator(NTP_Operator): bl_idname = "node.ntp_material" @@ -22,6 +24,8 @@ class NTPMaterialOperator(NTP_Operator): def __init__(self): super().__init__() self._settings = shader_node_settings + for name in shader_op_reserved_names: + self._used_vars[name] = 1 def _create_material(self, indent: str): self._write(f"{MAT_VAR} = bpy.data.materials.new(" @@ -44,8 +48,8 @@ def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, if ntp_node_tree.node_tree == self._base_node_tree: self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree") self._write(f"#start with a clean node tree") - self._write(f"for node in {ntp_node_tree.var}.nodes:") - self._write(f"\t{ntp_node_tree.var}.nodes.remove(node)") + self._write(f"for {NODE} in {ntp_node_tree.var}.nodes:") + self._write(f"\t{ntp_node_tree.var}.nodes.remove({NODE})") else: self._write((f"{ntp_node_tree.var} = bpy.data.node_groups.new(" f"type = \'ShaderNodeTree\', " diff --git a/ntp_operator.py b/ntp_operator.py index ab46e40..1c42262 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -16,6 +16,14 @@ from .ntp_node_tree import NTP_NodeTree from .utils import * +IMAGE_DIR_NAME = "imgs" +IMAGE_PATH = "image_path" +BASE_DIR = "base_dir" + +reserved_names = {IMAGE_DIR_NAME, + IMAGE_PATH, + BASE_DIR + } class NTP_Operator(Operator): """ @@ -70,7 +78,6 @@ def __init__(self): self._outer: str = "" self._inner: str = "\t" - # Base node tree we're converting self._base_node_tree: NodeTree = None @@ -86,6 +93,9 @@ def __init__(self): # Dictionary used for setting node properties self._settings: dict[str, list[(str, ST)]] = {} + for name in reserved_names: + self._used_vars[name] = 1 + def _write(self, string: str, indent: str = None): if indent is None: indent = self._inner @@ -192,8 +202,6 @@ def _create_var(self, name: str) -> str: Parameters: name (str): basic string we'd like to create the variable name out of - used_vars (dict[str, int]): dictionary containing variable names and - usage counts Returns: clean_name (str): variable name for the node tree @@ -296,13 +304,11 @@ def _set_settings_defaults(self, node: Node) -> None: elif type == ST.MATERIAL: name = str_to_py_str(attr.name) self._write((f"if {name} in bpy.data.materials:")) - self._write((f"\t{node_var}.{attr_name} = " - f"bpy.data.materials[{name}]")) + self._write((f"\t{setting_str} = bpy.data.materials[{name}]")) elif type == ST.OBJECT: name = str_to_py_str(attr.name) self._write((f"if {name} in bpy.data.objects:")) - self._write((f"\t{node_var}.{attr_name} = " - f"bpy.data.objects[{name}]")) + self._write((f"\t{setting_str} = bpy.data.objects[{name}]")) elif type == ST.COLOR_RAMP: self._color_ramp_settings(node, attr_name) elif type == ST.CURVE_MAPPING: @@ -798,7 +804,7 @@ def _color_ramp_settings(self, node: Node, color_ramp_name: str) -> None: self._write((f"{ramp_str}.elements.remove" f"({ramp_str}.elements[0])")) for i, element in enumerate(color_ramp.elements): - element_var = f"{node_var}_cre_{i}" + element_var = self._create_var(f"{node_var}_cre_{i}") if i == 0: self._write(f"{element_var} = {ramp_str}.elements[{i}]") self._write(f"{element_var}.position = {element.position}") @@ -861,39 +867,64 @@ def _curve_mapping_settings(self, node: Node, # create curves for i, curve in enumerate(mapping.curves): - # TODO: curve function - self._write(f"#curve {i}") - curve_i = f"{node_var}_curve_{i}" - self._write(f"{curve_i} = " - f"{node_var}.{curve_mapping_name}.curves[{i}]") - - # Remove default points when CurveMap is initialized with more than - # two points (just CompositorNodeHueCorrect) - if (node.bl_idname == 'CompositorNodeHueCorrect'): - self._write((f"for i in range" - f"(len({curve_i}.points.values()) - 1, 1, -1):")) - self._write( - f"\t{curve_i}.points.remove({curve_i}.points[i])") - - for j, point in enumerate(curve.points): - # TODO: point function - point_j = f"{curve_i}_point_{j}" - - loc = point.location - loc_str = f"{loc[0]}, {loc[1]}" - if j < 2: - self._write(f"{point_j} = {curve_i}.points[{j}]") - self._write(f"{point_j}.location = ({loc_str})") - else: - self._write(f"{point_j} = {curve_i}.points.new({loc_str})") - - handle = enum_to_py_str(point.handle_type) - self._write(f"{point_j}.handle_type = {handle}") + self._create_curve_map(node, i, curve, curve_mapping_name) # update curve self._write(f"#update curve after changes") self._write(f"{mapping_var}.update()") + def _create_curve_map(self, node: Node, i: int, curve: bpy.types.CurveMap, + curve_mapping_name: str) -> None: + """ + Helper function to create the ith curve of a node's curve mapping + + Parameters: + node (Node): the node with a curve mapping + i (int): index of the CurveMap within the mapping + curve (bpy.types.CurveMap): the curve map to recreate + curve_mapping_name (str): attribute name of the recreated curve mapping + """ + node_var = self._node_vars[node] + + self._write(f"#curve {i}") + curve_i_var = self._create_var(f"{node_var}_curve_{i}") + self._write(f"{curve_i_var} = " + f"{node_var}.{curve_mapping_name}.curves[{i}]") + + # Remove default points when CurveMap is initialized with more than + # two points (just CompositorNodeHueCorrect) + if (node.bl_idname == 'CompositorNodeHueCorrect'): + self._write(f"for i in range" + f"(len({curve_i_var}.points.values()) - 1, 1, -1):") + self._write(f"\t{curve_i_var}.points.remove(" + f"{curve_i_var}.points[i])") + + for j, point in enumerate(curve.points): + self._create_curve_map_point(j, point, curve_i_var) + + def _create_curve_map_point(self, j: int, point: bpy.types.CurveMapPoint, + curve_i_var: str) -> None: + """ + Helper function to recreate a curve map point + + Parameters: + j (int): index of the point within the curve map + point (CurveMapPoint): point to recreate + curve_i_var (str): variable name of the point's curve map + """ + point_j_var = self._create_var(f"{curve_i_var}_point_{j}") + + loc = point.location + loc_str = f"{loc[0]}, {loc[1]}" + if j < 2: + self._write(f"{point_j_var} = {curve_i_var}.points[{j}]") + self._write(f"{point_j_var}.location = ({loc_str})") + else: + self._write(f"{point_j_var} = {curve_i_var}.points.new({loc_str})") + + handle = enum_to_py_str(point.handle_type) + self._write(f"{point_j_var}.handle_type = {handle}") + def _node_tree_settings(self, node: Node, attr_name: str) -> None: """ Processes node tree of group node if one is present @@ -951,13 +982,13 @@ def _load_image(self, img: bpy.types.Image, img_var: str) -> None: # TODO: convert to special variables self._write(f"#load image {img_str}") - self._write(f"base_dir = " + self._write(f"{BASE_DIR} = " f"os.path.dirname(os.path.abspath(__file__))") - self._write(f"image_path = " - f"os.path.join(base_dir, \"{IMAGE_DIR_NAME}\", " + self._write(f"{IMAGE_PATH} = " + f"os.path.join({BASE_DIR}, \"{IMAGE_DIR_NAME}\", " f"\"{img_str}\")") self._write(f"{img_var} = bpy.data.images.load" - f"(image_path, check_existing = True)") + f"({IMAGE_PATH}, check_existing = True)") # copy image settings self._write(f"#set image settings") diff --git a/utils.py b/utils.py index ec5d04d..5b3cb5d 100644 --- a/utils.py +++ b/utils.py @@ -7,8 +7,6 @@ import re from typing import Tuple -IMAGE_DIR_NAME = "imgs" - #node input sockets that are messy to set default values for dont_set_defaults = {'NodeSocketGeometry', 'NodeSocketShader', From 63f73778febc7742b69baa89fb0fd39e1f60a942 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 Jan 2024 11:19:48 -0600 Subject: [PATCH 166/286] fix: add don't allow index param globally --- compositor/operator.py | 3 +-- ntp_operator.py | 12 +++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 41efd3b..907a203 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -11,10 +11,9 @@ SCENE = "scene" BASE_NAME = "base_name" END_NAME = "end_name" -INDEX = "i" NODE = "node" -comp_op_reserved_names = {SCENE, BASE_NAME, END_NAME, INDEX, NODE} +comp_op_reserved_names = {SCENE, BASE_NAME, END_NAME, NODE} class NTPCompositorOperator(NTP_Operator): bl_idname = "node.ntp_compositor" diff --git a/ntp_operator.py b/ntp_operator.py index 1c42262..4d11379 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -16,11 +16,14 @@ from .ntp_node_tree import NTP_NodeTree from .utils import * +INDEX = "i" IMAGE_DIR_NAME = "imgs" IMAGE_PATH = "image_path" BASE_DIR = "base_dir" -reserved_names = {IMAGE_DIR_NAME, +reserved_names = { + INDEX, + IMAGE_DIR_NAME, IMAGE_PATH, BASE_DIR } @@ -778,8 +781,7 @@ def _color_ramp_settings(self, node: Node, color_ramp_name: str) -> None: color_ramp: bpy.types.ColorRamp = getattr(node, color_ramp_name) if not color_ramp: - raise ValueError( - f"No color ramp named \"{color_ramp_name}\" found") + raise ValueError(f"No color ramp named \"{color_ramp_name}\" found") node_var = self._node_vars[node] @@ -894,10 +896,10 @@ def _create_curve_map(self, node: Node, i: int, curve: bpy.types.CurveMap, # Remove default points when CurveMap is initialized with more than # two points (just CompositorNodeHueCorrect) if (node.bl_idname == 'CompositorNodeHueCorrect'): - self._write(f"for i in range" + self._write(f"for {INDEX} in range" f"(len({curve_i_var}.points.values()) - 1, 1, -1):") self._write(f"\t{curve_i_var}.points.remove(" - f"{curve_i_var}.points[i])") + f"{curve_i_var}.points[{INDEX}])") for j, point in enumerate(curve.points): self._create_curve_map_point(j, point, curve_i_var) From fcf74a521954c9d76d7b948f63b52dd0367afc8a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 Jan 2024 11:24:46 -0600 Subject: [PATCH 167/286] fix: indexing now matches other repeat variables --- compositor/operator.py | 4 ++-- geometry/operator.py | 2 +- material/operator.py | 2 +- ntp_operator.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 907a203..8078912 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -2,7 +2,7 @@ from bpy.types import Node, CompositorNodeColorBalance, CompositorNodeTree -from ..ntp_operator import NTP_Operator +from ..ntp_operator import NTP_Operator, INDEX from ..ntp_node_tree import NTP_NodeTree from ..utils import * from io import StringIO @@ -35,7 +35,7 @@ def __init__(self): super().__init__() self._settings = compositor_node_settings for name in comp_op_reserved_names: - self._used_vars[name] = 1 + self._used_vars[name] = 0 def _create_scene(self, indent: str): diff --git a/geometry/operator.py b/geometry/operator.py index 1688518..a230ac8 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -44,7 +44,7 @@ def __init__(self): super().__init__() self._settings = geo_node_settings for name in geo_op_reserved_names: - self._used_vars[name] = 1 + self._used_vars[name] = 0 if bpy.app.version >= (3, 6, 0): def _process_zone_output_node(self, node: GeometryNode) -> None: diff --git a/material/operator.py b/material/operator.py index 16755ec..485b530 100644 --- a/material/operator.py +++ b/material/operator.py @@ -25,7 +25,7 @@ def __init__(self): super().__init__() self._settings = shader_node_settings for name in shader_op_reserved_names: - self._used_vars[name] = 1 + self._used_vars[name] = 0 def _create_material(self, indent: str): self._write(f"{MAT_VAR} = bpy.data.materials.new(" diff --git a/ntp_operator.py b/ntp_operator.py index 4d11379..1532450 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -97,7 +97,7 @@ def __init__(self): self._settings: dict[str, list[(str, ST)]] = {} for name in reserved_names: - self._used_vars[name] = 1 + self._used_vars[name] = 0 def _write(self, string: str, indent: str = None): if indent is None: From 50729ab73f75ca584b2b93db3dfdaad2f7e526c3 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 Jan 2024 13:34:28 -0600 Subject: [PATCH 168/286] cleanup: minor import tweaks --- geometry/operator.py | 7 ------- ntp_operator.py | 11 +++++------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/geometry/operator.py b/geometry/operator.py index a230ac8..9733a15 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -2,13 +2,6 @@ from bpy.types import GeometryNode, GeometryNodeTree from bpy.types import Node -if bpy.app.version >= (3, 6, 0): - from bpy.types import GeometryNodeSimulationInput - from bpy.types import GeometryNodeSimulationOutput -if bpy.app.version >= (4, 0, 0): - from bpy.types import GeometryNodeRepeatInput - from bpy.types import GeometryNodeRepeatOutput - from io import StringIO from ..ntp_operator import NTP_Operator diff --git a/ntp_operator.py b/ntp_operator.py index 1532450..a7b1862 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -225,7 +225,7 @@ def _create_node(self, node: Node, node_tree_var: str) -> str: Initializes a new node with location, dimension, and label info Parameters: - node (bpy.types.Node): node to be copied + node (Node): node to be copied node_tree_var (str): variable name for the node tree Returns: node_var (str): variable name for the node @@ -262,7 +262,7 @@ def _set_settings_defaults(self, node: Node) -> None: Sets the defaults for any settings a node may have Parameters: - node (bpy.types.Node): the node object we're copying settings from + node (Node): the node object we're copying settings from node_var (str): name of the variable we're using for the node in our add-on """ if node.bl_idname not in self._settings: @@ -365,10 +365,9 @@ def _group_io_settings(self, node: Node, Set the settings for group input and output sockets Parameters: - node (bpy.types.Node) : group input/output node + node (Node) : group input/output node io (str): whether we're generating the input or output settings - node_tree_var (str): variable name of the generated node tree - node_tree (bpy.types.NodeTree): node tree that we're generating + ntp_node_tree (NTP_NodeTree): node tree that we're generating input and output settings for """ node_tree_var = ntp_node_tree.var @@ -724,7 +723,7 @@ def _set_output_defaults(self, node: Node) -> None: Some output sockets need default values set. It's rather annoying Parameters: - node (bpy.types.Node): node for the output we're setting + node (Node): node for the output we're setting """ # TODO: probably should define elsewhere output_default_nodes = {'ShaderNodeValue', From af1711fdccb1c039032629586e80031ef2ea7ddd Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 22 Jan 2024 18:37:37 -0600 Subject: [PATCH 169/286] feat: node settings now have version numbers --- compositor/node_settings.py | 935 +++++++++++++++++++++--------------- compositor/operator.py | 22 +- geometry/node_settings.py | 673 +++++++++++++++++--------- geometry/operator.py | 4 +- material/node_settings.py | 545 +++++++++++++-------- material/operator.py | 4 +- ntp_operator.py | 59 ++- utils.py | 16 +- 8 files changed, 1366 insertions(+), 892 deletions(-) diff --git a/compositor/node_settings.py b/compositor/node_settings.py index e4ae8ac..8034b30 100644 --- a/compositor/node_settings.py +++ b/compositor/node_settings.py @@ -1,447 +1,580 @@ -from ..utils import ST +from ..utils import ST, NTPNodeSetting -compositor_node_settings : dict[str, list[(str, ST)]] = { +compositor_node_settings : dict[str, list[NTPNodeSetting]] = { # INPUT - 'CompositorNodeBokehImage' : [("angle", ST.FLOAT), - ("catadioptric", ST.FLOAT), - ("flaps", ST.INT), - ("rounding", ST.FLOAT), - ("shift", ST.FLOAT)], - - 'CompositorNodeImage' : [("frame_duration", ST.INT), - ("frame_offset", ST.INT), - ("frame_start", ST.INT), - ("image", ST.IMAGE), - ("layer", ST.ENUM), - ("use_auto_refresh", ST.BOOL), - ("use_cyclic", ST.BOOL), - ("use_straight_alpha_output", ST.BOOL), - ("view", ST.ENUM)], - - 'CompositorNodeMask' : [("mask", ST.MASK), - ("motion_blur_samples", ST.INT), - ("motion_blur_shutter", ST.FLOAT), - ("size_source", ST.ENUM), - ("size_x", ST.INT), - ("size_y", ST.INT), - ("use_feather", ST.BOOL), - ("use_motion_blur", ST.BOOL)], - - 'CompositorNodeMovieClip' : [("clip", ST.MOVIE_CLIP)], - - 'CompositorNodeTexture' : [("node_output", ST.INT), #TODO: ?? - ("texture", ST.TEXTURE)], + 'CompositorNodeBokehImage' : [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("catadioptric", ST.FLOAT), + NTPNodeSetting("flaps", ST.INT), + NTPNodeSetting("rounding", ST.FLOAT), + NTPNodeSetting("shift", ST.FLOAT) + ], + + 'CompositorNodeImage' : [ + NTPNodeSetting("frame_duration", ST.INT), + NTPNodeSetting("frame_offset", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("use_auto_refresh", ST.BOOL), + NTPNodeSetting("use_cyclic", ST.BOOL), + NTPNodeSetting("use_straight_alpha_output", ST.BOOL), + NTPNodeSetting("view", ST.ENUM) + ], + + 'CompositorNodeMask' : [ + NTPNodeSetting("mask", ST.MASK), + NTPNodeSetting("motion_blur_samples", ST.INT), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("size_source", ST.ENUM), + NTPNodeSetting("size_x", ST.INT), + NTPNodeSetting("size_y", ST.INT), + NTPNodeSetting("use_feather", ST.BOOL), + NTPNodeSetting("use_motion_blur", ST.BOOL) + ], + + 'CompositorNodeMovieClip' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP) + ], + + 'CompositorNodeTexture' : [ + NTPNodeSetting("node_output", ST.INT), #TODO: ?? + NTPNodeSetting("texture", ST.TEXTURE) + ], # Input > Constant - - 'CompositorNodeRGB' : [], - 'CompositorNodeValue' : [], + 'CompositorNodeRGB' : [], + 'CompositorNodeValue' : [], # Input > Scene + 'CompositorNodeRLayers' : [ + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("scene", ST.SCENE) + ], - 'CompositorNodeRLayers' : [("layer", ST.ENUM), - ("scene", ST.SCENE)], - - 'CompositorNodeSceneTime' : [], + 'CompositorNodeSceneTime' : [], - 'CompositorNodeTime' : [("curve", ST.CURVE_MAPPING), - ("frame_end", ST.INT), - ("frame_start", ST.INT)], + 'CompositorNodeTime' : [ + NTPNodeSetting("curve", ST.CURVE_MAPPING), + NTPNodeSetting("frame_end", ST.INT), + NTPNodeSetting("frame_start", ST.INT) + ], # OUTPUT - 'CompositorNodeComposite' : [("use_alpha", ST.BOOL)], - - 'CompositorNodeOutputFile' : [("active_input_index", ST.INT), #TODO: probably not right at all - - ("base_path", ST.STRING), - ("file_slots", ST.FILE_SLOTS), - ("format", ST.IMAGE_FORMAT_SETTINGS), - ("layer_slots", ST.LAYER_SLOTS)], - - 'CompositorNodeViewer' : [("center_x", ST.FLOAT), - ("center_y", ST.FLOAT), - ("tile_order", ST.ENUM), - ("use_alpha", ST.BOOL)], - - 'CompositorNodeSplitViewer' : [("axis", ST.ENUM), - ("factor", ST.INT)], + 'CompositorNodeComposite' : [ + NTPNodeSetting("use_alpha", ST.BOOL) + ], + + 'CompositorNodeOutputFile' : [ + NTPNodeSetting("active_input_index", ST.INT), #TODO: probably not right at all + NTPNodeSetting("base_path", ST.STRING), + NTPNodeSetting("file_slots", ST.FILE_SLOTS), + NTPNodeSetting("format", ST.IMAGE_FORMAT_SETTINGS), + NTPNodeSetting("layer_slots", ST.LAYER_SLOTS) + ], + + 'CompositorNodeViewer' : [ + NTPNodeSetting("center_x", ST.FLOAT), + NTPNodeSetting("center_y", ST.FLOAT), + NTPNodeSetting("tile_order", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL) + ], + + 'CompositorNodeSplitViewer' : [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("factor", ST.INT) + ], # COLOR - 'CompositorNodePremulKey' : [("mapping", ST.ENUM)], - - 'CompositorNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], + 'CompositorNodePremulKey' : [ + NTPNodeSetting("mapping", ST.ENUM) + ], - 'CompositorNodeConvertColorSpace' : [("from_color_space", ST.ENUM), - ("to_color_space", ST.ENUM)], + 'CompositorNodeValToRGB' : [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP) + ], + 'CompositorNodeConvertColorSpace' : [ + NTPNodeSetting("from_color_space", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("to_color_space", ST.ENUM, min_version=(3, 1, 0)) + ], - 'CompositorNodeSetAlpha' : [("mode", ST.ENUM)], + 'CompositorNodeSetAlpha' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'CompositorNodeInvert' : [("invert_alpha", ST.BOOL), - ("invert_rgb", ST.BOOL)], - - 'CompositorNodeRGBToBW' : [], + 'CompositorNodeInvert' : [ + NTPNodeSetting("invert_alpha", ST.BOOL), + NTPNodeSetting("invert_rgb", ST.BOOL) + ], + 'CompositorNodeRGBToBW' : [], # Color > Adjust - 'CompositorNodeBrightContrast' : [("use_premultiply", ST.BOOL)], - - 'CompositorNodeColorBalance' : [("correction_method", ST.ENUM), - ("gain", ST.COLOR), - ("gamma", ST.COLOR), - ("lift", ST.COLOR), - ("offset", ST.COLOR), - ("offset_basis", ST.FLOAT), - ("power", ST.COLOR), - ("slope", ST.COLOR)], - - 'CompositorNodeColorCorrection' : [("red", ST.BOOL), - ("green", ST.BOOL), - ("blue", ST.BOOL), - #master - ("master_saturation", ST.FLOAT), - ("master_contrast", ST.FLOAT), - ("master_gamma", ST.FLOAT), - ("master_gain", ST.FLOAT), - ("master_lift", ST.FLOAT), - #highlights - ("highlights_saturation", ST.FLOAT), - ("highlights_contrast", ST.FLOAT), - ("highlights_gamma", ST.FLOAT), - ("highlights_gain", ST.FLOAT), - ("highlights_lift", ST.FLOAT), - #midtones - ("midtones_saturation", ST.FLOAT), - ("midtones_contrast", ST.FLOAT), - ("midtones_gamma", ST.FLOAT), - ("midtones_gain", ST.FLOAT), - ("midtones_lift", ST.FLOAT), - #shadows - ("shadows_saturation", ST.FLOAT), - ("shadows_contrast", ST.FLOAT), - ("shadows_gamma", ST.FLOAT), - ("shadows_gain", ST.FLOAT), - ("shadows_lift", ST.FLOAT), - #midtones location - ("midtones_start", ST.FLOAT), - ("midtones_end", ST.FLOAT)], - - 'CompositorNodeExposure' : [], - 'CompositorNodeGamma' : [], - - 'CompositorNodeHueCorrect' : [("mapping", ST.CURVE_MAPPING)], - - 'CompositorNodeHueSat' : [], - - 'CompositorNodeCurveRGB' : [("mapping", ST.CURVE_MAPPING)], - - 'CompositorNodeTonemap' : [("adaptation", ST.FLOAT), - ("contrast", ST.FLOAT), - ("correction", ST.FLOAT), - ("gamma", ST.FLOAT), - ("intensity", ST.FLOAT), - ("key", ST.FLOAT), - ("offset", ST.FLOAT), - ("tonemap_type", ST.ENUM)], + 'CompositorNodeBrightContrast' : [ + NTPNodeSetting("use_premultiply", ST.BOOL) + ], + + 'CompositorNodeColorBalance' : [ + NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("gain", ST.COLOR), + NTPNodeSetting("gamma", ST.COLOR), + NTPNodeSetting("lift", ST.COLOR), + NTPNodeSetting("offset", ST.COLOR), + NTPNodeSetting("offset_basis", ST.FLOAT), + NTPNodeSetting("power", ST.COLOR), + NTPNodeSetting("slope", ST.COLOR) + ], + + 'CompositorNodeColorCorrection' : [ + NTPNodeSetting("red", ST.BOOL), + NTPNodeSetting("green", ST.BOOL), + NTPNodeSetting("blue", ST.BOOL), + #master + NTPNodeSetting("master_saturation", ST.FLOAT), + NTPNodeSetting("master_contrast", ST.FLOAT), + NTPNodeSetting("master_gamma", ST.FLOAT), + NTPNodeSetting("master_gain", ST.FLOAT), + NTPNodeSetting("master_lift", ST.FLOAT), + #highlights + NTPNodeSetting("highlights_saturation", ST.FLOAT), + NTPNodeSetting("highlights_contrast", ST.FLOAT), + NTPNodeSetting("highlights_gamma", ST.FLOAT), + NTPNodeSetting("highlights_gain", ST.FLOAT), + NTPNodeSetting("highlights_lift", ST.FLOAT), + #midtones + NTPNodeSetting("midtones_saturation", ST.FLOAT), + NTPNodeSetting("midtones_contrast", ST.FLOAT), + NTPNodeSetting("midtones_gamma", ST.FLOAT), + NTPNodeSetting("midtones_gain", ST.FLOAT), + NTPNodeSetting("midtones_lift", ST.FLOAT), + #shadows + NTPNodeSetting("shadows_saturation", ST.FLOAT), + NTPNodeSetting("shadows_contrast", ST.FLOAT), + NTPNodeSetting("shadows_gamma", ST.FLOAT), + NTPNodeSetting("shadows_gain", ST.FLOAT), + NTPNodeSetting("shadows_lift", ST.FLOAT), + #midtones location + NTPNodeSetting("midtones_start", ST.FLOAT), + NTPNodeSetting("midtones_end", ST.FLOAT) + ], + + 'CompositorNodeExposure' : [], + 'CompositorNodeGamma' : [], + + 'CompositorNodeHueCorrect' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], + + 'CompositorNodeHueSat' : [], + + 'CompositorNodeCurveRGB' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], + + 'CompositorNodeTonemap' : [ + NTPNodeSetting("adaptation", ST.FLOAT), + NTPNodeSetting("contrast", ST.FLOAT), + NTPNodeSetting("correction", ST.FLOAT), + NTPNodeSetting("gamma", ST.FLOAT), + NTPNodeSetting("intensity", ST.FLOAT), + NTPNodeSetting("key", ST.FLOAT), + NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("tonemap_type", ST.ENUM) + ], # Color > Mix - 'CompositorNodeAlphaOver' : [("premul", ST.FLOAT), - ("use_premultiply", ST.BOOL)], - - 'CompositorNodeCombineColor' : [("mode", ST.ENUM), - ("ycc_mode", ST.ENUM)], + 'CompositorNodeAlphaOver' : [ + NTPNodeSetting("premul", ST.FLOAT), + NTPNodeSetting("use_premultiply", ST.BOOL) + ], - 'CompositorNodeSeparateColor' : [("mode", ST.ENUM), - ("ycc_mode", ST.ENUM)], + 'CompositorNodeCombineColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)), + NTPNodeSetting("ycc_mode", ST.ENUM, min_version = (3, 3, 0)) + ], - 'CompositorNodeMixRGB' : [("blend_type", ST.ENUM), - ("use_alpha", ST.BOOL), - ("use_clamp", ST.BOOL)], #TODO: what is update() method for? + 'CompositorNodeSeparateColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)), + NTPNodeSetting("ycc_mode", ST.ENUM, min_version = (3, 3, 0)) + ], - 'CompositorNodeZcombine' : [("use_alpha", ST.BOOL), - ("use_antialias_z", ST.BOOL)], + 'CompositorNodeMixRGB' : [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL) + ], + 'CompositorNodeZcombine' : [ + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_antialias_z", ST.BOOL) + ], # FILTER - 'CompositorNodeAntiAliasing' : [("contrast_limit", ST.FLOAT), - ("corner_rounding", ST.FLOAT), - ("threshold", ST.FLOAT)], + 'CompositorNodeAntiAliasing' : [ + NTPNodeSetting("contrast_limit", ST.FLOAT), + NTPNodeSetting("corner_rounding", ST.FLOAT), + NTPNodeSetting("threshold", ST.FLOAT) + ], - 'CompositorNodeDenoise' : [("prefilter", ST.ENUM), - ("use_hdr", ST.BOOL)], - - 'CompositorNodeDespeckle' : [("threshold", ST.FLOAT), - ("threshold_neighbor", ST.FLOAT)], - - - 'CompositorNodeDilateErode' : [("distance", ST.INT), - ("edge", ST.FLOAT), - ("falloff", ST.ENUM), - ("mode", ST.ENUM)], - - 'CompositorNodeInpaint' : [("distance", ST.INT)], - - - 'CompositorNodeFilter' : [("filter_type", ST.ENUM)], - - 'CompositorNodeGlare' : [("angle_offset", ST.FLOAT), - ("color_modulation", ST.FLOAT), - ("fade", ST.FLOAT), - ("glare_type", ST.ENUM), - ("iterations", ST.INT), - ("mix", ST.FLOAT), - ("quality", ST.ENUM), - ("size", ST.INT), - ("streaks", ST.INT), - ("threshold", ST.FLOAT), - ("use_rotate_45", ST.BOOL)], + 'CompositorNodeDenoise' : [ + NTPNodeSetting("prefilter", ST.ENUM), + NTPNodeSetting("use_hdr", ST.BOOL) + ], + + 'CompositorNodeDespeckle' : [ + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("threshold_neighbor", ST.FLOAT) + ], + + 'CompositorNodeDilateErode' : [ + NTPNodeSetting("distance", ST.INT), + NTPNodeSetting("edge", ST.FLOAT), + NTPNodeSetting("falloff", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM) + ], + + 'CompositorNodeInpaint' : [ + NTPNodeSetting("distance", ST.INT) + ], + + 'CompositorNodeFilter' : [ + NTPNodeSetting("filter_type", ST.ENUM) + ], + + 'CompositorNodeGlare' : [ + NTPNodeSetting("angle_offset", ST.FLOAT), + NTPNodeSetting("color_modulation", ST.FLOAT), + NTPNodeSetting("fade", ST.FLOAT), + NTPNodeSetting("glare_type", ST.ENUM), + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("mix", ST.FLOAT), + NTPNodeSetting("quality", ST.ENUM), + NTPNodeSetting("size", ST.INT), + NTPNodeSetting("streaks", ST.INT), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("use_rotate_45", ST.BOOL) + ], - 'CompositorNodeKuwahara' : [("eccentricity", ST.FLOAT), - ("sharpness", ST.FLOAT), - ("size", ST.INT), - ("uniformity", ST.INT), - ("variation", ST.ENUM)], - - 'CompositorNodePixelate' : [], - 'CompositorNodePosterize' : [], - - 'CompositorNodeSunBeams' : [("ray_length", ST.FLOAT), - ("source", ST.VEC2)], + 'CompositorNodeKuwahara' : [ + NTPNodeSetting("eccentricity", ST.FLOAT, min_version = (4, 0, 0)), + NTPNodeSetting("sharpness", ST.FLOAT, min_version = (4, 0, 0)), + NTPNodeSetting("size", ST.INT, min_version = (4, 0, 0)), + NTPNodeSetting("uniformity", ST.INT, min_version = (4, 0, 0)), + NTPNodeSetting("variation", ST.ENUM, min_version = (4, 0, 0)) + ], + + 'CompositorNodePixelate' : [], + 'CompositorNodePosterize' : [], + + 'CompositorNodeSunBeams' : [ + NTPNodeSetting("ray_length", ST.FLOAT), + NTPNodeSetting("source", ST.VEC2) + ], # Filter > Blur - 'CompositorNodeBilateralblur' : [("iterations", ST.INT), - ("sigma_color", ST.FLOAT), - ("sigma_space", ST.FLOAT)], - - 'CompositorNodeBlur' : [("aspect_correction", ST.ENUM), - ("factor", ST.FLOAT), - ("factor_x", ST.FLOAT), - ("factor_y", ST.FLOAT), - ("filter_type", ST.ENUM), - ("size_x", ST.INT), - ("size_y", ST.INT), - ("use_bokeh", ST.BOOL), - ("use_extended_bounds", ST.BOOL), - ("use_gamma_correction", ST.BOOL), - ("use_relative", ST.BOOL), - ("use_variable_size", ST.BOOL)], - - 'CompositorNodeBokehBlur' : [("blur_max", ST.FLOAT), - ("use_extended_bounds", ST.BOOL), - ("use_variable_size", ST.BOOL)], - - 'CompositorNodeDefocus' : [("angle", ST.FLOAT), - ("blur_max", ST.FLOAT), - ("bokeh", ST.ENUM), - ("f_stop", ST.FLOAT), - ("scene", ST.SCENE), - ("threshold", ST.FLOAT), - ("use_gamma_correction", ST.BOOL), - ("use_preview", ST.BOOL), - ("use_zbuffer", ST.BOOL), - ("z_scale", ST.FLOAT)], - - 'CompositorNodeDBlur' : [("angle", ST.FLOAT), - ("center_x", ST.FLOAT), - ("center_y", ST.FLOAT), - ("distance", ST.FLOAT), - ("iterations", ST.INT), - ("spin", ST.FLOAT), - ("zoom", ST.FLOAT)], + 'CompositorNodeBilateralblur' : [ + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("sigma_color", ST.FLOAT), + NTPNodeSetting("sigma_space", ST.FLOAT) + ], + + 'CompositorNodeBlur' : [ + NTPNodeSetting("aspect_correction", ST.ENUM), + NTPNodeSetting("factor", ST.FLOAT), + NTPNodeSetting("factor_x", ST.FLOAT), + NTPNodeSetting("factor_y", ST.FLOAT), + NTPNodeSetting("filter_type", ST.ENUM), + NTPNodeSetting("size_x", ST.INT), + NTPNodeSetting("size_y", ST.INT), + NTPNodeSetting("use_bokeh", ST.BOOL), + NTPNodeSetting("use_extended_bounds", ST.BOOL), + NTPNodeSetting("use_gamma_correction", ST.BOOL), + NTPNodeSetting("use_relative", ST.BOOL), + NTPNodeSetting("use_variable_size", ST.BOOL) + ], + + 'CompositorNodeBokehBlur' : [ + NTPNodeSetting("blur_max", ST.FLOAT), + NTPNodeSetting("use_extended_bounds", ST.BOOL), + NTPNodeSetting("use_variable_size", ST.BOOL) + ], + + 'CompositorNodeDefocus' : [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("blur_max", ST.FLOAT), + NTPNodeSetting("bokeh", ST.ENUM), + NTPNodeSetting("f_stop", ST.FLOAT), + NTPNodeSetting("scene", ST.SCENE), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("use_gamma_correction", ST.BOOL), + NTPNodeSetting("use_preview", ST.BOOL), + NTPNodeSetting("use_zbuffer", ST.BOOL), + NTPNodeSetting("z_scale", ST.FLOAT) + ], + + 'CompositorNodeDBlur' : [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("center_x", ST.FLOAT), + NTPNodeSetting("center_y", ST.FLOAT), + NTPNodeSetting("distance", ST.FLOAT), + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("spin", ST.FLOAT), + NTPNodeSetting("use_wrap", ST.BOOL, max_version = (3, 4, 0)), + NTPNodeSetting("zoom", ST.FLOAT) + ], - 'CompositorNodeVecBlur' : [("factor", ST.FLOAT), - ("samples", ST.INT), - ("speed_max", ST.INT), - ("speed_min", ST.INT), - ("use_curved", ST.BOOL)], + 'CompositorNodeVecBlur' : [ + NTPNodeSetting("factor", ST.FLOAT), + NTPNodeSetting("samples", ST.INT), + NTPNodeSetting("speed_max", ST.INT), + NTPNodeSetting("speed_min", ST.INT), + NTPNodeSetting("use_curved", ST.BOOL) + ], # KEYING - 'CompositorNodeChannelMatte' : [("color_space", ST.ENUM), - ("limit_channel", ST.ENUM), - ("limit_max", ST.FLOAT), - ("limit_method", ST.ENUM), - ("limit_min", ST.FLOAT), - ("matte_channel", ST.ENUM)], - - 'CompositorNodeChromaMatte' : [("gain", ST.FLOAT), - ("lift", ST.FLOAT), - ("shadow_adjust", ST.FLOAT), - ("threshold", ST.FLOAT), - ("tolerance", ST.FLOAT)], - - 'CompositorNodeColorMatte' : [("color_hue", ST.FLOAT), - ("color_saturation", ST.FLOAT), - ("color_value", ST.FLOAT)], - - 'CompositorNodeColorSpill' : [("channel", ST.ENUM), - ("limit_channel", ST.ENUM), - ("limit_method", ST.ENUM), - ("ratio", ST.FLOAT), - ("unspill_blue", ST.FLOAT), - ("unspill_green", ST.FLOAT), - ("unspill_red", ST.FLOAT), - ("use_unspill", ST.BOOL)], - - 'CompositorNodeDiffMatte' : [("falloff", ST.FLOAT), - ("tolerance", ST.FLOAT)], - - 'CompositorNodeDistanceMatte' : [("channel", ST.ENUM), - ("falloff", ST.FLOAT), - ("tolerance", ST.FLOAT)], - - 'CompositorNodeKeying' : [("blur_post", ST.INT), - ("blur_pre", ST.INT), - ("clip_black", ST.FLOAT), - ("clip_white", ST.FLOAT), - ("despill_balance", ST.FLOAT), - ("despill_factor", ST.FLOAT), - ("dilate_distance", ST.INT), - ("edge_kernel_radius", ST.INT), - ("edge_kernel_tolerance", ST.FLOAT), - ("feather_distance", ST.INT), - ("feather_falloff", ST.ENUM), - ("screen_balance", ST.FLOAT)], - - 'CompositorNodeKeyingScreen' : [("clip", ST.MOVIE_CLIP), - ("tracing_object", ST.STRING)], - - 'CompositorNodeLumaMatte' : [("limit_max", ST.FLOAT), - ("limit_min", ST.FLOAT)], + 'CompositorNodeChannelMatte' : [ + NTPNodeSetting("color_space", ST.ENUM), + NTPNodeSetting("limit_channel", ST.ENUM), + NTPNodeSetting("limit_max", ST.FLOAT), + NTPNodeSetting("limit_method", ST.ENUM), + NTPNodeSetting("limit_min", ST.FLOAT), + NTPNodeSetting("matte_channel", ST.ENUM) + ], + + 'CompositorNodeChromaMatte' : [ + NTPNodeSetting("gain", ST.FLOAT), + NTPNodeSetting("lift", ST.FLOAT), + NTPNodeSetting("shadow_adjust", ST.FLOAT), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT) + ], + + 'CompositorNodeColorMatte' : [ + NTPNodeSetting("color_hue", ST.FLOAT), + NTPNodeSetting("color_saturation", ST.FLOAT), + NTPNodeSetting("color_value", ST.FLOAT) + ], + + 'CompositorNodeColorSpill' : [ + NTPNodeSetting("channel", ST.ENUM), + NTPNodeSetting("limit_channel", ST.ENUM), + NTPNodeSetting("limit_method", ST.ENUM), + NTPNodeSetting("ratio", ST.FLOAT), + NTPNodeSetting("unspill_blue", ST.FLOAT), + NTPNodeSetting("unspill_green", ST.FLOAT), + NTPNodeSetting("unspill_red", ST.FLOAT), + NTPNodeSetting("use_unspill", ST.BOOL) + ], + + 'CompositorNodeDiffMatte' : [ + NTPNodeSetting("falloff", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT) + ], + + 'CompositorNodeDistanceMatte' : [ + NTPNodeSetting("channel", ST.ENUM), + NTPNodeSetting("falloff", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT) + ], + + 'CompositorNodeKeying' : [ + NTPNodeSetting("blur_post", ST.INT), + NTPNodeSetting("blur_pre", ST.INT), + NTPNodeSetting("clip_black", ST.FLOAT), + NTPNodeSetting("clip_white", ST.FLOAT), + NTPNodeSetting("despill_balance", ST.FLOAT), + NTPNodeSetting("despill_factor", ST.FLOAT), + NTPNodeSetting("dilate_distance", ST.INT), + NTPNodeSetting("edge_kernel_radius", ST.INT), + NTPNodeSetting("edge_kernel_tolerance", ST.FLOAT), + NTPNodeSetting("feather_distance", ST.INT), + NTPNodeSetting("feather_falloff", ST.ENUM), + NTPNodeSetting("screen_balance", ST.FLOAT) + ], + + 'CompositorNodeKeyingScreen' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("tracking_object", ST.STRING) + ], + + 'CompositorNodeLumaMatte' : [ + NTPNodeSetting("limit_max", ST.FLOAT), + NTPNodeSetting("limit_min", ST.FLOAT) + ], + # MASK - 'CompositorNodeCryptomatteV2' : [("add", ST.COLOR), - ("entries", ST.CRYPTOMATTE_ENTRIES), - ("frame_duration", ST.INT), - ("frame_offset", ST.INT), - ("frame_start", ST.INT), - ("image", ST.IMAGE), - ("layer", ST.ENUM), - ("layer_name", ST.ENUM), - ("matte_id", ST.STRING), - ("remove", ST.COLOR), - ("scene", ST.SCENE), - ("source", ST.ENUM), - ("use_auto_refresh", ST.BOOL), - ("use_cyclic", ST.BOOL), - ("view", ST.ENUM)], - - 'CompositorNodeCryptomatte' : [("add", ST.COLOR), #TODO: may need special handling - ("matte_id", ST.STRING), - ("remove", ST.COLOR)], - - - 'CompositorNodeBoxMask' : [("height", ST.FLOAT), - ("mask_type", ST.ENUM), - ("rotation", ST.FLOAT), - ("width", ST.FLOAT), - ("x", ST.FLOAT), - ("y", ST.FLOAT)], - - 'CompositorNodeEllipseMask' : [("height", ST.FLOAT), - ("mask_type", ST.ENUM), - ("rotation", ST.FLOAT), - ("width", ST.FLOAT), - ("x", ST.FLOAT), - ("y", ST.FLOAT)], - - - 'CompositorNodeDoubleEdgeMask' : [("edge_mode", ST.ENUM), - ("inner_mode", ST.ENUM)], - - 'CompositorNodeIDMask' : [("index", ST.INT), - ("use_antialiasing", ST.BOOL)], + 'CompositorNodeCryptomatteV2' : [ + NTPNodeSetting("add", ST.COLOR), + NTPNodeSetting("entries", ST.CRYPTOMATTE_ENTRIES), + NTPNodeSetting("frame_duration", ST.INT), + NTPNodeSetting("frame_offset", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("layer_name", ST.ENUM), + NTPNodeSetting("matte_id", ST.STRING), + NTPNodeSetting("remove", ST.COLOR), + NTPNodeSetting("scene", ST.SCENE), + NTPNodeSetting("source", ST.ENUM), + NTPNodeSetting("use_auto_refresh", ST.BOOL), + NTPNodeSetting("use_cyclic", ST.BOOL), + NTPNodeSetting("view", ST.ENUM) + ], + + 'CompositorNodeCryptomatte' : [ + NTPNodeSetting("add", ST.COLOR), #TODO: may need special handling + NTPNodeSetting("matte_id", ST.STRING), + NTPNodeSetting("remove", ST.COLOR) + ], + + 'CompositorNodeBoxMask' : [ + NTPNodeSetting("height", ST.FLOAT), + NTPNodeSetting("mask_type", ST.ENUM), + NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("width", ST.FLOAT), + NTPNodeSetting("x", ST.FLOAT), + NTPNodeSetting("y", ST.FLOAT) + ], + + 'CompositorNodeEllipseMask' : [ + NTPNodeSetting("height", ST.FLOAT), + NTPNodeSetting("mask_type", ST.ENUM), + NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("width", ST.FLOAT), + NTPNodeSetting("x", ST.FLOAT), + NTPNodeSetting("y", ST.FLOAT) + ], + + 'CompositorNodeDoubleEdgeMask' : [ + NTPNodeSetting("edge_mode", ST.ENUM), + NTPNodeSetting("inner_mode", ST.ENUM) + ], + + 'CompositorNodeIDMask' : [ + NTPNodeSetting("index", ST.INT), + NTPNodeSetting("use_antialiasing", ST.BOOL) + ], # TRACKING - 'CompositorNodePlaneTrackDeform' : [("clip", ST.MOVIE_CLIP), - ("motion_blur_samples", ST.INT), - ("motion_blur_shutter", ST.FLOAT), - ("plane_track_name", ST.STRING), - ("tracking_object", ST.STRING), - ("use_motion_blur", ST.BOOL)], - - 'CompositorNodeStabilize' : [("clip", ST.MOVIE_CLIP), - ("filter_type", ST.ENUM), - ("invert", ST.BOOL)], - - 'CompositorNodeTrackPos' : [("clip", ST.MOVIE_CLIP), - ("frame_relative", ST.INT), - ("position", ST.ENUM), - ("track_name", ST.STRING), #TODO: probably not right - ("tracking_object", ST.STRING)], - + 'CompositorNodePlaneTrackDeform' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("motion_blur_samples", ST.INT), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("plane_track_name", ST.STRING), + NTPNodeSetting("tracking_object", ST.STRING), + NTPNodeSetting("use_motion_blur", ST.BOOL) + ], + + 'CompositorNodeStabilize' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("filter_type", ST.ENUM), + NTPNodeSetting("invert", ST.BOOL) + ], + + 'CompositorNodeTrackPos' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("frame_relative", ST.INT), + NTPNodeSetting("position", ST.ENUM), + NTPNodeSetting("track_name", ST.STRING), #TODO: probably not right + NTPNodeSetting("tracking_object", ST.STRING) + ], # TRANSFORM - 'CompositorNodeRotate' : [("filter_type", ST.ENUM)], - - 'CompositorNodeScale' : [("frame_method", ST.ENUM), - ("offset_x", ST.FLOAT), - ("offset_y", ST.FLOAT), - ("space", ST.ENUM)], - - - 'CompositorNodeTransform' : [("filter_type", ST.ENUM)], - - 'CompositorNodeTranslate' : [("use_relative", ST.BOOL), - ("wrap_axis", ST.ENUM)], - - - 'CompositorNodeCornerPin' : [], - - 'CompositorNodeCrop' : [("max_x", ST.INT), - ("max_y", ST.INT), - ("min_x", ST.INT), - ("min_y", ST.INT), - ("rel_max_x", ST.FLOAT), - ("rel_max_y", ST.FLOAT), - ("rel_min_x", ST.FLOAT), - ("rel_min_y", ST.FLOAT), - ("relative", ST.BOOL), - ("use_crop_size", ST.BOOL)], - - - 'CompositorNodeDisplace' : [], - - 'CompositorNodeFlip' : [("axis", ST.ENUM)], - - 'CompositorNodeMapUV' : [("alpha", ST.INT)], - - - 'CompositorNodeLensdist' : [("use_fit", ST.BOOL), - ("use_jitter", ST.BOOL), - ("use_projector", ST.BOOL)], - - 'CompositorNodeMovieDistortion' : [("clip", ST.MOVIE_CLIP), - ("distortion_type", ST.ENUM)], - + 'CompositorNodeRotate' : [ + NTPNodeSetting("filter_type", ST.ENUM) + ], + + 'CompositorNodeScale' : [ + NTPNodeSetting("frame_method", ST.ENUM), + NTPNodeSetting("offset_x", ST.FLOAT), + NTPNodeSetting("offset_y", ST.FLOAT), + NTPNodeSetting("space", ST.ENUM) + ], + + 'CompositorNodeTransform' : [ + NTPNodeSetting("filter_type", ST.ENUM) + ], + + 'CompositorNodeTranslate' : [ + NTPNodeSetting("use_relative", ST.BOOL), + NTPNodeSetting("wrap_axis", ST.ENUM) + ], + + 'CompositorNodeCornerPin' : [], + + 'CompositorNodeCrop' : [ + NTPNodeSetting("max_x", ST.INT), + NTPNodeSetting("max_y", ST.INT), + NTPNodeSetting("min_x", ST.INT), + NTPNodeSetting("min_y", ST.INT), + NTPNodeSetting("rel_max_x", ST.FLOAT), + NTPNodeSetting("rel_max_y", ST.FLOAT), + NTPNodeSetting("rel_min_x", ST.FLOAT), + NTPNodeSetting("rel_min_y", ST.FLOAT), + NTPNodeSetting("relative", ST.BOOL), + NTPNodeSetting("use_crop_size", ST.BOOL) + ], + + 'CompositorNodeDisplace' : [], + + 'CompositorNodeFlip' : [ + NTPNodeSetting("axis", ST.ENUM) + ], + + 'CompositorNodeMapUV' : [ + NTPNodeSetting("alpha", ST.INT) + ], + + 'CompositorNodeLensdist' : [ + NTPNodeSetting("use_fit", ST.BOOL), + NTPNodeSetting("use_jitter", ST.BOOL), + NTPNodeSetting("use_projector", ST.BOOL) + ], + + 'CompositorNodeMovieDistortion' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("distortion_type", ST.ENUM) + ], # UTILITIES - 'CompositorNodeMapRange' : [("use_clamp", ST.BOOL)], - - 'CompositorNodeMapValue' : [("max", ST.VEC1), - ("min", ST.VEC1), - ("offset", ST.VEC1), - ("size", ST.VEC1), - ("use_max", ST.BOOL), - ("use_min", ST.BOOL)], - - 'CompositorNodeMath' : [("operation", ST.ENUM), - ("use_clamp", ST.BOOL)], - - - 'CompositorNodeLevels' : [("channel", ST.ENUM)], + 'CompositorNodeMapRange' : [ + NTPNodeSetting("use_clamp", ST.BOOL) + ], + + 'CompositorNodeMapValue' : [ + NTPNodeSetting("max", ST.VEC1), + NTPNodeSetting("min", ST.VEC1), + NTPNodeSetting("offset", ST.VEC1), + NTPNodeSetting("size", ST.VEC1), + NTPNodeSetting("use_max", ST.BOOL), + NTPNodeSetting("use_min", ST.BOOL) + ], + + 'CompositorNodeMath' : [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("use_clamp", ST.BOOL) + ], + + 'CompositorNodeLevels' : [ + NTPNodeSetting("channel", ST.ENUM) + ], - 'CompositorNodeNormalize' : [], + 'CompositorNodeNormalize' : [], - 'CompositorNodeSwitch' : [("check", ST.BOOL)], + 'CompositorNodeSwitch' : [ + NTPNodeSetting("check", ST.BOOL) + ], 'CompositorNodeSwitchView' : [], @@ -451,19 +584,27 @@ 'CompositorNodeSeparateXYZ' : [], 'CompositorNodeNormal' : [], - 'CompositorNodeCurveVec' : [("mapping", ST.CURVE_MAPPING)], + 'CompositorNodeCurveVec' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], # MISC - 'CompositorNodeGroup' : [("node_tree", ST.NODE_TREE)], + 'CompositorNodeGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE) + ], - 'NodeFrame' : [("label_size", ST.INT), - ("shrink", ST.BOOL), - ("text", ST.TEXT)], + 'NodeFrame' : [ + NTPNodeSetting("label_size", ST.INT), + NTPNodeSetting("shrink", ST.BOOL), + NTPNodeSetting("text", ST.TEXT) + ], 'NodeGroupInput' : [], - 'NodeGroupOutput' : [("is_active_output", ST.BOOL)], + 'NodeGroupOutput' : [ + NTPNodeSetting("is_active_output", ST.BOOL) + ], 'NodeReroute' : [] } diff --git a/compositor/operator.py b/compositor/operator.py index 8078912..afe2d62 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -13,7 +13,7 @@ END_NAME = "end_name" NODE = "node" -comp_op_reserved_names = {SCENE, BASE_NAME, END_NAME, NODE} +COMP_OP_RESERVED_NAMES = {SCENE, BASE_NAME, END_NAME, NODE} class NTPCompositorOperator(NTP_Operator): bl_idname = "node.ntp_compositor" @@ -34,7 +34,7 @@ class NTPCompositorOperator(NTP_Operator): def __init__(self): super().__init__() self._settings = compositor_node_settings - for name in comp_op_reserved_names: + for name in COMP_OP_RESERVED_NAMES: self._used_vars[name] = 0 @@ -87,16 +87,16 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance node (CompositorNodeColorBalance): the color balance node """ if node.correction_method == 'LIFT_GAMMA_GAIN': - lst = [("correction_method", ST.ENUM), - ("gain", ST.COLOR), - ("gamma", ST.COLOR), - ("lift", ST.COLOR)] + lst = [NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("gain", ST.COLOR), + NTPNodeSetting("gamma", ST.COLOR), + NTPNodeSetting("lift", ST.COLOR)] else: - lst = [("correction_method", ST.ENUM), - ("offset", ST.COLOR), - ("offset_basis", ST.FLOAT), - ("power", ST.COLOR), - ("slope", ST.COLOR)] + lst = [NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("offset", ST.COLOR), + NTPNodeSetting("offset_basis", ST.FLOAT), + NTPNodeSetting("power", ST.COLOR), + NTPNodeSetting("slope", ST.COLOR)] self._settings['CompositorNodeColorBalance'] = lst diff --git a/geometry/node_settings.py b/geometry/node_settings.py index d637180..ffa30c6 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -1,190 +1,271 @@ -from ..utils import ST +from ..utils import ST, NTPNodeSetting -geo_node_settings : dict[str, list[(str, ST)]] = { +geo_node_settings : dict[str, list[NTPNodeSetting]] = { # ATTRIBUTE - 'GeometryNodeAttributeStatistic' : [("data_type", ST.ENUM), - ("domain", ST.ENUM)], + 'GeometryNodeAttributeStatistic' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM) + ], - 'GeometryNodeAttributeDomainSize' : [("component", ST.ENUM)], + 'GeometryNodeAttributeDomainSize' : [ + NTPNodeSetting("component", ST.ENUM, min_version = (3, 1, 0)) + ], - 'GeometryNodeBlurAttribute' : [("data_type", ST.ENUM)], + 'GeometryNodeBlurAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 5, 0)) + ], - 'GeometryNodeCaptureAttribute' : [("data_type", ST.ENUM), - ("domain", ST.ENUM)], + 'GeometryNodeCaptureAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM) + ], - 'GeometryNodeRemoveAttribute' : [], + 'GeometryNodeRemoveAttribute' : [], - 'GeometryNodeStoreNamedAttribute' : [("data_type", ST.ENUM), - ("domain", ST.ENUM)], + 'GeometryNodeStoreNamedAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 2, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 2, 0)) + ], - 'GeometryNodeAttributeTransfer' : [("data_type", ST.ENUM), - ("domain", ST.ENUM), - ("mapping", ST.ENUM)], + 'GeometryNodeAttributeTransfer' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("mapping", ST.ENUM) + ], # INPUT # Input > Constant - 'FunctionNodeInputBool' : [("boolean", ST.BOOL)], + 'FunctionNodeInputBool' : [ + NTPNodeSetting("boolean", ST.BOOL) + ], - 'FunctionNodeInputColor' : [("color", ST.VEC4)], + 'FunctionNodeInputColor' : [ + NTPNodeSetting("color", ST.VEC4) + ], - 'GeometryNodeInputImage' : [("image", ST.IMAGE)], + 'GeometryNodeInputImage' : [ + NTPNodeSetting("image", ST.IMAGE, min_version = (3, 5, 0)) + ], - 'FunctionNodeInputInt' : [("integer", ST.INT)], + 'FunctionNodeInputInt' : [ + NTPNodeSetting("integer", ST.INT) + ], - 'GeometryNodeInputMaterial' : [("material", ST.MATERIAL)], + 'GeometryNodeInputMaterial' : [ + NTPNodeSetting("material", ST.MATERIAL) + ], - 'FunctionNodeInputString' : [("string", ST.STRING)], + 'FunctionNodeInputString' : [ + NTPNodeSetting("string", ST.STRING) + ], - 'ShaderNodeValue' : [], + 'ShaderNodeValue' : [], - 'FunctionNodeInputVector' : [("vector", ST.VEC3)], + 'FunctionNodeInputVector' : [ + NTPNodeSetting("vector", ST.VEC3) + ], #Input > Group 'NodeGroupInput' : [], # Input > Scene - 'GeometryNodeTool3DCursor' : [], + 'GeometryNodeTool3DCursor' : [], - 'GeometryNodeCollectionInfo' : [("transform_space", ST.ENUM)], + 'GeometryNodeCollectionInfo' : [ + NTPNodeSetting("transform_space", ST.ENUM) + ], - 'GeometryNodeImageInfo' : [], - 'GeometryNodeIsViewport' : [], + 'GeometryNodeImageInfo' : [], + 'GeometryNodeIsViewport' : [], - 'GeometryNodeObjectInfo' : [("transform_space", ST.ENUM)], + 'GeometryNodeObjectInfo' : [ + NTPNodeSetting("transform_space", ST.ENUM) + ], - 'GeometryNodeSelfObject' : [], + 'GeometryNodeSelfObject' : [], 'GeometryNodeInputSceneTime' : [], # OUTPUT - 'GeometryNodeViewer' : [("data_type", ST.ENUM), - - ("domain", ST.ENUM)], + 'GeometryNodeViewer' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 4, 0)) + ], # GEOMETRY - 'GeometryNodeJoinGeometry' : [], + 'GeometryNodeJoinGeometry' : [], 'GeometryNodeGeometryToInstance' : [], # Geometry > Read - 'GeometryNodeInputID' : [], - 'GeometryNodeInputIndex' : [], + 'GeometryNodeInputID' : [], + 'GeometryNodeInputIndex' : [], - 'GeometryNodeInputNamedAttribute' : [("data_type", ST.ENUM)], + 'GeometryNodeInputNamedAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 2, 0)) + ], - 'GeometryNodeInputNormal' : [], - 'GeometryNodeInputPosition' : [], - 'GeometryNodeInputRadius' : [], - 'GeometryNodeToolSelection' : [], + 'GeometryNodeInputNormal' : [], + 'GeometryNodeInputPosition' : [], + 'GeometryNodeInputRadius' : [], + 'GeometryNodeToolSelection' : [], # Geometry > Sample - 'GeometryNodeProximity' : [("target_element", ST.ENUM)], + 'GeometryNodeProximity' : [ + NTPNodeSetting("target_element", ST.ENUM) + ], 'GeometryNodeIndexOfNearest' : [], - 'GeometryNodeRaycast' : [("data_type", ST.ENUM), - ("mapping", ST.ENUM)], + 'GeometryNodeRaycast' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("mapping", ST.ENUM) + ], - 'GeometryNodeSampleIndex' : [("clamp", ST.BOOL), - ("data_type", ST.ENUM), - ("domain", ST.ENUM)], + 'GeometryNodeSampleIndex' : [ + NTPNodeSetting("clamp", ST.BOOL, min_version = (3, 4, 0)), + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 4, 0)) + ], - 'GeometryNodeSampleNearest' : [("domain", ST.ENUM)], + 'GeometryNodeSampleNearest' : [ + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 4, 0)) + ], # Geometry > Write - 'GeometryNodeSetID' : [], - 'GeometryNodeSetPosition' : [], + 'GeometryNodeSetID' : [], + 'GeometryNodeSetPosition' : [], 'GeometryNodeToolSetSelection' : [], # Geometry > Operations - 'GeometryNodeBoundBox' : [], - 'GeometryNodeConvexHull' : [], + 'GeometryNodeBoundBox' : [], + 'GeometryNodeConvexHull' : [], - 'GeometryNodeDeleteGeometry' : [("domain", ST.ENUM), - ("mode", ST.ENUM)], + 'GeometryNodeDeleteGeometry' : [ + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeDuplicateElements' : [("domain", ST.ENUM)], + 'GeometryNodeDuplicateElements' : [ + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 2, 0)) + ], - 'GeometryNodeMergeByDistance' : [("mode", ST.ENUM)], + 'GeometryNodeMergeByDistance' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)) + ], - 'GeometryNodeTransform' : [], + 'GeometryNodeTransform' : [], 'GeometryNodeSeparateComponents' : [], - 'GeometryNodeSeparateGeometry' : [("domain", ST.ENUM)], + 'GeometryNodeSeparateGeometry' : [ + NTPNodeSetting("domain", ST.ENUM) + ], # CURVE # Curve > Read 'GeometryNodeInputCurveHandlePositions' : [], - 'GeometryNodeCurveLength' : [], - 'GeometryNodeInputTangent' : [], - 'GeometryNodeInputCurveTilt' : [], - 'GeometryNodeCurveEndpointSelection' : [], + 'GeometryNodeCurveLength' : [], + 'GeometryNodeInputTangent' : [], + 'GeometryNodeInputCurveTilt' : [], + 'GeometryNodeCurveEndpointSelection' : [], - 'GeometryNodeCurveHandleTypeSelection' : [("handle_type", ST.ENUM), - ("mode", ST.ENUM_SET)], + 'GeometryNodeCurveHandleTypeSelection' : [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET) + ], - 'GeometryNodeInputSplineCyclic' : [], - 'GeometryNodeSplineLength' : [], - 'GeometryNodeSplineParameter' : [], - 'GeometryNodeInputSplineResolution' : [], + 'GeometryNodeInputSplineCyclic' : [], + 'GeometryNodeSplineLength' : [], + 'GeometryNodeSplineParameter' : [], + 'GeometryNodeInputSplineResolution' : [], # Curve > Sample - 'GeometryNodeSampleCurve' : [("data_type", ST.ENUM), - ("mode", ST.ENUM), - ("use_all_curves", ST.BOOL)], + 'GeometryNodeSampleCurve' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("use_all_curves", ST.BOOL, min_version = (3, 4, 0)) + ], # Curve > Write - 'GeometryNodeSetCurveNormal' : [("mode", ST.ENUM)], + 'GeometryNodeSetCurveNormal' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 4, 0)) + ], - 'GeometryNodeSetCurveRadius' : [], - 'GeometryNodeSetCurveTilt' : [], + 'GeometryNodeSetCurveRadius' : [], + 'GeometryNodeSetCurveTilt' : [], - 'GeometryNodeSetCurveHandlePositions' : [("mode", ST.ENUM)], + 'GeometryNodeSetCurveHandlePositions' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeCurveSetHandles' : [("handle_type", ST.ENUM), - ("mode", ST.ENUM_SET)], + 'GeometryNodeCurveSetHandles' : [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET) + ], - 'GeometryNodeSetSplineCyclic' : [], - 'GeometryNodeSetSplineResolution' : [], + 'GeometryNodeSetSplineCyclic' : [], + 'GeometryNodeSetSplineResolution' : [], - 'GeometryNodeCurveSplineType' : [("spline_type", ST.ENUM)], + 'GeometryNodeCurveSplineType' : [ + NTPNodeSetting("spline_type", ST.ENUM) + ], # Curve > Operations - 'GeometryNodeCurveToMesh' : [], + 'GeometryNodeCurveToMesh' : [], - 'GeometryNodeCurveToPoints' : [("mode", ST.ENUM)], + 'GeometryNodeCurveToPoints' : [ + NTPNodeSetting("mode", ST.ENUM) + ], 'GeometryNodeDeformCurvesOnSurface' : [], - 'GeometryNodeFillCurve' : [("mode", ST.ENUM)], + 'GeometryNodeFillCurve' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeFilletCurve' : [("mode", ST.ENUM)], + 'GeometryNodeFilletCurve' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeInterpolateCurves' : [], + 'GeometryNodeInterpolateCurves' : [], - 'GeometryNodeResampleCurve' : [("mode", ST.ENUM)], + 'GeometryNodeResampleCurve' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeReverseCurve' : [], - 'GeometryNodeSubdivideCurve' : [], + 'GeometryNodeReverseCurve' : [], + 'GeometryNodeSubdivideCurve' : [], - 'GeometryNodeTrimCurve' : [("mode", ST.ENUM)], + 'GeometryNodeTrimCurve' : [ + NTPNodeSetting("mode", ST.ENUM) + ], # Curve > Primitives - 'GeometryNodeCurveArc' : [("mode", ST.ENUM)], + 'GeometryNodeCurveArc' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)) + ], - 'GeometryNodeCurvePrimitiveBezierSegment' : [("mode", ST.ENUM)], + 'GeometryNodeCurvePrimitiveBezierSegment' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeCurvePrimitiveCircle' : [("mode", ST.ENUM)], + 'GeometryNodeCurvePrimitiveCircle' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeCurvePrimitiveLine' : [("mode", ST.ENUM)], + 'GeometryNodeCurvePrimitiveLine' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeCurveSpiral' : [], - 'GeometryNodeCurveQuadraticBezier' : [], + 'GeometryNodeCurveSpiral' : [], + 'GeometryNodeCurveQuadraticBezier' : [], - 'GeometryNodeCurvePrimitiveQuadrilateral' : [("mode", ST.ENUM)], + 'GeometryNodeCurvePrimitiveQuadrilateral' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeCurveStar' : [], + 'GeometryNodeCurveStar' : [], # Curve > Topology 'GeometryNodeOffsetPointInCurve' : [], @@ -193,10 +274,13 @@ # INSTANCES - 'GeometryNodeInstanceOnPoints' : [], - 'GeometryNodeInstancesToPoints' : [], + 'GeometryNodeInstanceOnPoints' : [], + 'GeometryNodeInstancesToPoints' : [], - 'GeometryNodeRealizeInstances' : [("legacy_behavior", ST.BOOL)], + 'GeometryNodeRealizeInstances' : [ + NTPNodeSetting("legacy_behavior", ST.BOOL, min_version = (3, 1, 0), + max_version = (3, 6, 0)) + ], 'GeometryNodeRotateInstances' : [], 'GeometryNodeScaleInstances' : [], @@ -223,58 +307,86 @@ 'GeometryNodeInputMeshVertexNeighbors' : [], # Mesh > Sample - 'GeometryNodeSampleNearestSurface' : [("data_type", ST.ENUM)], + 'GeometryNodeSampleNearestSurface' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)) + ], - 'GeometryNodeSampleUVSurface' : [("data_type", ST.ENUM)], + 'GeometryNodeSampleUVSurface' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)) + ], # Mesh > Write 'GeometryNodeToolSetFaceSet' : [], - 'GeometryNodeSetShadeSmooth' : [("domain", ST.ENUM)], + 'GeometryNodeSetShadeSmooth' : [ + NTPNodeSetting("domain", ST.ENUM, min_version = (4, 0, 0)) + ], # Mesh > Operations 'GeometryNodeDualMesh' : [], 'GeometryNodeEdgePathsToCurves' : [], 'GeometryNodeEdgePathsToSelection' : [], - 'GeometryNodeExtrudeMesh' : [("mode", ST.ENUM)], + 'GeometryNodeExtrudeMesh' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)) + ], - 'GeometryNodeFlipFaces' : [], + 'GeometryNodeFlipFaces' : [], - 'GeometryNodeMeshBoolean' : [("operation", ST.ENUM)], + 'GeometryNodeMeshBoolean' : [ + NTPNodeSetting("operation", ST.ENUM) + ], - 'GeometryNodeMeshToCurve' : [], + 'GeometryNodeMeshToCurve' : [], - 'GeometryNodeMeshToPoints' : [("mode", ST.ENUM)], + 'GeometryNodeMeshToPoints' : [ + NTPNodeSetting("mode", ST.ENUM) + ], - 'GeometryNodeMeshToVolume' : [("resolution_mode", ST.ENUM)], + 'GeometryNodeMeshToVolume' : [ + NTPNodeSetting("resolution_mode", ST.ENUM, min_version = (3, 3, 0)) + ], - 'GeometryNodeScaleElements' : [("domain", ST.ENUM), - ("scale_mode", ST.ENUM)], + 'GeometryNodeScaleElements' : [ + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 1, 0)), + NTPNodeSetting("scale_mode", ST.ENUM, min_version = (3, 1, 0)) + ], - 'GeometryNodeSplitEdges' : [], - 'GeometryNodeSubdivideMesh' : [], + 'GeometryNodeSplitEdges' : [], + 'GeometryNodeSubdivideMesh' : [], - 'GeometryNodeSubdivisionSurface' : [("boundary_smooth", ST.ENUM), - ("uv_smooth", ST.ENUM)], + 'GeometryNodeSubdivisionSurface' : [ + NTPNodeSetting("boundary_smooth", ST.ENUM), + NTPNodeSetting("uv_smooth", ST.ENUM) + ], - 'GeometryNodeTriangulate' : [("ngon_method", ST.ENUM), - ("quad_method", ST.ENUM)], + 'GeometryNodeTriangulate' : [ + NTPNodeSetting("ngon_method", ST.ENUM), + NTPNodeSetting("quad_method", ST.ENUM) + ], # Mesh > Primitives - 'GeometryNodeMeshCone' : [("fill_type", ST.ENUM)], + 'GeometryNodeMeshCone' : [ + NTPNodeSetting("fill_type", ST.ENUM) + ], - 'GeometryNodeMeshCube' : [], + 'GeometryNodeMeshCube' : [], - 'GeometryNodeMeshCylinder' : [("fill_type", ST.ENUM)], + 'GeometryNodeMeshCylinder' : [ + NTPNodeSetting("fill_type", ST.ENUM) + ], 'GeometryNodeMeshGrid' : [], 'GeometryNodeMeshIcoSphere' : [], - 'GeometryNodeMeshCircle' : [("fill_type", ST.ENUM)], + 'GeometryNodeMeshCircle' : [ + NTPNodeSetting("fill_type", ST.ENUM) + ], - 'GeometryNodeMeshLine' : [("count_mode", ST.ENUM), - ("mode", ST.ENUM)], + 'GeometryNodeMeshLine' : [ + NTPNodeSetting("count_mode", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM) + ], 'GeometryNodeMeshUVSphere' : [], @@ -290,27 +402,37 @@ # Mesh > UV 'GeometryNodeUVPackIslands' : [], - 'GeometryNodeUVUnwrap' : [("method", ST.ENUM)], + 'GeometryNodeUVUnwrap': [ + NTPNodeSetting("method", ST.ENUM, min_version = (3, 3, 0)) + ], # POINT - 'GeometryNodeDistributePointsInVolume' : [("mode", ST.ENUM)], + 'GeometryNodeDistributePointsInVolume' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 4, 0)) + ], - 'GeometryNodeDistributePointsOnFaces' : [("distribute_method", ST.ENUM), - ("use_legacy_normal", ST.BOOL)], + 'GeometryNodeDistributePointsOnFaces' : [ + NTPNodeSetting("distribute_method", ST.ENUM), + NTPNodeSetting("use_legacy_normal", ST.BOOL, min_version = (3, 5, 0)) + ], - 'GeometryNodePoints' : [], - 'GeometryNodePointsToCurves' : [], - 'GeometryNodePointsToVertices' : [], + 'GeometryNodePoints' : [], + 'GeometryNodePointsToCurves' : [], + 'GeometryNodePointsToVertices' : [], - 'GeometryNodePointsToVolume' : [("resolution_mode", ST.ENUM)], + 'GeometryNodePointsToVolume' : [ + NTPNodeSetting("resolution_mode", ST.ENUM) + ], - 'GeometryNodeSetPointRadius' : [], + 'GeometryNodeSetPointRadius' : [], # VOLUME 'GeometryNodeVolumeCube' : [], - 'GeometryNodeVolumeToMesh' : [("resolution_mode", ST.ENUM)], + 'GeometryNodeVolumeToMesh' : [ + NTPNodeSetting("resolution_mode", ST.ENUM) + ], # SIMULATION @@ -327,130 +449,203 @@ # TEXTURE - 'ShaderNodeTexBrick' : [("offset", ST.FLOAT), - ("offset_frequency", ST.INT), - ("squash", ST.FLOAT), - ("squash_frequency", ST.INT)], - - 'ShaderNodeTexChecker' : [], - - 'ShaderNodeTexGradient' : [("gradient_type", ST.ENUM)], - - 'GeometryNodeImageTexture' : [("extension", ST.ENUM), - ("interpolation", ST.ENUM)], - - 'ShaderNodeTexMagic' : [("turbulence_depth", ST.INT)], - - 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", ST.ENUM), - ("musgrave_type", ST.ENUM)], - - 'ShaderNodeTexNoise' : [("noise_dimensions", ST.ENUM)], - - 'ShaderNodeTexVoronoi' : [("distance", ST.ENUM), - ("feature", ST.ENUM), - ("voronoi_dimensions", ST.ENUM)], - - 'ShaderNodeTexWave' : [("bands_direction", ST.ENUM), - ("rings_direction", ST.ENUM), - ("wave_profile", ST.ENUM), - ("wave_type", ST.ENUM)], - - 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", ST.ENUM)], + 'ShaderNodeTexBrick' : [ + NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("offset_frequency", ST.INT), + NTPNodeSetting("squash", ST.FLOAT), + NTPNodeSetting("squash_frequency", ST.INT) + ], + + 'ShaderNodeTexChecker' : [], + + 'ShaderNodeTexGradient' : [ + NTPNodeSetting("gradient_type", ST.ENUM) + ], + + 'GeometryNodeImageTexture' : [ + NTPNodeSetting("extension", ST.ENUM, min_version = (3, 1, 0)), + NTPNodeSetting("interpolation", ST.ENUM, min_version = (3, 1, 0)) + ], + + 'ShaderNodeTexMagic' : [ + NTPNodeSetting("turbulence_depth", ST.INT) + ], + + 'ShaderNodeTexMusgrave' : [ + NTPNodeSetting("musgrave_dimensions", ST.ENUM), + NTPNodeSetting("musgrave_type", ST.ENUM) + ], + + 'ShaderNodeTexNoise' : [ + NTPNodeSetting("noise_dimensions", ST.ENUM) + ], + + 'ShaderNodeTexVoronoi' : [ + NTPNodeSetting("distance", ST.ENUM), + NTPNodeSetting("feature", ST.ENUM), + NTPNodeSetting("voronoi_dimensions", ST.ENUM) + ], + + 'ShaderNodeTexWave' : [ + NTPNodeSetting("bands_direction", ST.ENUM), + NTPNodeSetting("rings_direction", ST.ENUM), + NTPNodeSetting("wave_profile", ST.ENUM), + NTPNodeSetting("wave_type", ST.ENUM) + ], + + 'ShaderNodeTexWhiteNoise' : [ + NTPNodeSetting("noise_dimensions", ST.ENUM) + ], # UTILITIES - 'ShaderNodeMix' : [("blend_type", ST.ENUM), - ("clamp_factor", ST.BOOL), - ("clamp_result", ST.BOOL), - ("data_type", ST.ENUM), - ("factor_mode", ST.ENUM)], - - 'FunctionNodeRandomValue' : [("data_type", ST.ENUM)], - - 'GeometryNodeRepeatInput' : [], - 'GeometryNodeRepeatOutput' : [("inspection_index", ST.INT)], - - 'GeometryNodeSwitch' : [("input_type", ST.ENUM)], + 'ShaderNodeMix' : [ + NTPNodeSetting("blend_type", ST.ENUM, min_version = (3, 4, 0)), + NTPNodeSetting("clamp_factor", ST.BOOL, min_version = (3, 4, 0)), + NTPNodeSetting("clamp_result", ST.BOOL, min_version = (3, 4, 0)), + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), + NTPNodeSetting("factor_mode", ST.ENUM, min_version = (3, 4, 0)) + ], + + 'FunctionNodeRandomValue' : [ + NTPNodeSetting("data_type", ST.ENUM) + ], + + 'GeometryNodeRepeatInput' : [], + + 'GeometryNodeRepeatOutput' : [ + NTPNodeSetting("inspection_index", ST.INT, min_version = (4, 0, 0)) + ], + + 'GeometryNodeSwitch' : [ + NTPNodeSetting("input_type", ST.ENUM) + ], # Utilities > Color - 'ShaderNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], - - 'ShaderNodeRGBCurve' : [("mapping", ST.CURVE_MAPPING)], - - 'FunctionNodeCombineColor' : [("mode", ST.ENUM)], - - 'ShaderNodeMixRGB' : [("blend_type", ST.ENUM), - ("use_alpha", ST.BOOL), - ("use_clamp", ST.BOOL)], #legacy - - 'FunctionNodeSeparateColor' : [("mode", ST.ENUM)], + 'ShaderNodeValToRGB' : [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP) + ], + + 'ShaderNodeRGBCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], + + 'FunctionNodeCombineColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) + ], + + 'ShaderNodeMixRGB' : [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL) + ], #legacy + + 'FunctionNodeSeparateColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) + ], # Utilities > Text - 'GeometryNodeStringJoin' : [], - 'FunctionNodeReplaceString' : [], - 'FunctionNodeSliceString' : [], - 'FunctionNodeStringLength' : [], - - 'GeometryNodeStringToCurves' : [("align_x", ST.ENUM), - ("align_y", ST.ENUM), - ("font", ST.FONT), - ("overflow", ST.ENUM), - ("pivot_mode", ST.ENUM)], + 'GeometryNodeStringJoin' : [], + 'FunctionNodeReplaceString' : [], + 'FunctionNodeSliceString' : [], + 'FunctionNodeStringLength' : [], + + 'GeometryNodeStringToCurves' : [ + NTPNodeSetting("align_x", ST.ENUM), + NTPNodeSetting("align_y", ST.ENUM), + NTPNodeSetting("font", ST.FONT), + NTPNodeSetting("overflow", ST.ENUM), + NTPNodeSetting("pivot_mode", ST.ENUM, min_version = (3, 1, 0)) + ], 'FunctionNodeValueToString' : [], 'FunctionNodeInputSpecialCharacters' : [], # Utilities > Vector - 'ShaderNodeVectorCurve' : [("mapping", ST.CURVE_MAPPING)], + 'ShaderNodeVectorCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], - 'ShaderNodeVectorMath' : [("operation", ST.ENUM)], + 'ShaderNodeVectorMath' : [ + NTPNodeSetting("operation", ST.ENUM) + ], - 'ShaderNodeVectorRotate' : [("invert", ST.BOOL), - ("rotation_type", ST.ENUM)], + 'ShaderNodeVectorRotate' : [ + NTPNodeSetting("invert", ST.BOOL), + NTPNodeSetting("rotation_type", ST.ENUM) + ], - 'ShaderNodeCombineXYZ' : [], - 'ShaderNodeSeparateXYZ' : [], + 'ShaderNodeCombineXYZ' : [], + 'ShaderNodeSeparateXYZ' : [], # Utilities > Field - 'GeometryNodeAccumulateField' : [("data_type", ST.ENUM), - ("domain", ST.ENUM)], + 'GeometryNodeAccumulateField' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM) + ], - 'GeometryNodeFieldAtIndex' : [("data_type", ST.ENUM), - ("domain", ST.ENUM)], + 'GeometryNodeFieldAtIndex' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 1, 0)) + ], - 'GeometryNodeFieldOnDomain' : [("data_type", ST.ENUM), - ("domain", ST.ENUM)], + 'GeometryNodeFieldOnDomain' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 3, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version = (3, 3, 0)) + ], # Utilities > Math - 'FunctionNodeBooleanMath' : [("operation", ST.ENUM)], - - 'ShaderNodeClamp' : [("clamp_type", ST.ENUM)], - - 'FunctionNodeCompare' : [("data_type", ST.ENUM), - ("mode", ST.ENUM), - ("operation", ST.ENUM)], - - 'ShaderNodeFloatCurve' : [("mapping", ST.CURVE_MAPPING)], - - 'FunctionNodeFloatToInt' : [("rounding_mode", ST.ENUM)], - - 'ShaderNodeMapRange' : [("clamp", ST.BOOL), - ("data_type", ST.ENUM), - ("interpolation_type", ST.ENUM)], - - 'ShaderNodeMath' : [("operation", ST.ENUM), - ("use_clamp", ST.BOOL)], + 'FunctionNodeBooleanMath' : [ + NTPNodeSetting("operation", ST.ENUM) + ], + + 'ShaderNodeClamp' : [ + NTPNodeSetting("clamp_type", ST.ENUM) + ], + + 'FunctionNodeCompare' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)), + NTPNodeSetting("operation", ST.ENUM, min_version = (3, 1, 0)) + ], + + 'FunctionNodeCompareFloats' : [ + NTPNodeSetting("operation", ST.ENUM, max_version = (3, 0, 0)) + ], + + 'ShaderNodeFloatCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], + + 'FunctionNodeFloatToInt' : [ + NTPNodeSetting("rounding_mode", ST.ENUM) + ], + + 'ShaderNodeMapRange' : [ + NTPNodeSetting("clamp", ST.BOOL), + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), + NTPNodeSetting("interpolation_type", ST.ENUM) + ], + + 'ShaderNodeMath' : [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("use_clamp", ST.BOOL) + ], # Utilities > Rotation - 'FunctionNodeAlignEulerToVector' : [("axis", ST.ENUM), - ("pivot_axis", ST.ENUM)], - - 'FunctionNodeAxisAngleToRotation' : [], - 'FunctionNodeEulerToRotation' : [], - 'FunctionNodeInvertRotation' : [], + 'FunctionNodeAlignEulerToVector' : [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("pivot_axis", ST.ENUM) + ], + + 'FunctionNodeAxisAngleToRotation' : [], + 'FunctionNodeEulerToRotation' : [], + 'FunctionNodeInvertRotation' : [], - 'FunctionNodeRotateEuler' : [("space", ST.ENUM), - ("type", ST.ENUM)], + 'FunctionNodeRotateEuler' : [ + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("type", ST.ENUM) + ], 'FunctionNodeRotateVector' : [], 'FunctionNodeRotationToAxisAngle' : [], @@ -459,15 +654,21 @@ 'FunctionNodeQuaternionToRotation' : [], # MISC - 'GeometryNodeGroup' : [("node_tree", ST.NODE_TREE)], + 'GeometryNodeGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE) + ], - 'NodeFrame' : [("label_size", ST.INT), - ("shrink", ST.BOOL), - ("text", ST.TEXT)], + 'NodeFrame' : [ + NTPNodeSetting("label_size", ST.INT), + NTPNodeSetting("shrink", ST.BOOL), + NTPNodeSetting("text", ST.TEXT) + ], 'NodeGroupInput' : [], - 'NodeGroupOutput' : [("is_active_output", ST.BOOL)], + 'NodeGroupOutput' : [ + NTPNodeSetting("is_active_output", ST.BOOL) + ], 'NodeReroute' : [] diff --git a/geometry/operator.py b/geometry/operator.py index 9733a15..d88d6cc 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -13,7 +13,7 @@ OBJECT_NAME = "name" OBJECT = "obj" MODIFIER = "mod" -geo_op_reserved_names = {ITEM, +GEO_OP_RESERVED_NAMES = {ITEM, OBJECT_NAME, OBJECT, MODIFIER} @@ -36,7 +36,7 @@ class NTPGeoNodesOperator(NTP_Operator): def __init__(self): super().__init__() self._settings = geo_node_settings - for name in geo_op_reserved_names: + for name in GEO_OP_RESERVED_NAMES: self._used_vars[name] = 0 if bpy.app.version >= (3, 6, 0): diff --git a/material/node_settings.py b/material/node_settings.py index 04ae778..3729d84 100644 --- a/material/node_settings.py +++ b/material/node_settings.py @@ -1,277 +1,396 @@ -from ..utils import ST +from ..utils import ST, NTPNodeSetting -shader_node_settings : dict[str, list[(str, ST)]] = { +shader_node_settings : dict[str, list[NTPNodeSetting]] = { # INPUT - 'ShaderNodeAmbientOcclusion' : [("inside", ST.BOOL), - ("only_local", ST.BOOL), - ("samples", ST.INT)], - - 'ShaderNodeAttribute' : [("attribute_name", ST.STRING), #TODO: separate attribute type? - ("attribute_type", ST.ENUM)], - - 'ShaderNodeBevel' : [("samples", ST.INT)], - - 'ShaderNodeCameraData' : [], - - 'ShaderNodeVertexColor' : [("layer_name", ST.STRING)], #TODO: separate color attribute type? - - 'ShaderNodeHairInfo' : [], - 'ShaderNodeFresnel' : [], - 'ShaderNodeNewGeometry' : [], - 'ShaderNodeLayerWeight' : [], - 'ShaderNodeLightPath' : [], - 'ShaderNodeObjectInfo' : [], - 'ShaderNodeParticleInfo' : [], - 'ShaderNodePointInfo' : [], - 'ShaderNodeRGB' : [], - - 'ShaderNodeTangent' : [("axis", ST.ENUM), - ("direction_type", ST.ENUM), - ("uv_map", ST.STRING)], #TODO: special UV Map type? - - 'ShaderNodeTexCoord' : [("from_instancer", ST.BOOL), - ("object", ST.OBJECT)], - - 'ShaderNodeUVAlongStroke' : [("use_tips", ST.BOOL)], - - 'ShaderNodeUVMap' : [("from_instancer", ST.BOOL), - ("uv_map", ST.STRING)], #TODO: see ShaderNodeTangent - - 'ShaderNodeValue' : [], - 'ShaderNodeVolumeInfo' : [], - - 'ShaderNodeWireframe' : [("use_pixel_size", ST.BOOL)], + 'ShaderNodeAmbientOcclusion' : [ + NTPNodeSetting("inside", ST.BOOL), + NTPNodeSetting("only_local", ST.BOOL), + NTPNodeSetting("samples", ST.INT) + ], + + 'ShaderNodeAttribute' : [ + NTPNodeSetting("attribute_name", ST.STRING), #TODO: separate attribute type? + NTPNodeSetting("attribute_type", ST.ENUM) + ], + + 'ShaderNodeBevel' : [ + NTPNodeSetting("samples", ST.INT) + ], + + 'ShaderNodeCameraData' : [], + + 'ShaderNodeVertexColor' : [ + NTPNodeSetting("layer_name", ST.STRING) #TODO: separate color attribute type? + ], + + 'ShaderNodeHairInfo' : [], + 'ShaderNodeFresnel' : [], + 'ShaderNodeNewGeometry' : [], + 'ShaderNodeLayerWeight' : [], + 'ShaderNodeLightPath' : [], + 'ShaderNodeObjectInfo' : [], + 'ShaderNodeParticleInfo' : [], + 'ShaderNodePointInfo' : [], + 'ShaderNodeRGB' : [], + + 'ShaderNodeTangent' : [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("direction_type", ST.ENUM), + NTPNodeSetting("uv_map", ST.STRING) #TODO: special UV Map type? + ], + + 'ShaderNodeTexCoord' : [ + NTPNodeSetting("from_instancer", ST.BOOL), + NTPNodeSetting("object", ST.OBJECT) + ], + + 'ShaderNodeUVAlongStroke' : [ + NTPNodeSetting("use_tips", ST.BOOL) + ], + + 'ShaderNodeUVMap' : [ + NTPNodeSetting("from_instancer", ST.BOOL), + NTPNodeSetting("uv_map", ST.STRING) + ], #TODO: see ShaderNodeTangent + + 'ShaderNodeValue' : [], + 'ShaderNodeVolumeInfo' : [], + + 'ShaderNodeWireframe' : [ + NTPNodeSetting("use_pixel_size", ST.BOOL) + ], # OUTPUT - 'ShaderNodeOutputAOV' : [("name", ST.STRING)], - - 'ShaderNodeOutputLight' : [("is_active_output", ST.BOOL), - ("target", ST.ENUM)], - - 'ShaderNodeOutputLineStyle' : [("blend_type", ST.ENUM), - ("is_active_output", ST.BOOL), - ("target", ST.ENUM), - ("use_alpha", ST.BOOL), - ("use_clamp", ST.BOOL)], - - 'ShaderNodeOutputMaterial' : [("is_active_output", ST.BOOL), - ("target", ST.ENUM)], - - 'ShaderNodeOutputWorld' : [("is_active_output", ST.BOOL), - ("target", ST.ENUM)], + 'ShaderNodeOutputAOV' : [ + NTPNodeSetting("name", ST.STRING) + ], + + 'ShaderNodeOutputLight' : [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM) + ], + + 'ShaderNodeOutputLineStyle' : [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL) + ], + + 'ShaderNodeOutputMaterial' : [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM) + ], + + 'ShaderNodeOutputWorld' : [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM) + ], # SHADER - 'ShaderNodeAddShader' : [], + 'ShaderNodeAddShader' : [], - 'ShaderNodeBsdfAnisotropic' : [("distribution", ST.ENUM)], + 'ShaderNodeBsdfAnisotropic' : [ + NTPNodeSetting("distribution", ST.ENUM) + ], - 'ShaderNodeBackground' : [], - 'ShaderNodeBsdfDiffuse' : [], - 'ShaderNodeEmission' : [], + 'ShaderNodeBackground' : [], + 'ShaderNodeBsdfDiffuse' : [], + 'ShaderNodeEmission' : [], - 'ShaderNodeBsdfGlass' : [("distribution", ST.ENUM)], + 'ShaderNodeBsdfGlass' : [ + NTPNodeSetting("distribution", ST.ENUM) + ], - 'ShaderNodeBsdfGlossy' : [("distribution", ST.ENUM)], + 'ShaderNodeBsdfGlossy' : [ + NTPNodeSetting("distribution", ST.ENUM) + ], - 'ShaderNodeBsdfHair' : [("component", ST.ENUM)], + 'ShaderNodeBsdfHair' : [ + NTPNodeSetting("component", ST.ENUM) + ], - 'ShaderNodeHoldout' : [], - 'ShaderNodeMixShader' : [], + 'ShaderNodeHoldout' : [], + 'ShaderNodeMixShader' : [], - 'ShaderNodeBsdfPrincipled' : [("distribution", ST.ENUM), - ("subsurface_method", ST.ENUM)], + 'ShaderNodeBsdfPrincipled' : [ + NTPNodeSetting("distribution", ST.ENUM), + NTPNodeSetting("subsurface_method", ST.ENUM) + ], - 'ShaderNodeBsdfHairPrincipled' : [("model", ST.ENUM), - ("parametrization", ST.ENUM)], + 'ShaderNodeBsdfHairPrincipled' : [ + NTPNodeSetting("model", ST.ENUM), + NTPNodeSetting("parametrization", ST.ENUM) + ], - 'ShaderNodeVolumePrincipled' : [], + 'ShaderNodeVolumePrincipled' : [], - 'ShaderNodeBsdfRefraction' : [("distribution", ST.ENUM)], + 'ShaderNodeBsdfRefraction' : [ + NTPNodeSetting("distribution", ST.ENUM) + ], - 'ShaderNodeBsdfSheen' : [("distribution", ST.ENUM)], + 'ShaderNodeBsdfSheen' : [ + NTPNodeSetting("distribution", ST.ENUM, min_version = (4, 0, 0)) + ], - 'ShaderNodeEeveeSpecular' : [], + 'ShaderNodeEeveeSpecular' : [], - 'ShaderNodeSubsurfaceScattering' : [("falloff", ST.ENUM)], + 'ShaderNodeSubsurfaceScattering' : [ + NTPNodeSetting("falloff", ST.ENUM) + ], - 'ShaderNodeBsdfToon' : [("component", ST.ENUM)], + 'ShaderNodeBsdfToon' : [ + NTPNodeSetting("component", ST.ENUM) + ], - 'ShaderNodeBsdfTranslucent' : [], - 'ShaderNodeBsdfTransparent' : [], - 'ShaderNodeBsdfVelvet' : [], - 'ShaderNodeVolumeAbsorption' : [], - 'ShaderNodeVolumeScatter' : [], + 'ShaderNodeBsdfTranslucent' : [], + 'ShaderNodeBsdfTransparent' : [], + 'ShaderNodeBsdfVelvet' : [], + 'ShaderNodeVolumeAbsorption' : [], + 'ShaderNodeVolumeScatter' : [], # TEXTURE - 'ShaderNodeTexBrick' : [("offset", ST.FLOAT), - ("offset_frequency", ST.INT), - ("squash", ST.FLOAT), - ("squash_frequency", ST.INT)], - - 'ShaderNodeTexChecker' : [], - - 'ShaderNodeTexEnvironment' : [("image", ST.IMAGE), - ("image_user", ST.IMAGE_USER), - ("interpolation", ST.ENUM), - ("projection", ST.ENUM)], - - 'ShaderNodeTexGradient' : [("gradient_type", ST.ENUM)], - - 'ShaderNodeTexIES' : [("filepath", ST.STRING), #TODO - ("ies", ST.TEXT), - ("mode", ST.ENUM)], - - 'ShaderNodeTexImage' : [("extension", ST.ENUM), - ("image", ST.IMAGE), - ("image_user", ST.IMAGE_USER), - ("interpolation", ST.ENUM), - ("projection", ST.ENUM), - ("projection_blend", ST.FLOAT)], - - 'ShaderNodeTexMagic' : [("turbulence_depth", ST.INT)], - - 'ShaderNodeTexMusgrave' : [("musgrave_dimensions", ST.ENUM), - ("musgrave_type", ST.ENUM)], - - 'ShaderNodeTexNoise' : [("noise_dimensions", ST.ENUM), - ("normalize", ST.BOOL)], - - 'ShaderNodeTexPointDensity' : [("interpolation", ST.ENUM), - ("object", ST.OBJECT), - ("particle_color_source", ST.ENUM), - ("particle_system", ST.PARTICLE_SYSTEM), - ("point_source", ST.ENUM), - ("radius", ST.FLOAT), - ("resolution", ST.INT), - ("space", ST.ENUM), - ("vertex_attribute_name", ST.STRING), #TODO - ("vertex_color_source", ST.ENUM)], - - 'ShaderNodeTexSky' : [("air_density", ST.FLOAT), - ("altitude", ST.FLOAT), - ("dust_density", ST.FLOAT), - ("ground_albedo", ST.FLOAT), - ("ozone_density", ST.FLOAT), - ("sky_type", ST.ENUM), - ("sun_direction", ST.VEC3), - ("sun_disc", ST.BOOL), - ("sun_elevation", ST.FLOAT), - ("sun_intensity", ST.FLOAT), - ("sun_rotation", ST.FLOAT), - ("sun_size", ST.FLOAT), - ("turbidity", ST.FLOAT)], - - 'ShaderNodeTexVoronoi' : [("distance", ST.ENUM), - ("feature", ST.ENUM), - ("normalize", ST.BOOL), - ("voronoi_dimensions", ST.ENUM)], - - 'ShaderNodeTexWave' : [("bands_direction", ST.ENUM), - ("rings_direction", ST.ENUM), - ("wave_profile", ST.ENUM), - ("wave_type", ST.ENUM)], - - 'ShaderNodeTexWhiteNoise' : [("noise_dimensions", ST.ENUM)], + 'ShaderNodeTexBrick' : [ + NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("offset_frequency", ST.INT), + NTPNodeSetting("squash", ST.FLOAT), + NTPNodeSetting("squash_frequency", ST.INT) + ], + + 'ShaderNodeTexChecker' : [], + + 'ShaderNodeTexEnvironment' : [ + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("image_user", ST.IMAGE_USER), + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("projection", ST.ENUM) + ], + + 'ShaderNodeTexGradient' : [ + NTPNodeSetting("gradient_type", ST.ENUM) + ], + + 'ShaderNodeTexIES' : [ + NTPNodeSetting("filepath", ST.STRING), #TODO + NTPNodeSetting("ies", ST.TEXT), + NTPNodeSetting("mode", ST.ENUM) + ], + + 'ShaderNodeTexImage' : [ + NTPNodeSetting("extension", ST.ENUM), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("image_user", ST.IMAGE_USER), + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("projection", ST.ENUM), + NTPNodeSetting("projection_blend", ST.FLOAT) + ], + + 'ShaderNodeTexMagic' : [ + NTPNodeSetting("turbulence_depth", ST.INT) + ], + + 'ShaderNodeTexMusgrave' : [ + NTPNodeSetting("musgrave_dimensions", ST.ENUM), + NTPNodeSetting("musgrave_type", ST.ENUM) + ], + + 'ShaderNodeTexNoise' : [ + NTPNodeSetting("noise_dimensions", ST.ENUM), + NTPNodeSetting("normalize", ST.BOOL, min_version = (4, 0, 0)) + ], + + 'ShaderNodeTexPointDensity' : [ + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("object", ST.OBJECT), + NTPNodeSetting("particle_color_source", ST.ENUM), + NTPNodeSetting("particle_system", ST.PARTICLE_SYSTEM), + NTPNodeSetting("point_source", ST.ENUM), + NTPNodeSetting("radius", ST.FLOAT), + NTPNodeSetting("resolution", ST.INT), + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("vertex_attribute_name", ST.STRING), #TODO + NTPNodeSetting("vertex_color_source", ST.ENUM) + ], + + 'ShaderNodeTexSky' : [ + NTPNodeSetting("air_density", ST.FLOAT), + NTPNodeSetting("altitude", ST.FLOAT), + NTPNodeSetting("dust_density", ST.FLOAT), + NTPNodeSetting("ground_albedo", ST.FLOAT), + NTPNodeSetting("ozone_density", ST.FLOAT), + NTPNodeSetting("sky_type", ST.ENUM), + NTPNodeSetting("sun_direction", ST.VEC3), + NTPNodeSetting("sun_disc", ST.BOOL), + NTPNodeSetting("sun_elevation", ST.FLOAT), + NTPNodeSetting("sun_intensity", ST.FLOAT), + NTPNodeSetting("sun_rotation", ST.FLOAT), + NTPNodeSetting("sun_size", ST.FLOAT), + NTPNodeSetting("turbidity", ST.FLOAT) + ], + + 'ShaderNodeTexVoronoi' : [ + NTPNodeSetting("distance", ST.ENUM), + NTPNodeSetting("feature", ST.ENUM), + NTPNodeSetting("normalize", ST.BOOL, min_version = (4, 0, 0)), + NTPNodeSetting("voronoi_dimensions", ST.ENUM) + ], + + 'ShaderNodeTexWave' : [ + NTPNodeSetting("bands_direction", ST.ENUM), + NTPNodeSetting("rings_direction", ST.ENUM), + NTPNodeSetting("wave_profile", ST.ENUM), + NTPNodeSetting("wave_type", ST.ENUM) + ], + + 'ShaderNodeTexWhiteNoise' : [ + NTPNodeSetting("noise_dimensions", ST.ENUM) + ], # COLOR 'ShaderNodeBrightContrast' : [], - 'ShaderNodeGamma' : [], - 'ShaderNodeHueSaturation' : [], - 'ShaderNodeInvert' : [], - 'ShaderNodeLightFalloff' : [], - 'ShaderNodeMix' : [("blend_type", ST.ENUM), - ("clamp_factor", ST.BOOL), - ("clamp_result", ST.BOOL), - ("data_type", ST.ENUM), - ("factor_mode", ST.ENUM)], - - 'ShaderNodeRGBCurve' : [("mapping", ST.CURVE_MAPPING)], - - - # VECTOR - 'ShaderNodeBump' : [("invert", ST.BOOL)], - - 'ShaderNodeDisplacement' : [("space", ST.ENUM)], - - 'ShaderNodeMapping' : [("vector_type", ST.ENUM)], - - 'ShaderNodeNormal' : [], + 'ShaderNodeMix' : [ + NTPNodeSetting("blend_type", ST.ENUM, min_version = (3, 4, 0)), + NTPNodeSetting("clamp_factor", ST.BOOL, min_version = (3, 4, 0)), + NTPNodeSetting("clamp_result", ST.BOOL, min_version = (3, 4, 0)), + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), + NTPNodeSetting("factor_mode", ST.ENUM, min_version = (3, 4, 0)) + ], - 'ShaderNodeNormalMap' : [("space", ST.ENUM), - ("uv_map", ST.STRING)], #TODO + 'ShaderNodeMixRGB' : [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL) + ], - 'ShaderNodeVectorCurve' : [("mapping", ST.CURVE_MAPPING)], + 'ShaderNodeRGBCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], - 'ShaderNodeVectorDisplacement' : [("space", ST.ENUM)], - 'ShaderNodeVectorRotate' : [("invert", ST.BOOL), - ("rotation_type", ST.ENUM)], - - 'ShaderNodeVectorTransform' : [("convert_from", ST.ENUM), - ("convert_to", ST.ENUM), - ("vector_type", ST.ENUM)], + # VECTOR + 'ShaderNodeBump' : [ + NTPNodeSetting("invert", ST.BOOL) + ], + + 'ShaderNodeDisplacement' : [ + NTPNodeSetting("space", ST.ENUM) + ], + + 'ShaderNodeMapping' : [ + NTPNodeSetting("vector_type", ST.ENUM) + ], + + 'ShaderNodeNormal' : [], + + 'ShaderNodeNormalMap' : [ + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("uv_map", ST.STRING) #TODO + ], + + 'ShaderNodeVectorCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], + + 'ShaderNodeVectorDisplacement' : [ + NTPNodeSetting("space", ST.ENUM) + ], + + 'ShaderNodeVectorRotate' : [ + NTPNodeSetting("invert", ST.BOOL), + NTPNodeSetting("rotation_type", ST.ENUM) + ], + + 'ShaderNodeVectorTransform' : [ + NTPNodeSetting("convert_from", ST.ENUM), + NTPNodeSetting("convert_to", ST.ENUM), + NTPNodeSetting("vector_type", ST.ENUM) + ], # CONVERTER - 'ShaderNodeBlackbody' : [], - - 'ShaderNodeClamp' : [("clamp_type", ST.ENUM)], + 'ShaderNodeBlackbody' : [], - 'ShaderNodeValToRGB' : [("color_ramp", ST.COLOR_RAMP)], + 'ShaderNodeClamp' : [ + NTPNodeSetting("clamp_type", ST.ENUM) + ], - 'ShaderNodeCombineColor' : [("mode", ST.ENUM)], + 'ShaderNodeValToRGB' : [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP) + ], - 'ShaderNodeCombineXYZ' : [], + 'ShaderNodeCombineColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) + ], - 'ShaderNodeFloatCurve' : [("mapping", ST.CURVE_MAPPING)], + 'ShaderNodeCombineXYZ' : [], - 'ShaderNodeMapRange' : [("clamp", ST.BOOL), - ("data_type", ST.ENUM), - ("interpolation_type", ST.ENUM)], + 'ShaderNodeFloatCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING) + ], - 'ShaderNodeMath' : [("operation", ST.ENUM), - ("use_clamp", ST.BOOL)], + 'ShaderNodeMapRange' : [ + NTPNodeSetting("clamp", ST.BOOL), + NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), + NTPNodeSetting("interpolation_type", ST.ENUM) + ], - 'ShaderNodeRGBToBW' : [], + 'ShaderNodeMath' : [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("use_clamp", ST.BOOL) + ], - 'ShaderNodeSeparateColor' : [("mode", ST.ENUM)], + 'ShaderNodeRGBToBW' : [], - 'ShaderNodeSeparateXYZ' : [], + 'ShaderNodeSeparateColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) + ], - 'ShaderNodeShaderToRGB' : [], + 'ShaderNodeSeparateXYZ' : [], + 'ShaderNodeShaderToRGB' : [], - 'ShaderNodeVectorMath' : [("operation", ST.ENUM)], + 'ShaderNodeVectorMath' : [ + NTPNodeSetting("operation", ST.ENUM) + ], - 'ShaderNodeWavelength' : [], + 'ShaderNodeWavelength' : [], # SCRIPT - 'ShaderNodeScript' : [("bytecode", ST.STRING), #TODO: test all that - ("bytecode_hash", ST.STRING), - ("filepath", ST.STRING), - ("mode", ST.ENUM), - ("script", ST.TEXT), - ("use_auto_update", ST.BOOL)], + 'ShaderNodeScript' : [ + NTPNodeSetting("bytecode", ST.STRING), #TODO: test all that + NTPNodeSetting("bytecode_hash", ST.STRING), + NTPNodeSetting("filepath", ST.STRING), + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("script", ST.TEXT), + NTPNodeSetting("use_auto_update", ST.BOOL) + ], # MISC - 'ShaderNodeGroup' : [('node_tree', ST.NODE_TREE)], + 'ShaderNodeGroup' : [ + NTPNodeSetting('node_tree', ST.NODE_TREE) + ], - 'NodeFrame' : [("label_size", ST.INT), - ("shrink", ST.BOOL), - ("text", ST.TEXT)], + 'NodeFrame' : [ + NTPNodeSetting("label_size", ST.INT), + NTPNodeSetting("shrink", ST.BOOL), + NTPNodeSetting("text", ST.TEXT) + ], - 'NodeGroupInput' : [], + 'NodeGroupInput' : [], - 'NodeGroupOutput' : [("is_active_output", ST.BOOL)], + 'NodeGroupOutput' : [ + NTPNodeSetting("is_active_output", ST.BOOL) + ], - 'NodeReroute' : [] + 'NodeReroute' : [] } diff --git a/material/operator.py b/material/operator.py index 485b530..0cc8461 100644 --- a/material/operator.py +++ b/material/operator.py @@ -11,7 +11,7 @@ MAT_VAR = "mat" NODE = "node" -shader_op_reserved_names = {MAT_VAR, NODE} +SHADER_OP_RESERVED_NAMES = {MAT_VAR, NODE} class NTPMaterialOperator(NTP_Operator): bl_idname = "node.ntp_material" @@ -24,7 +24,7 @@ class NTPMaterialOperator(NTP_Operator): def __init__(self): super().__init__() self._settings = shader_node_settings - for name in shader_op_reserved_names: + for name in SHADER_OP_RESERVED_NAMES: self._used_vars[name] = 0 def _create_material(self, indent: str): diff --git a/ntp_operator.py b/ntp_operator.py index a7b1862..732985a 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -21,13 +21,18 @@ IMAGE_PATH = "image_path" BASE_DIR = "base_dir" -reserved_names = { +RESERVED_NAMES = { INDEX, IMAGE_DIR_NAME, IMAGE_PATH, BASE_DIR } +#node input sockets that are messy to set default values for +DONT_SET_DEFAULTS = {'NodeSocketGeometry', + 'NodeSocketShader', + 'NodeSocketVirtual'} + class NTP_Operator(Operator): """ "Abstract" base class for all NTP operators. Blender types and abstraction @@ -96,7 +101,7 @@ def __init__(self): # Dictionary used for setting node properties self._settings: dict[str, list[(str, ST)]] = {} - for name in reserved_names: + for name in RESERVED_NAMES: self._used_vars[name] = 0 def _write(self, string: str, indent: str = None): @@ -273,57 +278,63 @@ def _set_settings_defaults(self, node: Node) -> None: node_var = self._node_vars[node] - for (attr_name, type) in self._settings[node.bl_idname]: + for setting in self._settings[node.bl_idname]: + + attr_name = setting.name + st = setting.st + if not hasattr(node, attr_name): - self.report({'WARNING'}, - f"NodeToPython: Couldn't find attribute " - f"\"{attr_name}\" for node {node.name} of type " - f"{node.bl_idname}") + if (bpy.app.version >= setting.min_version and + bpy.app.version <= setting.max_version): + self.report({'WARNING'}, + f"NodeToPython: Couldn't find attribute " + f"\"{attr_name}\" for node {node.name} of type " + f"{node.bl_idname}") continue attr = getattr(node, attr_name, None) if attr is None: continue setting_str = f"{node_var}.{attr_name}" - if type == ST.ENUM: + if st == ST.ENUM: if attr != '': self._write(f"{setting_str} = {enum_to_py_str(attr)}") - elif type == ST.ENUM_SET: + elif st == ST.ENUM_SET: self._write(f"{setting_str} = {attr}") - elif type == ST.STRING: + elif st == ST.STRING: self._write(f"{setting_str} = {str_to_py_str(attr)}") - elif type == ST.BOOL or type == ST.INT or type == ST.FLOAT: + elif st == ST.BOOL or st == ST.INT or st == ST.FLOAT: self._write(f"{setting_str} = {attr}") - elif type == ST.VEC1: + elif st == ST.VEC1: self._write(f"{setting_str} = {vec1_to_py_str(attr)}") - elif type == ST.VEC2: + elif st == ST.VEC2: self._write(f"{setting_str} = {vec2_to_py_str(attr)}") - elif type == ST.VEC3: + elif st == ST.VEC3: self._write(f"{setting_str} = {vec3_to_py_str(attr)}") - elif type == ST.VEC4: + elif st == ST.VEC4: self._write(f"{setting_str} = {vec4_to_py_str(attr)}") - elif type == ST.COLOR: + elif st == ST.COLOR: self._write(f"{setting_str} = {color_to_py_str(attr)}") - elif type == ST.MATERIAL: + elif st == ST.MATERIAL: name = str_to_py_str(attr.name) self._write((f"if {name} in bpy.data.materials:")) self._write((f"\t{setting_str} = bpy.data.materials[{name}]")) - elif type == ST.OBJECT: + elif st == ST.OBJECT: name = str_to_py_str(attr.name) self._write((f"if {name} in bpy.data.objects:")) self._write((f"\t{setting_str} = bpy.data.objects[{name}]")) - elif type == ST.COLOR_RAMP: + elif st == ST.COLOR_RAMP: self._color_ramp_settings(node, attr_name) - elif type == ST.CURVE_MAPPING: + elif st == ST.CURVE_MAPPING: self._curve_mapping_settings(node, attr_name) - elif type == ST.NODE_TREE: + elif st == ST.NODE_TREE: self._node_tree_settings(node, attr_name) - elif type == ST.IMAGE: + elif st == ST.IMAGE: if self._addon_dir is not None and attr is not None: if attr.source in {'FILE', 'GENERATED', 'TILED'}: self._save_image(attr) self._load_image(attr, f"{node_var}.{attr_name}") - elif type == ST.IMAGE_USER: + elif st == ST.IMAGE_USER: self._image_user_settings(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): @@ -663,7 +674,7 @@ def _set_input_defaults(self, node: Node) -> None: node_var = self._node_vars[node] for i, input in enumerate(node.inputs): - if input.bl_idname not in dont_set_defaults and not input.is_linked: + if input.bl_idname not in DONT_SET_DEFAULTS and not input.is_linked: # TODO: this could be cleaner socket_var = f"{node_var}.inputs[{i}]" diff --git a/utils.py b/utils.py index 5b3cb5d..84fc729 100644 --- a/utils.py +++ b/utils.py @@ -5,12 +5,7 @@ from enum import Enum, auto import keyword import re -from typing import Tuple - -#node input sockets that are messy to set default values for -dont_set_defaults = {'NodeSocketGeometry', - 'NodeSocketShader', - 'NodeSocketVirtual'} +from typing import NamedTuple class ST(Enum): """ @@ -28,7 +23,7 @@ class ST(Enum): VEC3 = auto() VEC4 = auto() COLOR = auto() - + # Special settings COLOR_RAMP = auto() CURVE_MAPPING = auto() @@ -54,6 +49,13 @@ class ST(Enum): FILE_SLOTS = auto() LAYER_SLOTS = auto() #unimplemented +class NTPNodeSetting(NamedTuple): + name: str + st: ST + min_version: tuple = (3, 0, 0) + max_version: tuple = (4, 1, 0) + + def clean_string(string: str, lower: bool = True) -> str: """ Cleans up a string for use as a variable or file name From 8c6968f370ed310f80ef41e67541e69addac3721 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 27 Jan 2024 22:47:06 -0600 Subject: [PATCH 170/286] docs: update README for v3.0, code comments --- docs/README.md | 46 +++++++++++++++++++++------------------------- utils.py | 4 ++-- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/docs/README.md b/docs/README.md index 1edd431..bc461c1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v2.2 is compatible with Blender 3.0 - 3.6 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. +NodeToPython v3.0 is supported for Blender 3.0 - 4.0 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. ## Installation 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) @@ -35,33 +35,29 @@ Select the node group you want code for, and you'll be prompted with a **Script* * Doesn't include `import bpy` line * To keep NodeToPython cross-platform and independent of third-party libraries, to get it into your system clipboard you need to paste into the Blender text editor and recopy it currently * **Add-on** mode generates a zip file for you in the save directory specified in the NodeToPython menu. From here, you can install it like a regular add-on. The generated add-on comes complete with operator registration and creating a modifier/material for the node tree to be used in. - -## Future -### v3.x -* Expansion to Compositing nodes -* New Blender 4.0 nodes and changes - -### Later -* Better asset handling -* Auto-set handle movies and image sequences -* Automatically format code to be PEP8 compliant -* Automatically detect the minimum version of Blender needed to run the add-on - -## Potential Issues -* As of version 2.2, the add-on will not set default values for - * Scripts - * IES files - * Filepaths - * UV maps -* This add-on doesn't currently set default values in Geometry Nodes modifiers, just the node groups themselves -* Currently when setting default values for the following, the add-on must be run in the same blend file as the node group was created in to set the default, otherwise it will just set it to `None`: + * The current default operator install location is in the Object menu + +## Future Plans +* Investigate drivers and keyframes +* A better default operator install location for generated add-ons +* A development repository with useful scripts and tests +* Better handling of more setting types, including + * Image sequences + * Movie clips * Materials * Objects - * Collections * Textures - -* In a future version, I plan on having the add-on adding all of the above to the Asset Library for reference -* You may run into naming conflicts if your add-on shares a name with another Blender add-on or operator (see [#56](https://github.com/BrendanParmer/NodeToPython/issues/56)) + * Text objects + * Scenes + * Particle systems + * Fonts + * Masks + * Cryptomatte entries + * Image format settings + * File slots + * Layer slots +* Automatic detection of the minimum/maximum version of Blender compatible with a generated add-on +* Autoformatting of generated code ## Bug Reports and Suggestions diff --git a/utils.py b/utils.py index 84fc729..08d68fb 100644 --- a/utils.py +++ b/utils.py @@ -45,8 +45,8 @@ class ST(Enum): FONT = auto() #unimplemented MASK = auto() #unimplemented CRYPTOMATTE_ENTRIES = auto() #unimplemented - IMAGE_FORMAT_SETTINGS = auto() - FILE_SLOTS = auto() + IMAGE_FORMAT_SETTINGS = auto() #unimplemented + FILE_SLOTS = auto() #unimplemented LAYER_SLOTS = auto() #unimplemented class NTPNodeSetting(NamedTuple): From bcf580be46d4aef267c25d451fea2c4bb0eb6e31 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 30 Jan 2024 08:24:00 -0600 Subject: [PATCH 171/286] fix: removed bad param from mat addon zip func call, actually abort when save loc doesn't exist --- compositor/operator.py | 3 ++- geometry/operator.py | 3 ++- material/operator.py | 5 +++-- ntp_operator.py | 17 +++++++++++++---- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index afe2d62..d1d6a52 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -186,7 +186,8 @@ def execute(self, context): self._outer = "\t\t" self._inner = "\t\t\t" - self._setup_addon_directories(context, comp_var) + if not self._setup_addon_directories(context, comp_var): + return {'CANCELLED'} self._file = open(f"{self._addon_dir}/__init__.py", "w") diff --git a/geometry/operator.py b/geometry/operator.py index d88d6cc..61747e3 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -223,7 +223,8 @@ def execute(self, context): self._outer = "\t\t" self._inner = "\t\t\t" - self._setup_addon_directories(context, nt_var) + if not self._setup_addon_directories(context, nt_var): + return {'CANCELLED'} self._file = open(f"{self._addon_dir}/__init__.py", "w") diff --git a/material/operator.py b/material/operator.py index 0cc8461..b2ebc86 100644 --- a/material/operator.py +++ b/material/operator.py @@ -137,7 +137,8 @@ def execute(self, context): self._outer = "\t\t" self._inner = "\t\t\t" - self._setup_addon_directories(context, mat_var) + if not self._setup_addon_directories(context, mat_var): + return {'CANCELLED'} self._file = open(f"{self._addon_dir}/__init__.py", "w") @@ -171,7 +172,7 @@ def execute(self, context): self._file.close() if self.mode == 'ADDON': - self._zip_addon(self._zip_dir) + self._zip_addon() self._report_finished("material") diff --git a/ntp_operator.py b/ntp_operator.py index 732985a..da2e642 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -109,23 +109,32 @@ def _write(self, string: str, indent: str = None): indent = self._inner self._file.write(f"{indent}{string}\n") - def _setup_addon_directories(self, context: Context, nt_var: str) -> None: + def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: """ Finds/creates directories to save add-on to + + Parameters: + context (Context): the current scene context + nt_var (str): variable name of the ndoe tree + + Returns: + (bool): success of addon directory setup """ # find base directory to save new addon self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) if not self._dir or self._dir == "": self.report({'ERROR'}, - ("NodeToPython: Save your blend file before using " - "NodeToPython!")) # TODO: Still valid?? - return {'CANCELLED'} # TODO + ("NodeToPython: No save location found. Please select " + "one in the NodeToPython Options panel")) + return False self._zip_dir = os.path.join(self._dir, nt_var) self._addon_dir = os.path.join(self._zip_dir, nt_var) if not os.path.exists(self._addon_dir): os.makedirs(self._addon_dir) + + return True def _create_header(self, name: str) -> None: """ From d57d180ce86a4f90841afc81ed053d634115e2fe Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 30 Jan 2024 08:36:36 -0600 Subject: [PATCH 172/286] misc: version bump --- __init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__init__.py b/__init__.py index 2378569..009d8d5 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 0, 0), + "version": (3, 0, 1), "blender": (3, 0, 0), "location": "Node", "category": "Node", From f9a2ca0a8d671400977ea659c0726829bb8288e7 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:24:48 -0600 Subject: [PATCH 173/286] docs: update README --- docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index bc461c1..e08d326 100644 --- a/docs/README.md +++ b/docs/README.md @@ -5,7 +5,7 @@ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ![](https://img.shields.io/github/downloads/BrendanParmer/NodeToPython/total.svg) ## About -A Blender add-on to create scripts and add-ons! This add-on will take your Geometry Nodes or Materials and convert them into legible Python code. +A Blender add-on to create scripts and add-ons! This add-on will take your Geometry Nodes, Materials, and Compositing nodes and convert them into legible Python code. Node To Python automatically handles node layout, default values, subgroups, naming, colors, and more! @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.0 is supported for Blender 3.0 - 4.0 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. +NodeToPython v3.1 is supported for Blender 3.0 - 4.1 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. ## Installation 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) From 97d521da1d75abe28733fca19836d39ff085dcc2 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:02:40 -0600 Subject: [PATCH 174/286] feat: add compositor tree settings --- __init__.py | 2 +- compositor/operator.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/__init__.py b/__init__.py index 009d8d5..762b776 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 0, 1), + "version": (3, 1, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/compositor/operator.py b/compositor/operator.py index d1d6a52..b09d456 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -78,6 +78,27 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): f"name = {str_to_py_str(nt_name)})")) self._write("") + # Compositor node tree settings + #TODO: might be good to make this optional + enum_settings = ["chunk_size", "edit_quality", "execution_mode", + "precision", "render_quality"] + for enum in enum_settings: + if not hasattr(ntp_nt.node_tree, enum): + continue + setting = getattr(ntp_nt.node_tree, enum) + if setting is not None and setting is not "": + py_str = enum_to_py_str(setting) + self._write(f"{ntp_nt.var}.{enum} = {py_str}") + + bool_settings = ["use_groupnode_buffer", "use_opencl", "use_two_pass", + "use_viewer_border"] + for bool_setting in bool_settings: + if not hasattr(ntp_nt.node_tree, bool_setting): + continue + if getattr(ntp_nt.node_tree, bool_setting) is True: + self._write(f"{ntp_nt.var}.{bool_setting} = True") + + def _set_color_balance_settings(self, node: CompositorNodeColorBalance ) -> None: """ From 9455843fd6bb50de3052b2d171150f8d042a7aff Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:03:30 -0600 Subject: [PATCH 175/286] fix: max node setting version now exclusive --- ntp_operator.py | 2 +- utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index da2e642..669f393 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -294,7 +294,7 @@ def _set_settings_defaults(self, node: Node) -> None: if not hasattr(node, attr_name): if (bpy.app.version >= setting.min_version and - bpy.app.version <= setting.max_version): + bpy.app.version < setting.max_version): self.report({'WARNING'}, f"NodeToPython: Couldn't find attribute " f"\"{attr_name}\" for node {node.name} of type " diff --git a/utils.py b/utils.py index 08d68fb..275ff1a 100644 --- a/utils.py +++ b/utils.py @@ -53,7 +53,7 @@ class NTPNodeSetting(NamedTuple): name: str st: ST min_version: tuple = (3, 0, 0) - max_version: tuple = (4, 1, 0) + max_version: tuple = (4, 2, 0) #first version where a setting is invalid def clean_string(string: str, lower: bool = True) -> str: From 3e074e033ca22bdda80011a376e35cc28fbf78de Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:08:28 -0600 Subject: [PATCH 176/286] feat: update comp node settings --- compositor/node_settings.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/compositor/node_settings.py b/compositor/node_settings.py index 8034b30..2db216a 100644 --- a/compositor/node_settings.py +++ b/compositor/node_settings.py @@ -261,14 +261,19 @@ ], 'CompositorNodeKuwahara' : [ - NTPNodeSetting("eccentricity", ST.FLOAT, min_version = (4, 0, 0)), - NTPNodeSetting("sharpness", ST.FLOAT, min_version = (4, 0, 0)), - NTPNodeSetting("size", ST.INT, min_version = (4, 0, 0)), - NTPNodeSetting("uniformity", ST.INT, min_version = (4, 0, 0)), - NTPNodeSetting("variation", ST.ENUM, min_version = (4, 0, 0)) + NTPNodeSetting("eccentricity", ST.FLOAT, min_version = (4, 0, 0)), + NTPNodeSetting("sharpness", ST.FLOAT, min_version = (4, 0, 0)), + NTPNodeSetting("size", ST.INT, min_version = (4, 0, 0), + max_version = (4, 1, 0)), + NTPNodeSetting("uniformity", ST.INT, min_version = (4, 0, 0)), + NTPNodeSetting("variation", ST.ENUM, min_version = (4, 0, 0)), + NTPNodeSetting("use_high_precision", ST.BOOL, min_version = (4, 1, 0)) ], - 'CompositorNodePixelate' : [], + 'CompositorNodePixelate' : [ + NTPNodeSetting("pixel_size", ST.INT, min_version = (4, 1, 0)) + ], + 'CompositorNodePosterize' : [], 'CompositorNodeSunBeams' : [ @@ -324,7 +329,7 @@ NTPNodeSetting("distance", ST.FLOAT), NTPNodeSetting("iterations", ST.INT), NTPNodeSetting("spin", ST.FLOAT), - NTPNodeSetting("use_wrap", ST.BOOL, max_version = (3, 4, 0)), + NTPNodeSetting("use_wrap", ST.BOOL, max_version = (3, 5, 0)), NTPNodeSetting("zoom", ST.FLOAT) ], @@ -571,6 +576,10 @@ 'CompositorNodeNormalize' : [], + 'CompositorNodeSplit' : [ + NTPNodeSetting("axis", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("factor", ST.INT, min_version=(4, 1, 0)) + ], 'CompositorNodeSwitch' : [ NTPNodeSetting("check", ST.BOOL) From e172793d0a29b92caca3d4d4f6a8f02ef9e20773 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:37:48 -0600 Subject: [PATCH 177/286] feat: added object mode to geo tools --- geometry/operator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/geometry/operator.py b/geometry/operator.py index 61747e3..efbe375 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -139,14 +139,16 @@ def _set_geo_tree_properties(self, node_tree: GeometryNodeTree) -> None: if is_tool: self._write(f"{nt_var}.is_tool = True") - tool_flags = ["is_mode_edit", + tool_flags = ["is_mode_object", + "is_mode_edit", "is_mode_sculpt", "is_type_curve", "is_type_mesh", "is_type_point_cloud"] for flag in tool_flags: - self._write(f"{nt_var}.{flag} = {getattr(node_tree, flag)}") + if hasattr(node_tree, flag) is True: + self._write(f"{nt_var}.{flag} = {getattr(node_tree, flag)}") self._write("") def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: From 057a15bdc7d80bd45b17d41e6fd2ff099f79326c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:54:35 -0600 Subject: [PATCH 178/286] feat: more geo/shader node updates --- geometry/node_settings.py | 37 +++++++++++++++++++++++++++++++------ material/node_settings.py | 7 ++++--- utils.py | 3 +++ 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/geometry/node_settings.py b/geometry/node_settings.py index ffa30c6..f91a6e1 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -71,6 +71,8 @@ # Input > Scene 'GeometryNodeTool3DCursor' : [], + 'GeometryNodeInputActiveCamera' : [], + 'GeometryNodeCollectionInfo' : [ NTPNodeSetting("transform_space", ST.ENUM) ], @@ -138,6 +140,9 @@ 'GeometryNodeToolSetSelection' : [], # Geometry > Operations + 'GeometryNodeBake' : [ #TODO + ], + 'GeometryNodeBoundBox' : [], 'GeometryNodeConvexHull' : [], @@ -154,6 +159,10 @@ NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)) ], + 'GeometryNodeSortElements' : [ + NTPNodeSetting("domain", ST.ENUM, min_version = (4, 1, 0)) + ], + 'GeometryNodeTransform' : [], 'GeometryNodeSeparateComponents' : [], @@ -279,7 +288,7 @@ 'GeometryNodeRealizeInstances' : [ NTPNodeSetting("legacy_behavior", ST.BOOL, min_version = (3, 1, 0), - max_version = (3, 6, 0)) + max_version = (4, 0, 0)) ], 'GeometryNodeRotateInstances' : [], @@ -472,12 +481,14 @@ ], 'ShaderNodeTexMusgrave' : [ - NTPNodeSetting("musgrave_dimensions", ST.ENUM), - NTPNodeSetting("musgrave_type", ST.ENUM) + NTPNodeSetting("musgrave_dimensions", ST.ENUM, max_version = (4, 1, 0)), + NTPNodeSetting("musgrave_type", ST.ENUM, max_version = (4, 1, 0)) ], 'ShaderNodeTexNoise' : [ - NTPNodeSetting("noise_dimensions", ST.ENUM) + NTPNodeSetting("noise_dimensions", ST.ENUM), + NTPNodeSetting("noise_type", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), ], 'ShaderNodeTexVoronoi' : [ @@ -499,6 +510,16 @@ # UTILITIES + 'GeometryNodeIndexSwitch' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (4, 1, 0)), + NTPNodeSetting("index_switch_items", ST.INDEX_SWITCH_ITEMS, min_version = (4, 1, 0)) + ], + + 'GeometryNodeMenuSwitch' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version = (4, 1, 0)), + NTPNodeSetting("enum_definition", ST.ENUM_DEFINITION, min_version = (4, 1, 0)) + ], + 'ShaderNodeMix' : [ NTPNodeSetting("blend_type", ST.ENUM, min_version = (3, 4, 0)), NTPNodeSetting("clamp_factor", ST.BOOL, min_version = (3, 4, 0)), @@ -610,7 +631,7 @@ ], 'FunctionNodeCompareFloats' : [ - NTPNodeSetting("operation", ST.ENUM, max_version = (3, 0, 0)) + NTPNodeSetting("operation", ST.ENUM, max_version = (3, 2, 0)) ], 'ShaderNodeFloatCurve' : [ @@ -641,7 +662,11 @@ 'FunctionNodeAxisAngleToRotation' : [], 'FunctionNodeEulerToRotation' : [], 'FunctionNodeInvertRotation' : [], - + + 'FunctionNodeRotateRotation' : [ + NTPNodeSetting("rotation_space", ST.ENUM, min_version = (4, 1, 0)) + ], + 'FunctionNodeRotateEuler' : [ NTPNodeSetting("space", ST.ENUM), NTPNodeSetting("type", ST.ENUM) diff --git a/material/node_settings.py b/material/node_settings.py index 3729d84..657a691 100644 --- a/material/node_settings.py +++ b/material/node_settings.py @@ -194,13 +194,14 @@ ], 'ShaderNodeTexMusgrave' : [ - NTPNodeSetting("musgrave_dimensions", ST.ENUM), - NTPNodeSetting("musgrave_type", ST.ENUM) + NTPNodeSetting("musgrave_dimensions", ST.ENUM, max_version = (4, 1, 0)), + NTPNodeSetting("musgrave_type", ST.ENUM, max_version = (4, 1, 0)) ], 'ShaderNodeTexNoise' : [ NTPNodeSetting("noise_dimensions", ST.ENUM), - NTPNodeSetting("normalize", ST.BOOL, min_version = (4, 0, 0)) + NTPNodeSetting("noise_type", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), ], 'ShaderNodeTexPointDensity' : [ diff --git a/utils.py b/utils.py index 275ff1a..6d99033 100644 --- a/utils.py +++ b/utils.py @@ -29,6 +29,9 @@ class ST(Enum): CURVE_MAPPING = auto() NODE_TREE = auto() + ENUM_DEFINITION = auto() #TODO: unimplemented + INDEX_SWITCH_ITEMS = auto() #TODO: unimplemented + # Asset Library MATERIAL = auto() # Handle with asset library OBJECT = auto() # Handle with asset library From eb8936f879399d6246e1f990faf55aedd30df2db Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 16 Feb 2024 22:51:37 -0600 Subject: [PATCH 179/286] feat: index switch node --- ntp_operator.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index 669f393..5d95543 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -345,6 +345,8 @@ def _set_settings_defaults(self, node: Node) -> None: self._load_image(attr, f"{node_var}.{attr_name}") elif st == ST.IMAGE_USER: self._image_user_settings(attr, f"{node_var}.{attr_name}") + elif st == ST.INDEX_SWITCH_ITEMS: + self._index_switch_items(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, @@ -1043,6 +1045,22 @@ def _image_user_settings(self, img_user: bpy.types.ImageUser, self._write(f"{img_user_var}.{img_usr_attr} = " f"{getattr(img_user, img_usr_attr)}") + if bpy.app.version >= (4, 1, 0): + def _index_switch_items(self, switch_items: bpy.types.NodeIndexSwitchItems, + items_str: str) -> None: + """ + Set the proper amount of index switch items + + Parameters: + switch_items (bpy.types.NodeIndexSwitchItems): switch items to copy + items_str (str): string for the generated switch items attribute + """ + num_items = len(switch_items) + self._write(f"{items_str}.clear()") + for i in range(num_items): + self._write(f"{items_str}.new()") + + def _set_parents(self, node_tree: NodeTree) -> None: """ Sets parents for all nodes, mostly used to put nodes in frames From d79de076952a7dcc255a8327ce90473ce751f070 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 16 Feb 2024 23:10:54 -0600 Subject: [PATCH 180/286] feat: menu switch node --- ntp_operator.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index 5d95543..cdb44fb 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -347,6 +347,8 @@ def _set_settings_defaults(self, node: Node) -> None: self._image_user_settings(attr, f"{node_var}.{attr_name}") elif st == ST.INDEX_SWITCH_ITEMS: self._index_switch_items(attr, f"{node_var}.{attr_name}") + elif st == ST.ENUM_DEFINITION: + self._enum_definition(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, @@ -705,6 +707,10 @@ def _set_input_defaults(self, node: Node) -> None: elif input.bl_idname == 'NodeSocketString': default_val = str_to_py_str(input.default_value) + #menu + elif input.bl_idname == 'NodeSocketMenu': + default_val = enum_to_py_str(input.default_value) + # images elif input.bl_idname == 'NodeSocketImage': img = input.default_value @@ -1060,6 +1066,23 @@ def _index_switch_items(self, switch_items: bpy.types.NodeIndexSwitchItems, for i in range(num_items): self._write(f"{items_str}.new()") + def _enum_definition(self, enum_def: bpy.types.NodeEnumDefinition, + enum_def_str: str) -> None: + """ + Set enum definition item for a node + + Parameters: + enum_def (bpy.types.NodeEnumDefinition): enum definition to replicate + enum_def_str (str): string for the generated enum definition + """ + self._write(f"{enum_def_str}.enum_items.clear()") + for i, enum_item in enumerate(enum_def.enum_items): + name = str_to_py_str(enum_item.name) + self._write(f"{enum_def_str}.enum_items.new({name})") + if enum_item.description != "": + self._write(f"{enum_def_str}.enum_items[{i}].description = " + f"{str_to_py_str(enum_item.description)}") + def _set_parents(self, node_tree: NodeTree) -> None: """ From 41fba00e436f074416f767525845f112e6e7a05d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 16 Feb 2024 23:35:44 -0600 Subject: [PATCH 181/286] feat: bake node --- geometry/node_settings.py | 3 ++- ntp_operator.py | 24 ++++++++++++++++++++++++ utils.py | 5 +++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/geometry/node_settings.py b/geometry/node_settings.py index f91a6e1..35e87a1 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -140,7 +140,8 @@ 'GeometryNodeToolSetSelection' : [], # Geometry > Operations - 'GeometryNodeBake' : [ #TODO + 'GeometryNodeBake' : [ + NTPNodeSetting("bake_items", ST.BAKE_ITEMS, min_version = (4, 1, 0)) ], 'GeometryNodeBoundBox' : [], diff --git a/ntp_operator.py b/ntp_operator.py index cdb44fb..1da59ee 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -349,6 +349,8 @@ def _set_settings_defaults(self, node: Node) -> None: self._index_switch_items(attr, f"{node_var}.{attr_name}") elif st == ST.ENUM_DEFINITION: self._enum_definition(attr, f"{node_var}.{attr_name}") + elif st == ST.BAKE_ITEMS: + self._bake_items(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, @@ -1083,6 +1085,28 @@ def _enum_definition(self, enum_def: bpy.types.NodeEnumDefinition, self._write(f"{enum_def_str}.enum_items[{i}].description = " f"{str_to_py_str(enum_item.description)}") + def _bake_items(self, bake_items: bpy.types.NodeGeometryBakeItems, + bake_items_str: str) -> None: + """ + Set bake items for a node + + Parameters: + bake_items (bpy.types.NodeGeometryBakeItems): bake items to replicate + bake_items_str (str): string for the generated bake items + """ + self._write(f"{bake_items_str}.clear()") + for i, bake_item in enumerate(bake_items): + socket_type = enum_to_py_str(bake_item.socket_type) + name = str_to_py_str(bake_item.name) + self._write(f"{bake_items_str}.new({socket_type}, {name})") + + ad = enum_to_py_str(bake_item.attribute_domain) + self._write(f"{bake_items_str}[{i}].attribute_domain = {ad}") + + if bake_item.is_attribute: + self._write(f"{bake_items_str}[{i}].is_attribute = True") + + def _set_parents(self, node_tree: NodeTree) -> None: """ diff --git a/utils.py b/utils.py index 6d99033..dfa9ee8 100644 --- a/utils.py +++ b/utils.py @@ -29,8 +29,9 @@ class ST(Enum): CURVE_MAPPING = auto() NODE_TREE = auto() - ENUM_DEFINITION = auto() #TODO: unimplemented - INDEX_SWITCH_ITEMS = auto() #TODO: unimplemented + ENUM_DEFINITION = auto() + INDEX_SWITCH_ITEMS = auto() + BAKE_ITEMS = auto() # Asset Library MATERIAL = auto() # Handle with asset library From b782b8e0a58fcbab9595c24cf2b9874025f72ee6 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Mar 2024 19:28:00 -0500 Subject: [PATCH 182/286] feat: updated rotate euler node settings --- geometry/node_settings.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/geometry/node_settings.py b/geometry/node_settings.py index 35e87a1..f1eb8db 100644 --- a/geometry/node_settings.py +++ b/geometry/node_settings.py @@ -669,8 +669,9 @@ ], 'FunctionNodeRotateEuler' : [ + NTPNodeSetting("rotation_type", ST.ENUM, min_version = (4, 1, 0)), NTPNodeSetting("space", ST.ENUM), - NTPNodeSetting("type", ST.ENUM) + NTPNodeSetting("type", ST.ENUM, max_version = (4, 1, 0)) ], 'FunctionNodeRotateVector' : [], From 5d60e06ced839303dd2a2eee3422995cdf8bdabc Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Mar 2024 19:29:06 -0500 Subject: [PATCH 183/286] feat: nodes now set hide property --- ntp_operator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index 1da59ee..990e571 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -269,6 +269,9 @@ def _create_node(self, node: Node, node_tree_var: str) -> str: if node.mute: self._write(f"{node_var}.mute = True") + # hide + if node.hide: + self._write(f"{node_var}.hide = True") return node_var def _set_settings_defaults(self, node: Node) -> None: From a9e87700212862da460374b916022c81c731f67b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Mar 2024 19:30:12 -0500 Subject: [PATCH 184/286] fix: no longer set out-of-date settings that share a name with another attribute --- ntp_operator.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 990e571..1dc407d 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -295,14 +295,18 @@ def _set_settings_defaults(self, node: Node) -> None: attr_name = setting.name st = setting.st + is_version_valid = (bpy.app.version >= setting.min_version and + bpy.app.version < setting.max_version) if not hasattr(node, attr_name): - if (bpy.app.version >= setting.min_version and - bpy.app.version < setting.max_version): + if is_version_valid: self.report({'WARNING'}, f"NodeToPython: Couldn't find attribute " f"\"{attr_name}\" for node {node.name} of type " f"{node.bl_idname}") continue + elif not is_version_valid: + continue + attr = getattr(node, attr_name, None) if attr is None: continue From 0e6e68c5a3c5dd129143e039bf551043eeee0fbc Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Mar 2024 19:30:47 -0500 Subject: [PATCH 185/286] feat: order links according to multi-input sort ID --- ntp_operator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index 1dc407d..4f72c57 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1175,6 +1175,9 @@ def _init_links(self, node_tree: NodeTree) -> None: links = node_tree.links if links: self._write(f"#initialize {nt_var} links") + if hasattr(links[0], "multi_input_sort_id"): + # generate links in the correct order for multi input sockets + links = sorted(links, key=lambda link: link.multi_input_sort_id) for link in links: in_node_var = self._node_vars[link.from_node] From e6e5797e1e05976c6b5b93cdcd5f0136dc880c82 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 5 May 2024 01:35:06 -0500 Subject: [PATCH 186/286] refactor: zone output items now handled like other attrs --- ntp_operator.py | 32 ++++++++++++++++++++++++++++++++ utils.py | 2 ++ 2 files changed, 34 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index 4f72c57..18c274f 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -19,12 +19,14 @@ INDEX = "i" IMAGE_DIR_NAME = "imgs" IMAGE_PATH = "image_path" +ITEM = "item" BASE_DIR = "base_dir" RESERVED_NAMES = { INDEX, IMAGE_DIR_NAME, IMAGE_PATH, + ITEM, BASE_DIR } @@ -312,6 +314,10 @@ def _set_settings_defaults(self, node: Node) -> None: continue setting_str = f"{node_var}.{attr_name}" + """ + A switch statement would've been nice here, + but Blender 3.0 was on Python v3.9 + """ if st == ST.ENUM: if attr != '': self._write(f"{setting_str} = {enum_to_py_str(attr)}") @@ -352,6 +358,10 @@ def _set_settings_defaults(self, node: Node) -> None: self._load_image(attr, f"{node_var}.{attr_name}") elif st == ST.IMAGE_USER: self._image_user_settings(attr, f"{node_var}.{attr_name}") + elif st == ST.SIM_OUTPUT_ITEMS: + self._output_zone_items(attr, f"{node_var}.{attr_name}", True) + elif st == ST.REPEAT_OUTPUT_ITEMS: + self._output_zone_items(attr, f"{node_var}.{attr_name}", False) elif st == ST.INDEX_SWITCH_ITEMS: self._index_switch_items(attr, f"{node_var}.{attr_name}") elif st == ST.ENUM_DEFINITION: @@ -1060,6 +1070,28 @@ def _image_user_settings(self, img_user: bpy.types.ImageUser, self._write(f"{img_user_var}.{img_usr_attr} = " f"{getattr(img_user, img_usr_attr)}") + if bpy.app.version >= (3, 6, 0): + def _output_zone_items(self, output_items, items_str: str, + is_sim: bool) -> None: + """ + Set items for a zone's output + + output_items (NodeGeometry(Simulation/Repeat)OutputItems): items + to copy + items_str (str): + """ + self._write(f"{items_str}.clear()") + for i, item in enumerate(output_items): + socket_type = enum_to_py_str(item.socket_type) + name = str_to_py_str(item.name) + self._write(f"# Create item {name}") + self._write(f"{items_str}.new({socket_type}, {name})") + + if is_sim: + item_var = f"{items_str}[{i}]" + ad = enum_to_py_str(item.attribute_domain) + self._write(f"{item_var}.attribute_domain = {ad}") + if bpy.app.version >= (4, 1, 0): def _index_switch_items(self, switch_items: bpy.types.NodeIndexSwitchItems, items_str: str) -> None: diff --git a/utils.py b/utils.py index dfa9ee8..757da4a 100644 --- a/utils.py +++ b/utils.py @@ -29,6 +29,8 @@ class ST(Enum): CURVE_MAPPING = auto() NODE_TREE = auto() + SIM_OUTPUT_ITEMS = auto() + REPEAT_OUTPUT_ITEMS = auto() ENUM_DEFINITION = auto() INDEX_SWITCH_ITEMS = auto() BAKE_ITEMS = auto() From 935d886db2a88f00be50f57db91915320cc59ffa Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 5 May 2024 01:36:21 -0500 Subject: [PATCH 187/286] refactor: rename material module -> shader, all operators now use same, auto-generated node settings --- __init__.py | 10 +- compositor/__init__.py | 2 - compositor/node_settings.py | 619 ---------- compositor/operator.py | 4 +- geometry/__init__.py | 2 - geometry/node_settings.py | 702 ----------- geometry/operator.py | 42 +- material/node_settings.py | 397 ------- node_settings.py | 1863 ++++++++++++++++++++++++++++++ {material => shader}/__init__.py | 2 - {material => shader}/operator.py | 6 +- {material => shader}/ui.py | 8 +- 12 files changed, 1880 insertions(+), 1777 deletions(-) delete mode 100644 compositor/node_settings.py delete mode 100644 geometry/node_settings.py delete mode 100644 material/node_settings.py create mode 100644 node_settings.py rename {material => shader}/__init__.py (70%) rename {material => shader}/operator.py (97%) rename {material => shader}/ui.py (88%) diff --git a/__init__.py b/__init__.py index 762b776..85f6a72 100644 --- a/__init__.py +++ b/__init__.py @@ -12,12 +12,12 @@ import importlib importlib.reload(compositor) importlib.reload(geometry) - importlib.reload(material) + importlib.reload(shader) importlib.reload(options) else: from . import compositor from . import geometry - from . import material + from . import shader from . import options import bpy @@ -50,9 +50,9 @@ def draw(self, context): geometry.ui.NTPGeoNodesMenu, geometry.ui.NTPGeoNodesPanel, #material - material.operator.NTPMaterialOperator, - material.ui.NTPMaterialMenu, - material.ui.NTPMaterialPanel, + shader.operator.NTPShaderOperator, + shader.ui.NTPShaderMenu, + shader.ui.NTPShaderPanel, ] def register(): diff --git a/compositor/__init__.py b/compositor/__init__.py index ceb3a04..1c6d5b3 100644 --- a/compositor/__init__.py +++ b/compositor/__init__.py @@ -1,10 +1,8 @@ if "bpy" in locals(): import importlib - importlib.reload(node_settings) importlib.reload(operator) importlib.reload(ui) else: - from . import node_settings from . import operator from . import ui diff --git a/compositor/node_settings.py b/compositor/node_settings.py deleted file mode 100644 index 2db216a..0000000 --- a/compositor/node_settings.py +++ /dev/null @@ -1,619 +0,0 @@ -from ..utils import ST, NTPNodeSetting - -compositor_node_settings : dict[str, list[NTPNodeSetting]] = { - # INPUT - 'CompositorNodeBokehImage' : [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("catadioptric", ST.FLOAT), - NTPNodeSetting("flaps", ST.INT), - NTPNodeSetting("rounding", ST.FLOAT), - NTPNodeSetting("shift", ST.FLOAT) - ], - - 'CompositorNodeImage' : [ - NTPNodeSetting("frame_duration", ST.INT), - NTPNodeSetting("frame_offset", ST.INT), - NTPNodeSetting("frame_start", ST.INT), - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("layer", ST.ENUM), - NTPNodeSetting("use_auto_refresh", ST.BOOL), - NTPNodeSetting("use_cyclic", ST.BOOL), - NTPNodeSetting("use_straight_alpha_output", ST.BOOL), - NTPNodeSetting("view", ST.ENUM) - ], - - 'CompositorNodeMask' : [ - NTPNodeSetting("mask", ST.MASK), - NTPNodeSetting("motion_blur_samples", ST.INT), - NTPNodeSetting("motion_blur_shutter", ST.FLOAT), - NTPNodeSetting("size_source", ST.ENUM), - NTPNodeSetting("size_x", ST.INT), - NTPNodeSetting("size_y", ST.INT), - NTPNodeSetting("use_feather", ST.BOOL), - NTPNodeSetting("use_motion_blur", ST.BOOL) - ], - - 'CompositorNodeMovieClip' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP) - ], - - 'CompositorNodeTexture' : [ - NTPNodeSetting("node_output", ST.INT), #TODO: ?? - NTPNodeSetting("texture", ST.TEXTURE) - ], - - # Input > Constant - 'CompositorNodeRGB' : [], - 'CompositorNodeValue' : [], - - # Input > Scene - 'CompositorNodeRLayers' : [ - NTPNodeSetting("layer", ST.ENUM), - NTPNodeSetting("scene", ST.SCENE) - ], - - 'CompositorNodeSceneTime' : [], - - 'CompositorNodeTime' : [ - NTPNodeSetting("curve", ST.CURVE_MAPPING), - NTPNodeSetting("frame_end", ST.INT), - NTPNodeSetting("frame_start", ST.INT) - ], - - - # OUTPUT - 'CompositorNodeComposite' : [ - NTPNodeSetting("use_alpha", ST.BOOL) - ], - - 'CompositorNodeOutputFile' : [ - NTPNodeSetting("active_input_index", ST.INT), #TODO: probably not right at all - NTPNodeSetting("base_path", ST.STRING), - NTPNodeSetting("file_slots", ST.FILE_SLOTS), - NTPNodeSetting("format", ST.IMAGE_FORMAT_SETTINGS), - NTPNodeSetting("layer_slots", ST.LAYER_SLOTS) - ], - - 'CompositorNodeViewer' : [ - NTPNodeSetting("center_x", ST.FLOAT), - NTPNodeSetting("center_y", ST.FLOAT), - NTPNodeSetting("tile_order", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL) - ], - - 'CompositorNodeSplitViewer' : [ - NTPNodeSetting("axis", ST.ENUM), - NTPNodeSetting("factor", ST.INT) - ], - - - # COLOR - 'CompositorNodePremulKey' : [ - NTPNodeSetting("mapping", ST.ENUM) - ], - - 'CompositorNodeValToRGB' : [ - NTPNodeSetting("color_ramp", ST.COLOR_RAMP) - ], - - 'CompositorNodeConvertColorSpace' : [ - NTPNodeSetting("from_color_space", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("to_color_space", ST.ENUM, min_version=(3, 1, 0)) - ], - - 'CompositorNodeSetAlpha' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'CompositorNodeInvert' : [ - NTPNodeSetting("invert_alpha", ST.BOOL), - NTPNodeSetting("invert_rgb", ST.BOOL) - ], - - 'CompositorNodeRGBToBW' : [], - - # Color > Adjust - 'CompositorNodeBrightContrast' : [ - NTPNodeSetting("use_premultiply", ST.BOOL) - ], - - 'CompositorNodeColorBalance' : [ - NTPNodeSetting("correction_method", ST.ENUM), - NTPNodeSetting("gain", ST.COLOR), - NTPNodeSetting("gamma", ST.COLOR), - NTPNodeSetting("lift", ST.COLOR), - NTPNodeSetting("offset", ST.COLOR), - NTPNodeSetting("offset_basis", ST.FLOAT), - NTPNodeSetting("power", ST.COLOR), - NTPNodeSetting("slope", ST.COLOR) - ], - - 'CompositorNodeColorCorrection' : [ - NTPNodeSetting("red", ST.BOOL), - NTPNodeSetting("green", ST.BOOL), - NTPNodeSetting("blue", ST.BOOL), - #master - NTPNodeSetting("master_saturation", ST.FLOAT), - NTPNodeSetting("master_contrast", ST.FLOAT), - NTPNodeSetting("master_gamma", ST.FLOAT), - NTPNodeSetting("master_gain", ST.FLOAT), - NTPNodeSetting("master_lift", ST.FLOAT), - #highlights - NTPNodeSetting("highlights_saturation", ST.FLOAT), - NTPNodeSetting("highlights_contrast", ST.FLOAT), - NTPNodeSetting("highlights_gamma", ST.FLOAT), - NTPNodeSetting("highlights_gain", ST.FLOAT), - NTPNodeSetting("highlights_lift", ST.FLOAT), - #midtones - NTPNodeSetting("midtones_saturation", ST.FLOAT), - NTPNodeSetting("midtones_contrast", ST.FLOAT), - NTPNodeSetting("midtones_gamma", ST.FLOAT), - NTPNodeSetting("midtones_gain", ST.FLOAT), - NTPNodeSetting("midtones_lift", ST.FLOAT), - #shadows - NTPNodeSetting("shadows_saturation", ST.FLOAT), - NTPNodeSetting("shadows_contrast", ST.FLOAT), - NTPNodeSetting("shadows_gamma", ST.FLOAT), - NTPNodeSetting("shadows_gain", ST.FLOAT), - NTPNodeSetting("shadows_lift", ST.FLOAT), - #midtones location - NTPNodeSetting("midtones_start", ST.FLOAT), - NTPNodeSetting("midtones_end", ST.FLOAT) - ], - - 'CompositorNodeExposure' : [], - 'CompositorNodeGamma' : [], - - 'CompositorNodeHueCorrect' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - 'CompositorNodeHueSat' : [], - - 'CompositorNodeCurveRGB' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - 'CompositorNodeTonemap' : [ - NTPNodeSetting("adaptation", ST.FLOAT), - NTPNodeSetting("contrast", ST.FLOAT), - NTPNodeSetting("correction", ST.FLOAT), - NTPNodeSetting("gamma", ST.FLOAT), - NTPNodeSetting("intensity", ST.FLOAT), - NTPNodeSetting("key", ST.FLOAT), - NTPNodeSetting("offset", ST.FLOAT), - NTPNodeSetting("tonemap_type", ST.ENUM) - ], - - - # Color > Mix - 'CompositorNodeAlphaOver' : [ - NTPNodeSetting("premul", ST.FLOAT), - NTPNodeSetting("use_premultiply", ST.BOOL) - ], - - 'CompositorNodeCombineColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)), - NTPNodeSetting("ycc_mode", ST.ENUM, min_version = (3, 3, 0)) - ], - - 'CompositorNodeSeparateColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)), - NTPNodeSetting("ycc_mode", ST.ENUM, min_version = (3, 3, 0)) - ], - - 'CompositorNodeMixRGB' : [ - NTPNodeSetting("blend_type", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_clamp", ST.BOOL) - ], - - 'CompositorNodeZcombine' : [ - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_antialias_z", ST.BOOL) - ], - - - # FILTER - 'CompositorNodeAntiAliasing' : [ - NTPNodeSetting("contrast_limit", ST.FLOAT), - NTPNodeSetting("corner_rounding", ST.FLOAT), - NTPNodeSetting("threshold", ST.FLOAT) - ], - - 'CompositorNodeDenoise' : [ - NTPNodeSetting("prefilter", ST.ENUM), - NTPNodeSetting("use_hdr", ST.BOOL) - ], - - 'CompositorNodeDespeckle' : [ - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("threshold_neighbor", ST.FLOAT) - ], - - 'CompositorNodeDilateErode' : [ - NTPNodeSetting("distance", ST.INT), - NTPNodeSetting("edge", ST.FLOAT), - NTPNodeSetting("falloff", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM) - ], - - 'CompositorNodeInpaint' : [ - NTPNodeSetting("distance", ST.INT) - ], - - 'CompositorNodeFilter' : [ - NTPNodeSetting("filter_type", ST.ENUM) - ], - - 'CompositorNodeGlare' : [ - NTPNodeSetting("angle_offset", ST.FLOAT), - NTPNodeSetting("color_modulation", ST.FLOAT), - NTPNodeSetting("fade", ST.FLOAT), - NTPNodeSetting("glare_type", ST.ENUM), - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("mix", ST.FLOAT), - NTPNodeSetting("quality", ST.ENUM), - NTPNodeSetting("size", ST.INT), - NTPNodeSetting("streaks", ST.INT), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("use_rotate_45", ST.BOOL) - ], - - 'CompositorNodeKuwahara' : [ - NTPNodeSetting("eccentricity", ST.FLOAT, min_version = (4, 0, 0)), - NTPNodeSetting("sharpness", ST.FLOAT, min_version = (4, 0, 0)), - NTPNodeSetting("size", ST.INT, min_version = (4, 0, 0), - max_version = (4, 1, 0)), - NTPNodeSetting("uniformity", ST.INT, min_version = (4, 0, 0)), - NTPNodeSetting("variation", ST.ENUM, min_version = (4, 0, 0)), - NTPNodeSetting("use_high_precision", ST.BOOL, min_version = (4, 1, 0)) - ], - - 'CompositorNodePixelate' : [ - NTPNodeSetting("pixel_size", ST.INT, min_version = (4, 1, 0)) - ], - - 'CompositorNodePosterize' : [], - - 'CompositorNodeSunBeams' : [ - NTPNodeSetting("ray_length", ST.FLOAT), - NTPNodeSetting("source", ST.VEC2) - ], - - # Filter > Blur - 'CompositorNodeBilateralblur' : [ - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("sigma_color", ST.FLOAT), - NTPNodeSetting("sigma_space", ST.FLOAT) - ], - - 'CompositorNodeBlur' : [ - NTPNodeSetting("aspect_correction", ST.ENUM), - NTPNodeSetting("factor", ST.FLOAT), - NTPNodeSetting("factor_x", ST.FLOAT), - NTPNodeSetting("factor_y", ST.FLOAT), - NTPNodeSetting("filter_type", ST.ENUM), - NTPNodeSetting("size_x", ST.INT), - NTPNodeSetting("size_y", ST.INT), - NTPNodeSetting("use_bokeh", ST.BOOL), - NTPNodeSetting("use_extended_bounds", ST.BOOL), - NTPNodeSetting("use_gamma_correction", ST.BOOL), - NTPNodeSetting("use_relative", ST.BOOL), - NTPNodeSetting("use_variable_size", ST.BOOL) - ], - - 'CompositorNodeBokehBlur' : [ - NTPNodeSetting("blur_max", ST.FLOAT), - NTPNodeSetting("use_extended_bounds", ST.BOOL), - NTPNodeSetting("use_variable_size", ST.BOOL) - ], - - 'CompositorNodeDefocus' : [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("blur_max", ST.FLOAT), - NTPNodeSetting("bokeh", ST.ENUM), - NTPNodeSetting("f_stop", ST.FLOAT), - NTPNodeSetting("scene", ST.SCENE), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("use_gamma_correction", ST.BOOL), - NTPNodeSetting("use_preview", ST.BOOL), - NTPNodeSetting("use_zbuffer", ST.BOOL), - NTPNodeSetting("z_scale", ST.FLOAT) - ], - - 'CompositorNodeDBlur' : [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("center_x", ST.FLOAT), - NTPNodeSetting("center_y", ST.FLOAT), - NTPNodeSetting("distance", ST.FLOAT), - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("spin", ST.FLOAT), - NTPNodeSetting("use_wrap", ST.BOOL, max_version = (3, 5, 0)), - NTPNodeSetting("zoom", ST.FLOAT) - ], - - 'CompositorNodeVecBlur' : [ - NTPNodeSetting("factor", ST.FLOAT), - NTPNodeSetting("samples", ST.INT), - NTPNodeSetting("speed_max", ST.INT), - NTPNodeSetting("speed_min", ST.INT), - NTPNodeSetting("use_curved", ST.BOOL) - ], - - - # KEYING - 'CompositorNodeChannelMatte' : [ - NTPNodeSetting("color_space", ST.ENUM), - NTPNodeSetting("limit_channel", ST.ENUM), - NTPNodeSetting("limit_max", ST.FLOAT), - NTPNodeSetting("limit_method", ST.ENUM), - NTPNodeSetting("limit_min", ST.FLOAT), - NTPNodeSetting("matte_channel", ST.ENUM) - ], - - 'CompositorNodeChromaMatte' : [ - NTPNodeSetting("gain", ST.FLOAT), - NTPNodeSetting("lift", ST.FLOAT), - NTPNodeSetting("shadow_adjust", ST.FLOAT), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT) - ], - - 'CompositorNodeColorMatte' : [ - NTPNodeSetting("color_hue", ST.FLOAT), - NTPNodeSetting("color_saturation", ST.FLOAT), - NTPNodeSetting("color_value", ST.FLOAT) - ], - - 'CompositorNodeColorSpill' : [ - NTPNodeSetting("channel", ST.ENUM), - NTPNodeSetting("limit_channel", ST.ENUM), - NTPNodeSetting("limit_method", ST.ENUM), - NTPNodeSetting("ratio", ST.FLOAT), - NTPNodeSetting("unspill_blue", ST.FLOAT), - NTPNodeSetting("unspill_green", ST.FLOAT), - NTPNodeSetting("unspill_red", ST.FLOAT), - NTPNodeSetting("use_unspill", ST.BOOL) - ], - - 'CompositorNodeDiffMatte' : [ - NTPNodeSetting("falloff", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT) - ], - - 'CompositorNodeDistanceMatte' : [ - NTPNodeSetting("channel", ST.ENUM), - NTPNodeSetting("falloff", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT) - ], - - 'CompositorNodeKeying' : [ - NTPNodeSetting("blur_post", ST.INT), - NTPNodeSetting("blur_pre", ST.INT), - NTPNodeSetting("clip_black", ST.FLOAT), - NTPNodeSetting("clip_white", ST.FLOAT), - NTPNodeSetting("despill_balance", ST.FLOAT), - NTPNodeSetting("despill_factor", ST.FLOAT), - NTPNodeSetting("dilate_distance", ST.INT), - NTPNodeSetting("edge_kernel_radius", ST.INT), - NTPNodeSetting("edge_kernel_tolerance", ST.FLOAT), - NTPNodeSetting("feather_distance", ST.INT), - NTPNodeSetting("feather_falloff", ST.ENUM), - NTPNodeSetting("screen_balance", ST.FLOAT) - ], - - 'CompositorNodeKeyingScreen' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("tracking_object", ST.STRING) - ], - - 'CompositorNodeLumaMatte' : [ - NTPNodeSetting("limit_max", ST.FLOAT), - NTPNodeSetting("limit_min", ST.FLOAT) - ], - - - # MASK - 'CompositorNodeCryptomatteV2' : [ - NTPNodeSetting("add", ST.COLOR), - NTPNodeSetting("entries", ST.CRYPTOMATTE_ENTRIES), - NTPNodeSetting("frame_duration", ST.INT), - NTPNodeSetting("frame_offset", ST.INT), - NTPNodeSetting("frame_start", ST.INT), - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("layer", ST.ENUM), - NTPNodeSetting("layer_name", ST.ENUM), - NTPNodeSetting("matte_id", ST.STRING), - NTPNodeSetting("remove", ST.COLOR), - NTPNodeSetting("scene", ST.SCENE), - NTPNodeSetting("source", ST.ENUM), - NTPNodeSetting("use_auto_refresh", ST.BOOL), - NTPNodeSetting("use_cyclic", ST.BOOL), - NTPNodeSetting("view", ST.ENUM) - ], - - 'CompositorNodeCryptomatte' : [ - NTPNodeSetting("add", ST.COLOR), #TODO: may need special handling - NTPNodeSetting("matte_id", ST.STRING), - NTPNodeSetting("remove", ST.COLOR) - ], - - 'CompositorNodeBoxMask' : [ - NTPNodeSetting("height", ST.FLOAT), - NTPNodeSetting("mask_type", ST.ENUM), - NTPNodeSetting("rotation", ST.FLOAT), - NTPNodeSetting("width", ST.FLOAT), - NTPNodeSetting("x", ST.FLOAT), - NTPNodeSetting("y", ST.FLOAT) - ], - - 'CompositorNodeEllipseMask' : [ - NTPNodeSetting("height", ST.FLOAT), - NTPNodeSetting("mask_type", ST.ENUM), - NTPNodeSetting("rotation", ST.FLOAT), - NTPNodeSetting("width", ST.FLOAT), - NTPNodeSetting("x", ST.FLOAT), - NTPNodeSetting("y", ST.FLOAT) - ], - - 'CompositorNodeDoubleEdgeMask' : [ - NTPNodeSetting("edge_mode", ST.ENUM), - NTPNodeSetting("inner_mode", ST.ENUM) - ], - - 'CompositorNodeIDMask' : [ - NTPNodeSetting("index", ST.INT), - NTPNodeSetting("use_antialiasing", ST.BOOL) - ], - - - # TRACKING - 'CompositorNodePlaneTrackDeform' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("motion_blur_samples", ST.INT), - NTPNodeSetting("motion_blur_shutter", ST.FLOAT), - NTPNodeSetting("plane_track_name", ST.STRING), - NTPNodeSetting("tracking_object", ST.STRING), - NTPNodeSetting("use_motion_blur", ST.BOOL) - ], - - 'CompositorNodeStabilize' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("filter_type", ST.ENUM), - NTPNodeSetting("invert", ST.BOOL) - ], - - 'CompositorNodeTrackPos' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("frame_relative", ST.INT), - NTPNodeSetting("position", ST.ENUM), - NTPNodeSetting("track_name", ST.STRING), #TODO: probably not right - NTPNodeSetting("tracking_object", ST.STRING) - ], - - - # TRANSFORM - 'CompositorNodeRotate' : [ - NTPNodeSetting("filter_type", ST.ENUM) - ], - - 'CompositorNodeScale' : [ - NTPNodeSetting("frame_method", ST.ENUM), - NTPNodeSetting("offset_x", ST.FLOAT), - NTPNodeSetting("offset_y", ST.FLOAT), - NTPNodeSetting("space", ST.ENUM) - ], - - 'CompositorNodeTransform' : [ - NTPNodeSetting("filter_type", ST.ENUM) - ], - - 'CompositorNodeTranslate' : [ - NTPNodeSetting("use_relative", ST.BOOL), - NTPNodeSetting("wrap_axis", ST.ENUM) - ], - - 'CompositorNodeCornerPin' : [], - - 'CompositorNodeCrop' : [ - NTPNodeSetting("max_x", ST.INT), - NTPNodeSetting("max_y", ST.INT), - NTPNodeSetting("min_x", ST.INT), - NTPNodeSetting("min_y", ST.INT), - NTPNodeSetting("rel_max_x", ST.FLOAT), - NTPNodeSetting("rel_max_y", ST.FLOAT), - NTPNodeSetting("rel_min_x", ST.FLOAT), - NTPNodeSetting("rel_min_y", ST.FLOAT), - NTPNodeSetting("relative", ST.BOOL), - NTPNodeSetting("use_crop_size", ST.BOOL) - ], - - 'CompositorNodeDisplace' : [], - - 'CompositorNodeFlip' : [ - NTPNodeSetting("axis", ST.ENUM) - ], - - 'CompositorNodeMapUV' : [ - NTPNodeSetting("alpha", ST.INT) - ], - - 'CompositorNodeLensdist' : [ - NTPNodeSetting("use_fit", ST.BOOL), - NTPNodeSetting("use_jitter", ST.BOOL), - NTPNodeSetting("use_projector", ST.BOOL) - ], - - 'CompositorNodeMovieDistortion' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("distortion_type", ST.ENUM) - ], - - - # UTILITIES - 'CompositorNodeMapRange' : [ - NTPNodeSetting("use_clamp", ST.BOOL) - ], - - 'CompositorNodeMapValue' : [ - NTPNodeSetting("max", ST.VEC1), - NTPNodeSetting("min", ST.VEC1), - NTPNodeSetting("offset", ST.VEC1), - NTPNodeSetting("size", ST.VEC1), - NTPNodeSetting("use_max", ST.BOOL), - NTPNodeSetting("use_min", ST.BOOL) - ], - - 'CompositorNodeMath' : [ - NTPNodeSetting("operation", ST.ENUM), - NTPNodeSetting("use_clamp", ST.BOOL) - ], - - 'CompositorNodeLevels' : [ - NTPNodeSetting("channel", ST.ENUM) - ], - - 'CompositorNodeNormalize' : [], - - 'CompositorNodeSplit' : [ - NTPNodeSetting("axis", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("factor", ST.INT, min_version=(4, 1, 0)) - ], - - 'CompositorNodeSwitch' : [ - NTPNodeSetting("check", ST.BOOL) - ], - - 'CompositorNodeSwitchView' : [], - - - # VECTOR - 'CompositorNodeCombineXYZ' : [], - 'CompositorNodeSeparateXYZ' : [], - 'CompositorNodeNormal' : [], - - 'CompositorNodeCurveVec' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - - # MISC - 'CompositorNodeGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE) - ], - - 'NodeFrame' : [ - NTPNodeSetting("label_size", ST.INT), - NTPNodeSetting("shrink", ST.BOOL), - NTPNodeSetting("text", ST.TEXT) - ], - - 'NodeGroupInput' : [], - - 'NodeGroupOutput' : [ - NTPNodeSetting("is_active_output", ST.BOOL) - ], - - 'NodeReroute' : [] -} diff --git a/compositor/operator.py b/compositor/operator.py index b09d456..91f9adf 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -6,7 +6,7 @@ from ..ntp_node_tree import NTP_NodeTree from ..utils import * from io import StringIO -from .node_settings import compositor_node_settings +from ..node_settings import node_settings SCENE = "scene" BASE_NAME = "base_name" @@ -33,7 +33,7 @@ class NTPCompositorOperator(NTP_Operator): def __init__(self): super().__init__() - self._settings = compositor_node_settings + self._settings = node_settings for name in COMP_OP_RESERVED_NAMES: self._used_vars[name] = 0 diff --git a/geometry/__init__.py b/geometry/__init__.py index e2707b0..e40e80c 100644 --- a/geometry/__init__.py +++ b/geometry/__init__.py @@ -1,11 +1,9 @@ if "bpy" in locals(): import importlib - importlib.reload(node_settings) importlib.reload(node_tree) importlib.reload(operator) importlib.reload(ui) else: - from . import node_settings from . import node_tree from . import operator from . import ui diff --git a/geometry/node_settings.py b/geometry/node_settings.py deleted file mode 100644 index f1eb8db..0000000 --- a/geometry/node_settings.py +++ /dev/null @@ -1,702 +0,0 @@ -from ..utils import ST, NTPNodeSetting - -geo_node_settings : dict[str, list[NTPNodeSetting]] = { - # ATTRIBUTE - 'GeometryNodeAttributeStatistic' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM) - ], - - 'GeometryNodeAttributeDomainSize' : [ - NTPNodeSetting("component", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'GeometryNodeBlurAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 5, 0)) - ], - - 'GeometryNodeCaptureAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM) - ], - - 'GeometryNodeRemoveAttribute' : [], - - 'GeometryNodeStoreNamedAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 2, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 2, 0)) - ], - - 'GeometryNodeAttributeTransfer' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM), - NTPNodeSetting("mapping", ST.ENUM) - ], - - # INPUT - # Input > Constant - 'FunctionNodeInputBool' : [ - NTPNodeSetting("boolean", ST.BOOL) - ], - - 'FunctionNodeInputColor' : [ - NTPNodeSetting("color", ST.VEC4) - ], - - 'GeometryNodeInputImage' : [ - NTPNodeSetting("image", ST.IMAGE, min_version = (3, 5, 0)) - ], - - 'FunctionNodeInputInt' : [ - NTPNodeSetting("integer", ST.INT) - ], - - 'GeometryNodeInputMaterial' : [ - NTPNodeSetting("material", ST.MATERIAL) - ], - - 'FunctionNodeInputString' : [ - NTPNodeSetting("string", ST.STRING) - ], - - 'ShaderNodeValue' : [], - - 'FunctionNodeInputVector' : [ - NTPNodeSetting("vector", ST.VEC3) - ], - - #Input > Group - 'NodeGroupInput' : [], - - # Input > Scene - 'GeometryNodeTool3DCursor' : [], - - 'GeometryNodeInputActiveCamera' : [], - - 'GeometryNodeCollectionInfo' : [ - NTPNodeSetting("transform_space", ST.ENUM) - ], - - 'GeometryNodeImageInfo' : [], - 'GeometryNodeIsViewport' : [], - - 'GeometryNodeObjectInfo' : [ - NTPNodeSetting("transform_space", ST.ENUM) - ], - - 'GeometryNodeSelfObject' : [], - 'GeometryNodeInputSceneTime' : [], - - - # OUTPUT - 'GeometryNodeViewer' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 4, 0)) - ], - - - # GEOMETRY - 'GeometryNodeJoinGeometry' : [], - 'GeometryNodeGeometryToInstance' : [], - - # Geometry > Read - 'GeometryNodeInputID' : [], - 'GeometryNodeInputIndex' : [], - - 'GeometryNodeInputNamedAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 2, 0)) - ], - - 'GeometryNodeInputNormal' : [], - 'GeometryNodeInputPosition' : [], - 'GeometryNodeInputRadius' : [], - 'GeometryNodeToolSelection' : [], - - # Geometry > Sample - 'GeometryNodeProximity' : [ - NTPNodeSetting("target_element", ST.ENUM) - ], - - 'GeometryNodeIndexOfNearest' : [], - - 'GeometryNodeRaycast' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("mapping", ST.ENUM) - ], - - 'GeometryNodeSampleIndex' : [ - NTPNodeSetting("clamp", ST.BOOL, min_version = (3, 4, 0)), - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 4, 0)) - ], - - 'GeometryNodeSampleNearest' : [ - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 4, 0)) - ], - - # Geometry > Write - 'GeometryNodeSetID' : [], - 'GeometryNodeSetPosition' : [], - 'GeometryNodeToolSetSelection' : [], - - # Geometry > Operations - 'GeometryNodeBake' : [ - NTPNodeSetting("bake_items", ST.BAKE_ITEMS, min_version = (4, 1, 0)) - ], - - 'GeometryNodeBoundBox' : [], - 'GeometryNodeConvexHull' : [], - - 'GeometryNodeDeleteGeometry' : [ - NTPNodeSetting("domain", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeDuplicateElements' : [ - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 2, 0)) - ], - - 'GeometryNodeMergeByDistance' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'GeometryNodeSortElements' : [ - NTPNodeSetting("domain", ST.ENUM, min_version = (4, 1, 0)) - ], - - 'GeometryNodeTransform' : [], - 'GeometryNodeSeparateComponents' : [], - - 'GeometryNodeSeparateGeometry' : [ - NTPNodeSetting("domain", ST.ENUM) - ], - - - # CURVE - # Curve > Read - 'GeometryNodeInputCurveHandlePositions' : [], - 'GeometryNodeCurveLength' : [], - 'GeometryNodeInputTangent' : [], - 'GeometryNodeInputCurveTilt' : [], - 'GeometryNodeCurveEndpointSelection' : [], - - 'GeometryNodeCurveHandleTypeSelection' : [ - NTPNodeSetting("handle_type", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM_SET) - ], - - 'GeometryNodeInputSplineCyclic' : [], - 'GeometryNodeSplineLength' : [], - 'GeometryNodeSplineParameter' : [], - 'GeometryNodeInputSplineResolution' : [], - - # Curve > Sample - 'GeometryNodeSampleCurve' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), - NTPNodeSetting("mode", ST.ENUM), - NTPNodeSetting("use_all_curves", ST.BOOL, min_version = (3, 4, 0)) - ], - - # Curve > Write - 'GeometryNodeSetCurveNormal' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 4, 0)) - ], - - 'GeometryNodeSetCurveRadius' : [], - 'GeometryNodeSetCurveTilt' : [], - - 'GeometryNodeSetCurveHandlePositions' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeCurveSetHandles' : [ - NTPNodeSetting("handle_type", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM_SET) - ], - - 'GeometryNodeSetSplineCyclic' : [], - 'GeometryNodeSetSplineResolution' : [], - - 'GeometryNodeCurveSplineType' : [ - NTPNodeSetting("spline_type", ST.ENUM) - ], - - # Curve > Operations - 'GeometryNodeCurveToMesh' : [], - - 'GeometryNodeCurveToPoints' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeDeformCurvesOnSurface' : [], - - 'GeometryNodeFillCurve' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeFilletCurve' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeInterpolateCurves' : [], - - 'GeometryNodeResampleCurve' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeReverseCurve' : [], - 'GeometryNodeSubdivideCurve' : [], - - 'GeometryNodeTrimCurve' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - # Curve > Primitives - 'GeometryNodeCurveArc' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'GeometryNodeCurvePrimitiveBezierSegment' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeCurvePrimitiveCircle' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeCurvePrimitiveLine' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeCurveSpiral' : [], - 'GeometryNodeCurveQuadraticBezier' : [], - - 'GeometryNodeCurvePrimitiveQuadrilateral' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeCurveStar' : [], - - # Curve > Topology - 'GeometryNodeOffsetPointInCurve' : [], - 'GeometryNodeCurveOfPoint' : [], - 'GeometryNodePointsOfCurve' : [], - - - # INSTANCES - 'GeometryNodeInstanceOnPoints' : [], - 'GeometryNodeInstancesToPoints' : [], - - 'GeometryNodeRealizeInstances' : [ - NTPNodeSetting("legacy_behavior", ST.BOOL, min_version = (3, 1, 0), - max_version = (4, 0, 0)) - ], - - 'GeometryNodeRotateInstances' : [], - 'GeometryNodeScaleInstances' : [], - 'GeometryNodeTranslateInstances' : [], - 'GeometryNodeInputInstanceRotation' : [], - 'GeometryNodeInputInstanceScale' : [], - - - # MESH - # Mesh > Read - 'GeometryNodeInputMeshEdgeAngle' : [], - 'GeometryNodeInputMeshEdgeNeighbors' : [], - 'GeometryNodeInputMeshEdgeVertices' : [], - 'GeometryNodeEdgesToFaceGroups' : [], - 'GeometryNodeInputMeshFaceArea' : [], - 'GeometryNodeInputMeshFaceNeighbors' : [], - 'GeometryNodeToolFaceSet' : [], - 'GeometryNodeMeshFaceSetBoundaries' : [], - 'GeometryNodeInputMeshFaceIsPlanar' : [], - 'GeometryNodeInputShadeSmooth' : [], - 'GeometryNodeInputEdgeSmooth' : [], - 'GeometryNodeInputMeshIsland' : [], - 'GeometryNodeInputShortestEdgePaths' : [], - 'GeometryNodeInputMeshVertexNeighbors' : [], - - # Mesh > Sample - 'GeometryNodeSampleNearestSurface' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)) - ], - - 'GeometryNodeSampleUVSurface' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)) - ], - - # Mesh > Write - 'GeometryNodeToolSetFaceSet' : [], - - 'GeometryNodeSetShadeSmooth' : [ - NTPNodeSetting("domain", ST.ENUM, min_version = (4, 0, 0)) - ], - - # Mesh > Operations - 'GeometryNodeDualMesh' : [], - 'GeometryNodeEdgePathsToCurves' : [], - 'GeometryNodeEdgePathsToSelection' : [], - - 'GeometryNodeExtrudeMesh' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'GeometryNodeFlipFaces' : [], - - 'GeometryNodeMeshBoolean' : [ - NTPNodeSetting("operation", ST.ENUM) - ], - - 'GeometryNodeMeshToCurve' : [], - - 'GeometryNodeMeshToPoints' : [ - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeMeshToVolume' : [ - NTPNodeSetting("resolution_mode", ST.ENUM, min_version = (3, 3, 0)) - ], - - 'GeometryNodeScaleElements' : [ - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 1, 0)), - NTPNodeSetting("scale_mode", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'GeometryNodeSplitEdges' : [], - 'GeometryNodeSubdivideMesh' : [], - - 'GeometryNodeSubdivisionSurface' : [ - NTPNodeSetting("boundary_smooth", ST.ENUM), - NTPNodeSetting("uv_smooth", ST.ENUM) - ], - - 'GeometryNodeTriangulate' : [ - NTPNodeSetting("ngon_method", ST.ENUM), - NTPNodeSetting("quad_method", ST.ENUM) - ], - - # Mesh > Primitives - 'GeometryNodeMeshCone' : [ - NTPNodeSetting("fill_type", ST.ENUM) - ], - - 'GeometryNodeMeshCube' : [], - - 'GeometryNodeMeshCylinder' : [ - NTPNodeSetting("fill_type", ST.ENUM) - ], - - 'GeometryNodeMeshGrid' : [], - 'GeometryNodeMeshIcoSphere' : [], - - 'GeometryNodeMeshCircle' : [ - NTPNodeSetting("fill_type", ST.ENUM) - ], - - 'GeometryNodeMeshLine' : [ - NTPNodeSetting("count_mode", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM) - ], - - 'GeometryNodeMeshUVSphere' : [], - - # Mesh > Topology - 'GeometryNodeCornersOfFace' : [], - 'GeometryNodeCornersOfVertex' : [], - 'GeometryNodeEdgesOfCorner' : [], - 'GeometryNodeEdgesOfVertex' : [], - 'GeometryNodeFaceOfCorner' : [], - 'GeometryNodeOffsetCornerInFace' : [], - 'GeometryNodeVertexOfCorner' : [], - - # Mesh > UV - 'GeometryNodeUVPackIslands' : [], - - 'GeometryNodeUVUnwrap': [ - NTPNodeSetting("method", ST.ENUM, min_version = (3, 3, 0)) - ], - - - # POINT - 'GeometryNodeDistributePointsInVolume' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 4, 0)) - ], - - 'GeometryNodeDistributePointsOnFaces' : [ - NTPNodeSetting("distribute_method", ST.ENUM), - NTPNodeSetting("use_legacy_normal", ST.BOOL, min_version = (3, 5, 0)) - ], - - 'GeometryNodePoints' : [], - 'GeometryNodePointsToCurves' : [], - 'GeometryNodePointsToVertices' : [], - - 'GeometryNodePointsToVolume' : [ - NTPNodeSetting("resolution_mode", ST.ENUM) - ], - - 'GeometryNodeSetPointRadius' : [], - - - # VOLUME - 'GeometryNodeVolumeCube' : [], - 'GeometryNodeVolumeToMesh' : [ - NTPNodeSetting("resolution_mode", ST.ENUM) - ], - - - # SIMULATION - 'GeometryNodeSimulationInput' : [], - 'GeometryNodeSimulationOutput' : [], - - - # MATERIAL - 'GeometryNodeReplaceMaterial' : [], - 'GeometryNodeInputMaterialIndex' : [], - 'GeometryNodeMaterialSelection' : [], - 'GeometryNodeSetMaterial' : [], - 'GeometryNodeSetMaterialIndex' : [], - - - # TEXTURE - 'ShaderNodeTexBrick' : [ - NTPNodeSetting("offset", ST.FLOAT), - NTPNodeSetting("offset_frequency", ST.INT), - NTPNodeSetting("squash", ST.FLOAT), - NTPNodeSetting("squash_frequency", ST.INT) - ], - - 'ShaderNodeTexChecker' : [], - - 'ShaderNodeTexGradient' : [ - NTPNodeSetting("gradient_type", ST.ENUM) - ], - - 'GeometryNodeImageTexture' : [ - NTPNodeSetting("extension", ST.ENUM, min_version = (3, 1, 0)), - NTPNodeSetting("interpolation", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'ShaderNodeTexMagic' : [ - NTPNodeSetting("turbulence_depth", ST.INT) - ], - - 'ShaderNodeTexMusgrave' : [ - NTPNodeSetting("musgrave_dimensions", ST.ENUM, max_version = (4, 1, 0)), - NTPNodeSetting("musgrave_type", ST.ENUM, max_version = (4, 1, 0)) - ], - - 'ShaderNodeTexNoise' : [ - NTPNodeSetting("noise_dimensions", ST.ENUM), - NTPNodeSetting("noise_type", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), - ], - - 'ShaderNodeTexVoronoi' : [ - NTPNodeSetting("distance", ST.ENUM), - NTPNodeSetting("feature", ST.ENUM), - NTPNodeSetting("voronoi_dimensions", ST.ENUM) - ], - - 'ShaderNodeTexWave' : [ - NTPNodeSetting("bands_direction", ST.ENUM), - NTPNodeSetting("rings_direction", ST.ENUM), - NTPNodeSetting("wave_profile", ST.ENUM), - NTPNodeSetting("wave_type", ST.ENUM) - ], - - 'ShaderNodeTexWhiteNoise' : [ - NTPNodeSetting("noise_dimensions", ST.ENUM) - ], - - - # UTILITIES - 'GeometryNodeIndexSwitch' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (4, 1, 0)), - NTPNodeSetting("index_switch_items", ST.INDEX_SWITCH_ITEMS, min_version = (4, 1, 0)) - ], - - 'GeometryNodeMenuSwitch' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (4, 1, 0)), - NTPNodeSetting("enum_definition", ST.ENUM_DEFINITION, min_version = (4, 1, 0)) - ], - - 'ShaderNodeMix' : [ - NTPNodeSetting("blend_type", ST.ENUM, min_version = (3, 4, 0)), - NTPNodeSetting("clamp_factor", ST.BOOL, min_version = (3, 4, 0)), - NTPNodeSetting("clamp_result", ST.BOOL, min_version = (3, 4, 0)), - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), - NTPNodeSetting("factor_mode", ST.ENUM, min_version = (3, 4, 0)) - ], - - 'FunctionNodeRandomValue' : [ - NTPNodeSetting("data_type", ST.ENUM) - ], - - 'GeometryNodeRepeatInput' : [], - - 'GeometryNodeRepeatOutput' : [ - NTPNodeSetting("inspection_index", ST.INT, min_version = (4, 0, 0)) - ], - - 'GeometryNodeSwitch' : [ - NTPNodeSetting("input_type", ST.ENUM) - ], - - # Utilities > Color - 'ShaderNodeValToRGB' : [ - NTPNodeSetting("color_ramp", ST.COLOR_RAMP) - ], - - 'ShaderNodeRGBCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - 'FunctionNodeCombineColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) - ], - - 'ShaderNodeMixRGB' : [ - NTPNodeSetting("blend_type", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_clamp", ST.BOOL) - ], #legacy - - 'FunctionNodeSeparateColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) - ], - - # Utilities > Text - 'GeometryNodeStringJoin' : [], - 'FunctionNodeReplaceString' : [], - 'FunctionNodeSliceString' : [], - 'FunctionNodeStringLength' : [], - - 'GeometryNodeStringToCurves' : [ - NTPNodeSetting("align_x", ST.ENUM), - NTPNodeSetting("align_y", ST.ENUM), - NTPNodeSetting("font", ST.FONT), - NTPNodeSetting("overflow", ST.ENUM), - NTPNodeSetting("pivot_mode", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'FunctionNodeValueToString' : [], - 'FunctionNodeInputSpecialCharacters' : [], - - # Utilities > Vector - 'ShaderNodeVectorCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - 'ShaderNodeVectorMath' : [ - NTPNodeSetting("operation", ST.ENUM) - ], - - 'ShaderNodeVectorRotate' : [ - NTPNodeSetting("invert", ST.BOOL), - NTPNodeSetting("rotation_type", ST.ENUM) - ], - - 'ShaderNodeCombineXYZ' : [], - 'ShaderNodeSeparateXYZ' : [], - - # Utilities > Field - 'GeometryNodeAccumulateField' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM) - ], - - 'GeometryNodeFieldAtIndex' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'GeometryNodeFieldOnDomain' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 3, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version = (3, 3, 0)) - ], - - # Utilities > Math - 'FunctionNodeBooleanMath' : [ - NTPNodeSetting("operation", ST.ENUM) - ], - - 'ShaderNodeClamp' : [ - NTPNodeSetting("clamp_type", ST.ENUM) - ], - - 'FunctionNodeCompare' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 1, 0)), - NTPNodeSetting("operation", ST.ENUM, min_version = (3, 1, 0)) - ], - - 'FunctionNodeCompareFloats' : [ - NTPNodeSetting("operation", ST.ENUM, max_version = (3, 2, 0)) - ], - - 'ShaderNodeFloatCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - 'FunctionNodeFloatToInt' : [ - NTPNodeSetting("rounding_mode", ST.ENUM) - ], - - 'ShaderNodeMapRange' : [ - NTPNodeSetting("clamp", ST.BOOL), - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), - NTPNodeSetting("interpolation_type", ST.ENUM) - ], - - 'ShaderNodeMath' : [ - NTPNodeSetting("operation", ST.ENUM), - NTPNodeSetting("use_clamp", ST.BOOL) - ], - - # Utilities > Rotation - 'FunctionNodeAlignEulerToVector' : [ - NTPNodeSetting("axis", ST.ENUM), - NTPNodeSetting("pivot_axis", ST.ENUM) - ], - - 'FunctionNodeAxisAngleToRotation' : [], - 'FunctionNodeEulerToRotation' : [], - 'FunctionNodeInvertRotation' : [], - - 'FunctionNodeRotateRotation' : [ - NTPNodeSetting("rotation_space", ST.ENUM, min_version = (4, 1, 0)) - ], - - 'FunctionNodeRotateEuler' : [ - NTPNodeSetting("rotation_type", ST.ENUM, min_version = (4, 1, 0)), - NTPNodeSetting("space", ST.ENUM), - NTPNodeSetting("type", ST.ENUM, max_version = (4, 1, 0)) - ], - - 'FunctionNodeRotateVector' : [], - 'FunctionNodeRotationToAxisAngle' : [], - 'FunctionNodeRotationToEuler' : [], - 'FunctionNodeRotationToQuaternion' : [], - 'FunctionNodeQuaternionToRotation' : [], - - # MISC - 'GeometryNodeGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE) - ], - - 'NodeFrame' : [ - NTPNodeSetting("label_size", ST.INT), - NTPNodeSetting("shrink", ST.BOOL), - NTPNodeSetting("text", ST.TEXT) - ], - - 'NodeGroupInput' : [], - - 'NodeGroupOutput' : [ - NTPNodeSetting("is_active_output", ST.BOOL) - ], - - 'NodeReroute' : [] - -} \ No newline at end of file diff --git a/geometry/operator.py b/geometry/operator.py index efbe375..b359bf5 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -7,14 +7,12 @@ from ..ntp_operator import NTP_Operator from ..utils import * from .node_tree import NTP_GeoNodeTree -from .node_settings import geo_node_settings +from ..node_settings import node_settings -ITEM = "item" OBJECT_NAME = "name" OBJECT = "obj" MODIFIER = "mod" -GEO_OP_RESERVED_NAMES = {ITEM, - OBJECT_NAME, +GEO_OP_RESERVED_NAMES = {OBJECT_NAME, OBJECT, MODIFIER} @@ -35,38 +33,10 @@ class NTPGeoNodesOperator(NTP_Operator): def __init__(self): super().__init__() - self._settings = geo_node_settings + self._settings = node_settings for name in GEO_OP_RESERVED_NAMES: self._used_vars[name] = 0 - if bpy.app.version >= (3, 6, 0): - def _process_zone_output_node(self, node: GeometryNode) -> None: - is_sim = False - if node.bl_idname == 'GeometryNodeSimulationOutput': - items = "state_items" - is_sim = True - elif node.bl_idname == 'GeometryNodeRepeatOutput': - items = "repeat_items" - else: - self.report({'WARNING'}, f"NodeToPython: {node.bl_idname} is " - f"not recognized as a valid zone output") - - node_var = self._node_vars[node] - - self._write(f"# Remove generated {items}") - self._write(f"for {ITEM} in {node_var}.{items}:") - self._write(f"\t{node_var}.{items}.remove(item)") - - for i, item in enumerate(getattr(node, items)): - socket_type = enum_to_py_str(item.socket_type) - name = str_to_py_str(item.name) - self._write(f"# Create item {name}") - self._write(f"{node_var}.{items}.new({socket_type}, {name})") - if is_sim: - item_var = f"{node_var}.{items}[{i}]" - ad = enum_to_py_str(item.attribute_domain) - self._write(f"{item_var}.attribute_domain = {ad}") - def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: """ Create node and set settings, defaults, and cosmetics @@ -90,15 +60,9 @@ def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: if node.bl_idname == 'GeometryNodeSimulationInput': ntp_nt.sim_inputs.append(node) - elif node.bl_idname == 'GeometryNodeSimulationOutput': - self._process_zone_output_node(node) - elif node.bl_idname == 'GeometryNodeRepeatInput': ntp_nt.repeat_inputs.append(node) - elif node.bl_idname == 'GeometryNodeRepeatOutput': - self._process_zone_output_node(node) - self._hide_hidden_sockets(node) if node.bl_idname not in {'GeometryNodeSimulationInput', diff --git a/material/node_settings.py b/material/node_settings.py deleted file mode 100644 index 657a691..0000000 --- a/material/node_settings.py +++ /dev/null @@ -1,397 +0,0 @@ -from ..utils import ST, NTPNodeSetting - -shader_node_settings : dict[str, list[NTPNodeSetting]] = { - # INPUT - 'ShaderNodeAmbientOcclusion' : [ - NTPNodeSetting("inside", ST.BOOL), - NTPNodeSetting("only_local", ST.BOOL), - NTPNodeSetting("samples", ST.INT) - ], - - 'ShaderNodeAttribute' : [ - NTPNodeSetting("attribute_name", ST.STRING), #TODO: separate attribute type? - NTPNodeSetting("attribute_type", ST.ENUM) - ], - - 'ShaderNodeBevel' : [ - NTPNodeSetting("samples", ST.INT) - ], - - 'ShaderNodeCameraData' : [], - - 'ShaderNodeVertexColor' : [ - NTPNodeSetting("layer_name", ST.STRING) #TODO: separate color attribute type? - ], - - 'ShaderNodeHairInfo' : [], - 'ShaderNodeFresnel' : [], - 'ShaderNodeNewGeometry' : [], - 'ShaderNodeLayerWeight' : [], - 'ShaderNodeLightPath' : [], - 'ShaderNodeObjectInfo' : [], - 'ShaderNodeParticleInfo' : [], - 'ShaderNodePointInfo' : [], - 'ShaderNodeRGB' : [], - - 'ShaderNodeTangent' : [ - NTPNodeSetting("axis", ST.ENUM), - NTPNodeSetting("direction_type", ST.ENUM), - NTPNodeSetting("uv_map", ST.STRING) #TODO: special UV Map type? - ], - - 'ShaderNodeTexCoord' : [ - NTPNodeSetting("from_instancer", ST.BOOL), - NTPNodeSetting("object", ST.OBJECT) - ], - - 'ShaderNodeUVAlongStroke' : [ - NTPNodeSetting("use_tips", ST.BOOL) - ], - - 'ShaderNodeUVMap' : [ - NTPNodeSetting("from_instancer", ST.BOOL), - NTPNodeSetting("uv_map", ST.STRING) - ], #TODO: see ShaderNodeTangent - - 'ShaderNodeValue' : [], - 'ShaderNodeVolumeInfo' : [], - - 'ShaderNodeWireframe' : [ - NTPNodeSetting("use_pixel_size", ST.BOOL) - ], - - - # OUTPUT - 'ShaderNodeOutputAOV' : [ - NTPNodeSetting("name", ST.STRING) - ], - - 'ShaderNodeOutputLight' : [ - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM) - ], - - 'ShaderNodeOutputLineStyle' : [ - NTPNodeSetting("blend_type", ST.ENUM), - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_clamp", ST.BOOL) - ], - - 'ShaderNodeOutputMaterial' : [ - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM) - ], - - 'ShaderNodeOutputWorld' : [ - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM) - ], - - - # SHADER - 'ShaderNodeAddShader' : [], - - 'ShaderNodeBsdfAnisotropic' : [ - NTPNodeSetting("distribution", ST.ENUM) - ], - - 'ShaderNodeBackground' : [], - 'ShaderNodeBsdfDiffuse' : [], - 'ShaderNodeEmission' : [], - - 'ShaderNodeBsdfGlass' : [ - NTPNodeSetting("distribution", ST.ENUM) - ], - - 'ShaderNodeBsdfGlossy' : [ - NTPNodeSetting("distribution", ST.ENUM) - ], - - 'ShaderNodeBsdfHair' : [ - NTPNodeSetting("component", ST.ENUM) - ], - - 'ShaderNodeHoldout' : [], - 'ShaderNodeMixShader' : [], - - 'ShaderNodeBsdfPrincipled' : [ - NTPNodeSetting("distribution", ST.ENUM), - NTPNodeSetting("subsurface_method", ST.ENUM) - ], - - 'ShaderNodeBsdfHairPrincipled' : [ - NTPNodeSetting("model", ST.ENUM), - NTPNodeSetting("parametrization", ST.ENUM) - ], - - 'ShaderNodeVolumePrincipled' : [], - - 'ShaderNodeBsdfRefraction' : [ - NTPNodeSetting("distribution", ST.ENUM) - ], - - 'ShaderNodeBsdfSheen' : [ - NTPNodeSetting("distribution", ST.ENUM, min_version = (4, 0, 0)) - ], - - 'ShaderNodeEeveeSpecular' : [], - - 'ShaderNodeSubsurfaceScattering' : [ - NTPNodeSetting("falloff", ST.ENUM) - ], - - 'ShaderNodeBsdfToon' : [ - NTPNodeSetting("component", ST.ENUM) - ], - - 'ShaderNodeBsdfTranslucent' : [], - 'ShaderNodeBsdfTransparent' : [], - 'ShaderNodeBsdfVelvet' : [], - 'ShaderNodeVolumeAbsorption' : [], - 'ShaderNodeVolumeScatter' : [], - - - # TEXTURE - 'ShaderNodeTexBrick' : [ - NTPNodeSetting("offset", ST.FLOAT), - NTPNodeSetting("offset_frequency", ST.INT), - NTPNodeSetting("squash", ST.FLOAT), - NTPNodeSetting("squash_frequency", ST.INT) - ], - - 'ShaderNodeTexChecker' : [], - - 'ShaderNodeTexEnvironment' : [ - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("image_user", ST.IMAGE_USER), - NTPNodeSetting("interpolation", ST.ENUM), - NTPNodeSetting("projection", ST.ENUM) - ], - - 'ShaderNodeTexGradient' : [ - NTPNodeSetting("gradient_type", ST.ENUM) - ], - - 'ShaderNodeTexIES' : [ - NTPNodeSetting("filepath", ST.STRING), #TODO - NTPNodeSetting("ies", ST.TEXT), - NTPNodeSetting("mode", ST.ENUM) - ], - - 'ShaderNodeTexImage' : [ - NTPNodeSetting("extension", ST.ENUM), - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("image_user", ST.IMAGE_USER), - NTPNodeSetting("interpolation", ST.ENUM), - NTPNodeSetting("projection", ST.ENUM), - NTPNodeSetting("projection_blend", ST.FLOAT) - ], - - 'ShaderNodeTexMagic' : [ - NTPNodeSetting("turbulence_depth", ST.INT) - ], - - 'ShaderNodeTexMusgrave' : [ - NTPNodeSetting("musgrave_dimensions", ST.ENUM, max_version = (4, 1, 0)), - NTPNodeSetting("musgrave_type", ST.ENUM, max_version = (4, 1, 0)) - ], - - 'ShaderNodeTexNoise' : [ - NTPNodeSetting("noise_dimensions", ST.ENUM), - NTPNodeSetting("noise_type", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), - ], - - 'ShaderNodeTexPointDensity' : [ - NTPNodeSetting("interpolation", ST.ENUM), - NTPNodeSetting("object", ST.OBJECT), - NTPNodeSetting("particle_color_source", ST.ENUM), - NTPNodeSetting("particle_system", ST.PARTICLE_SYSTEM), - NTPNodeSetting("point_source", ST.ENUM), - NTPNodeSetting("radius", ST.FLOAT), - NTPNodeSetting("resolution", ST.INT), - NTPNodeSetting("space", ST.ENUM), - NTPNodeSetting("vertex_attribute_name", ST.STRING), #TODO - NTPNodeSetting("vertex_color_source", ST.ENUM) - ], - - 'ShaderNodeTexSky' : [ - NTPNodeSetting("air_density", ST.FLOAT), - NTPNodeSetting("altitude", ST.FLOAT), - NTPNodeSetting("dust_density", ST.FLOAT), - NTPNodeSetting("ground_albedo", ST.FLOAT), - NTPNodeSetting("ozone_density", ST.FLOAT), - NTPNodeSetting("sky_type", ST.ENUM), - NTPNodeSetting("sun_direction", ST.VEC3), - NTPNodeSetting("sun_disc", ST.BOOL), - NTPNodeSetting("sun_elevation", ST.FLOAT), - NTPNodeSetting("sun_intensity", ST.FLOAT), - NTPNodeSetting("sun_rotation", ST.FLOAT), - NTPNodeSetting("sun_size", ST.FLOAT), - NTPNodeSetting("turbidity", ST.FLOAT) - ], - - 'ShaderNodeTexVoronoi' : [ - NTPNodeSetting("distance", ST.ENUM), - NTPNodeSetting("feature", ST.ENUM), - NTPNodeSetting("normalize", ST.BOOL, min_version = (4, 0, 0)), - NTPNodeSetting("voronoi_dimensions", ST.ENUM) - ], - - 'ShaderNodeTexWave' : [ - NTPNodeSetting("bands_direction", ST.ENUM), - NTPNodeSetting("rings_direction", ST.ENUM), - NTPNodeSetting("wave_profile", ST.ENUM), - NTPNodeSetting("wave_type", ST.ENUM) - ], - - 'ShaderNodeTexWhiteNoise' : [ - NTPNodeSetting("noise_dimensions", ST.ENUM) - ], - - - # COLOR - 'ShaderNodeBrightContrast' : [], - 'ShaderNodeGamma' : [], - 'ShaderNodeHueSaturation' : [], - 'ShaderNodeInvert' : [], - 'ShaderNodeLightFalloff' : [], - - 'ShaderNodeMix' : [ - NTPNodeSetting("blend_type", ST.ENUM, min_version = (3, 4, 0)), - NTPNodeSetting("clamp_factor", ST.BOOL, min_version = (3, 4, 0)), - NTPNodeSetting("clamp_result", ST.BOOL, min_version = (3, 4, 0)), - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 4, 0)), - NTPNodeSetting("factor_mode", ST.ENUM, min_version = (3, 4, 0)) - ], - - 'ShaderNodeMixRGB' : [ - NTPNodeSetting("blend_type", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_clamp", ST.BOOL) - ], - - 'ShaderNodeRGBCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - - # VECTOR - 'ShaderNodeBump' : [ - NTPNodeSetting("invert", ST.BOOL) - ], - - 'ShaderNodeDisplacement' : [ - NTPNodeSetting("space", ST.ENUM) - ], - - 'ShaderNodeMapping' : [ - NTPNodeSetting("vector_type", ST.ENUM) - ], - - 'ShaderNodeNormal' : [], - - 'ShaderNodeNormalMap' : [ - NTPNodeSetting("space", ST.ENUM), - NTPNodeSetting("uv_map", ST.STRING) #TODO - ], - - 'ShaderNodeVectorCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - 'ShaderNodeVectorDisplacement' : [ - NTPNodeSetting("space", ST.ENUM) - ], - - 'ShaderNodeVectorRotate' : [ - NTPNodeSetting("invert", ST.BOOL), - NTPNodeSetting("rotation_type", ST.ENUM) - ], - - 'ShaderNodeVectorTransform' : [ - NTPNodeSetting("convert_from", ST.ENUM), - NTPNodeSetting("convert_to", ST.ENUM), - NTPNodeSetting("vector_type", ST.ENUM) - ], - - - # CONVERTER - 'ShaderNodeBlackbody' : [], - - 'ShaderNodeClamp' : [ - NTPNodeSetting("clamp_type", ST.ENUM) - ], - - 'ShaderNodeValToRGB' : [ - NTPNodeSetting("color_ramp", ST.COLOR_RAMP) - ], - - 'ShaderNodeCombineColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) - ], - - 'ShaderNodeCombineXYZ' : [], - - 'ShaderNodeFloatCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING) - ], - - 'ShaderNodeMapRange' : [ - NTPNodeSetting("clamp", ST.BOOL), - NTPNodeSetting("data_type", ST.ENUM, min_version = (3, 1, 0)), - NTPNodeSetting("interpolation_type", ST.ENUM) - ], - - 'ShaderNodeMath' : [ - NTPNodeSetting("operation", ST.ENUM), - NTPNodeSetting("use_clamp", ST.BOOL) - ], - - 'ShaderNodeRGBToBW' : [], - - 'ShaderNodeSeparateColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version = (3, 3, 0)) - ], - - 'ShaderNodeSeparateXYZ' : [], - 'ShaderNodeShaderToRGB' : [], - - 'ShaderNodeVectorMath' : [ - NTPNodeSetting("operation", ST.ENUM) - ], - - 'ShaderNodeWavelength' : [], - - - # SCRIPT - 'ShaderNodeScript' : [ - NTPNodeSetting("bytecode", ST.STRING), #TODO: test all that - NTPNodeSetting("bytecode_hash", ST.STRING), - NTPNodeSetting("filepath", ST.STRING), - NTPNodeSetting("mode", ST.ENUM), - NTPNodeSetting("script", ST.TEXT), - NTPNodeSetting("use_auto_update", ST.BOOL) - ], - - # MISC - 'ShaderNodeGroup' : [ - NTPNodeSetting('node_tree', ST.NODE_TREE) - ], - - 'NodeFrame' : [ - NTPNodeSetting("label_size", ST.INT), - NTPNodeSetting("shrink", ST.BOOL), - NTPNodeSetting("text", ST.TEXT) - ], - - 'NodeGroupInput' : [], - - 'NodeGroupOutput' : [ - NTPNodeSetting("is_active_output", ST.BOOL) - ], - - 'NodeReroute' : [] -} diff --git a/node_settings.py b/node_settings.py new file mode 100644 index 0000000..6aeff5e --- /dev/null +++ b/node_settings.py @@ -0,0 +1,1863 @@ +from .utils import ST, NTPNodeSetting + +node_settings : dict[str, list[NTPNodeSetting]] = { + 'CompositorNodeAlphaOver' : [ + NTPNodeSetting("premul", ST.FLOAT), + NTPNodeSetting("use_premultiply", ST.BOOL), + ], + + 'CompositorNodeAntiAliasing' : [ + NTPNodeSetting("contrast_limit", ST.FLOAT), + NTPNodeSetting("corner_rounding", ST.FLOAT), + NTPNodeSetting("threshold", ST.FLOAT), + ], + + 'CompositorNodeBilateralblur' : [ + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("sigma_color", ST.FLOAT), + NTPNodeSetting("sigma_space", ST.FLOAT), + ], + + 'CompositorNodeBlur' : [ + NTPNodeSetting("aspect_correction", ST.ENUM), + NTPNodeSetting("factor", ST.FLOAT), + NTPNodeSetting("factor_x", ST.FLOAT), + NTPNodeSetting("factor_y", ST.FLOAT), + NTPNodeSetting("filter_type", ST.ENUM), + NTPNodeSetting("size_x", ST.INT), + NTPNodeSetting("size_y", ST.INT), + NTPNodeSetting("use_bokeh", ST.BOOL), + NTPNodeSetting("use_extended_bounds", ST.BOOL), + NTPNodeSetting("use_gamma_correction", ST.BOOL), + NTPNodeSetting("use_relative", ST.BOOL), + NTPNodeSetting("use_variable_size", ST.BOOL), + ], + + 'CompositorNodeBokehBlur' : [ + NTPNodeSetting("blur_max", ST.FLOAT), + NTPNodeSetting("use_extended_bounds", ST.BOOL), + NTPNodeSetting("use_variable_size", ST.BOOL), + ], + + 'CompositorNodeBokehImage' : [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("catadioptric", ST.FLOAT), + NTPNodeSetting("flaps", ST.INT), + NTPNodeSetting("rounding", ST.FLOAT), + NTPNodeSetting("shift", ST.FLOAT), + ], + + 'CompositorNodeBoxMask' : [ + NTPNodeSetting("height", ST.FLOAT), + NTPNodeSetting("mask_type", ST.ENUM), + NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("width", ST.FLOAT), + NTPNodeSetting("x", ST.FLOAT), + NTPNodeSetting("y", ST.FLOAT), + ], + + 'CompositorNodeBrightContrast' : [ + NTPNodeSetting("use_premultiply", ST.BOOL), + ], + + 'CompositorNodeChannelMatte' : [ + NTPNodeSetting("color_space", ST.ENUM), + NTPNodeSetting("limit_channel", ST.ENUM), + NTPNodeSetting("limit_max", ST.FLOAT), + NTPNodeSetting("limit_method", ST.ENUM), + NTPNodeSetting("limit_min", ST.FLOAT), + NTPNodeSetting("matte_channel", ST.ENUM), + ], + + 'CompositorNodeChromaMatte' : [ + NTPNodeSetting("gain", ST.FLOAT), + NTPNodeSetting("lift", ST.FLOAT), + NTPNodeSetting("shadow_adjust", ST.FLOAT), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT), + ], + + 'CompositorNodeColorBalance' : [ + NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("gain", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("gain", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("gamma", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("gamma", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("lift", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("lift", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("offset", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("offset", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("offset_basis", ST.FLOAT), + NTPNodeSetting("power", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("power", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("slope", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("slope", ST.VEC3, max_version=(3, 5, 0)), + ], + + 'CompositorNodeColorCorrection' : [ + NTPNodeSetting("blue", ST.BOOL), + NTPNodeSetting("green", ST.BOOL), + NTPNodeSetting("highlights_contrast", ST.FLOAT), + NTPNodeSetting("highlights_gain", ST.FLOAT), + NTPNodeSetting("highlights_gamma", ST.FLOAT), + NTPNodeSetting("highlights_lift", ST.FLOAT), + NTPNodeSetting("highlights_saturation", ST.FLOAT), + NTPNodeSetting("master_contrast", ST.FLOAT), + NTPNodeSetting("master_gain", ST.FLOAT), + NTPNodeSetting("master_gamma", ST.FLOAT), + NTPNodeSetting("master_lift", ST.FLOAT), + NTPNodeSetting("master_saturation", ST.FLOAT), + NTPNodeSetting("midtones_contrast", ST.FLOAT), + NTPNodeSetting("midtones_end", ST.FLOAT), + NTPNodeSetting("midtones_gain", ST.FLOAT), + NTPNodeSetting("midtones_gamma", ST.FLOAT), + NTPNodeSetting("midtones_lift", ST.FLOAT), + NTPNodeSetting("midtones_saturation", ST.FLOAT), + NTPNodeSetting("midtones_start", ST.FLOAT), + NTPNodeSetting("red", ST.BOOL), + NTPNodeSetting("shadows_contrast", ST.FLOAT), + NTPNodeSetting("shadows_gain", ST.FLOAT), + NTPNodeSetting("shadows_gamma", ST.FLOAT), + NTPNodeSetting("shadows_lift", ST.FLOAT), + NTPNodeSetting("shadows_saturation", ST.FLOAT), + ], + + 'CompositorNodeColorMatte' : [ + NTPNodeSetting("color_hue", ST.FLOAT), + NTPNodeSetting("color_saturation", ST.FLOAT), + NTPNodeSetting("color_value", ST.FLOAT), + ], + + 'CompositorNodeColorSpill' : [ + NTPNodeSetting("channel", ST.ENUM), + NTPNodeSetting("limit_channel", ST.ENUM), + NTPNodeSetting("limit_method", ST.ENUM), + NTPNodeSetting("ratio", ST.FLOAT), + NTPNodeSetting("unspill_blue", ST.FLOAT), + NTPNodeSetting("unspill_green", ST.FLOAT), + NTPNodeSetting("unspill_red", ST.FLOAT), + NTPNodeSetting("use_unspill", ST.BOOL), + ], + + 'CompositorNodeCombHSVA' : [], + + 'CompositorNodeCombRGBA' : [], + + 'CompositorNodeCombYCCA' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'CompositorNodeCombYUVA' : [], + + 'CompositorNodeCombineColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), + NTPNodeSetting("ycc_mode", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'CompositorNodeCombineXYZ' : [], + + 'CompositorNodeComposite' : [ + NTPNodeSetting("use_alpha", ST.BOOL), + ], + + 'CompositorNodeConvertColorSpace' : [ + NTPNodeSetting("from_color_space", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("to_color_space", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'CompositorNodeCornerPin' : [], + + 'CompositorNodeCrop' : [ + NTPNodeSetting("max_x", ST.INT), + NTPNodeSetting("max_y", ST.INT), + NTPNodeSetting("min_x", ST.INT), + NTPNodeSetting("min_y", ST.INT), + NTPNodeSetting("rel_max_x", ST.FLOAT), + NTPNodeSetting("rel_max_y", ST.FLOAT), + NTPNodeSetting("rel_min_x", ST.FLOAT), + NTPNodeSetting("rel_min_y", ST.FLOAT), + NTPNodeSetting("relative", ST.BOOL), + NTPNodeSetting("use_crop_size", ST.BOOL), + ], + + 'CompositorNodeCryptomatte' : [ + NTPNodeSetting("add", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("add", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("matte_id", ST.STRING), + NTPNodeSetting("remove", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("remove", ST.VEC3, max_version=(3, 5, 0)), + ], + + 'CompositorNodeCryptomatteV2' : [ + NTPNodeSetting("add", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("add", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("entries", ST.CRYPTOMATTE_ENTRIES), + NTPNodeSetting("frame_duration", ST.INT), + NTPNodeSetting("frame_offset", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("layer_name", ST.ENUM), + NTPNodeSetting("matte_id", ST.STRING), + NTPNodeSetting("remove", ST.COLOR, min_version=(3, 5, 0)), + NTPNodeSetting("remove", ST.VEC3, max_version=(3, 5, 0)), + NTPNodeSetting("scene", ST.SCENE), + NTPNodeSetting("source", ST.ENUM), + NTPNodeSetting("use_auto_refresh", ST.BOOL), + NTPNodeSetting("use_cyclic", ST.BOOL), + NTPNodeSetting("view", ST.ENUM), + ], + + 'CompositorNodeCurveRGB' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ], + + 'CompositorNodeCurveVec' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ], + + 'CompositorNodeCustomGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ], + + 'CompositorNodeDBlur' : [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("center_x", ST.FLOAT), + NTPNodeSetting("center_y", ST.FLOAT), + NTPNodeSetting("distance", ST.FLOAT), + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("spin", ST.FLOAT), + NTPNodeSetting("use_wrap", ST.BOOL, max_version=(3, 5, 0)), + NTPNodeSetting("zoom", ST.FLOAT), + ], + + 'CompositorNodeDefocus' : [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("blur_max", ST.FLOAT), + NTPNodeSetting("bokeh", ST.ENUM), + NTPNodeSetting("f_stop", ST.FLOAT), + NTPNodeSetting("scene", ST.SCENE), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("use_gamma_correction", ST.BOOL), + NTPNodeSetting("use_preview", ST.BOOL), + NTPNodeSetting("use_zbuffer", ST.BOOL), + NTPNodeSetting("z_scale", ST.FLOAT), + ], + + 'CompositorNodeDenoise' : [ + NTPNodeSetting("prefilter", ST.ENUM), + NTPNodeSetting("use_hdr", ST.BOOL), + ], + + 'CompositorNodeDespeckle' : [ + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("threshold_neighbor", ST.FLOAT), + ], + + 'CompositorNodeDiffMatte' : [ + NTPNodeSetting("falloff", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT), + ], + + 'CompositorNodeDilateErode' : [ + NTPNodeSetting("distance", ST.INT), + NTPNodeSetting("edge", ST.FLOAT), + NTPNodeSetting("falloff", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + ], + + 'CompositorNodeDisplace' : [], + + 'CompositorNodeDistanceMatte' : [ + NTPNodeSetting("channel", ST.ENUM), + NTPNodeSetting("falloff", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT), + ], + + 'CompositorNodeDoubleEdgeMask' : [ + NTPNodeSetting("edge_mode", ST.ENUM), + NTPNodeSetting("inner_mode", ST.ENUM), + ], + + 'CompositorNodeEllipseMask' : [ + NTPNodeSetting("height", ST.FLOAT), + NTPNodeSetting("mask_type", ST.ENUM), + NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("width", ST.FLOAT), + NTPNodeSetting("x", ST.FLOAT), + NTPNodeSetting("y", ST.FLOAT), + ], + + 'CompositorNodeExposure' : [], + + 'CompositorNodeFilter' : [ + NTPNodeSetting("filter_type", ST.ENUM), + ], + + 'CompositorNodeFlip' : [ + NTPNodeSetting("axis", ST.ENUM), + ], + + 'CompositorNodeGamma' : [], + + 'CompositorNodeGlare' : [ + NTPNodeSetting("angle_offset", ST.FLOAT), + NTPNodeSetting("color_modulation", ST.FLOAT), + NTPNodeSetting("fade", ST.FLOAT), + NTPNodeSetting("glare_type", ST.ENUM), + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("mix", ST.FLOAT), + NTPNodeSetting("quality", ST.ENUM), + NTPNodeSetting("size", ST.INT), + NTPNodeSetting("streaks", ST.INT), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("use_rotate_45", ST.BOOL), + ], + + 'CompositorNodeGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ], + + 'CompositorNodeHueCorrect' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ], + + 'CompositorNodeHueSat' : [], + + 'CompositorNodeIDMask' : [ + NTPNodeSetting("index", ST.INT), + NTPNodeSetting("use_antialiasing", ST.BOOL), + ], + + 'CompositorNodeImage' : [ + NTPNodeSetting("frame_duration", ST.INT), + NTPNodeSetting("frame_offset", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("use_auto_refresh", ST.BOOL), + NTPNodeSetting("use_cyclic", ST.BOOL), + NTPNodeSetting("use_straight_alpha_output", ST.BOOL), + NTPNodeSetting("view", ST.ENUM), + ], + + 'CompositorNodeInpaint' : [ + NTPNodeSetting("distance", ST.INT), + ], + + 'CompositorNodeInvert' : [ + NTPNodeSetting("invert_alpha", ST.BOOL), + NTPNodeSetting("invert_rgb", ST.BOOL), + ], + + 'CompositorNodeKeying' : [ + NTPNodeSetting("blur_post", ST.INT), + NTPNodeSetting("blur_pre", ST.INT), + NTPNodeSetting("clip_black", ST.FLOAT), + NTPNodeSetting("clip_white", ST.FLOAT), + NTPNodeSetting("despill_balance", ST.FLOAT), + NTPNodeSetting("despill_factor", ST.FLOAT), + NTPNodeSetting("dilate_distance", ST.INT), + NTPNodeSetting("edge_kernel_radius", ST.INT), + NTPNodeSetting("edge_kernel_tolerance", ST.FLOAT), + NTPNodeSetting("feather_distance", ST.INT), + NTPNodeSetting("feather_falloff", ST.ENUM), + NTPNodeSetting("screen_balance", ST.FLOAT), + ], + + 'CompositorNodeKeyingScreen' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("smoothness", ST.FLOAT, min_version=(4, 1, 0)), + NTPNodeSetting("tracking_object", ST.STRING), + ], + + 'CompositorNodeKuwahara' : [ + NTPNodeSetting("eccentricity", ST.FLOAT, min_version=(4, 0, 0)), + NTPNodeSetting("sharpness", ST.FLOAT, min_version=(4, 0, 0)), + NTPNodeSetting("size", ST.INT, min_version=(4, 0, 0), max_version=(4, 1, 0)), + NTPNodeSetting("uniformity", ST.INT, min_version=(4, 0, 0)), + NTPNodeSetting("use_high_precision", ST.BOOL, min_version=(4, 1, 0)), + NTPNodeSetting("variation", ST.ENUM, min_version=(4, 0, 0)), + ], + + 'CompositorNodeLensdist' : [ + NTPNodeSetting("use_fit", ST.BOOL), + NTPNodeSetting("use_jitter", ST.BOOL), + NTPNodeSetting("use_projector", ST.BOOL), + ], + + 'CompositorNodeLevels' : [ + NTPNodeSetting("channel", ST.ENUM), + ], + + 'CompositorNodeLumaMatte' : [ + NTPNodeSetting("limit_max", ST.FLOAT), + NTPNodeSetting("limit_min", ST.FLOAT), + ], + + 'CompositorNodeMapRange' : [ + NTPNodeSetting("use_clamp", ST.BOOL), + ], + + 'CompositorNodeMapUV' : [ + NTPNodeSetting("alpha", ST.INT), + NTPNodeSetting("filter_type", ST.ENUM, min_version=(4, 1, 0)), + ], + + 'CompositorNodeMapValue' : [ + NTPNodeSetting("max", ST.VEC1), + NTPNodeSetting("min", ST.VEC1), + NTPNodeSetting("offset", ST.VEC1), + NTPNodeSetting("size", ST.VEC1), + NTPNodeSetting("use_max", ST.BOOL), + NTPNodeSetting("use_min", ST.BOOL), + ], + + 'CompositorNodeMask' : [ + NTPNodeSetting("mask", ST.MASK), + NTPNodeSetting("motion_blur_samples", ST.INT), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("size_source", ST.ENUM), + NTPNodeSetting("size_x", ST.INT), + NTPNodeSetting("size_y", ST.INT), + NTPNodeSetting("use_feather", ST.BOOL), + NTPNodeSetting("use_motion_blur", ST.BOOL), + ], + + 'CompositorNodeMath' : [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("use_clamp", ST.BOOL), + ], + + 'CompositorNodeMixRGB' : [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL), + ], + + 'CompositorNodeMovieClip' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + ], + + 'CompositorNodeMovieDistortion' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("distortion_type", ST.ENUM), + ], + + 'CompositorNodeNormal' : [], + + 'CompositorNodeNormalize' : [], + + 'CompositorNodeOutputFile' : [ + NTPNodeSetting("active_input_index", ST.INT), + NTPNodeSetting("base_path", ST.STRING), + NTPNodeSetting("file_slots", ST.FILE_SLOTS), + NTPNodeSetting("format", ST.IMAGE_FORMAT_SETTINGS), + NTPNodeSetting("layer_slots", ST.LAYER_SLOTS), + ], + + 'CompositorNodePixelate' : [ + NTPNodeSetting("pixel_size", ST.INT, min_version=(4, 1, 0)), + ], + + 'CompositorNodePlaneTrackDeform' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("motion_blur_samples", ST.INT), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("plane_track_name", ST.STRING), + NTPNodeSetting("tracking_object", ST.STRING), + NTPNodeSetting("use_motion_blur", ST.BOOL), + ], + + 'CompositorNodePosterize' : [], + + 'CompositorNodePremulKey' : [ + NTPNodeSetting("mapping", ST.ENUM), + ], + + 'CompositorNodeRGB' : [], + + 'CompositorNodeRGBToBW' : [], + + 'CompositorNodeRLayers' : [ + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("scene", ST.SCENE), + ], + + 'CompositorNodeRotate' : [ + NTPNodeSetting("filter_type", ST.ENUM), + ], + + 'CompositorNodeScale' : [ + NTPNodeSetting("frame_method", ST.ENUM), + NTPNodeSetting("offset_x", ST.FLOAT), + NTPNodeSetting("offset_y", ST.FLOAT), + NTPNodeSetting("space", ST.ENUM), + ], + + 'CompositorNodeSceneTime' : [], + + 'CompositorNodeSepHSVA' : [], + + 'CompositorNodeSepRGBA' : [], + + 'CompositorNodeSepYCCA' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'CompositorNodeSepYUVA' : [], + + 'CompositorNodeSeparateColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), + NTPNodeSetting("ycc_mode", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'CompositorNodeSeparateXYZ' : [], + + 'CompositorNodeSetAlpha' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'CompositorNodeSplit' : [ + NTPNodeSetting("axis", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("factor", ST.INT, min_version=(4, 1, 0)), + ], + + 'CompositorNodeSplitViewer' : [ + NTPNodeSetting("axis", ST.ENUM, max_version=(4, 1, 0)), + NTPNodeSetting("factor", ST.INT, max_version=(4, 1, 0)), + ], + + 'CompositorNodeStabilize' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("filter_type", ST.ENUM), + NTPNodeSetting("invert", ST.BOOL), + ], + + 'CompositorNodeSunBeams' : [ + NTPNodeSetting("ray_length", ST.FLOAT), + NTPNodeSetting("source", ST.VEC2), + ], + + 'CompositorNodeSwitch' : [ + NTPNodeSetting("check", ST.BOOL), + ], + + 'CompositorNodeSwitchView' : [], + + 'CompositorNodeTexture' : [ + NTPNodeSetting("node_output", ST.INT), + NTPNodeSetting("texture", ST.TEXTURE), + ], + + 'CompositorNodeTime' : [ + NTPNodeSetting("curve", ST.CURVE_MAPPING), + NTPNodeSetting("frame_end", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + ], + + 'CompositorNodeTonemap' : [ + NTPNodeSetting("adaptation", ST.FLOAT), + NTPNodeSetting("contrast", ST.FLOAT), + NTPNodeSetting("correction", ST.FLOAT), + NTPNodeSetting("gamma", ST.FLOAT), + NTPNodeSetting("intensity", ST.FLOAT), + NTPNodeSetting("key", ST.FLOAT), + NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("tonemap_type", ST.ENUM), + ], + + 'CompositorNodeTrackPos' : [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("frame_relative", ST.INT), + NTPNodeSetting("position", ST.ENUM), + NTPNodeSetting("track_name", ST.STRING), + NTPNodeSetting("tracking_object", ST.STRING), + ], + + 'CompositorNodeTransform' : [ + NTPNodeSetting("filter_type", ST.ENUM), + ], + + 'CompositorNodeTranslate' : [ + NTPNodeSetting("use_relative", ST.BOOL), + NTPNodeSetting("wrap_axis", ST.ENUM), + ], + + 'CompositorNodeValToRGB' : [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP), + ], + + 'CompositorNodeValue' : [], + + 'CompositorNodeVecBlur' : [ + NTPNodeSetting("factor", ST.FLOAT), + NTPNodeSetting("samples", ST.INT), + NTPNodeSetting("speed_max", ST.INT), + NTPNodeSetting("speed_min", ST.INT), + NTPNodeSetting("use_curved", ST.BOOL), + ], + + 'CompositorNodeViewer' : [ + NTPNodeSetting("center_x", ST.FLOAT), + NTPNodeSetting("center_y", ST.FLOAT), + NTPNodeSetting("tile_order", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + ], + + 'CompositorNodeZcombine' : [ + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_antialias_z", ST.BOOL), + ], + + 'FunctionNodeAlignEulerToVector' : [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("pivot_axis", ST.ENUM), + ], + + 'FunctionNodeAxisAngleToRotation' : [], + + 'FunctionNodeBooleanMath' : [ + NTPNodeSetting("operation", ST.ENUM), + ], + + 'FunctionNodeCombineColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'FunctionNodeCompare' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("operation", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'FunctionNodeCompareFloats' : [ + NTPNodeSetting("operation", ST.ENUM, max_version=(3, 1, 0)), + ], + + 'FunctionNodeEulerToRotation' : [], + + 'FunctionNodeFloatToInt' : [ + NTPNodeSetting("rounding_mode", ST.ENUM), + ], + + 'FunctionNodeInputBool' : [ + NTPNodeSetting("boolean", ST.BOOL), + ], + + 'FunctionNodeInputColor' : [ + NTPNodeSetting("color", ST.VEC4), + ], + + 'FunctionNodeInputInt' : [ + NTPNodeSetting("integer", ST.INT), + ], + + 'FunctionNodeInputSpecialCharacters' : [], + + 'FunctionNodeInputString' : [ + NTPNodeSetting("string", ST.STRING), + ], + + 'FunctionNodeInputVector' : [ + NTPNodeSetting("vector", ST.VEC3), + ], + + 'FunctionNodeInvertRotation' : [], + + 'FunctionNodeLegacyRandomFloat' : [], + + 'FunctionNodeQuaternionToRotation' : [], + + 'FunctionNodeRandomValue' : [ + NTPNodeSetting("data_type", ST.ENUM), + ], + + 'FunctionNodeReplaceString' : [], + + 'FunctionNodeRotateEuler' : [ + NTPNodeSetting("rotation_type", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("type", ST.ENUM, max_version=(4, 1, 0)), + ], + + 'FunctionNodeRotateRotation' : [ + NTPNodeSetting("rotation_space", ST.ENUM, min_version=(4, 1, 0)), + ], + + 'FunctionNodeRotateVector' : [], + + 'FunctionNodeRotationToAxisAngle' : [], + + 'FunctionNodeRotationToEuler' : [], + + 'FunctionNodeRotationToQuaternion' : [], + + 'FunctionNodeSeparateColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'FunctionNodeSliceString' : [], + + 'FunctionNodeStringLength' : [], + + 'FunctionNodeValueToString' : [], + + 'GeometryNodeAccumulateField' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'GeometryNodeAttributeDomainSize' : [ + NTPNodeSetting("component", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'GeometryNodeAttributeRemove' : [], + + 'GeometryNodeAttributeStatistic' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + + 'GeometryNodeAttributeTransfer' : [ + NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 4, 0)), + NTPNodeSetting("domain", ST.ENUM, max_version=(3, 4, 0)), + NTPNodeSetting("mapping", ST.ENUM, max_version=(3, 4, 0)), + ], + + 'GeometryNodeBake' : [ + NTPNodeSetting("active_index", ST.INT, min_version=(4, 1, 0)), + NTPNodeSetting("bake_items", ST.BAKE_ITEMS, min_version=(4, 1, 0)), + ], + + 'GeometryNodeBlurAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 5, 0)), + ], + + 'GeometryNodeBoundBox' : [], + + 'GeometryNodeCaptureAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + + 'GeometryNodeCollectionInfo' : [ + NTPNodeSetting("transform_space", ST.ENUM), + ], + + 'GeometryNodeConvexHull' : [], + + 'GeometryNodeCornersOfEdge' : [], + + 'GeometryNodeCornersOfFace' : [], + + 'GeometryNodeCornersOfVertex' : [], + + 'GeometryNodeCurveArc' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'GeometryNodeCurveEndpointSelection' : [], + + 'GeometryNodeCurveHandleTypeSelection' : [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET), + ], + + 'GeometryNodeCurveLength' : [], + + 'GeometryNodeCurveOfPoint' : [], + + 'GeometryNodeCurveParameter' : [], + + 'GeometryNodeCurvePrimitiveBezierSegment' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeCurvePrimitiveCircle' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeCurvePrimitiveLine' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeCurvePrimitiveQuadrilateral' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeCurveQuadraticBezier' : [], + + 'GeometryNodeCurveSetHandles' : [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET), + ], + + 'GeometryNodeCurveSpiral' : [], + + 'GeometryNodeCurveSplineType' : [ + NTPNodeSetting("spline_type", ST.ENUM), + ], + + 'GeometryNodeCurveStar' : [], + + 'GeometryNodeCurveToMesh' : [], + + 'GeometryNodeCurveToPoints' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeCustomGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ], + + 'GeometryNodeDeformCurvesOnSurface' : [], + + 'GeometryNodeDeleteGeometry' : [ + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeDistributePointsInVolume' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'GeometryNodeDistributePointsOnFaces' : [ + NTPNodeSetting("distribute_method", ST.ENUM), + NTPNodeSetting("use_legacy_normal", ST.BOOL, min_version=(3, 5, 0)), + ], + + 'GeometryNodeDualMesh' : [], + + 'GeometryNodeDuplicateElements' : [ + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 2, 0)), + ], + + 'GeometryNodeEdgePathsToCurves' : [], + + 'GeometryNodeEdgePathsToSelection' : [], + + 'GeometryNodeEdgesOfCorner' : [], + + 'GeometryNodeEdgesOfVertex' : [], + + 'GeometryNodeEdgesToFaceGroups' : [], + + 'GeometryNodeExtrudeMesh' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'GeometryNodeFaceOfCorner' : [], + + 'GeometryNodeFieldAtIndex' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'GeometryNodeFieldOnDomain' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 3, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'GeometryNodeFillCurve' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeFilletCurve' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeFlipFaces' : [], + + 'GeometryNodeGeometryToInstance' : [], + + 'GeometryNodeGetNamedGrid' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), + ], + + 'GeometryNodeGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ], + + 'GeometryNodeImageInfo' : [], + + 'GeometryNodeImageTexture' : [ + NTPNodeSetting("extension", ST.ENUM), + NTPNodeSetting("interpolation", ST.ENUM), + ], + + 'GeometryNodeIndexOfNearest' : [], + + 'GeometryNodeIndexSwitch' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("index_switch_items", ST.INDEX_SWITCH_ITEMS, min_version=(4, 1, 0)), + ], + + 'GeometryNodeInputActiveCamera' : [], + + 'GeometryNodeInputCurveHandlePositions' : [], + + 'GeometryNodeInputCurveTilt' : [], + + 'GeometryNodeInputEdgeSmooth' : [], + + 'GeometryNodeInputID' : [], + + 'GeometryNodeInputImage' : [ + NTPNodeSetting("image", ST.IMAGE, min_version=(3, 5, 0)), + ], + + 'GeometryNodeInputIndex' : [], + + 'GeometryNodeInputInstanceRotation' : [], + + 'GeometryNodeInputInstanceScale' : [], + + 'GeometryNodeInputMaterial' : [ + NTPNodeSetting("material", ST.MATERIAL), + ], + + 'GeometryNodeInputMaterialIndex' : [], + + 'GeometryNodeInputMeshEdgeAngle' : [], + + 'GeometryNodeInputMeshEdgeNeighbors' : [], + + 'GeometryNodeInputMeshEdgeVertices' : [], + + 'GeometryNodeInputMeshFaceArea' : [], + + 'GeometryNodeInputMeshFaceIsPlanar' : [], + + 'GeometryNodeInputMeshFaceNeighbors' : [], + + 'GeometryNodeInputMeshIsland' : [], + + 'GeometryNodeInputMeshVertexNeighbors' : [], + + 'GeometryNodeInputNamedAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 2, 0)), + ], + + 'GeometryNodeInputNamedLayerSelection' : [], + + 'GeometryNodeInputNormal' : [], + + 'GeometryNodeInputPosition' : [], + + 'GeometryNodeInputRadius' : [], + + 'GeometryNodeInputSceneTime' : [], + + 'GeometryNodeInputShadeSmooth' : [], + + 'GeometryNodeInputShortestEdgePaths' : [], + + 'GeometryNodeInputSignedDistance' : [], + + 'GeometryNodeInputSplineCyclic' : [], + + 'GeometryNodeInputSplineResolution' : [], + + 'GeometryNodeInputTangent' : [], + + 'GeometryNodeInstanceOnPoints' : [], + + 'GeometryNodeInstancesToPoints' : [], + + 'GeometryNodeInterpolateCurves' : [], + + 'GeometryNodeIsViewport' : [], + + 'GeometryNodeJoinGeometry' : [], + + 'GeometryNodeLegacyAlignRotationToVector' : [ + NTPNodeSetting("axis", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_factor", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_vector", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("pivot_axis", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeClamp' : [ + NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeColorRamp' : [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeCombineXYZ' : [ + NTPNodeSetting("input_type_x", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_y", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_z", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeCompare' : [ + NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeConvert' : [ + NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("domain", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeCurveMap' : [ + NTPNodeSetting("curve_rgb", ST.CURVE_MAPPING, max_version=(3, 2, 0)), + NTPNodeSetting("curve_vec", ST.CURVE_MAPPING, max_version=(3, 2, 0)), + NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeFill' : [ + NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("domain", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeMapRange' : [ + NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("interpolation_type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeMath' : [ + NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_c", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeMix' : [ + NTPNodeSetting("blend_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_factor", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeProximity' : [ + NTPNodeSetting("target_geometry_element", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeRandomize' : [ + NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeSampleTexture' : [], + + 'GeometryNodeLegacyAttributeSeparateXYZ' : [ + NTPNodeSetting("input_type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeTransfer' : [ + NTPNodeSetting("domain", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("mapping", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeVectorMath' : [ + NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_c", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyAttributeVectorRotate' : [ + NTPNodeSetting("input_type_angle", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_axis", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_center", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_rotation", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_vector", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("rotation_mode", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyCurveEndpoints' : [], + + 'GeometryNodeLegacyCurveReverse' : [], + + 'GeometryNodeLegacyCurveSelectHandles' : [ + NTPNodeSetting("handle_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("mode", ST.ENUM_SET, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyCurveSetHandles' : [ + NTPNodeSetting("handle_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("mode", ST.ENUM_SET, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyCurveSplineType' : [ + NTPNodeSetting("spline_type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyCurveSubdivide' : [ + NTPNodeSetting("cuts_type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyCurveToPoints' : [ + NTPNodeSetting("mode", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyDeleteGeometry' : [], + + 'GeometryNodeLegacyEdgeSplit' : [], + + 'GeometryNodeLegacyMaterialAssign' : [], + + 'GeometryNodeLegacyMeshToCurve' : [], + + 'GeometryNodeLegacyPointDistribute' : [ + NTPNodeSetting("distribute_method", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyPointInstance' : [ + NTPNodeSetting("instance_type", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("use_whole_collection", ST.BOOL, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyPointScale' : [ + NTPNodeSetting("input_type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyPointSeparate' : [], + + 'GeometryNodeLegacyPointTranslate' : [ + NTPNodeSetting("input_type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyPointsToVolume' : [ + NTPNodeSetting("input_type_radius", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("resolution_mode", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyRaycast' : [ + NTPNodeSetting("input_type_ray_direction", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_ray_length", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("mapping", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyRotatePoints' : [ + NTPNodeSetting("input_type_angle", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_axis", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("input_type_rotation", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("space", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("type", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacySelectByMaterial' : [], + + 'GeometryNodeLegacySubdivisionSurface' : [ + NTPNodeSetting("boundary_smooth", ST.ENUM, max_version=(3, 2, 0)), + NTPNodeSetting("uv_smooth", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeLegacyVolumeToMesh' : [ + NTPNodeSetting("resolution_mode", ST.ENUM, max_version=(3, 2, 0)), + ], + + 'GeometryNodeMaterialSelection' : [], + + 'GeometryNodeMeanFilterSDFVolume' : [], + + 'GeometryNodeMenuSwitch' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("enum_definition", ST.ENUM_DEFINITION, min_version=(4, 1, 0)), + ], + + 'GeometryNodeMergeByDistance' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 2, 0)), + ], + + 'GeometryNodeMeshBoolean' : [ + NTPNodeSetting("operation", ST.ENUM), + ], + + 'GeometryNodeMeshCircle' : [ + NTPNodeSetting("fill_type", ST.ENUM), + ], + + 'GeometryNodeMeshCone' : [ + NTPNodeSetting("fill_type", ST.ENUM), + ], + + 'GeometryNodeMeshCube' : [], + + 'GeometryNodeMeshCylinder' : [ + NTPNodeSetting("fill_type", ST.ENUM), + ], + + 'GeometryNodeMeshFaceSetBoundaries' : [], + + 'GeometryNodeMeshGrid' : [], + + 'GeometryNodeMeshIcoSphere' : [], + + 'GeometryNodeMeshLine' : [ + NTPNodeSetting("count_mode", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeMeshToCurve' : [], + + 'GeometryNodeMeshToPoints' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeMeshToSDFVolume' : [ + NTPNodeSetting("resolution_mode", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), + ], + + 'GeometryNodeMeshToVolume' : [ + NTPNodeSetting("resolution_mode", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'GeometryNodeMeshUVSphere' : [], + + 'GeometryNodeObjectInfo' : [ + NTPNodeSetting("transform_space", ST.ENUM), + ], + + 'GeometryNodeOffsetCornerInFace' : [], + + 'GeometryNodeOffsetPointInCurve' : [], + + 'GeometryNodeOffsetSDFVolume' : [], + + 'GeometryNodePoints' : [], + + 'GeometryNodePointsOfCurve' : [], + + 'GeometryNodePointsToCurves' : [], + + 'GeometryNodePointsToSDFVolume' : [ + NTPNodeSetting("resolution_mode", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), + ], + + 'GeometryNodePointsToVertices' : [], + + 'GeometryNodePointsToVolume' : [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ], + + 'GeometryNodeProximity' : [ + NTPNodeSetting("target_element", ST.ENUM), + ], + + 'GeometryNodeRaycast' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("mapping", ST.ENUM), + ], + + 'GeometryNodeRealizeInstances' : [ + NTPNodeSetting("legacy_behavior", ST.BOOL, min_version=(3, 1, 0), max_version=(4, 0, 0)), + ], + + 'GeometryNodeRemoveAttribute' : [], + + 'GeometryNodeRepeatInput' : [], + + 'GeometryNodeRepeatOutput' : [ + NTPNodeSetting("active_index", ST.INT, min_version=(4, 0, 0)), + NTPNodeSetting("inspection_index", ST.INT, min_version=(4, 0, 0)), + NTPNodeSetting("repeat_items", ST.REPEAT_OUTPUT_ITEMS, min_version=(4, 0, 0)), + ], + + 'GeometryNodeReplaceMaterial' : [], + + 'GeometryNodeResampleCurve' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeReverseCurve' : [], + + 'GeometryNodeRotateInstances' : [], + + 'GeometryNodeSDFVolumeSphere' : [], + + 'GeometryNodeSampleCurve' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("use_all_curves", ST.BOOL, min_version=(3, 4, 0)), + ], + + 'GeometryNodeSampleIndex' : [ + NTPNodeSetting("clamp", ST.BOOL, min_version=(3, 4, 0)), + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'GeometryNodeSampleNearest' : [ + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'GeometryNodeSampleNearestSurface' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'GeometryNodeSampleUVSurface' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'GeometryNodeSampleVolume' : [ + NTPNodeSetting("grid_type", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), + NTPNodeSetting("interpolation_mode", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), + ], + + 'GeometryNodeScaleElements' : [ + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("scale_mode", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'GeometryNodeScaleInstances' : [], + + 'GeometryNodeSelfObject' : [], + + 'GeometryNodeSeparateComponents' : [], + + 'GeometryNodeSeparateGeometry' : [ + NTPNodeSetting("domain", ST.ENUM), + ], + + 'GeometryNodeSetCurveHandlePositions' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeSetCurveNormal' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'GeometryNodeSetCurveRadius' : [], + + 'GeometryNodeSetCurveTilt' : [], + + 'GeometryNodeSetID' : [], + + 'GeometryNodeSetMaterial' : [], + + 'GeometryNodeSetMaterialIndex' : [], + + 'GeometryNodeSetPointRadius' : [], + + 'GeometryNodeSetPosition' : [], + + 'GeometryNodeSetShadeSmooth' : [ + NTPNodeSetting("domain", ST.ENUM, min_version=(4, 0, 0)), + ], + + 'GeometryNodeSetSplineCyclic' : [], + + 'GeometryNodeSetSplineResolution' : [], + + 'GeometryNodeSimulationInput' : [], + + 'GeometryNodeSimulationOutput' : [ + NTPNodeSetting("active_index", ST.INT, min_version=(3, 6, 0)), + NTPNodeSetting("state_items", ST.SIM_OUTPUT_ITEMS, min_version=(3, 6, 0)), + ], + + 'GeometryNodeSortElements' : [ + NTPNodeSetting("domain", ST.ENUM, min_version=(4, 1, 0)), + ], + + 'GeometryNodeSplineLength' : [], + + 'GeometryNodeSplineParameter' : [], + + 'GeometryNodeSplitEdges' : [], + + 'GeometryNodeSplitToInstances' : [ + NTPNodeSetting("domain", ST.ENUM, min_version=(4, 1, 0)), + ], + + 'GeometryNodeStoreNamedAttribute' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 2, 0)), + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 2, 0)), + ], + + 'GeometryNodeStoreNamedGrid' : [ + NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), + ], + + 'GeometryNodeStringJoin' : [], + + 'GeometryNodeStringToCurves' : [ + NTPNodeSetting("align_x", ST.ENUM), + NTPNodeSetting("align_y", ST.ENUM), + NTPNodeSetting("font", ST.FONT), + NTPNodeSetting("overflow", ST.ENUM), + NTPNodeSetting("pivot_mode", ST.ENUM, min_version=(3, 1, 0)), + ], + + 'GeometryNodeSubdivideCurve' : [], + + 'GeometryNodeSubdivideMesh' : [], + + 'GeometryNodeSubdivisionSurface' : [ + NTPNodeSetting("boundary_smooth", ST.ENUM), + NTPNodeSetting("uv_smooth", ST.ENUM), + ], + + 'GeometryNodeSwitch' : [ + NTPNodeSetting("input_type", ST.ENUM), + ], + + 'GeometryNodeTool3DCursor' : [], + + 'GeometryNodeToolFaceSet' : [], + + 'GeometryNodeToolSelection' : [], + + 'GeometryNodeToolSetFaceSet' : [], + + 'GeometryNodeToolSetSelection' : [ + NTPNodeSetting("domain", ST.ENUM, min_version=(4, 0, 0)), + ], + + 'GeometryNodeTransform' : [], + + 'GeometryNodeTranslateInstances' : [], + + 'GeometryNodeTriangulate' : [ + NTPNodeSetting("ngon_method", ST.ENUM), + NTPNodeSetting("quad_method", ST.ENUM), + ], + + 'GeometryNodeTrimCurve' : [ + NTPNodeSetting("mode", ST.ENUM), + ], + + 'GeometryNodeUVPackIslands' : [], + + 'GeometryNodeUVUnwrap' : [ + NTPNodeSetting("method", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'GeometryNodeVertexOfCorner' : [], + + 'GeometryNodeViewer' : [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'GeometryNodeVolumeCube' : [], + + 'GeometryNodeVolumeToMesh' : [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ], + + 'NodeFrame' : [ + NTPNodeSetting("label_size", ST.INT), + NTPNodeSetting("shrink", ST.BOOL), + NTPNodeSetting("text", ST.TEXT), + ], + + 'NodeGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ], + + 'NodeGroupInput' : [], + + 'NodeGroupOutput' : [ + NTPNodeSetting("is_active_output", ST.BOOL), + ], + + 'NodeReroute' : [], + + 'ShaderNodeAddShader' : [], + + 'ShaderNodeAmbientOcclusion' : [ + NTPNodeSetting("inside", ST.BOOL), + NTPNodeSetting("only_local", ST.BOOL), + NTPNodeSetting("samples", ST.INT), + ], + + 'ShaderNodeAttribute' : [ + NTPNodeSetting("attribute_name", ST.STRING), + NTPNodeSetting("attribute_type", ST.ENUM), + ], + + 'ShaderNodeBackground' : [], + + 'ShaderNodeBevel' : [ + NTPNodeSetting("samples", ST.INT), + ], + + 'ShaderNodeBlackbody' : [], + + 'ShaderNodeBrightContrast' : [], + + 'ShaderNodeBsdfAnisotropic' : [ + NTPNodeSetting("distribution", ST.ENUM), + ], + + 'ShaderNodeBsdfDiffuse' : [], + + 'ShaderNodeBsdfGlass' : [ + NTPNodeSetting("distribution", ST.ENUM), + ], + + 'ShaderNodeBsdfGlossy' : [ + NTPNodeSetting("distribution", ST.ENUM, max_version=(4, 0, 0)), + ], + + 'ShaderNodeBsdfHair' : [ + NTPNodeSetting("component", ST.ENUM), + ], + + 'ShaderNodeBsdfHairPrincipled' : [ + NTPNodeSetting("model", ST.ENUM, min_version=(4, 0, 0)), + NTPNodeSetting("parametrization", ST.ENUM), + ], + + 'ShaderNodeBsdfPrincipled' : [ + NTPNodeSetting("distribution", ST.ENUM), + NTPNodeSetting("subsurface_method", ST.ENUM), + ], + + 'ShaderNodeBsdfRefraction' : [ + NTPNodeSetting("distribution", ST.ENUM), + ], + + 'ShaderNodeBsdfSheen' : [ + NTPNodeSetting("distribution", ST.ENUM, min_version=(4, 0, 0)), + ], + + 'ShaderNodeBsdfToon' : [ + NTPNodeSetting("component", ST.ENUM), + ], + + 'ShaderNodeBsdfTranslucent' : [], + + 'ShaderNodeBsdfTransparent' : [], + + 'ShaderNodeBsdfVelvet' : [], + + 'ShaderNodeBump' : [ + NTPNodeSetting("invert", ST.BOOL), + ], + + 'ShaderNodeCameraData' : [], + + 'ShaderNodeClamp' : [ + NTPNodeSetting("clamp_type", ST.ENUM), + ], + + 'ShaderNodeCombineColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'ShaderNodeCombineHSV' : [], + + 'ShaderNodeCombineRGB' : [], + + 'ShaderNodeCombineXYZ' : [], + + 'ShaderNodeCustomGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ], + + 'ShaderNodeDisplacement' : [ + NTPNodeSetting("space", ST.ENUM), + ], + + 'ShaderNodeEeveeSpecular' : [], + + 'ShaderNodeEmission' : [], + + 'ShaderNodeFloatCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ], + + 'ShaderNodeFresnel' : [], + + 'ShaderNodeGamma' : [], + + 'ShaderNodeGroup' : [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ], + + 'ShaderNodeHairInfo' : [], + + 'ShaderNodeHoldout' : [], + + 'ShaderNodeHueSaturation' : [], + + 'ShaderNodeInvert' : [], + + 'ShaderNodeLayerWeight' : [], + + 'ShaderNodeLightFalloff' : [], + + 'ShaderNodeLightPath' : [], + + 'ShaderNodeMapRange' : [ + NTPNodeSetting("clamp", ST.BOOL), + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), + NTPNodeSetting("interpolation_type", ST.ENUM), + ], + + 'ShaderNodeMapping' : [ + NTPNodeSetting("vector_type", ST.ENUM), + ], + + 'ShaderNodeMath' : [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("use_clamp", ST.BOOL), + ], + + 'ShaderNodeMix' : [ + NTPNodeSetting("blend_type", ST.ENUM, min_version=(3, 4, 0)), + NTPNodeSetting("clamp_factor", ST.BOOL, min_version=(3, 4, 0)), + NTPNodeSetting("clamp_result", ST.BOOL, min_version=(3, 4, 0)), + NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), + NTPNodeSetting("factor_mode", ST.ENUM, min_version=(3, 4, 0)), + ], + + 'ShaderNodeMixRGB' : [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL), + ], + + 'ShaderNodeMixShader' : [], + + 'ShaderNodeNewGeometry' : [], + + 'ShaderNodeNormal' : [], + + 'ShaderNodeNormalMap' : [ + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("uv_map", ST.STRING), + ], + + 'ShaderNodeObjectInfo' : [], + + 'ShaderNodeOutputAOV' : [ + NTPNodeSetting("name", ST.STRING), + ], + + 'ShaderNodeOutputLight' : [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + ], + + 'ShaderNodeOutputLineStyle' : [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL), + ], + + 'ShaderNodeOutputMaterial' : [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + ], + + 'ShaderNodeOutputWorld' : [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + ], + + 'ShaderNodeParticleInfo' : [], + + 'ShaderNodePointInfo' : [], + + 'ShaderNodeRGB' : [], + + 'ShaderNodeRGBCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ], + + 'ShaderNodeRGBToBW' : [], + + 'ShaderNodeScript' : [ + NTPNodeSetting("bytecode", ST.STRING), + NTPNodeSetting("bytecode_hash", ST.STRING), + NTPNodeSetting("filepath", ST.STRING), + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("script", ST.TEXT), + NTPNodeSetting("use_auto_update", ST.BOOL), + ], + + 'ShaderNodeSeparateColor' : [ + NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), + ], + + 'ShaderNodeSeparateHSV' : [], + + 'ShaderNodeSeparateRGB' : [], + + 'ShaderNodeSeparateXYZ' : [], + + 'ShaderNodeShaderToRGB' : [], + + 'ShaderNodeSqueeze' : [], + + 'ShaderNodeSubsurfaceScattering' : [ + NTPNodeSetting("falloff", ST.ENUM), + ], + + 'ShaderNodeTangent' : [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("direction_type", ST.ENUM), + NTPNodeSetting("uv_map", ST.STRING), + ], + + 'ShaderNodeTexBrick' : [ + NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("offset_frequency", ST.INT), + NTPNodeSetting("squash", ST.FLOAT), + NTPNodeSetting("squash_frequency", ST.INT), + ], + + 'ShaderNodeTexChecker' : [], + + 'ShaderNodeTexCoord' : [ + NTPNodeSetting("from_instancer", ST.BOOL), + NTPNodeSetting("object", ST.OBJECT), + ], + + 'ShaderNodeTexEnvironment' : [ + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("image_user", ST.IMAGE_USER), + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("projection", ST.ENUM), + ], + + 'ShaderNodeTexGradient' : [ + NTPNodeSetting("gradient_type", ST.ENUM), + ], + + 'ShaderNodeTexIES' : [ + NTPNodeSetting("filepath", ST.STRING), + NTPNodeSetting("ies", ST.TEXT), + NTPNodeSetting("mode", ST.ENUM), + ], + + 'ShaderNodeTexImage' : [ + NTPNodeSetting("extension", ST.ENUM), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("image_user", ST.IMAGE_USER), + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("projection", ST.ENUM), + NTPNodeSetting("projection_blend", ST.FLOAT), + ], + + 'ShaderNodeTexMagic' : [ + NTPNodeSetting("turbulence_depth", ST.INT), + ], + + 'ShaderNodeTexMusgrave' : [ + NTPNodeSetting("musgrave_dimensions", ST.ENUM, max_version=(4, 1, 0)), + NTPNodeSetting("musgrave_type", ST.ENUM, max_version=(4, 1, 0)), + ], + + 'ShaderNodeTexNoise' : [ + NTPNodeSetting("noise_dimensions", ST.ENUM), + NTPNodeSetting("noise_type", ST.ENUM, min_version=(4, 1, 0)), + NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), + ], + + 'ShaderNodeTexPointDensity' : [ + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("object", ST.OBJECT), + NTPNodeSetting("particle_color_source", ST.ENUM), + NTPNodeSetting("particle_system", ST.PARTICLE_SYSTEM), + NTPNodeSetting("point_source", ST.ENUM), + NTPNodeSetting("radius", ST.FLOAT), + NTPNodeSetting("resolution", ST.INT), + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("vertex_attribute_name", ST.STRING), + NTPNodeSetting("vertex_color_source", ST.ENUM), + ], + + 'ShaderNodeTexSky' : [ + NTPNodeSetting("air_density", ST.FLOAT), + NTPNodeSetting("altitude", ST.FLOAT), + NTPNodeSetting("dust_density", ST.FLOAT), + NTPNodeSetting("ground_albedo", ST.FLOAT), + NTPNodeSetting("ozone_density", ST.FLOAT), + NTPNodeSetting("sky_type", ST.ENUM), + NTPNodeSetting("sun_direction", ST.VEC3), + NTPNodeSetting("sun_disc", ST.BOOL), + NTPNodeSetting("sun_elevation", ST.FLOAT), + NTPNodeSetting("sun_intensity", ST.FLOAT), + NTPNodeSetting("sun_rotation", ST.FLOAT), + NTPNodeSetting("sun_size", ST.FLOAT), + NTPNodeSetting("turbidity", ST.FLOAT), + ], + + 'ShaderNodeTexVoronoi' : [ + NTPNodeSetting("distance", ST.ENUM), + NTPNodeSetting("feature", ST.ENUM), + NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), + NTPNodeSetting("voronoi_dimensions", ST.ENUM), + ], + + 'ShaderNodeTexWave' : [ + NTPNodeSetting("bands_direction", ST.ENUM), + NTPNodeSetting("rings_direction", ST.ENUM), + NTPNodeSetting("wave_profile", ST.ENUM), + NTPNodeSetting("wave_type", ST.ENUM), + ], + + 'ShaderNodeTexWhiteNoise' : [ + NTPNodeSetting("noise_dimensions", ST.ENUM), + ], + + 'ShaderNodeUVAlongStroke' : [ + NTPNodeSetting("use_tips", ST.BOOL), + ], + + 'ShaderNodeUVMap' : [ + NTPNodeSetting("from_instancer", ST.BOOL), + NTPNodeSetting("uv_map", ST.STRING), + ], + + 'ShaderNodeValToRGB' : [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP), + ], + + 'ShaderNodeValue' : [], + + 'ShaderNodeVectorCurve' : [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ], + + 'ShaderNodeVectorDisplacement' : [ + NTPNodeSetting("space", ST.ENUM), + ], + + 'ShaderNodeVectorMath' : [ + NTPNodeSetting("operation", ST.ENUM), + ], + + 'ShaderNodeVectorRotate' : [ + NTPNodeSetting("invert", ST.BOOL), + NTPNodeSetting("rotation_type", ST.ENUM), + ], + + 'ShaderNodeVectorTransform' : [ + NTPNodeSetting("convert_from", ST.ENUM), + NTPNodeSetting("convert_to", ST.ENUM), + NTPNodeSetting("vector_type", ST.ENUM), + ], + + 'ShaderNodeVertexColor' : [ + NTPNodeSetting("layer_name", ST.STRING), + ], + + 'ShaderNodeVolumeAbsorption' : [], + + 'ShaderNodeVolumeInfo' : [], + + 'ShaderNodeVolumePrincipled' : [], + + 'ShaderNodeVolumeScatter' : [], + + 'ShaderNodeWavelength' : [], + + 'ShaderNodeWireframe' : [ + NTPNodeSetting("use_pixel_size", ST.BOOL), + ], + +} \ No newline at end of file diff --git a/material/__init__.py b/shader/__init__.py similarity index 70% rename from material/__init__.py rename to shader/__init__.py index ceb3a04..1c6d5b3 100644 --- a/material/__init__.py +++ b/shader/__init__.py @@ -1,10 +1,8 @@ if "bpy" in locals(): import importlib - importlib.reload(node_settings) importlib.reload(operator) importlib.reload(ui) else: - from . import node_settings from . import operator from . import ui diff --git a/material/operator.py b/shader/operator.py similarity index 97% rename from material/operator.py rename to shader/operator.py index b2ebc86..7232fa8 100644 --- a/material/operator.py +++ b/shader/operator.py @@ -7,13 +7,13 @@ from ..utils import * from ..ntp_operator import NTP_Operator from ..ntp_node_tree import NTP_NodeTree -from .node_settings import shader_node_settings +from ..node_settings import node_settings MAT_VAR = "mat" NODE = "node" SHADER_OP_RESERVED_NAMES = {MAT_VAR, NODE} -class NTPMaterialOperator(NTP_Operator): +class NTPShaderOperator(NTP_Operator): bl_idname = "node.ntp_material" bl_label = "Material to Python" bl_options = {'REGISTER', 'UNDO'} @@ -23,7 +23,7 @@ class NTPMaterialOperator(NTP_Operator): def __init__(self): super().__init__() - self._settings = shader_node_settings + self._settings = node_settings for name in SHADER_OP_RESERVED_NAMES: self._used_vars[name] = 0 diff --git a/material/ui.py b/shader/ui.py similarity index 88% rename from material/ui.py rename to shader/ui.py index 1bf6181..04b62df 100644 --- a/material/ui.py +++ b/shader/ui.py @@ -1,9 +1,9 @@ import bpy from bpy.types import Panel from bpy.types import Menu -from .operator import NTPMaterialOperator +from .operator import NTPShaderOperator -class NTPMaterialPanel(Panel): +class NTPShaderPanel(Panel): bl_label = "Material to Python" bl_idname = "NODE_PT_mat_to_python" bl_space_type = 'NODE_EDITOR' @@ -31,7 +31,7 @@ def draw(self, context): row.operator_context = 'INVOKE_DEFAULT' row.menu("NODE_MT_ntp_material", text="Materials") -class NTPMaterialMenu(Menu): +class NTPShaderMenu(Menu): bl_idname = "NODE_MT_ntp_material" bl_label = "Select Material" @@ -44,6 +44,6 @@ def draw(self, context): layout.operator_context = 'INVOKE_DEFAULT' for mat in bpy.data.materials: if mat.node_tree: - op = layout.operator(NTPMaterialOperator.bl_idname, + op = layout.operator(NTPShaderOperator.bl_idname, text=mat.name) op.material_name = mat.name \ No newline at end of file From 5ed2b286e0ca86668b6d4733214e626db2e98fa5 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 1 Jun 2024 14:02:44 -0500 Subject: [PATCH 188/286] docs: update README --- docs/README.md | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/docs/README.md b/docs/README.md index e08d326..8aebeeb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.1 is supported for Blender 3.0 - 4.1 on Windows, macOS, and Linux. I generally try to update the add-on to handle new nodes around the beta release of each update. +NodeToPython v3.1 is supported for Blender 3.0 - 4.1 on Windows, macOS, and Linux. ## Installation 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) @@ -37,35 +37,12 @@ Select the node group you want code for, and you'll be prompted with a **Script* * **Add-on** mode generates a zip file for you in the save directory specified in the NodeToPython menu. From here, you can install it like a regular add-on. The generated add-on comes complete with operator registration and creating a modifier/material for the node tree to be used in. * The current default operator install location is in the Object menu -## Future Plans -* Investigate drivers and keyframes -* A better default operator install location for generated add-ons -* A development repository with useful scripts and tests -* Better handling of more setting types, including - * Image sequences - * Movie clips - * Materials - * Objects - * Textures - * Text objects - * Scenes - * Particle systems - * Fonts - * Masks - * Cryptomatte entries - * Image format settings - * File slots - * Layer slots -* Automatic detection of the minimum/maximum version of Blender compatible with a generated add-on -* Autoformatting of generated code - ## Bug Reports and Suggestions When submitting an issue, please include * Your version of Blender * Your operating system -* A short description of what you were trying to accomplish, or steps to reproduce the issue. -* Sample blend files are more than welcome! +* Steps to reproduce the issue or a description of what you were trying to accomplish. Providing a test blend file is especially helpful -Got suggestions? Create an issue, happy to hear what features people want. +Got suggestions? Please create an [issue](https://github.com/BrendanParmer/NodeToPython/issues)! I'm happy to hear what features people want From 4e227e016e238e853d35f9db203171c17abefc40 Mon Sep 17 00:00:00 2001 From: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 1 Jun 2024 15:08:06 -0500 Subject: [PATCH 189/286] misc: update license years --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 73fbeb0..403ede7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Brendan Parmer +Copyright (c) 2022-2024 Brendan Parmer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 07d0542c2ad09441556095fa88c99daee2b09d1e Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:09:41 -0500 Subject: [PATCH 190/286] feat: updated settings, new format --- __init__.py | 2 +- compositor/operator.py | 7 +- geometry/operator.py | 2 +- node_settings.py | 5043 +++++++++++++++++++++++++--------------- ntp_operator.py | 55 +- shader/operator.py | 2 +- utils.py | 56 - 7 files changed, 3219 insertions(+), 1948 deletions(-) diff --git a/__init__.py b/__init__.py index 85f6a72..5a2fd62 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 1, 0), + "version": (3, 2, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/compositor/operator.py b/compositor/operator.py index 91f9adf..268799b 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -5,6 +5,7 @@ from ..ntp_operator import NTP_Operator, INDEX from ..ntp_node_tree import NTP_NodeTree from ..utils import * +from ..node_settings import NTPNodeSetting, ST from io import StringIO from ..node_settings import node_settings @@ -33,7 +34,7 @@ class NTPCompositorOperator(NTP_Operator): def __init__(self): super().__init__() - self._settings = node_settings + self._node_infos = node_settings for name in COMP_OP_RESERVED_NAMES: self._used_vars[name] = 0 @@ -86,7 +87,7 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): if not hasattr(ntp_nt.node_tree, enum): continue setting = getattr(ntp_nt.node_tree, enum) - if setting is not None and setting is not "": + if setting != None and setting != "": py_str = enum_to_py_str(setting) self._write(f"{ntp_nt.var}.{enum} = {py_str}") @@ -119,7 +120,7 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance NTPNodeSetting("power", ST.COLOR), NTPNodeSetting("slope", ST.COLOR)] - self._settings['CompositorNodeColorBalance'] = lst + self._node_infos['CompositorNodeColorBalance'].attributes_ = lst def _process_node(self, node: Node, ntp_nt: NTP_NodeTree): """ diff --git a/geometry/operator.py b/geometry/operator.py index b359bf5..d50ac7a 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -33,7 +33,7 @@ class NTPGeoNodesOperator(NTP_Operator): def __init__(self): super().__init__() - self._settings = node_settings + self._node_infos = node_settings for name in GEO_OP_RESERVED_NAMES: self._used_vars[name] = 0 diff --git a/node_settings.py b/node_settings.py index 6aeff5e..b771df0 100644 --- a/node_settings.py +++ b/node_settings.py @@ -1,1863 +1,3184 @@ -from .utils import ST, NTPNodeSetting - -node_settings : dict[str, list[NTPNodeSetting]] = { - 'CompositorNodeAlphaOver' : [ - NTPNodeSetting("premul", ST.FLOAT), - NTPNodeSetting("use_premultiply", ST.BOOL), - ], - - 'CompositorNodeAntiAliasing' : [ - NTPNodeSetting("contrast_limit", ST.FLOAT), - NTPNodeSetting("corner_rounding", ST.FLOAT), - NTPNodeSetting("threshold", ST.FLOAT), - ], - - 'CompositorNodeBilateralblur' : [ - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("sigma_color", ST.FLOAT), - NTPNodeSetting("sigma_space", ST.FLOAT), - ], - - 'CompositorNodeBlur' : [ - NTPNodeSetting("aspect_correction", ST.ENUM), - NTPNodeSetting("factor", ST.FLOAT), - NTPNodeSetting("factor_x", ST.FLOAT), - NTPNodeSetting("factor_y", ST.FLOAT), - NTPNodeSetting("filter_type", ST.ENUM), - NTPNodeSetting("size_x", ST.INT), - NTPNodeSetting("size_y", ST.INT), - NTPNodeSetting("use_bokeh", ST.BOOL), - NTPNodeSetting("use_extended_bounds", ST.BOOL), - NTPNodeSetting("use_gamma_correction", ST.BOOL), - NTPNodeSetting("use_relative", ST.BOOL), - NTPNodeSetting("use_variable_size", ST.BOOL), - ], - - 'CompositorNodeBokehBlur' : [ - NTPNodeSetting("blur_max", ST.FLOAT), - NTPNodeSetting("use_extended_bounds", ST.BOOL), - NTPNodeSetting("use_variable_size", ST.BOOL), - ], - - 'CompositorNodeBokehImage' : [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("catadioptric", ST.FLOAT), - NTPNodeSetting("flaps", ST.INT), - NTPNodeSetting("rounding", ST.FLOAT), - NTPNodeSetting("shift", ST.FLOAT), - ], - - 'CompositorNodeBoxMask' : [ - NTPNodeSetting("height", ST.FLOAT), - NTPNodeSetting("mask_type", ST.ENUM), - NTPNodeSetting("rotation", ST.FLOAT), - NTPNodeSetting("width", ST.FLOAT), - NTPNodeSetting("x", ST.FLOAT), - NTPNodeSetting("y", ST.FLOAT), - ], - - 'CompositorNodeBrightContrast' : [ - NTPNodeSetting("use_premultiply", ST.BOOL), - ], - - 'CompositorNodeChannelMatte' : [ - NTPNodeSetting("color_space", ST.ENUM), - NTPNodeSetting("limit_channel", ST.ENUM), - NTPNodeSetting("limit_max", ST.FLOAT), - NTPNodeSetting("limit_method", ST.ENUM), - NTPNodeSetting("limit_min", ST.FLOAT), - NTPNodeSetting("matte_channel", ST.ENUM), - ], - - 'CompositorNodeChromaMatte' : [ - NTPNodeSetting("gain", ST.FLOAT), - NTPNodeSetting("lift", ST.FLOAT), - NTPNodeSetting("shadow_adjust", ST.FLOAT), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT), - ], - - 'CompositorNodeColorBalance' : [ - NTPNodeSetting("correction_method", ST.ENUM), - NTPNodeSetting("gain", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("gain", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("gamma", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("gamma", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("lift", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("lift", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("offset", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("offset", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("offset_basis", ST.FLOAT), - NTPNodeSetting("power", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("power", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("slope", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("slope", ST.VEC3, max_version=(3, 5, 0)), - ], - - 'CompositorNodeColorCorrection' : [ - NTPNodeSetting("blue", ST.BOOL), - NTPNodeSetting("green", ST.BOOL), - NTPNodeSetting("highlights_contrast", ST.FLOAT), - NTPNodeSetting("highlights_gain", ST.FLOAT), - NTPNodeSetting("highlights_gamma", ST.FLOAT), - NTPNodeSetting("highlights_lift", ST.FLOAT), - NTPNodeSetting("highlights_saturation", ST.FLOAT), - NTPNodeSetting("master_contrast", ST.FLOAT), - NTPNodeSetting("master_gain", ST.FLOAT), - NTPNodeSetting("master_gamma", ST.FLOAT), - NTPNodeSetting("master_lift", ST.FLOAT), - NTPNodeSetting("master_saturation", ST.FLOAT), - NTPNodeSetting("midtones_contrast", ST.FLOAT), - NTPNodeSetting("midtones_end", ST.FLOAT), - NTPNodeSetting("midtones_gain", ST.FLOAT), - NTPNodeSetting("midtones_gamma", ST.FLOAT), - NTPNodeSetting("midtones_lift", ST.FLOAT), - NTPNodeSetting("midtones_saturation", ST.FLOAT), - NTPNodeSetting("midtones_start", ST.FLOAT), - NTPNodeSetting("red", ST.BOOL), - NTPNodeSetting("shadows_contrast", ST.FLOAT), - NTPNodeSetting("shadows_gain", ST.FLOAT), - NTPNodeSetting("shadows_gamma", ST.FLOAT), - NTPNodeSetting("shadows_lift", ST.FLOAT), - NTPNodeSetting("shadows_saturation", ST.FLOAT), - ], - - 'CompositorNodeColorMatte' : [ - NTPNodeSetting("color_hue", ST.FLOAT), - NTPNodeSetting("color_saturation", ST.FLOAT), - NTPNodeSetting("color_value", ST.FLOAT), - ], - - 'CompositorNodeColorSpill' : [ - NTPNodeSetting("channel", ST.ENUM), - NTPNodeSetting("limit_channel", ST.ENUM), - NTPNodeSetting("limit_method", ST.ENUM), - NTPNodeSetting("ratio", ST.FLOAT), - NTPNodeSetting("unspill_blue", ST.FLOAT), - NTPNodeSetting("unspill_green", ST.FLOAT), - NTPNodeSetting("unspill_red", ST.FLOAT), - NTPNodeSetting("use_unspill", ST.BOOL), - ], - - 'CompositorNodeCombHSVA' : [], - - 'CompositorNodeCombRGBA' : [], - - 'CompositorNodeCombYCCA' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'CompositorNodeCombYUVA' : [], - - 'CompositorNodeCombineColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), - NTPNodeSetting("ycc_mode", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'CompositorNodeCombineXYZ' : [], - - 'CompositorNodeComposite' : [ - NTPNodeSetting("use_alpha", ST.BOOL), - ], - - 'CompositorNodeConvertColorSpace' : [ - NTPNodeSetting("from_color_space", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("to_color_space", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'CompositorNodeCornerPin' : [], - - 'CompositorNodeCrop' : [ - NTPNodeSetting("max_x", ST.INT), - NTPNodeSetting("max_y", ST.INT), - NTPNodeSetting("min_x", ST.INT), - NTPNodeSetting("min_y", ST.INT), - NTPNodeSetting("rel_max_x", ST.FLOAT), - NTPNodeSetting("rel_max_y", ST.FLOAT), - NTPNodeSetting("rel_min_x", ST.FLOAT), - NTPNodeSetting("rel_min_y", ST.FLOAT), - NTPNodeSetting("relative", ST.BOOL), - NTPNodeSetting("use_crop_size", ST.BOOL), - ], - - 'CompositorNodeCryptomatte' : [ - NTPNodeSetting("add", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("add", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("matte_id", ST.STRING), - NTPNodeSetting("remove", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("remove", ST.VEC3, max_version=(3, 5, 0)), - ], - - 'CompositorNodeCryptomatteV2' : [ - NTPNodeSetting("add", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("add", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("entries", ST.CRYPTOMATTE_ENTRIES), - NTPNodeSetting("frame_duration", ST.INT), - NTPNodeSetting("frame_offset", ST.INT), - NTPNodeSetting("frame_start", ST.INT), - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("layer", ST.ENUM), - NTPNodeSetting("layer_name", ST.ENUM), - NTPNodeSetting("matte_id", ST.STRING), - NTPNodeSetting("remove", ST.COLOR, min_version=(3, 5, 0)), - NTPNodeSetting("remove", ST.VEC3, max_version=(3, 5, 0)), - NTPNodeSetting("scene", ST.SCENE), - NTPNodeSetting("source", ST.ENUM), - NTPNodeSetting("use_auto_refresh", ST.BOOL), - NTPNodeSetting("use_cyclic", ST.BOOL), - NTPNodeSetting("view", ST.ENUM), - ], - - 'CompositorNodeCurveRGB' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING), - ], - - 'CompositorNodeCurveVec' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING), - ], - - 'CompositorNodeCustomGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE), - ], - - 'CompositorNodeDBlur' : [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("center_x", ST.FLOAT), - NTPNodeSetting("center_y", ST.FLOAT), - NTPNodeSetting("distance", ST.FLOAT), - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("spin", ST.FLOAT), - NTPNodeSetting("use_wrap", ST.BOOL, max_version=(3, 5, 0)), - NTPNodeSetting("zoom", ST.FLOAT), - ], - - 'CompositorNodeDefocus' : [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("blur_max", ST.FLOAT), - NTPNodeSetting("bokeh", ST.ENUM), - NTPNodeSetting("f_stop", ST.FLOAT), - NTPNodeSetting("scene", ST.SCENE), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("use_gamma_correction", ST.BOOL), - NTPNodeSetting("use_preview", ST.BOOL), - NTPNodeSetting("use_zbuffer", ST.BOOL), - NTPNodeSetting("z_scale", ST.FLOAT), - ], - - 'CompositorNodeDenoise' : [ - NTPNodeSetting("prefilter", ST.ENUM), - NTPNodeSetting("use_hdr", ST.BOOL), - ], - - 'CompositorNodeDespeckle' : [ - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("threshold_neighbor", ST.FLOAT), - ], - - 'CompositorNodeDiffMatte' : [ - NTPNodeSetting("falloff", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT), - ], - - 'CompositorNodeDilateErode' : [ - NTPNodeSetting("distance", ST.INT), - NTPNodeSetting("edge", ST.FLOAT), - NTPNodeSetting("falloff", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM), - ], - - 'CompositorNodeDisplace' : [], - - 'CompositorNodeDistanceMatte' : [ - NTPNodeSetting("channel", ST.ENUM), - NTPNodeSetting("falloff", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT), - ], - - 'CompositorNodeDoubleEdgeMask' : [ - NTPNodeSetting("edge_mode", ST.ENUM), - NTPNodeSetting("inner_mode", ST.ENUM), - ], - - 'CompositorNodeEllipseMask' : [ - NTPNodeSetting("height", ST.FLOAT), - NTPNodeSetting("mask_type", ST.ENUM), - NTPNodeSetting("rotation", ST.FLOAT), - NTPNodeSetting("width", ST.FLOAT), - NTPNodeSetting("x", ST.FLOAT), - NTPNodeSetting("y", ST.FLOAT), - ], - - 'CompositorNodeExposure' : [], - - 'CompositorNodeFilter' : [ - NTPNodeSetting("filter_type", ST.ENUM), - ], - - 'CompositorNodeFlip' : [ - NTPNodeSetting("axis", ST.ENUM), - ], - - 'CompositorNodeGamma' : [], - - 'CompositorNodeGlare' : [ - NTPNodeSetting("angle_offset", ST.FLOAT), - NTPNodeSetting("color_modulation", ST.FLOAT), - NTPNodeSetting("fade", ST.FLOAT), - NTPNodeSetting("glare_type", ST.ENUM), - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("mix", ST.FLOAT), - NTPNodeSetting("quality", ST.ENUM), - NTPNodeSetting("size", ST.INT), - NTPNodeSetting("streaks", ST.INT), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("use_rotate_45", ST.BOOL), - ], - - 'CompositorNodeGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE), - ], - - 'CompositorNodeHueCorrect' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING), - ], - - 'CompositorNodeHueSat' : [], - - 'CompositorNodeIDMask' : [ - NTPNodeSetting("index", ST.INT), - NTPNodeSetting("use_antialiasing", ST.BOOL), - ], - - 'CompositorNodeImage' : [ - NTPNodeSetting("frame_duration", ST.INT), - NTPNodeSetting("frame_offset", ST.INT), - NTPNodeSetting("frame_start", ST.INT), - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("layer", ST.ENUM), - NTPNodeSetting("use_auto_refresh", ST.BOOL), - NTPNodeSetting("use_cyclic", ST.BOOL), - NTPNodeSetting("use_straight_alpha_output", ST.BOOL), - NTPNodeSetting("view", ST.ENUM), - ], - - 'CompositorNodeInpaint' : [ - NTPNodeSetting("distance", ST.INT), - ], - - 'CompositorNodeInvert' : [ - NTPNodeSetting("invert_alpha", ST.BOOL), - NTPNodeSetting("invert_rgb", ST.BOOL), - ], - - 'CompositorNodeKeying' : [ - NTPNodeSetting("blur_post", ST.INT), - NTPNodeSetting("blur_pre", ST.INT), - NTPNodeSetting("clip_black", ST.FLOAT), - NTPNodeSetting("clip_white", ST.FLOAT), - NTPNodeSetting("despill_balance", ST.FLOAT), - NTPNodeSetting("despill_factor", ST.FLOAT), - NTPNodeSetting("dilate_distance", ST.INT), - NTPNodeSetting("edge_kernel_radius", ST.INT), - NTPNodeSetting("edge_kernel_tolerance", ST.FLOAT), - NTPNodeSetting("feather_distance", ST.INT), - NTPNodeSetting("feather_falloff", ST.ENUM), - NTPNodeSetting("screen_balance", ST.FLOAT), - ], - - 'CompositorNodeKeyingScreen' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("smoothness", ST.FLOAT, min_version=(4, 1, 0)), - NTPNodeSetting("tracking_object", ST.STRING), - ], - - 'CompositorNodeKuwahara' : [ - NTPNodeSetting("eccentricity", ST.FLOAT, min_version=(4, 0, 0)), - NTPNodeSetting("sharpness", ST.FLOAT, min_version=(4, 0, 0)), - NTPNodeSetting("size", ST.INT, min_version=(4, 0, 0), max_version=(4, 1, 0)), - NTPNodeSetting("uniformity", ST.INT, min_version=(4, 0, 0)), - NTPNodeSetting("use_high_precision", ST.BOOL, min_version=(4, 1, 0)), - NTPNodeSetting("variation", ST.ENUM, min_version=(4, 0, 0)), - ], - - 'CompositorNodeLensdist' : [ - NTPNodeSetting("use_fit", ST.BOOL), - NTPNodeSetting("use_jitter", ST.BOOL), - NTPNodeSetting("use_projector", ST.BOOL), - ], - - 'CompositorNodeLevels' : [ - NTPNodeSetting("channel", ST.ENUM), - ], - - 'CompositorNodeLumaMatte' : [ - NTPNodeSetting("limit_max", ST.FLOAT), - NTPNodeSetting("limit_min", ST.FLOAT), - ], - - 'CompositorNodeMapRange' : [ - NTPNodeSetting("use_clamp", ST.BOOL), - ], - - 'CompositorNodeMapUV' : [ - NTPNodeSetting("alpha", ST.INT), - NTPNodeSetting("filter_type", ST.ENUM, min_version=(4, 1, 0)), - ], - - 'CompositorNodeMapValue' : [ - NTPNodeSetting("max", ST.VEC1), - NTPNodeSetting("min", ST.VEC1), - NTPNodeSetting("offset", ST.VEC1), - NTPNodeSetting("size", ST.VEC1), - NTPNodeSetting("use_max", ST.BOOL), - NTPNodeSetting("use_min", ST.BOOL), - ], - - 'CompositorNodeMask' : [ - NTPNodeSetting("mask", ST.MASK), - NTPNodeSetting("motion_blur_samples", ST.INT), - NTPNodeSetting("motion_blur_shutter", ST.FLOAT), - NTPNodeSetting("size_source", ST.ENUM), - NTPNodeSetting("size_x", ST.INT), - NTPNodeSetting("size_y", ST.INT), - NTPNodeSetting("use_feather", ST.BOOL), - NTPNodeSetting("use_motion_blur", ST.BOOL), - ], - - 'CompositorNodeMath' : [ - NTPNodeSetting("operation", ST.ENUM), - NTPNodeSetting("use_clamp", ST.BOOL), - ], - - 'CompositorNodeMixRGB' : [ - NTPNodeSetting("blend_type", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_clamp", ST.BOOL), - ], - - 'CompositorNodeMovieClip' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - ], - - 'CompositorNodeMovieDistortion' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("distortion_type", ST.ENUM), - ], - - 'CompositorNodeNormal' : [], - - 'CompositorNodeNormalize' : [], - - 'CompositorNodeOutputFile' : [ - NTPNodeSetting("active_input_index", ST.INT), - NTPNodeSetting("base_path", ST.STRING), - NTPNodeSetting("file_slots", ST.FILE_SLOTS), - NTPNodeSetting("format", ST.IMAGE_FORMAT_SETTINGS), - NTPNodeSetting("layer_slots", ST.LAYER_SLOTS), - ], - - 'CompositorNodePixelate' : [ - NTPNodeSetting("pixel_size", ST.INT, min_version=(4, 1, 0)), - ], - - 'CompositorNodePlaneTrackDeform' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("motion_blur_samples", ST.INT), - NTPNodeSetting("motion_blur_shutter", ST.FLOAT), - NTPNodeSetting("plane_track_name", ST.STRING), - NTPNodeSetting("tracking_object", ST.STRING), - NTPNodeSetting("use_motion_blur", ST.BOOL), - ], - - 'CompositorNodePosterize' : [], - - 'CompositorNodePremulKey' : [ - NTPNodeSetting("mapping", ST.ENUM), - ], - - 'CompositorNodeRGB' : [], - - 'CompositorNodeRGBToBW' : [], - - 'CompositorNodeRLayers' : [ - NTPNodeSetting("layer", ST.ENUM), - NTPNodeSetting("scene", ST.SCENE), - ], - - 'CompositorNodeRotate' : [ - NTPNodeSetting("filter_type", ST.ENUM), - ], - - 'CompositorNodeScale' : [ - NTPNodeSetting("frame_method", ST.ENUM), - NTPNodeSetting("offset_x", ST.FLOAT), - NTPNodeSetting("offset_y", ST.FLOAT), - NTPNodeSetting("space", ST.ENUM), - ], - - 'CompositorNodeSceneTime' : [], - - 'CompositorNodeSepHSVA' : [], - - 'CompositorNodeSepRGBA' : [], - - 'CompositorNodeSepYCCA' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'CompositorNodeSepYUVA' : [], - - 'CompositorNodeSeparateColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), - NTPNodeSetting("ycc_mode", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'CompositorNodeSeparateXYZ' : [], - - 'CompositorNodeSetAlpha' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'CompositorNodeSplit' : [ - NTPNodeSetting("axis", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("factor", ST.INT, min_version=(4, 1, 0)), - ], - - 'CompositorNodeSplitViewer' : [ - NTPNodeSetting("axis", ST.ENUM, max_version=(4, 1, 0)), - NTPNodeSetting("factor", ST.INT, max_version=(4, 1, 0)), - ], - - 'CompositorNodeStabilize' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("filter_type", ST.ENUM), - NTPNodeSetting("invert", ST.BOOL), - ], - - 'CompositorNodeSunBeams' : [ - NTPNodeSetting("ray_length", ST.FLOAT), - NTPNodeSetting("source", ST.VEC2), - ], - - 'CompositorNodeSwitch' : [ - NTPNodeSetting("check", ST.BOOL), - ], - - 'CompositorNodeSwitchView' : [], - - 'CompositorNodeTexture' : [ - NTPNodeSetting("node_output", ST.INT), - NTPNodeSetting("texture", ST.TEXTURE), - ], - - 'CompositorNodeTime' : [ - NTPNodeSetting("curve", ST.CURVE_MAPPING), - NTPNodeSetting("frame_end", ST.INT), - NTPNodeSetting("frame_start", ST.INT), - ], - - 'CompositorNodeTonemap' : [ - NTPNodeSetting("adaptation", ST.FLOAT), - NTPNodeSetting("contrast", ST.FLOAT), - NTPNodeSetting("correction", ST.FLOAT), - NTPNodeSetting("gamma", ST.FLOAT), - NTPNodeSetting("intensity", ST.FLOAT), - NTPNodeSetting("key", ST.FLOAT), - NTPNodeSetting("offset", ST.FLOAT), - NTPNodeSetting("tonemap_type", ST.ENUM), - ], - - 'CompositorNodeTrackPos' : [ - NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("frame_relative", ST.INT), - NTPNodeSetting("position", ST.ENUM), - NTPNodeSetting("track_name", ST.STRING), - NTPNodeSetting("tracking_object", ST.STRING), - ], - - 'CompositorNodeTransform' : [ - NTPNodeSetting("filter_type", ST.ENUM), - ], - - 'CompositorNodeTranslate' : [ - NTPNodeSetting("use_relative", ST.BOOL), - NTPNodeSetting("wrap_axis", ST.ENUM), - ], - - 'CompositorNodeValToRGB' : [ - NTPNodeSetting("color_ramp", ST.COLOR_RAMP), - ], - - 'CompositorNodeValue' : [], - - 'CompositorNodeVecBlur' : [ - NTPNodeSetting("factor", ST.FLOAT), - NTPNodeSetting("samples", ST.INT), - NTPNodeSetting("speed_max", ST.INT), - NTPNodeSetting("speed_min", ST.INT), - NTPNodeSetting("use_curved", ST.BOOL), - ], - - 'CompositorNodeViewer' : [ - NTPNodeSetting("center_x", ST.FLOAT), - NTPNodeSetting("center_y", ST.FLOAT), - NTPNodeSetting("tile_order", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - ], - - 'CompositorNodeZcombine' : [ - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_antialias_z", ST.BOOL), - ], - - 'FunctionNodeAlignEulerToVector' : [ - NTPNodeSetting("axis", ST.ENUM), - NTPNodeSetting("pivot_axis", ST.ENUM), - ], - - 'FunctionNodeAxisAngleToRotation' : [], - - 'FunctionNodeBooleanMath' : [ - NTPNodeSetting("operation", ST.ENUM), - ], - - 'FunctionNodeCombineColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'FunctionNodeCompare' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("operation", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'FunctionNodeCompareFloats' : [ - NTPNodeSetting("operation", ST.ENUM, max_version=(3, 1, 0)), - ], - - 'FunctionNodeEulerToRotation' : [], - - 'FunctionNodeFloatToInt' : [ - NTPNodeSetting("rounding_mode", ST.ENUM), - ], - - 'FunctionNodeInputBool' : [ - NTPNodeSetting("boolean", ST.BOOL), - ], - - 'FunctionNodeInputColor' : [ - NTPNodeSetting("color", ST.VEC4), - ], - - 'FunctionNodeInputInt' : [ - NTPNodeSetting("integer", ST.INT), - ], - - 'FunctionNodeInputSpecialCharacters' : [], - - 'FunctionNodeInputString' : [ - NTPNodeSetting("string", ST.STRING), - ], - - 'FunctionNodeInputVector' : [ - NTPNodeSetting("vector", ST.VEC3), - ], - - 'FunctionNodeInvertRotation' : [], - - 'FunctionNodeLegacyRandomFloat' : [], - - 'FunctionNodeQuaternionToRotation' : [], - - 'FunctionNodeRandomValue' : [ - NTPNodeSetting("data_type", ST.ENUM), - ], - - 'FunctionNodeReplaceString' : [], - - 'FunctionNodeRotateEuler' : [ - NTPNodeSetting("rotation_type", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("space", ST.ENUM), - NTPNodeSetting("type", ST.ENUM, max_version=(4, 1, 0)), - ], - - 'FunctionNodeRotateRotation' : [ - NTPNodeSetting("rotation_space", ST.ENUM, min_version=(4, 1, 0)), - ], - - 'FunctionNodeRotateVector' : [], - - 'FunctionNodeRotationToAxisAngle' : [], - - 'FunctionNodeRotationToEuler' : [], - - 'FunctionNodeRotationToQuaternion' : [], - - 'FunctionNodeSeparateColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'FunctionNodeSliceString' : [], - - 'FunctionNodeStringLength' : [], - - 'FunctionNodeValueToString' : [], - - 'GeometryNodeAccumulateField' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'GeometryNodeAttributeDomainSize' : [ - NTPNodeSetting("component", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'GeometryNodeAttributeRemove' : [], - - 'GeometryNodeAttributeStatistic' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM), - ], - - 'GeometryNodeAttributeTransfer' : [ - NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 4, 0)), - NTPNodeSetting("domain", ST.ENUM, max_version=(3, 4, 0)), - NTPNodeSetting("mapping", ST.ENUM, max_version=(3, 4, 0)), - ], - - 'GeometryNodeBake' : [ - NTPNodeSetting("active_index", ST.INT, min_version=(4, 1, 0)), - NTPNodeSetting("bake_items", ST.BAKE_ITEMS, min_version=(4, 1, 0)), - ], - - 'GeometryNodeBlurAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 5, 0)), - ], - - 'GeometryNodeBoundBox' : [], - - 'GeometryNodeCaptureAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM), - ], - - 'GeometryNodeCollectionInfo' : [ - NTPNodeSetting("transform_space", ST.ENUM), - ], - - 'GeometryNodeConvexHull' : [], - - 'GeometryNodeCornersOfEdge' : [], - - 'GeometryNodeCornersOfFace' : [], - - 'GeometryNodeCornersOfVertex' : [], - - 'GeometryNodeCurveArc' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'GeometryNodeCurveEndpointSelection' : [], - - 'GeometryNodeCurveHandleTypeSelection' : [ - NTPNodeSetting("handle_type", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM_SET), - ], - - 'GeometryNodeCurveLength' : [], - - 'GeometryNodeCurveOfPoint' : [], - - 'GeometryNodeCurveParameter' : [], - - 'GeometryNodeCurvePrimitiveBezierSegment' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeCurvePrimitiveCircle' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeCurvePrimitiveLine' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeCurvePrimitiveQuadrilateral' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeCurveQuadraticBezier' : [], - - 'GeometryNodeCurveSetHandles' : [ - NTPNodeSetting("handle_type", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM_SET), - ], - - 'GeometryNodeCurveSpiral' : [], - - 'GeometryNodeCurveSplineType' : [ - NTPNodeSetting("spline_type", ST.ENUM), - ], - - 'GeometryNodeCurveStar' : [], - - 'GeometryNodeCurveToMesh' : [], - - 'GeometryNodeCurveToPoints' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeCustomGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE), - ], - - 'GeometryNodeDeformCurvesOnSurface' : [], - - 'GeometryNodeDeleteGeometry' : [ - NTPNodeSetting("domain", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeDistributePointsInVolume' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'GeometryNodeDistributePointsOnFaces' : [ - NTPNodeSetting("distribute_method", ST.ENUM), - NTPNodeSetting("use_legacy_normal", ST.BOOL, min_version=(3, 5, 0)), - ], - - 'GeometryNodeDualMesh' : [], - - 'GeometryNodeDuplicateElements' : [ - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 2, 0)), - ], - - 'GeometryNodeEdgePathsToCurves' : [], - - 'GeometryNodeEdgePathsToSelection' : [], - - 'GeometryNodeEdgesOfCorner' : [], - - 'GeometryNodeEdgesOfVertex' : [], - - 'GeometryNodeEdgesToFaceGroups' : [], - - 'GeometryNodeExtrudeMesh' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'GeometryNodeFaceOfCorner' : [], - - 'GeometryNodeFieldAtIndex' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'GeometryNodeFieldOnDomain' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 3, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'GeometryNodeFillCurve' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeFilletCurve' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeFlipFaces' : [], - - 'GeometryNodeGeometryToInstance' : [], - - 'GeometryNodeGetNamedGrid' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), - ], - - 'GeometryNodeGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE), - ], - - 'GeometryNodeImageInfo' : [], - - 'GeometryNodeImageTexture' : [ - NTPNodeSetting("extension", ST.ENUM), - NTPNodeSetting("interpolation", ST.ENUM), - ], - - 'GeometryNodeIndexOfNearest' : [], - - 'GeometryNodeIndexSwitch' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("index_switch_items", ST.INDEX_SWITCH_ITEMS, min_version=(4, 1, 0)), - ], - - 'GeometryNodeInputActiveCamera' : [], - - 'GeometryNodeInputCurveHandlePositions' : [], - - 'GeometryNodeInputCurveTilt' : [], - - 'GeometryNodeInputEdgeSmooth' : [], - - 'GeometryNodeInputID' : [], - - 'GeometryNodeInputImage' : [ - NTPNodeSetting("image", ST.IMAGE, min_version=(3, 5, 0)), - ], - - 'GeometryNodeInputIndex' : [], - - 'GeometryNodeInputInstanceRotation' : [], - - 'GeometryNodeInputInstanceScale' : [], - - 'GeometryNodeInputMaterial' : [ - NTPNodeSetting("material", ST.MATERIAL), - ], - - 'GeometryNodeInputMaterialIndex' : [], - - 'GeometryNodeInputMeshEdgeAngle' : [], - - 'GeometryNodeInputMeshEdgeNeighbors' : [], - - 'GeometryNodeInputMeshEdgeVertices' : [], - - 'GeometryNodeInputMeshFaceArea' : [], - - 'GeometryNodeInputMeshFaceIsPlanar' : [], - - 'GeometryNodeInputMeshFaceNeighbors' : [], - - 'GeometryNodeInputMeshIsland' : [], - - 'GeometryNodeInputMeshVertexNeighbors' : [], - - 'GeometryNodeInputNamedAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 2, 0)), - ], - - 'GeometryNodeInputNamedLayerSelection' : [], - - 'GeometryNodeInputNormal' : [], - - 'GeometryNodeInputPosition' : [], - - 'GeometryNodeInputRadius' : [], - - 'GeometryNodeInputSceneTime' : [], - - 'GeometryNodeInputShadeSmooth' : [], - - 'GeometryNodeInputShortestEdgePaths' : [], - - 'GeometryNodeInputSignedDistance' : [], - - 'GeometryNodeInputSplineCyclic' : [], - - 'GeometryNodeInputSplineResolution' : [], - - 'GeometryNodeInputTangent' : [], - - 'GeometryNodeInstanceOnPoints' : [], - - 'GeometryNodeInstancesToPoints' : [], - - 'GeometryNodeInterpolateCurves' : [], - - 'GeometryNodeIsViewport' : [], - - 'GeometryNodeJoinGeometry' : [], - - 'GeometryNodeLegacyAlignRotationToVector' : [ - NTPNodeSetting("axis", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_factor", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_vector", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("pivot_axis", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeClamp' : [ - NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeColorRamp' : [ - NTPNodeSetting("color_ramp", ST.COLOR_RAMP, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeCombineXYZ' : [ - NTPNodeSetting("input_type_x", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_y", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_z", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeCompare' : [ - NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeConvert' : [ - NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("domain", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeCurveMap' : [ - NTPNodeSetting("curve_rgb", ST.CURVE_MAPPING, max_version=(3, 2, 0)), - NTPNodeSetting("curve_vec", ST.CURVE_MAPPING, max_version=(3, 2, 0)), - NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeFill' : [ - NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("domain", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeMapRange' : [ - NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("interpolation_type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeMath' : [ - NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_c", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeMix' : [ - NTPNodeSetting("blend_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_factor", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeProximity' : [ - NTPNodeSetting("target_geometry_element", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeRandomize' : [ - NTPNodeSetting("data_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeSampleTexture' : [], - - 'GeometryNodeLegacyAttributeSeparateXYZ' : [ - NTPNodeSetting("input_type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeTransfer' : [ - NTPNodeSetting("domain", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("mapping", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeVectorMath' : [ - NTPNodeSetting("input_type_a", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_b", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_c", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("operation", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyAttributeVectorRotate' : [ - NTPNodeSetting("input_type_angle", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_axis", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_center", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_rotation", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_vector", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("rotation_mode", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyCurveEndpoints' : [], - - 'GeometryNodeLegacyCurveReverse' : [], - - 'GeometryNodeLegacyCurveSelectHandles' : [ - NTPNodeSetting("handle_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("mode", ST.ENUM_SET, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyCurveSetHandles' : [ - NTPNodeSetting("handle_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("mode", ST.ENUM_SET, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyCurveSplineType' : [ - NTPNodeSetting("spline_type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyCurveSubdivide' : [ - NTPNodeSetting("cuts_type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyCurveToPoints' : [ - NTPNodeSetting("mode", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyDeleteGeometry' : [], - - 'GeometryNodeLegacyEdgeSplit' : [], - - 'GeometryNodeLegacyMaterialAssign' : [], - - 'GeometryNodeLegacyMeshToCurve' : [], - - 'GeometryNodeLegacyPointDistribute' : [ - NTPNodeSetting("distribute_method", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyPointInstance' : [ - NTPNodeSetting("instance_type", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("use_whole_collection", ST.BOOL, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyPointScale' : [ - NTPNodeSetting("input_type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyPointSeparate' : [], - - 'GeometryNodeLegacyPointTranslate' : [ - NTPNodeSetting("input_type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyPointsToVolume' : [ - NTPNodeSetting("input_type_radius", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("resolution_mode", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyRaycast' : [ - NTPNodeSetting("input_type_ray_direction", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_ray_length", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("mapping", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyRotatePoints' : [ - NTPNodeSetting("input_type_angle", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_axis", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("input_type_rotation", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("space", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("type", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacySelectByMaterial' : [], - - 'GeometryNodeLegacySubdivisionSurface' : [ - NTPNodeSetting("boundary_smooth", ST.ENUM, max_version=(3, 2, 0)), - NTPNodeSetting("uv_smooth", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeLegacyVolumeToMesh' : [ - NTPNodeSetting("resolution_mode", ST.ENUM, max_version=(3, 2, 0)), - ], - - 'GeometryNodeMaterialSelection' : [], - - 'GeometryNodeMeanFilterSDFVolume' : [], - - 'GeometryNodeMenuSwitch' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("enum_definition", ST.ENUM_DEFINITION, min_version=(4, 1, 0)), - ], - - 'GeometryNodeMergeByDistance' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 2, 0)), - ], - - 'GeometryNodeMeshBoolean' : [ - NTPNodeSetting("operation", ST.ENUM), - ], - - 'GeometryNodeMeshCircle' : [ - NTPNodeSetting("fill_type", ST.ENUM), - ], - - 'GeometryNodeMeshCone' : [ - NTPNodeSetting("fill_type", ST.ENUM), - ], - - 'GeometryNodeMeshCube' : [], - - 'GeometryNodeMeshCylinder' : [ - NTPNodeSetting("fill_type", ST.ENUM), - ], - - 'GeometryNodeMeshFaceSetBoundaries' : [], - - 'GeometryNodeMeshGrid' : [], - - 'GeometryNodeMeshIcoSphere' : [], - - 'GeometryNodeMeshLine' : [ - NTPNodeSetting("count_mode", ST.ENUM), - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeMeshToCurve' : [], - - 'GeometryNodeMeshToPoints' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeMeshToSDFVolume' : [ - NTPNodeSetting("resolution_mode", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), - ], - - 'GeometryNodeMeshToVolume' : [ - NTPNodeSetting("resolution_mode", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'GeometryNodeMeshUVSphere' : [], - - 'GeometryNodeObjectInfo' : [ - NTPNodeSetting("transform_space", ST.ENUM), - ], - - 'GeometryNodeOffsetCornerInFace' : [], - - 'GeometryNodeOffsetPointInCurve' : [], - - 'GeometryNodeOffsetSDFVolume' : [], - - 'GeometryNodePoints' : [], - - 'GeometryNodePointsOfCurve' : [], - - 'GeometryNodePointsToCurves' : [], - - 'GeometryNodePointsToSDFVolume' : [ - NTPNodeSetting("resolution_mode", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), - ], - - 'GeometryNodePointsToVertices' : [], - - 'GeometryNodePointsToVolume' : [ - NTPNodeSetting("resolution_mode", ST.ENUM), - ], - - 'GeometryNodeProximity' : [ - NTPNodeSetting("target_element", ST.ENUM), - ], - - 'GeometryNodeRaycast' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("mapping", ST.ENUM), - ], - - 'GeometryNodeRealizeInstances' : [ - NTPNodeSetting("legacy_behavior", ST.BOOL, min_version=(3, 1, 0), max_version=(4, 0, 0)), - ], - - 'GeometryNodeRemoveAttribute' : [], - - 'GeometryNodeRepeatInput' : [], - - 'GeometryNodeRepeatOutput' : [ - NTPNodeSetting("active_index", ST.INT, min_version=(4, 0, 0)), - NTPNodeSetting("inspection_index", ST.INT, min_version=(4, 0, 0)), - NTPNodeSetting("repeat_items", ST.REPEAT_OUTPUT_ITEMS, min_version=(4, 0, 0)), - ], - - 'GeometryNodeReplaceMaterial' : [], - - 'GeometryNodeResampleCurve' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeReverseCurve' : [], - - 'GeometryNodeRotateInstances' : [], - - 'GeometryNodeSDFVolumeSphere' : [], - - 'GeometryNodeSampleCurve' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), - NTPNodeSetting("mode", ST.ENUM), - NTPNodeSetting("use_all_curves", ST.BOOL, min_version=(3, 4, 0)), - ], - - 'GeometryNodeSampleIndex' : [ - NTPNodeSetting("clamp", ST.BOOL, min_version=(3, 4, 0)), - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'GeometryNodeSampleNearest' : [ - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'GeometryNodeSampleNearestSurface' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'GeometryNodeSampleUVSurface' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'GeometryNodeSampleVolume' : [ - NTPNodeSetting("grid_type", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), - NTPNodeSetting("interpolation_mode", ST.ENUM, min_version=(3, 6, 0), max_version=(4, 1, 0)), - ], - - 'GeometryNodeScaleElements' : [ - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("scale_mode", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'GeometryNodeScaleInstances' : [], - - 'GeometryNodeSelfObject' : [], - - 'GeometryNodeSeparateComponents' : [], - - 'GeometryNodeSeparateGeometry' : [ - NTPNodeSetting("domain", ST.ENUM), - ], - - 'GeometryNodeSetCurveHandlePositions' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeSetCurveNormal' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'GeometryNodeSetCurveRadius' : [], - - 'GeometryNodeSetCurveTilt' : [], - - 'GeometryNodeSetID' : [], - - 'GeometryNodeSetMaterial' : [], - - 'GeometryNodeSetMaterialIndex' : [], - - 'GeometryNodeSetPointRadius' : [], - - 'GeometryNodeSetPosition' : [], - - 'GeometryNodeSetShadeSmooth' : [ - NTPNodeSetting("domain", ST.ENUM, min_version=(4, 0, 0)), - ], - - 'GeometryNodeSetSplineCyclic' : [], - - 'GeometryNodeSetSplineResolution' : [], - - 'GeometryNodeSimulationInput' : [], - - 'GeometryNodeSimulationOutput' : [ - NTPNodeSetting("active_index", ST.INT, min_version=(3, 6, 0)), - NTPNodeSetting("state_items", ST.SIM_OUTPUT_ITEMS, min_version=(3, 6, 0)), - ], - - 'GeometryNodeSortElements' : [ - NTPNodeSetting("domain", ST.ENUM, min_version=(4, 1, 0)), - ], - - 'GeometryNodeSplineLength' : [], - - 'GeometryNodeSplineParameter' : [], - - 'GeometryNodeSplitEdges' : [], - - 'GeometryNodeSplitToInstances' : [ - NTPNodeSetting("domain", ST.ENUM, min_version=(4, 1, 0)), - ], - - 'GeometryNodeStoreNamedAttribute' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 2, 0)), - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 2, 0)), - ], - - 'GeometryNodeStoreNamedGrid' : [ - NTPNodeSetting("data_type", ST.ENUM, min_version=(4, 1, 0)), - ], - - 'GeometryNodeStringJoin' : [], - - 'GeometryNodeStringToCurves' : [ - NTPNodeSetting("align_x", ST.ENUM), - NTPNodeSetting("align_y", ST.ENUM), - NTPNodeSetting("font", ST.FONT), - NTPNodeSetting("overflow", ST.ENUM), - NTPNodeSetting("pivot_mode", ST.ENUM, min_version=(3, 1, 0)), - ], - - 'GeometryNodeSubdivideCurve' : [], - - 'GeometryNodeSubdivideMesh' : [], - - 'GeometryNodeSubdivisionSurface' : [ - NTPNodeSetting("boundary_smooth", ST.ENUM), - NTPNodeSetting("uv_smooth", ST.ENUM), - ], - - 'GeometryNodeSwitch' : [ - NTPNodeSetting("input_type", ST.ENUM), - ], - - 'GeometryNodeTool3DCursor' : [], - - 'GeometryNodeToolFaceSet' : [], - - 'GeometryNodeToolSelection' : [], - - 'GeometryNodeToolSetFaceSet' : [], - - 'GeometryNodeToolSetSelection' : [ - NTPNodeSetting("domain", ST.ENUM, min_version=(4, 0, 0)), - ], - - 'GeometryNodeTransform' : [], - - 'GeometryNodeTranslateInstances' : [], - - 'GeometryNodeTriangulate' : [ - NTPNodeSetting("ngon_method", ST.ENUM), - NTPNodeSetting("quad_method", ST.ENUM), - ], - - 'GeometryNodeTrimCurve' : [ - NTPNodeSetting("mode", ST.ENUM), - ], - - 'GeometryNodeUVPackIslands' : [], - - 'GeometryNodeUVUnwrap' : [ - NTPNodeSetting("method", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'GeometryNodeVertexOfCorner' : [], - - 'GeometryNodeViewer' : [ - NTPNodeSetting("data_type", ST.ENUM), - NTPNodeSetting("domain", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'GeometryNodeVolumeCube' : [], - - 'GeometryNodeVolumeToMesh' : [ - NTPNodeSetting("resolution_mode", ST.ENUM), - ], - - 'NodeFrame' : [ - NTPNodeSetting("label_size", ST.INT), - NTPNodeSetting("shrink", ST.BOOL), - NTPNodeSetting("text", ST.TEXT), - ], - - 'NodeGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE), - ], - - 'NodeGroupInput' : [], - - 'NodeGroupOutput' : [ - NTPNodeSetting("is_active_output", ST.BOOL), - ], - - 'NodeReroute' : [], - - 'ShaderNodeAddShader' : [], - - 'ShaderNodeAmbientOcclusion' : [ - NTPNodeSetting("inside", ST.BOOL), - NTPNodeSetting("only_local", ST.BOOL), - NTPNodeSetting("samples", ST.INT), - ], - - 'ShaderNodeAttribute' : [ - NTPNodeSetting("attribute_name", ST.STRING), - NTPNodeSetting("attribute_type", ST.ENUM), - ], - - 'ShaderNodeBackground' : [], - - 'ShaderNodeBevel' : [ - NTPNodeSetting("samples", ST.INT), - ], - - 'ShaderNodeBlackbody' : [], - - 'ShaderNodeBrightContrast' : [], - - 'ShaderNodeBsdfAnisotropic' : [ - NTPNodeSetting("distribution", ST.ENUM), - ], - - 'ShaderNodeBsdfDiffuse' : [], - - 'ShaderNodeBsdfGlass' : [ - NTPNodeSetting("distribution", ST.ENUM), - ], - - 'ShaderNodeBsdfGlossy' : [ - NTPNodeSetting("distribution", ST.ENUM, max_version=(4, 0, 0)), - ], - - 'ShaderNodeBsdfHair' : [ - NTPNodeSetting("component", ST.ENUM), - ], - - 'ShaderNodeBsdfHairPrincipled' : [ - NTPNodeSetting("model", ST.ENUM, min_version=(4, 0, 0)), - NTPNodeSetting("parametrization", ST.ENUM), - ], - - 'ShaderNodeBsdfPrincipled' : [ - NTPNodeSetting("distribution", ST.ENUM), - NTPNodeSetting("subsurface_method", ST.ENUM), - ], - - 'ShaderNodeBsdfRefraction' : [ - NTPNodeSetting("distribution", ST.ENUM), - ], - - 'ShaderNodeBsdfSheen' : [ - NTPNodeSetting("distribution", ST.ENUM, min_version=(4, 0, 0)), - ], - - 'ShaderNodeBsdfToon' : [ - NTPNodeSetting("component", ST.ENUM), - ], - - 'ShaderNodeBsdfTranslucent' : [], - - 'ShaderNodeBsdfTransparent' : [], - - 'ShaderNodeBsdfVelvet' : [], - - 'ShaderNodeBump' : [ - NTPNodeSetting("invert", ST.BOOL), - ], - - 'ShaderNodeCameraData' : [], - - 'ShaderNodeClamp' : [ - NTPNodeSetting("clamp_type", ST.ENUM), - ], - - 'ShaderNodeCombineColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'ShaderNodeCombineHSV' : [], - - 'ShaderNodeCombineRGB' : [], - - 'ShaderNodeCombineXYZ' : [], - - 'ShaderNodeCustomGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE), - ], - - 'ShaderNodeDisplacement' : [ - NTPNodeSetting("space", ST.ENUM), - ], - - 'ShaderNodeEeveeSpecular' : [], - - 'ShaderNodeEmission' : [], - - 'ShaderNodeFloatCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING), - ], - - 'ShaderNodeFresnel' : [], - - 'ShaderNodeGamma' : [], - - 'ShaderNodeGroup' : [ - NTPNodeSetting("node_tree", ST.NODE_TREE), - ], - - 'ShaderNodeHairInfo' : [], - - 'ShaderNodeHoldout' : [], - - 'ShaderNodeHueSaturation' : [], - - 'ShaderNodeInvert' : [], - - 'ShaderNodeLayerWeight' : [], - - 'ShaderNodeLightFalloff' : [], - - 'ShaderNodeLightPath' : [], - - 'ShaderNodeMapRange' : [ - NTPNodeSetting("clamp", ST.BOOL), - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 1, 0)), - NTPNodeSetting("interpolation_type", ST.ENUM), - ], - - 'ShaderNodeMapping' : [ - NTPNodeSetting("vector_type", ST.ENUM), - ], - - 'ShaderNodeMath' : [ - NTPNodeSetting("operation", ST.ENUM), - NTPNodeSetting("use_clamp", ST.BOOL), - ], - - 'ShaderNodeMix' : [ - NTPNodeSetting("blend_type", ST.ENUM, min_version=(3, 4, 0)), - NTPNodeSetting("clamp_factor", ST.BOOL, min_version=(3, 4, 0)), - NTPNodeSetting("clamp_result", ST.BOOL, min_version=(3, 4, 0)), - NTPNodeSetting("data_type", ST.ENUM, min_version=(3, 4, 0)), - NTPNodeSetting("factor_mode", ST.ENUM, min_version=(3, 4, 0)), - ], - - 'ShaderNodeMixRGB' : [ - NTPNodeSetting("blend_type", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_clamp", ST.BOOL), - ], - - 'ShaderNodeMixShader' : [], - - 'ShaderNodeNewGeometry' : [], - - 'ShaderNodeNormal' : [], - - 'ShaderNodeNormalMap' : [ - NTPNodeSetting("space", ST.ENUM), - NTPNodeSetting("uv_map", ST.STRING), - ], - - 'ShaderNodeObjectInfo' : [], - - 'ShaderNodeOutputAOV' : [ - NTPNodeSetting("name", ST.STRING), - ], - - 'ShaderNodeOutputLight' : [ - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM), - ], - - 'ShaderNodeOutputLineStyle' : [ - NTPNodeSetting("blend_type", ST.ENUM), - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM), - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_clamp", ST.BOOL), - ], - - 'ShaderNodeOutputMaterial' : [ - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM), - ], - - 'ShaderNodeOutputWorld' : [ - NTPNodeSetting("is_active_output", ST.BOOL), - NTPNodeSetting("target", ST.ENUM), - ], - - 'ShaderNodeParticleInfo' : [], - - 'ShaderNodePointInfo' : [], - - 'ShaderNodeRGB' : [], - - 'ShaderNodeRGBCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING), - ], - - 'ShaderNodeRGBToBW' : [], - - 'ShaderNodeScript' : [ - NTPNodeSetting("bytecode", ST.STRING), - NTPNodeSetting("bytecode_hash", ST.STRING), - NTPNodeSetting("filepath", ST.STRING), - NTPNodeSetting("mode", ST.ENUM), - NTPNodeSetting("script", ST.TEXT), - NTPNodeSetting("use_auto_update", ST.BOOL), - ], - - 'ShaderNodeSeparateColor' : [ - NTPNodeSetting("mode", ST.ENUM, min_version=(3, 3, 0)), - ], - - 'ShaderNodeSeparateHSV' : [], - - 'ShaderNodeSeparateRGB' : [], - - 'ShaderNodeSeparateXYZ' : [], - - 'ShaderNodeShaderToRGB' : [], - - 'ShaderNodeSqueeze' : [], - - 'ShaderNodeSubsurfaceScattering' : [ - NTPNodeSetting("falloff", ST.ENUM), - ], - - 'ShaderNodeTangent' : [ - NTPNodeSetting("axis", ST.ENUM), - NTPNodeSetting("direction_type", ST.ENUM), - NTPNodeSetting("uv_map", ST.STRING), - ], - - 'ShaderNodeTexBrick' : [ - NTPNodeSetting("offset", ST.FLOAT), - NTPNodeSetting("offset_frequency", ST.INT), - NTPNodeSetting("squash", ST.FLOAT), - NTPNodeSetting("squash_frequency", ST.INT), - ], - - 'ShaderNodeTexChecker' : [], - - 'ShaderNodeTexCoord' : [ - NTPNodeSetting("from_instancer", ST.BOOL), - NTPNodeSetting("object", ST.OBJECT), - ], - - 'ShaderNodeTexEnvironment' : [ - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("image_user", ST.IMAGE_USER), - NTPNodeSetting("interpolation", ST.ENUM), - NTPNodeSetting("projection", ST.ENUM), - ], - - 'ShaderNodeTexGradient' : [ - NTPNodeSetting("gradient_type", ST.ENUM), - ], - - 'ShaderNodeTexIES' : [ - NTPNodeSetting("filepath", ST.STRING), - NTPNodeSetting("ies", ST.TEXT), - NTPNodeSetting("mode", ST.ENUM), - ], - - 'ShaderNodeTexImage' : [ - NTPNodeSetting("extension", ST.ENUM), - NTPNodeSetting("image", ST.IMAGE), - NTPNodeSetting("image_user", ST.IMAGE_USER), - NTPNodeSetting("interpolation", ST.ENUM), - NTPNodeSetting("projection", ST.ENUM), - NTPNodeSetting("projection_blend", ST.FLOAT), - ], - - 'ShaderNodeTexMagic' : [ - NTPNodeSetting("turbulence_depth", ST.INT), - ], - - 'ShaderNodeTexMusgrave' : [ - NTPNodeSetting("musgrave_dimensions", ST.ENUM, max_version=(4, 1, 0)), - NTPNodeSetting("musgrave_type", ST.ENUM, max_version=(4, 1, 0)), - ], - - 'ShaderNodeTexNoise' : [ - NTPNodeSetting("noise_dimensions", ST.ENUM), - NTPNodeSetting("noise_type", ST.ENUM, min_version=(4, 1, 0)), - NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), - ], - - 'ShaderNodeTexPointDensity' : [ - NTPNodeSetting("interpolation", ST.ENUM), - NTPNodeSetting("object", ST.OBJECT), - NTPNodeSetting("particle_color_source", ST.ENUM), - NTPNodeSetting("particle_system", ST.PARTICLE_SYSTEM), - NTPNodeSetting("point_source", ST.ENUM), - NTPNodeSetting("radius", ST.FLOAT), - NTPNodeSetting("resolution", ST.INT), - NTPNodeSetting("space", ST.ENUM), - NTPNodeSetting("vertex_attribute_name", ST.STRING), - NTPNodeSetting("vertex_color_source", ST.ENUM), - ], - - 'ShaderNodeTexSky' : [ - NTPNodeSetting("air_density", ST.FLOAT), - NTPNodeSetting("altitude", ST.FLOAT), - NTPNodeSetting("dust_density", ST.FLOAT), - NTPNodeSetting("ground_albedo", ST.FLOAT), - NTPNodeSetting("ozone_density", ST.FLOAT), - NTPNodeSetting("sky_type", ST.ENUM), - NTPNodeSetting("sun_direction", ST.VEC3), - NTPNodeSetting("sun_disc", ST.BOOL), - NTPNodeSetting("sun_elevation", ST.FLOAT), - NTPNodeSetting("sun_intensity", ST.FLOAT), - NTPNodeSetting("sun_rotation", ST.FLOAT), - NTPNodeSetting("sun_size", ST.FLOAT), - NTPNodeSetting("turbidity", ST.FLOAT), - ], - - 'ShaderNodeTexVoronoi' : [ - NTPNodeSetting("distance", ST.ENUM), - NTPNodeSetting("feature", ST.ENUM), - NTPNodeSetting("normalize", ST.BOOL, min_version=(4, 0, 0)), - NTPNodeSetting("voronoi_dimensions", ST.ENUM), - ], - - 'ShaderNodeTexWave' : [ - NTPNodeSetting("bands_direction", ST.ENUM), - NTPNodeSetting("rings_direction", ST.ENUM), - NTPNodeSetting("wave_profile", ST.ENUM), - NTPNodeSetting("wave_type", ST.ENUM), - ], - - 'ShaderNodeTexWhiteNoise' : [ - NTPNodeSetting("noise_dimensions", ST.ENUM), - ], - - 'ShaderNodeUVAlongStroke' : [ - NTPNodeSetting("use_tips", ST.BOOL), - ], - - 'ShaderNodeUVMap' : [ - NTPNodeSetting("from_instancer", ST.BOOL), - NTPNodeSetting("uv_map", ST.STRING), - ], - - 'ShaderNodeValToRGB' : [ - NTPNodeSetting("color_ramp", ST.COLOR_RAMP), - ], - - 'ShaderNodeValue' : [], - - 'ShaderNodeVectorCurve' : [ - NTPNodeSetting("mapping", ST.CURVE_MAPPING), - ], - - 'ShaderNodeVectorDisplacement' : [ - NTPNodeSetting("space", ST.ENUM), - ], - - 'ShaderNodeVectorMath' : [ - NTPNodeSetting("operation", ST.ENUM), - ], - - 'ShaderNodeVectorRotate' : [ - NTPNodeSetting("invert", ST.BOOL), - NTPNodeSetting("rotation_type", ST.ENUM), - ], - - 'ShaderNodeVectorTransform' : [ - NTPNodeSetting("convert_from", ST.ENUM), - NTPNodeSetting("convert_to", ST.ENUM), - NTPNodeSetting("vector_type", ST.ENUM), - ], - - 'ShaderNodeVertexColor' : [ - NTPNodeSetting("layer_name", ST.STRING), - ], - - 'ShaderNodeVolumeAbsorption' : [], - - 'ShaderNodeVolumeInfo' : [], - - 'ShaderNodeVolumePrincipled' : [], - - 'ShaderNodeVolumeScatter' : [], - - 'ShaderNodeWavelength' : [], - - 'ShaderNodeWireframe' : [ - NTPNodeSetting("use_pixel_size", ST.BOOL), - ], +from enum import Enum, auto +from typing import NamedTuple + +class ST(Enum): + """ + Settings Types + """ + BOOL = auto() + COLOR = auto() + ENUM = auto() + ENUM_SET = auto() + FLOAT = auto() + INT = auto() + STRING = auto() + VEC1 = auto() + VEC2 = auto() + VEC3 = auto() + VEC4 = auto() + BAKE_ITEMS = auto() + COLOR_RAMP = auto() + CURVE_MAPPING = auto() + ENUM_DEFINITION = auto() + INDEX_SWITCH_ITEMS = auto() + NODE_TREE = auto() + REPEAT_OUTPUT_ITEMS = auto() + SIM_OUTPUT_ITEMS = auto() + IMAGE = auto() + IMAGE_USER = auto() + CAPTURE_ATTRIBUTE_ITEMS = auto() + CRYPTOMATTE_ENTRIES = auto() + ENUM_ITEM = auto() + EULER = auto() + FILE_SLOTS = auto() + FONT = auto() + IMAGE_FORMAT_SETTINGS = auto() + LAYER_SLOTS = auto() + MASK = auto() + MATERIAL = auto() + MENU_SWITCH_ITEMS = auto() + MOVIE_CLIP = auto() + OBJECT = auto() + PARTICLE_SYSTEM = auto() + SCENE = auto() + TEXT = auto() + TEXTURE = auto() + +class NTPNodeSetting(NamedTuple): + name_: str + st_: ST + min_version_: tuple = (3, 0, 0) + max_version_: tuple = (4, 3, 0) + +class NodeInfo(NamedTuple): + attributes_: list[NTPNodeSetting] + min_version_: tuple = (3, 0, 0) + max_version_: tuple = (4, 3, 0) + +node_settings : dict[str, NodeInfo] = { + 'CompositorNodeAlphaOver' : NodeInfo( + [ + NTPNodeSetting("premul", ST.FLOAT), + NTPNodeSetting("use_premultiply", ST.BOOL), + ] + ), + + 'CompositorNodeAntiAliasing' : NodeInfo( + [ + NTPNodeSetting("contrast_limit", ST.FLOAT), + NTPNodeSetting("corner_rounding", ST.FLOAT), + NTPNodeSetting("threshold", ST.FLOAT), + ] + ), + + 'CompositorNodeBilateralblur' : NodeInfo( + [ + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("sigma_color", ST.FLOAT), + NTPNodeSetting("sigma_space", ST.FLOAT), + ] + ), + + 'CompositorNodeBlur' : NodeInfo( + [ + NTPNodeSetting("aspect_correction", ST.ENUM), + NTPNodeSetting("factor", ST.FLOAT), + NTPNodeSetting("factor_x", ST.FLOAT), + NTPNodeSetting("factor_y", ST.FLOAT), + NTPNodeSetting("filter_type", ST.ENUM), + NTPNodeSetting("size_x", ST.INT), + NTPNodeSetting("size_y", ST.INT), + NTPNodeSetting("use_bokeh", ST.BOOL), + NTPNodeSetting("use_extended_bounds", ST.BOOL), + NTPNodeSetting("use_gamma_correction", ST.BOOL), + NTPNodeSetting("use_relative", ST.BOOL), + NTPNodeSetting("use_variable_size", ST.BOOL), + ] + ), + + 'CompositorNodeBokehBlur' : NodeInfo( + [ + NTPNodeSetting("blur_max", ST.FLOAT), + NTPNodeSetting("use_extended_bounds", ST.BOOL), + NTPNodeSetting("use_variable_size", ST.BOOL), + ] + ), + + 'CompositorNodeBokehImage' : NodeInfo( + [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("catadioptric", ST.FLOAT), + NTPNodeSetting("flaps", ST.INT), + NTPNodeSetting("rounding", ST.FLOAT), + NTPNodeSetting("shift", ST.FLOAT), + ] + ), + + 'CompositorNodeBoxMask' : NodeInfo( + [ + NTPNodeSetting("height", ST.FLOAT, max_version_=(4, 2, 0)), + NTPNodeSetting("mask_height", ST.FLOAT, min_version_=(4, 2, 0)), + NTPNodeSetting("mask_type", ST.ENUM), + NTPNodeSetting("mask_width", ST.FLOAT, min_version_=(4, 2, 0)), + NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("width", ST.FLOAT, max_version_=(4, 2, 0)), + NTPNodeSetting("x", ST.FLOAT), + NTPNodeSetting("y", ST.FLOAT), + ] + ), + + 'CompositorNodeBrightContrast' : NodeInfo( + [ + NTPNodeSetting("use_premultiply", ST.BOOL), + ] + ), + + 'CompositorNodeChannelMatte' : NodeInfo( + [ + NTPNodeSetting("color_space", ST.ENUM), + NTPNodeSetting("limit_channel", ST.ENUM), + NTPNodeSetting("limit_max", ST.FLOAT), + NTPNodeSetting("limit_method", ST.ENUM), + NTPNodeSetting("limit_min", ST.FLOAT), + NTPNodeSetting("matte_channel", ST.ENUM), + ] + ), + + 'CompositorNodeChromaMatte' : NodeInfo( + [ + NTPNodeSetting("gain", ST.FLOAT), + NTPNodeSetting("lift", ST.FLOAT), + NTPNodeSetting("shadow_adjust", ST.FLOAT), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT), + ] + ), + + 'CompositorNodeColorBalance' : NodeInfo( + [ + NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("gain", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("gain", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("gamma", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("lift", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("offset", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("offset_basis", ST.FLOAT), + NTPNodeSetting("power", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("slope", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("slope", ST.COLOR, min_version_=(3, 5, 0)), + ] + ), + + 'CompositorNodeColorCorrection' : NodeInfo( + [ + NTPNodeSetting("blue", ST.BOOL), + NTPNodeSetting("green", ST.BOOL), + NTPNodeSetting("highlights_contrast", ST.FLOAT), + NTPNodeSetting("highlights_gain", ST.FLOAT), + NTPNodeSetting("highlights_gamma", ST.FLOAT), + NTPNodeSetting("highlights_lift", ST.FLOAT), + NTPNodeSetting("highlights_saturation", ST.FLOAT), + NTPNodeSetting("master_contrast", ST.FLOAT), + NTPNodeSetting("master_gain", ST.FLOAT), + NTPNodeSetting("master_gamma", ST.FLOAT), + NTPNodeSetting("master_lift", ST.FLOAT), + NTPNodeSetting("master_saturation", ST.FLOAT), + NTPNodeSetting("midtones_contrast", ST.FLOAT), + NTPNodeSetting("midtones_end", ST.FLOAT), + NTPNodeSetting("midtones_gain", ST.FLOAT), + NTPNodeSetting("midtones_gamma", ST.FLOAT), + NTPNodeSetting("midtones_lift", ST.FLOAT), + NTPNodeSetting("midtones_saturation", ST.FLOAT), + NTPNodeSetting("midtones_start", ST.FLOAT), + NTPNodeSetting("red", ST.BOOL), + NTPNodeSetting("shadows_contrast", ST.FLOAT), + NTPNodeSetting("shadows_gain", ST.FLOAT), + NTPNodeSetting("shadows_gamma", ST.FLOAT), + NTPNodeSetting("shadows_lift", ST.FLOAT), + NTPNodeSetting("shadows_saturation", ST.FLOAT), + ] + ), + + 'CompositorNodeColorMatte' : NodeInfo( + [ + NTPNodeSetting("color_hue", ST.FLOAT), + NTPNodeSetting("color_saturation", ST.FLOAT), + NTPNodeSetting("color_value", ST.FLOAT), + ] + ), + + 'CompositorNodeColorSpill' : NodeInfo( + [ + NTPNodeSetting("channel", ST.ENUM), + NTPNodeSetting("limit_channel", ST.ENUM), + NTPNodeSetting("limit_method", ST.ENUM), + NTPNodeSetting("ratio", ST.FLOAT), + NTPNodeSetting("unspill_blue", ST.FLOAT), + NTPNodeSetting("unspill_green", ST.FLOAT), + NTPNodeSetting("unspill_red", ST.FLOAT), + NTPNodeSetting("use_unspill", ST.BOOL), + ] + ), + + 'CompositorNodeCombHSVA' : NodeInfo( + [] + ), + + 'CompositorNodeCombRGBA' : NodeInfo( + [] + ), + + 'CompositorNodeCombYCCA' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'CompositorNodeCombYUVA' : NodeInfo( + [] + ), + + 'CompositorNodeCombineColor' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("ycc_mode", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'CompositorNodeCombineXYZ' : NodeInfo( + [], + min_version_ = (3, 2, 0) + ), + + 'CompositorNodeComposite' : NodeInfo( + [ + NTPNodeSetting("use_alpha", ST.BOOL), + ] + ), + + 'CompositorNodeConvertColorSpace' : NodeInfo( + [ + NTPNodeSetting("from_color_space", ST.ENUM), + NTPNodeSetting("to_color_space", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'CompositorNodeCornerPin' : NodeInfo( + [] + ), + + 'CompositorNodeCrop' : NodeInfo( + [ + NTPNodeSetting("max_x", ST.INT), + NTPNodeSetting("max_y", ST.INT), + NTPNodeSetting("min_x", ST.INT), + NTPNodeSetting("min_y", ST.INT), + NTPNodeSetting("rel_max_x", ST.FLOAT), + NTPNodeSetting("rel_max_y", ST.FLOAT), + NTPNodeSetting("rel_min_x", ST.FLOAT), + NTPNodeSetting("rel_min_y", ST.FLOAT), + NTPNodeSetting("relative", ST.BOOL), + NTPNodeSetting("use_crop_size", ST.BOOL), + ] + ), + + 'CompositorNodeCryptomatte' : NodeInfo( + [ + NTPNodeSetting("add", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("add", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("matte_id", ST.STRING), + NTPNodeSetting("remove", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("remove", ST.COLOR, min_version_=(3, 5, 0)), + ] + ), + + 'CompositorNodeCryptomatteV2' : NodeInfo( + [ + NTPNodeSetting("add", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("add", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("entries", ST.CRYPTOMATTE_ENTRIES), + NTPNodeSetting("frame_duration", ST.INT), + NTPNodeSetting("frame_offset", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("layer_name", ST.ENUM), + NTPNodeSetting("matte_id", ST.STRING), + NTPNodeSetting("remove", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("remove", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("scene", ST.SCENE), + NTPNodeSetting("source", ST.ENUM), + NTPNodeSetting("use_auto_refresh", ST.BOOL), + NTPNodeSetting("use_cyclic", ST.BOOL), + NTPNodeSetting("view", ST.ENUM), + ] + ), + + 'CompositorNodeCurveRGB' : NodeInfo( + [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ] + ), + + 'CompositorNodeCurveVec' : NodeInfo( + [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ] + ), + + 'CompositorNodeCustomGroup' : NodeInfo( + [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ] + ), + + 'CompositorNodeDBlur' : NodeInfo( + [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("center_x", ST.FLOAT), + NTPNodeSetting("center_y", ST.FLOAT), + NTPNodeSetting("distance", ST.FLOAT), + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("spin", ST.FLOAT), + NTPNodeSetting("use_wrap", ST.BOOL, max_version_=(3, 5, 0)), + NTPNodeSetting("zoom", ST.FLOAT), + ] + ), + + 'CompositorNodeDefocus' : NodeInfo( + [ + NTPNodeSetting("angle", ST.FLOAT), + NTPNodeSetting("blur_max", ST.FLOAT), + NTPNodeSetting("bokeh", ST.ENUM), + NTPNodeSetting("f_stop", ST.FLOAT), + NTPNodeSetting("scene", ST.SCENE), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("use_gamma_correction", ST.BOOL), + NTPNodeSetting("use_preview", ST.BOOL), + NTPNodeSetting("use_zbuffer", ST.BOOL), + NTPNodeSetting("z_scale", ST.FLOAT), + ] + ), + + 'CompositorNodeDenoise' : NodeInfo( + [ + NTPNodeSetting("prefilter", ST.ENUM), + NTPNodeSetting("use_hdr", ST.BOOL), + ] + ), + + 'CompositorNodeDespeckle' : NodeInfo( + [ + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("threshold_neighbor", ST.FLOAT), + ] + ), + + 'CompositorNodeDiffMatte' : NodeInfo( + [ + NTPNodeSetting("falloff", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT), + ] + ), + + 'CompositorNodeDilateErode' : NodeInfo( + [ + NTPNodeSetting("distance", ST.INT), + NTPNodeSetting("edge", ST.FLOAT), + NTPNodeSetting("falloff", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'CompositorNodeDisplace' : NodeInfo( + [] + ), + + 'CompositorNodeDistanceMatte' : NodeInfo( + [ + NTPNodeSetting("channel", ST.ENUM), + NTPNodeSetting("falloff", ST.FLOAT), + NTPNodeSetting("tolerance", ST.FLOAT), + ] + ), + + 'CompositorNodeDoubleEdgeMask' : NodeInfo( + [ + NTPNodeSetting("edge_mode", ST.ENUM), + NTPNodeSetting("inner_mode", ST.ENUM), + ] + ), + + 'CompositorNodeEllipseMask' : NodeInfo( + [ + NTPNodeSetting("height", ST.FLOAT, max_version_=(4, 2, 0)), + NTPNodeSetting("mask_height", ST.FLOAT, min_version_=(4, 2, 0)), + NTPNodeSetting("mask_type", ST.ENUM), + NTPNodeSetting("mask_width", ST.FLOAT, min_version_=(4, 2, 0)), + NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("width", ST.FLOAT, max_version_=(4, 2, 0)), + NTPNodeSetting("x", ST.FLOAT), + NTPNodeSetting("y", ST.FLOAT), + ] + ), + + 'CompositorNodeExposure' : NodeInfo( + [] + ), + + 'CompositorNodeFilter' : NodeInfo( + [ + NTPNodeSetting("filter_type", ST.ENUM), + ] + ), + + 'CompositorNodeFlip' : NodeInfo( + [ + NTPNodeSetting("axis", ST.ENUM), + ] + ), + + 'CompositorNodeGamma' : NodeInfo( + [] + ), + + 'CompositorNodeGlare' : NodeInfo( + [ + NTPNodeSetting("angle_offset", ST.FLOAT), + NTPNodeSetting("color_modulation", ST.FLOAT), + NTPNodeSetting("fade", ST.FLOAT), + NTPNodeSetting("glare_type", ST.ENUM), + NTPNodeSetting("iterations", ST.INT), + NTPNodeSetting("mix", ST.FLOAT), + NTPNodeSetting("quality", ST.ENUM), + NTPNodeSetting("size", ST.INT), + NTPNodeSetting("streaks", ST.INT), + NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("use_rotate_45", ST.BOOL), + ] + ), + + 'CompositorNodeGroup' : NodeInfo( + [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ] + ), + + 'CompositorNodeHueCorrect' : NodeInfo( + [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ] + ), + + 'CompositorNodeHueSat' : NodeInfo( + [] + ), + + 'CompositorNodeIDMask' : NodeInfo( + [ + NTPNodeSetting("index", ST.INT), + NTPNodeSetting("use_antialiasing", ST.BOOL), + ] + ), + + 'CompositorNodeImage' : NodeInfo( + [ + NTPNodeSetting("frame_duration", ST.INT), + NTPNodeSetting("frame_offset", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("use_auto_refresh", ST.BOOL), + NTPNodeSetting("use_cyclic", ST.BOOL), + NTPNodeSetting("use_straight_alpha_output", ST.BOOL), + NTPNodeSetting("view", ST.ENUM), + ] + ), + + 'CompositorNodeInpaint' : NodeInfo( + [ + NTPNodeSetting("distance", ST.INT), + ] + ), + + 'CompositorNodeInvert' : NodeInfo( + [ + NTPNodeSetting("invert_alpha", ST.BOOL), + NTPNodeSetting("invert_rgb", ST.BOOL), + ] + ), + + 'CompositorNodeKeying' : NodeInfo( + [ + NTPNodeSetting("blur_post", ST.INT), + NTPNodeSetting("blur_pre", ST.INT), + NTPNodeSetting("clip_black", ST.FLOAT), + NTPNodeSetting("clip_white", ST.FLOAT), + NTPNodeSetting("despill_balance", ST.FLOAT), + NTPNodeSetting("despill_factor", ST.FLOAT), + NTPNodeSetting("dilate_distance", ST.INT), + NTPNodeSetting("edge_kernel_radius", ST.INT), + NTPNodeSetting("edge_kernel_tolerance", ST.FLOAT), + NTPNodeSetting("feather_distance", ST.INT), + NTPNodeSetting("feather_falloff", ST.ENUM), + NTPNodeSetting("screen_balance", ST.FLOAT), + ] + ), + + 'CompositorNodeKeyingScreen' : NodeInfo( + [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("smoothness", ST.FLOAT, min_version_=(4, 1, 0)), + NTPNodeSetting("tracking_object", ST.STRING), + ] + ), + + 'CompositorNodeKuwahara' : NodeInfo( + [ + NTPNodeSetting("eccentricity", ST.FLOAT), + NTPNodeSetting("sharpness", ST.FLOAT), + NTPNodeSetting("size", ST.INT, max_version_=(4, 1, 0)), + NTPNodeSetting("uniformity", ST.INT), + NTPNodeSetting("use_high_precision", ST.BOOL, min_version_=(4, 1, 0)), + NTPNodeSetting("variation", ST.ENUM), + ], + min_version_ = (4, 0, 0) + ), + + 'CompositorNodeLensdist' : NodeInfo( + [ + NTPNodeSetting("use_fit", ST.BOOL), + NTPNodeSetting("use_jitter", ST.BOOL), + NTPNodeSetting("use_projector", ST.BOOL), + ] + ), + + 'CompositorNodeLevels' : NodeInfo( + [ + NTPNodeSetting("channel", ST.ENUM), + ] + ), + + 'CompositorNodeLumaMatte' : NodeInfo( + [ + NTPNodeSetting("limit_max", ST.FLOAT), + NTPNodeSetting("limit_min", ST.FLOAT), + ] + ), + + 'CompositorNodeMapRange' : NodeInfo( + [ + NTPNodeSetting("use_clamp", ST.BOOL), + ] + ), + + 'CompositorNodeMapUV' : NodeInfo( + [ + NTPNodeSetting("alpha", ST.INT), + NTPNodeSetting("filter_type", ST.ENUM, min_version_=(4, 1, 0)), + ] + ), + + 'CompositorNodeMapValue' : NodeInfo( + [ + NTPNodeSetting("max", ST.VEC1), + NTPNodeSetting("min", ST.VEC1), + NTPNodeSetting("offset", ST.VEC1), + NTPNodeSetting("size", ST.VEC1), + NTPNodeSetting("use_max", ST.BOOL), + NTPNodeSetting("use_min", ST.BOOL), + ] + ), + + 'CompositorNodeMask' : NodeInfo( + [ + NTPNodeSetting("mask", ST.MASK), + NTPNodeSetting("motion_blur_samples", ST.INT), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("size_source", ST.ENUM), + NTPNodeSetting("size_x", ST.INT), + NTPNodeSetting("size_y", ST.INT), + NTPNodeSetting("use_feather", ST.BOOL), + NTPNodeSetting("use_motion_blur", ST.BOOL), + ] + ), + + 'CompositorNodeMath' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("use_clamp", ST.BOOL), + ] + ), + + 'CompositorNodeMixRGB' : NodeInfo( + [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL), + ] + ), + + 'CompositorNodeMovieClip' : NodeInfo( + [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + ] + ), + + 'CompositorNodeMovieDistortion' : NodeInfo( + [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("distortion_type", ST.ENUM), + ] + ), + + 'CompositorNodeNormal' : NodeInfo( + [] + ), + + 'CompositorNodeNormalize' : NodeInfo( + [] + ), + + 'CompositorNodeOutputFile' : NodeInfo( + [ + NTPNodeSetting("active_input_index", ST.INT), + NTPNodeSetting("base_path", ST.STRING), + NTPNodeSetting("file_slots", ST.FILE_SLOTS), + NTPNodeSetting("format", ST.IMAGE_FORMAT_SETTINGS), + NTPNodeSetting("layer_slots", ST.LAYER_SLOTS), + ] + ), + + 'CompositorNodePixelate' : NodeInfo( + [ + NTPNodeSetting("pixel_size", ST.INT, min_version_=(4, 1, 0)), + ] + ), + + 'CompositorNodePlaneTrackDeform' : NodeInfo( + [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("motion_blur_samples", ST.INT), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("plane_track_name", ST.STRING), + NTPNodeSetting("tracking_object", ST.STRING), + NTPNodeSetting("use_motion_blur", ST.BOOL), + ] + ), + + 'CompositorNodePosterize' : NodeInfo( + [] + ), + + 'CompositorNodePremulKey' : NodeInfo( + [ + NTPNodeSetting("mapping", ST.ENUM), + ] + ), + + 'CompositorNodeRGB' : NodeInfo( + [] + ), + + 'CompositorNodeRGBToBW' : NodeInfo( + [] + ), + + 'CompositorNodeRLayers' : NodeInfo( + [ + NTPNodeSetting("layer", ST.ENUM), + NTPNodeSetting("scene", ST.SCENE), + ] + ), + + 'CompositorNodeRotate' : NodeInfo( + [ + NTPNodeSetting("filter_type", ST.ENUM), + ] + ), + + 'CompositorNodeScale' : NodeInfo( + [ + NTPNodeSetting("frame_method", ST.ENUM), + NTPNodeSetting("offset_x", ST.FLOAT), + NTPNodeSetting("offset_y", ST.FLOAT), + NTPNodeSetting("space", ST.ENUM), + ] + ), + + 'CompositorNodeSceneTime' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'CompositorNodeSepHSVA' : NodeInfo( + [] + ), + + 'CompositorNodeSepRGBA' : NodeInfo( + [] + ), + + 'CompositorNodeSepYCCA' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'CompositorNodeSepYUVA' : NodeInfo( + [] + ), + + 'CompositorNodeSeparateColor' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("ycc_mode", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'CompositorNodeSeparateXYZ' : NodeInfo( + [], + min_version_ = (3, 2, 0) + ), + + 'CompositorNodeSetAlpha' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'CompositorNodeSplit' : NodeInfo( + [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("factor", ST.INT), + ], + min_version_ = (4, 1, 0) + ), + + 'CompositorNodeSplitViewer' : NodeInfo( + [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("factor", ST.INT), + ], + max_version_ = (4, 1, 0) + ), + + 'CompositorNodeStabilize' : NodeInfo( + [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("filter_type", ST.ENUM), + NTPNodeSetting("invert", ST.BOOL), + ] + ), + + 'CompositorNodeSunBeams' : NodeInfo( + [ + NTPNodeSetting("ray_length", ST.FLOAT), + NTPNodeSetting("source", ST.VEC2), + ] + ), + + 'CompositorNodeSwitch' : NodeInfo( + [ + NTPNodeSetting("check", ST.BOOL), + ] + ), + + 'CompositorNodeSwitchView' : NodeInfo( + [] + ), + + 'CompositorNodeTexture' : NodeInfo( + [ + NTPNodeSetting("node_output", ST.INT), + NTPNodeSetting("texture", ST.TEXTURE), + ] + ), + + 'CompositorNodeTime' : NodeInfo( + [ + NTPNodeSetting("curve", ST.CURVE_MAPPING), + NTPNodeSetting("frame_end", ST.INT), + NTPNodeSetting("frame_start", ST.INT), + ] + ), + + 'CompositorNodeTonemap' : NodeInfo( + [ + NTPNodeSetting("adaptation", ST.FLOAT), + NTPNodeSetting("contrast", ST.FLOAT), + NTPNodeSetting("correction", ST.FLOAT), + NTPNodeSetting("gamma", ST.FLOAT), + NTPNodeSetting("intensity", ST.FLOAT), + NTPNodeSetting("key", ST.FLOAT), + NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("tonemap_type", ST.ENUM), + ] + ), + + 'CompositorNodeTrackPos' : NodeInfo( + [ + NTPNodeSetting("clip", ST.MOVIE_CLIP), + NTPNodeSetting("frame_relative", ST.INT), + NTPNodeSetting("position", ST.ENUM), + NTPNodeSetting("track_name", ST.STRING), + NTPNodeSetting("tracking_object", ST.STRING), + ] + ), + + 'CompositorNodeTransform' : NodeInfo( + [ + NTPNodeSetting("filter_type", ST.ENUM), + ] + ), + + 'CompositorNodeTranslate' : NodeInfo( + [ + NTPNodeSetting("interpolation", ST.ENUM, min_version_=(4, 2, 0)), + NTPNodeSetting("use_relative", ST.BOOL), + NTPNodeSetting("wrap_axis", ST.ENUM), + ] + ), + + 'CompositorNodeValToRGB' : NodeInfo( + [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP), + ] + ), + + 'CompositorNodeValue' : NodeInfo( + [] + ), + + 'CompositorNodeVecBlur' : NodeInfo( + [ + NTPNodeSetting("factor", ST.FLOAT), + NTPNodeSetting("samples", ST.INT), + NTPNodeSetting("speed_max", ST.INT), + NTPNodeSetting("speed_min", ST.INT), + NTPNodeSetting("use_curved", ST.BOOL), + ] + ), + + 'CompositorNodeViewer' : NodeInfo( + [ + NTPNodeSetting("center_x", ST.FLOAT, max_version_=(4, 2, 0)), + NTPNodeSetting("center_y", ST.FLOAT, max_version_=(4, 2, 0)), + NTPNodeSetting("tile_order", ST.ENUM, max_version_=(4, 2, 0)), + NTPNodeSetting("use_alpha", ST.BOOL), + ] + ), + + 'CompositorNodeZcombine' : NodeInfo( + [ + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_antialias_z", ST.BOOL), + ] + ), + + 'FunctionNodeAlignEulerToVector' : NodeInfo( + [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("pivot_axis", ST.ENUM), + ] + ), + + 'FunctionNodeAlignRotationToVector' : NodeInfo( + [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("pivot_axis", ST.ENUM), + ], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeAxesToRotation' : NodeInfo( + [ + NTPNodeSetting("primary_axis", ST.ENUM), + NTPNodeSetting("secondary_axis", ST.ENUM), + ], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeAxisAngleToRotation' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeBooleanMath' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + ] + ), + + 'FunctionNodeCombineColor' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'FunctionNodeCombineMatrix' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeCombineTransform' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeCompare' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("operation", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'FunctionNodeCompareFloats' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + ], + max_version_ = (3, 1, 0) + ), + + 'FunctionNodeEulerToRotation' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeFloatToInt' : NodeInfo( + [ + NTPNodeSetting("rounding_mode", ST.ENUM), + ] + ), + + 'FunctionNodeInputBool' : NodeInfo( + [ + NTPNodeSetting("boolean", ST.BOOL), + ] + ), + + 'FunctionNodeInputColor' : NodeInfo( + [ + NTPNodeSetting("color", ST.VEC4, max_version_=(4, 2, 0)), + NTPNodeSetting("value", ST.VEC4, min_version_=(4, 2, 0)), + ] + ), + + 'FunctionNodeInputInt' : NodeInfo( + [ + NTPNodeSetting("integer", ST.INT), + ] + ), + + 'FunctionNodeInputRotation' : NodeInfo( + [ + NTPNodeSetting("rotation_euler", ST.EULER), + ], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeInputSpecialCharacters' : NodeInfo( + [] + ), + + 'FunctionNodeInputString' : NodeInfo( + [ + NTPNodeSetting("string", ST.STRING), + ] + ), + + 'FunctionNodeInputVector' : NodeInfo( + [ + NTPNodeSetting("vector", ST.VEC3), + ] + ), + + 'FunctionNodeInvertMatrix' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeInvertRotation' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeLegacyRandomFloat' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'FunctionNodeMatrixMultiply' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeProjectPoint' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeQuaternionToRotation' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeRandomValue' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ] + ), + + 'FunctionNodeReplaceString' : NodeInfo( + [] + ), + + 'FunctionNodeRotateEuler' : NodeInfo( + [ + NTPNodeSetting("rotation_type", ST.ENUM, min_version_=(4, 1, 0)), + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("type", ST.ENUM, max_version_=(4, 1, 0)), + ] + ), + + 'FunctionNodeRotateRotation' : NodeInfo( + [ + NTPNodeSetting("rotation_space", ST.ENUM), + ], + min_version_ = (4, 1, 0) + ), + + 'FunctionNodeRotateVector' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeRotationToAxisAngle' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeRotationToEuler' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeRotationToQuaternion' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'FunctionNodeSeparateColor' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'FunctionNodeSeparateMatrix' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeSeparateTransform' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeSliceString' : NodeInfo( + [] + ), + + 'FunctionNodeStringLength' : NodeInfo( + [] + ), + + 'FunctionNodeTransformDirection' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeTransformPoint' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeTransposeMatrix' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'FunctionNodeValueToString' : NodeInfo( + [] + ), + + 'GeometryNodeAccumulateField' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeAttributeDomainSize' : NodeInfo( + [ + NTPNodeSetting("component", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeAttributeRemove' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeAttributeStatistic' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ] + ), + + 'GeometryNodeAttributeTransfer' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("mapping", ST.ENUM), + ], + max_version_ = (3, 4, 0) + ), + + 'GeometryNodeBake' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT), + NTPNodeSetting("bake_items", ST.BAKE_ITEMS), + ], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeBlurAttribute' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (3, 5, 0) + ), + + 'GeometryNodeBoundBox' : NodeInfo( + [] + ), + + 'GeometryNodeCaptureAttribute' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT, min_version_=(4, 2, 0)), + NTPNodeSetting("capture_items", ST.CAPTURE_ATTRIBUTE_ITEMS, min_version_=(4, 2, 0)), + NTPNodeSetting("data_type", ST.ENUM, max_version_=(4, 2, 0)), + NTPNodeSetting("domain", ST.ENUM), + ] + ), + + 'GeometryNodeCollectionInfo' : NodeInfo( + [ + NTPNodeSetting("transform_space", ST.ENUM), + ] + ), + + 'GeometryNodeConvexHull' : NodeInfo( + [] + ), + + 'GeometryNodeCornersOfEdge' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeCornersOfFace' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeCornersOfVertex' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeCurveArc' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeCurveEndpointSelection' : NodeInfo( + [] + ), + + 'GeometryNodeCurveHandleTypeSelection' : NodeInfo( + [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET), + ] + ), + + 'GeometryNodeCurveLength' : NodeInfo( + [] + ), + + 'GeometryNodeCurveOfPoint' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeCurveParameter' : NodeInfo( + [], + max_version_ = (3, 1, 0) + ), + + 'GeometryNodeCurvePrimitiveBezierSegment' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeCurvePrimitiveCircle' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeCurvePrimitiveLine' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeCurvePrimitiveQuadrilateral' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeCurveQuadraticBezier' : NodeInfo( + [] + ), + + 'GeometryNodeCurveSetHandles' : NodeInfo( + [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET), + ] + ), + + 'GeometryNodeCurveSpiral' : NodeInfo( + [] + ), + + 'GeometryNodeCurveSplineType' : NodeInfo( + [ + NTPNodeSetting("spline_type", ST.ENUM), + ] + ), + + 'GeometryNodeCurveStar' : NodeInfo( + [] + ), + + 'GeometryNodeCurveToMesh' : NodeInfo( + [] + ), + + 'GeometryNodeCurveToPoints' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeCustomGroup' : NodeInfo( + [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ] + ), + + 'GeometryNodeDeformCurvesOnSurface' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeDeleteGeometry' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeDistributePointsInGrid' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeDistributePointsInVolume' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeDistributePointsOnFaces' : NodeInfo( + [ + NTPNodeSetting("distribute_method", ST.ENUM), + NTPNodeSetting("use_legacy_normal", ST.BOOL, min_version_=(3, 5, 0)), + ] + ), + + 'GeometryNodeDualMesh' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeDuplicateElements' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (3, 2, 0) + ), + + 'GeometryNodeEdgePathsToCurves' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeEdgePathsToSelection' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeEdgesOfCorner' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeEdgesOfVertex' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeEdgesToFaceGroups' : NodeInfo( + [], + min_version_ = (3, 5, 0) + ), + + 'GeometryNodeExtrudeMesh' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeFaceOfCorner' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeFieldAtIndex' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeFieldOnDomain' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeFillCurve' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeFilletCurve' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeFlipFaces' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeGeometryToInstance' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeGetNamedGrid' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeGridToMesh' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeGroup' : NodeInfo( + [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ] + ), + + 'GeometryNodeImageInfo' : NodeInfo( + [], + min_version_ = (3, 5, 0) + ), + + 'GeometryNodeImageTexture' : NodeInfo( + [ + NTPNodeSetting("extension", ST.ENUM), + NTPNodeSetting("interpolation", ST.ENUM), + ] + ), + + 'GeometryNodeIndexOfNearest' : NodeInfo( + [], + min_version_ = (3, 6, 0) + ), + + 'GeometryNodeIndexSwitch' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("index_switch_items", ST.INDEX_SWITCH_ITEMS), + ], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeInputActiveCamera' : NodeInfo( + [], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeInputCurveHandlePositions' : NodeInfo( + [] + ), + + 'GeometryNodeInputCurveTilt' : NodeInfo( + [] + ), + + 'GeometryNodeInputEdgeSmooth' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeInputID' : NodeInfo( + [] + ), + + 'GeometryNodeInputImage' : NodeInfo( + [ + NTPNodeSetting("image", ST.IMAGE), + ], + min_version_ = (3, 5, 0) + ), + + 'GeometryNodeInputIndex' : NodeInfo( + [] + ), + + 'GeometryNodeInputInstanceRotation' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeInputInstanceScale' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeInputMaterial' : NodeInfo( + [ + NTPNodeSetting("material", ST.MATERIAL), + ] + ), + + 'GeometryNodeInputMaterialIndex' : NodeInfo( + [] + ), + + 'GeometryNodeInputMeshEdgeAngle' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputMeshEdgeNeighbors' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputMeshEdgeVertices' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputMeshFaceArea' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputMeshFaceIsPlanar' : NodeInfo( + [], + min_version_ = (3, 2, 0) + ), + + 'GeometryNodeInputMeshFaceNeighbors' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputMeshIsland' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputMeshVertexNeighbors' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputNamedAttribute' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (3, 2, 0) + ), + + 'GeometryNodeInputNamedLayerSelection' : NodeInfo( + [], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeInputNormal' : NodeInfo( + [] + ), + + 'GeometryNodeInputPosition' : NodeInfo( + [] + ), + + 'GeometryNodeInputRadius' : NodeInfo( + [] + ), + + 'GeometryNodeInputSceneTime' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeInputShadeSmooth' : NodeInfo( + [] + ), + + 'GeometryNodeInputShortestEdgePaths' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeInputSignedDistance' : NodeInfo( + [], + min_version_ = (3, 6, 0), + max_version_ = (4, 1, 0) + ), + + 'GeometryNodeInputSplineCyclic' : NodeInfo( + [] + ), + + 'GeometryNodeInputSplineResolution' : NodeInfo( + [] + ), + + 'GeometryNodeInputTangent' : NodeInfo( + [] + ), + + 'GeometryNodeInstanceOnPoints' : NodeInfo( + [] + ), + + 'GeometryNodeInstanceTransform' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeInstancesToPoints' : NodeInfo( + [] + ), + + 'GeometryNodeInterpolateCurves' : NodeInfo( + [], + min_version_ = (3, 5, 0) + ), + + 'GeometryNodeIsViewport' : NodeInfo( + [] + ), + + 'GeometryNodeJoinGeometry' : NodeInfo( + [] + ), + + 'GeometryNodeLegacyAlignRotationToVector' : NodeInfo( + [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("input_type_factor", ST.ENUM), + NTPNodeSetting("input_type_vector", ST.ENUM), + NTPNodeSetting("pivot_axis", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeClamp' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("operation", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeColorRamp' : NodeInfo( + [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeCombineXYZ' : NodeInfo( + [ + NTPNodeSetting("input_type_x", ST.ENUM), + NTPNodeSetting("input_type_y", ST.ENUM), + NTPNodeSetting("input_type_z", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeCompare' : NodeInfo( + [ + NTPNodeSetting("input_type_a", ST.ENUM), + NTPNodeSetting("input_type_b", ST.ENUM), + NTPNodeSetting("operation", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeConvert' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeCurveMap' : NodeInfo( + [ + NTPNodeSetting("curve_rgb", ST.CURVE_MAPPING), + NTPNodeSetting("curve_vec", ST.CURVE_MAPPING), + NTPNodeSetting("data_type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeFill' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeMapRange' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("interpolation_type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeMath' : NodeInfo( + [ + NTPNodeSetting("input_type_a", ST.ENUM), + NTPNodeSetting("input_type_b", ST.ENUM), + NTPNodeSetting("input_type_c", ST.ENUM), + NTPNodeSetting("operation", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeMix' : NodeInfo( + [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("input_type_a", ST.ENUM), + NTPNodeSetting("input_type_b", ST.ENUM), + NTPNodeSetting("input_type_factor", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeProximity' : NodeInfo( + [ + NTPNodeSetting("target_geometry_element", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeRandomize' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("operation", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeSampleTexture' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeSeparateXYZ' : NodeInfo( + [ + NTPNodeSetting("input_type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeTransfer' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("mapping", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeVectorMath' : NodeInfo( + [ + NTPNodeSetting("input_type_a", ST.ENUM), + NTPNodeSetting("input_type_b", ST.ENUM), + NTPNodeSetting("input_type_c", ST.ENUM), + NTPNodeSetting("operation", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyAttributeVectorRotate' : NodeInfo( + [ + NTPNodeSetting("input_type_angle", ST.ENUM), + NTPNodeSetting("input_type_axis", ST.ENUM), + NTPNodeSetting("input_type_center", ST.ENUM), + NTPNodeSetting("input_type_rotation", ST.ENUM), + NTPNodeSetting("input_type_vector", ST.ENUM), + NTPNodeSetting("rotation_mode", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyCurveEndpoints' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyCurveReverse' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyCurveSelectHandles' : NodeInfo( + [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyCurveSetHandles' : NodeInfo( + [ + NTPNodeSetting("handle_type", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM_SET), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyCurveSplineType' : NodeInfo( + [ + NTPNodeSetting("spline_type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyCurveSubdivide' : NodeInfo( + [ + NTPNodeSetting("cuts_type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyCurveToPoints' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyDeleteGeometry' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyEdgeSplit' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyMaterialAssign' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyMeshToCurve' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyPointDistribute' : NodeInfo( + [ + NTPNodeSetting("distribute_method", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyPointInstance' : NodeInfo( + [ + NTPNodeSetting("instance_type", ST.ENUM), + NTPNodeSetting("use_whole_collection", ST.BOOL), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyPointScale' : NodeInfo( + [ + NTPNodeSetting("input_type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyPointSeparate' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyPointTranslate' : NodeInfo( + [ + NTPNodeSetting("input_type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyPointsToVolume' : NodeInfo( + [ + NTPNodeSetting("input_type_radius", ST.ENUM), + NTPNodeSetting("resolution_mode", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyRaycast' : NodeInfo( + [ + NTPNodeSetting("input_type_ray_direction", ST.ENUM), + NTPNodeSetting("input_type_ray_length", ST.ENUM), + NTPNodeSetting("mapping", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyRotatePoints' : NodeInfo( + [ + NTPNodeSetting("input_type_angle", ST.ENUM), + NTPNodeSetting("input_type_axis", ST.ENUM), + NTPNodeSetting("input_type_rotation", ST.ENUM), + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("type", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacySelectByMaterial' : NodeInfo( + [], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacySubdivisionSurface' : NodeInfo( + [ + NTPNodeSetting("boundary_smooth", ST.ENUM), + NTPNodeSetting("uv_smooth", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeLegacyVolumeToMesh' : NodeInfo( + [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ], + max_version_ = (3, 2, 0) + ), + + 'GeometryNodeMaterialSelection' : NodeInfo( + [] + ), + + 'GeometryNodeMeanFilterSDFVolume' : NodeInfo( + [], + min_version_ = (3, 6, 0), + max_version_ = (4, 1, 0) + ), + + 'GeometryNodeMenuSwitch' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT, min_version_=(4, 2, 0)), + NTPNodeSetting("active_item", ST.ENUM_ITEM, min_version_=(4, 2, 0)), + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("enum_definition", ST.ENUM_DEFINITION, max_version_=(4, 2, 0)), + NTPNodeSetting("enum_items", ST.MENU_SWITCH_ITEMS, min_version_=(4, 2, 0)), + ], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeMergeByDistance' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM, min_version_=(3, 2, 0)), + ], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeMeshBoolean' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("solver", ST.ENUM, min_version_=(4, 2, 0)), + ] + ), + + 'GeometryNodeMeshCircle' : NodeInfo( + [ + NTPNodeSetting("fill_type", ST.ENUM), + ] + ), + + 'GeometryNodeMeshCone' : NodeInfo( + [ + NTPNodeSetting("fill_type", ST.ENUM), + ] + ), + + 'GeometryNodeMeshCube' : NodeInfo( + [] + ), + + 'GeometryNodeMeshCylinder' : NodeInfo( + [ + NTPNodeSetting("fill_type", ST.ENUM), + ] + ), + + 'GeometryNodeMeshFaceSetBoundaries' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeMeshGrid' : NodeInfo( + [] + ), + + 'GeometryNodeMeshIcoSphere' : NodeInfo( + [] + ), + + 'GeometryNodeMeshLine' : NodeInfo( + [ + NTPNodeSetting("count_mode", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeMeshToCurve' : NodeInfo( + [] + ), + + 'GeometryNodeMeshToDensityGrid' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeMeshToPoints' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeMeshToSDFGrid' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeMeshToSDFVolume' : NodeInfo( + [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ], + min_version_ = (3, 6, 0), + max_version_ = (4, 1, 0) + ), + + 'GeometryNodeMeshToVolume' : NodeInfo( + [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeMeshUVSphere' : NodeInfo( + [] + ), + + 'GeometryNodeObjectInfo' : NodeInfo( + [ + NTPNodeSetting("transform_space", ST.ENUM), + ] + ), + + 'GeometryNodeOffsetCornerInFace' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeOffsetPointInCurve' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeOffsetSDFVolume' : NodeInfo( + [], + min_version_ = (3, 6, 0), + max_version_ = (4, 1, 0) + ), + + 'GeometryNodePoints' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodePointsOfCurve' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodePointsToCurves' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodePointsToSDFGrid' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodePointsToSDFVolume' : NodeInfo( + [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ], + min_version_ = (3, 6, 0), + max_version_ = (4, 1, 0) + ), + + 'GeometryNodePointsToVertices' : NodeInfo( + [] + ), + + 'GeometryNodePointsToVolume' : NodeInfo( + [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ] + ), + + 'GeometryNodeProximity' : NodeInfo( + [ + NTPNodeSetting("target_element", ST.ENUM), + ] + ), + + 'GeometryNodeRaycast' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("mapping", ST.ENUM), + ] + ), + + 'GeometryNodeRealizeInstances' : NodeInfo( + [ + NTPNodeSetting("legacy_behavior", ST.BOOL, min_version_=(3, 1, 0), max_version_=(4, 0, 0)), + ] + ), + + 'GeometryNodeRemoveAttribute' : NodeInfo( + [ + NTPNodeSetting("pattern_mode", ST.ENUM, min_version_=(4, 2, 0)), + ], + min_version_ = (3, 2, 0) + ), + + 'GeometryNodeRepeatInput' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeRepeatOutput' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT), + NTPNodeSetting("inspection_index", ST.INT), + NTPNodeSetting("repeat_items", ST.REPEAT_OUTPUT_ITEMS), + ], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeReplaceMaterial' : NodeInfo( + [] + ), + + 'GeometryNodeResampleCurve' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeReverseCurve' : NodeInfo( + [] + ), + + 'GeometryNodeRotateInstances' : NodeInfo( + [] + ), + + 'GeometryNodeSDFGridBoolean' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + ], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeSDFVolumeSphere' : NodeInfo( + [], + min_version_ = (3, 6, 0), + max_version_ = (4, 1, 0) + ), + + 'GeometryNodeSampleCurve' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM, min_version_=(3, 4, 0)), + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("use_all_curves", ST.BOOL, min_version_=(3, 4, 0)), + ] + ), + + 'GeometryNodeSampleGrid' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("interpolation_mode", ST.ENUM), + ], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeSampleGridIndex' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeSampleIndex' : NodeInfo( + [ + NTPNodeSetting("clamp", ST.BOOL), + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeSampleNearest' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeSampleNearestSurface' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeSampleUVSurface' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeSampleVolume' : NodeInfo( + [ + NTPNodeSetting("grid_type", ST.ENUM), + NTPNodeSetting("interpolation_mode", ST.ENUM), + ], + min_version_ = (3, 6, 0), + max_version_ = (4, 1, 0) + ), + + 'GeometryNodeScaleElements' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("scale_mode", ST.ENUM), + ], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeScaleInstances' : NodeInfo( + [] + ), + + 'GeometryNodeSelfObject' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeSeparateComponents' : NodeInfo( + [] + ), + + 'GeometryNodeSeparateGeometry' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + ] + ), + + 'GeometryNodeSetCurveHandlePositions' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeSetCurveNormal' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeSetCurveRadius' : NodeInfo( + [] + ), + + 'GeometryNodeSetCurveTilt' : NodeInfo( + [] + ), + + 'GeometryNodeSetID' : NodeInfo( + [] + ), + + 'GeometryNodeSetInstanceTransform' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeSetMaterial' : NodeInfo( + [] + ), + + 'GeometryNodeSetMaterialIndex' : NodeInfo( + [] + ), + + 'GeometryNodeSetPointRadius' : NodeInfo( + [] + ), + + 'GeometryNodeSetPosition' : NodeInfo( + [] + ), + + 'GeometryNodeSetShadeSmooth' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM, min_version_=(4, 0, 0)), + ] + ), + + 'GeometryNodeSetSplineCyclic' : NodeInfo( + [] + ), + + 'GeometryNodeSetSplineResolution' : NodeInfo( + [] + ), + + 'GeometryNodeSimulationInput' : NodeInfo( + [], + min_version_ = (3, 6, 0) + ), + + 'GeometryNodeSimulationOutput' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT), + NTPNodeSetting("state_items", ST.SIM_OUTPUT_ITEMS), + ], + min_version_ = (3, 6, 0) + ), + + 'GeometryNodeSortElements' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeSplineLength' : NodeInfo( + [] + ), + + 'GeometryNodeSplineParameter' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'GeometryNodeSplitEdges' : NodeInfo( + [] + ), + + 'GeometryNodeSplitToInstances' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeStoreNamedAttribute' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (3, 2, 0) + ), + + 'GeometryNodeStoreNamedGrid' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (4, 1, 0) + ), + + 'GeometryNodeStringJoin' : NodeInfo( + [] + ), + + 'GeometryNodeStringToCurves' : NodeInfo( + [ + NTPNodeSetting("align_x", ST.ENUM), + NTPNodeSetting("align_y", ST.ENUM), + NTPNodeSetting("font", ST.FONT), + NTPNodeSetting("overflow", ST.ENUM), + NTPNodeSetting("pivot_mode", ST.ENUM, min_version_=(3, 1, 0)), + ] + ), + + 'GeometryNodeSubdivideCurve' : NodeInfo( + [] + ), + + 'GeometryNodeSubdivideMesh' : NodeInfo( + [] + ), + + 'GeometryNodeSubdivisionSurface' : NodeInfo( + [ + NTPNodeSetting("boundary_smooth", ST.ENUM), + NTPNodeSetting("uv_smooth", ST.ENUM), + ] + ), + + 'GeometryNodeSwitch' : NodeInfo( + [ + NTPNodeSetting("input_type", ST.ENUM), + ] + ), + + 'GeometryNodeTool3DCursor' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeToolActiveElement' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeToolFaceSet' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeToolMousePosition' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeToolSelection' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeToolSetFaceSet' : NodeInfo( + [], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeToolSetSelection' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (4, 0, 0) + ), + + 'GeometryNodeTransform' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM, min_version_=(4, 2, 0)), + ] + ), + + 'GeometryNodeTranslateInstances' : NodeInfo( + [] + ), + + 'GeometryNodeTriangulate' : NodeInfo( + [ + NTPNodeSetting("ngon_method", ST.ENUM), + NTPNodeSetting("quad_method", ST.ENUM), + ] + ), + + 'GeometryNodeTrimCurve' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'GeometryNodeUVPackIslands' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeUVUnwrap' : NodeInfo( + [ + NTPNodeSetting("method", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeVertexOfCorner' : NodeInfo( + [], + min_version_ = (3, 4, 0) + ), + + 'GeometryNodeViewer' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM, min_version_=(3, 4, 0)), + ] + ), + + 'GeometryNodeViewportTransform' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'GeometryNodeVolumeCube' : NodeInfo( + [], + min_version_ = (3, 3, 0) + ), + + 'GeometryNodeVolumeToMesh' : NodeInfo( + [ + NTPNodeSetting("resolution_mode", ST.ENUM), + ] + ), + + 'NodeFrame' : NodeInfo( + [ + NTPNodeSetting("label_size", ST.INT), + NTPNodeSetting("shrink", ST.BOOL), + NTPNodeSetting("text", ST.TEXT), + ] + ), + + 'NodeGroup' : NodeInfo( + [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ] + ), + + 'NodeGroupInput' : NodeInfo( + [] + ), + + 'NodeGroupOutput' : NodeInfo( + [ + NTPNodeSetting("is_active_output", ST.BOOL), + ] + ), + + 'NodeReroute' : NodeInfo( + [] + ), + + 'ShaderNodeAddShader' : NodeInfo( + [] + ), + + 'ShaderNodeAmbientOcclusion' : NodeInfo( + [ + NTPNodeSetting("inside", ST.BOOL), + NTPNodeSetting("only_local", ST.BOOL), + NTPNodeSetting("samples", ST.INT), + ] + ), + + 'ShaderNodeAttribute' : NodeInfo( + [ + NTPNodeSetting("attribute_name", ST.STRING), + NTPNodeSetting("attribute_type", ST.ENUM), + ] + ), + + 'ShaderNodeBackground' : NodeInfo( + [] + ), + + 'ShaderNodeBevel' : NodeInfo( + [ + NTPNodeSetting("samples", ST.INT), + ] + ), + + 'ShaderNodeBlackbody' : NodeInfo( + [] + ), + + 'ShaderNodeBrightContrast' : NodeInfo( + [] + ), + + 'ShaderNodeBsdfAnisotropic' : NodeInfo( + [ + NTPNodeSetting("distribution", ST.ENUM), + ] + ), + + 'ShaderNodeBsdfDiffuse' : NodeInfo( + [] + ), + + 'ShaderNodeBsdfGlass' : NodeInfo( + [ + NTPNodeSetting("distribution", ST.ENUM), + ] + ), + + 'ShaderNodeBsdfGlossy' : NodeInfo( + [ + NTPNodeSetting("distribution", ST.ENUM), + ], + max_version_ = (4, 0, 0) + ), + + 'ShaderNodeBsdfHair' : NodeInfo( + [ + NTPNodeSetting("component", ST.ENUM), + ] + ), + + 'ShaderNodeBsdfHairPrincipled' : NodeInfo( + [ + NTPNodeSetting("model", ST.ENUM, min_version_=(4, 0, 0)), + NTPNodeSetting("parametrization", ST.ENUM), + ] + ), + + 'ShaderNodeBsdfPrincipled' : NodeInfo( + [ + NTPNodeSetting("distribution", ST.ENUM), + NTPNodeSetting("subsurface_method", ST.ENUM), + ] + ), + + 'ShaderNodeBsdfRayPortal' : NodeInfo( + [], + min_version_ = (4, 2, 0) + ), + + 'ShaderNodeBsdfRefraction' : NodeInfo( + [ + NTPNodeSetting("distribution", ST.ENUM), + ] + ), + + 'ShaderNodeBsdfSheen' : NodeInfo( + [ + NTPNodeSetting("distribution", ST.ENUM), + ], + min_version_ = (4, 0, 0) + ), + + 'ShaderNodeBsdfToon' : NodeInfo( + [ + NTPNodeSetting("component", ST.ENUM), + ] + ), + + 'ShaderNodeBsdfTranslucent' : NodeInfo( + [] + ), + + 'ShaderNodeBsdfTransparent' : NodeInfo( + [] + ), + + 'ShaderNodeBsdfVelvet' : NodeInfo( + [], + max_version_ = (4, 0, 0) + ), + + 'ShaderNodeBump' : NodeInfo( + [ + NTPNodeSetting("invert", ST.BOOL), + ] + ), + + 'ShaderNodeCameraData' : NodeInfo( + [] + ), + + 'ShaderNodeClamp' : NodeInfo( + [ + NTPNodeSetting("clamp_type", ST.ENUM), + ] + ), + + 'ShaderNodeCombineColor' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'ShaderNodeCombineHSV' : NodeInfo( + [] + ), + + 'ShaderNodeCombineRGB' : NodeInfo( + [] + ), + + 'ShaderNodeCombineXYZ' : NodeInfo( + [] + ), + + 'ShaderNodeCustomGroup' : NodeInfo( + [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ] + ), + + 'ShaderNodeDisplacement' : NodeInfo( + [ + NTPNodeSetting("space", ST.ENUM), + ] + ), + + 'ShaderNodeEeveeSpecular' : NodeInfo( + [] + ), + + 'ShaderNodeEmission' : NodeInfo( + [] + ), + + 'ShaderNodeFloatCurve' : NodeInfo( + [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ] + ), + + 'ShaderNodeFresnel' : NodeInfo( + [] + ), + + 'ShaderNodeGamma' : NodeInfo( + [] + ), + + 'ShaderNodeGroup' : NodeInfo( + [ + NTPNodeSetting("node_tree", ST.NODE_TREE), + ] + ), + + 'ShaderNodeHairInfo' : NodeInfo( + [] + ), + + 'ShaderNodeHoldout' : NodeInfo( + [] + ), + + 'ShaderNodeHueSaturation' : NodeInfo( + [] + ), + + 'ShaderNodeInvert' : NodeInfo( + [] + ), + + 'ShaderNodeLayerWeight' : NodeInfo( + [] + ), + + 'ShaderNodeLightFalloff' : NodeInfo( + [] + ), + + 'ShaderNodeLightPath' : NodeInfo( + [] + ), + + 'ShaderNodeMapRange' : NodeInfo( + [ + NTPNodeSetting("clamp", ST.BOOL), + NTPNodeSetting("data_type", ST.ENUM, min_version_=(3, 1, 0)), + NTPNodeSetting("interpolation_type", ST.ENUM), + ] + ), + + 'ShaderNodeMapping' : NodeInfo( + [ + NTPNodeSetting("vector_type", ST.ENUM), + ] + ), + + 'ShaderNodeMath' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + NTPNodeSetting("use_clamp", ST.BOOL), + ] + ), + + 'ShaderNodeMix' : NodeInfo( + [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("clamp_factor", ST.BOOL), + NTPNodeSetting("clamp_result", ST.BOOL), + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("factor_mode", ST.ENUM), + ], + min_version_ = (3, 4, 0) + ), + + 'ShaderNodeMixRGB' : NodeInfo( + [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL), + ] + ), + + 'ShaderNodeMixShader' : NodeInfo( + [] + ), + + 'ShaderNodeNewGeometry' : NodeInfo( + [] + ), + + 'ShaderNodeNormal' : NodeInfo( + [] + ), + + 'ShaderNodeNormalMap' : NodeInfo( + [ + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("uv_map", ST.STRING), + ] + ), + + 'ShaderNodeObjectInfo' : NodeInfo( + [] + ), + + 'ShaderNodeOutputAOV' : NodeInfo( + [ + NTPNodeSetting("aov_name", ST.STRING, min_version_=(4, 2, 0)), + NTPNodeSetting("name", ST.STRING, max_version_=(4, 2, 0)), + ] + ), + + 'ShaderNodeOutputLight' : NodeInfo( + [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + ] + ), + + 'ShaderNodeOutputLineStyle' : NodeInfo( + [ + NTPNodeSetting("blend_type", ST.ENUM), + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_clamp", ST.BOOL), + ] + ), + + 'ShaderNodeOutputMaterial' : NodeInfo( + [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + ] + ), + + 'ShaderNodeOutputWorld' : NodeInfo( + [ + NTPNodeSetting("is_active_output", ST.BOOL), + NTPNodeSetting("target", ST.ENUM), + ] + ), + + 'ShaderNodeParticleInfo' : NodeInfo( + [] + ), + + 'ShaderNodePointInfo' : NodeInfo( + [], + min_version_ = (3, 1, 0) + ), + + 'ShaderNodeRGB' : NodeInfo( + [] + ), + + 'ShaderNodeRGBCurve' : NodeInfo( + [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ] + ), + + 'ShaderNodeRGBToBW' : NodeInfo( + [] + ), + + 'ShaderNodeScript' : NodeInfo( + [ + NTPNodeSetting("bytecode", ST.STRING), + NTPNodeSetting("bytecode_hash", ST.STRING), + NTPNodeSetting("filepath", ST.STRING), + NTPNodeSetting("mode", ST.ENUM), + NTPNodeSetting("script", ST.TEXT), + NTPNodeSetting("use_auto_update", ST.BOOL), + ] + ), + + 'ShaderNodeSeparateColor' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (3, 3, 0) + ), + + 'ShaderNodeSeparateHSV' : NodeInfo( + [] + ), + + 'ShaderNodeSeparateRGB' : NodeInfo( + [] + ), + + 'ShaderNodeSeparateXYZ' : NodeInfo( + [] + ), + + 'ShaderNodeShaderToRGB' : NodeInfo( + [] + ), + + 'ShaderNodeSqueeze' : NodeInfo( + [] + ), + + 'ShaderNodeSubsurfaceScattering' : NodeInfo( + [ + NTPNodeSetting("falloff", ST.ENUM), + ] + ), + + 'ShaderNodeTangent' : NodeInfo( + [ + NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("direction_type", ST.ENUM), + NTPNodeSetting("uv_map", ST.STRING), + ] + ), + + 'ShaderNodeTexBrick' : NodeInfo( + [ + NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("offset_frequency", ST.INT), + NTPNodeSetting("squash", ST.FLOAT), + NTPNodeSetting("squash_frequency", ST.INT), + ] + ), + + 'ShaderNodeTexChecker' : NodeInfo( + [] + ), + + 'ShaderNodeTexCoord' : NodeInfo( + [ + NTPNodeSetting("from_instancer", ST.BOOL), + NTPNodeSetting("object", ST.OBJECT), + ] + ), + + 'ShaderNodeTexEnvironment' : NodeInfo( + [ + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("image_user", ST.IMAGE_USER), + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("projection", ST.ENUM), + ] + ), + + 'ShaderNodeTexGradient' : NodeInfo( + [ + NTPNodeSetting("gradient_type", ST.ENUM), + ] + ), + + 'ShaderNodeTexIES' : NodeInfo( + [ + NTPNodeSetting("filepath", ST.STRING), + NTPNodeSetting("ies", ST.TEXT), + NTPNodeSetting("mode", ST.ENUM), + ] + ), + + 'ShaderNodeTexImage' : NodeInfo( + [ + NTPNodeSetting("extension", ST.ENUM), + NTPNodeSetting("image", ST.IMAGE), + NTPNodeSetting("image_user", ST.IMAGE_USER), + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("projection", ST.ENUM), + NTPNodeSetting("projection_blend", ST.FLOAT), + ] + ), + + 'ShaderNodeTexMagic' : NodeInfo( + [ + NTPNodeSetting("turbulence_depth", ST.INT), + ] + ), + + 'ShaderNodeTexMusgrave' : NodeInfo( + [ + NTPNodeSetting("musgrave_dimensions", ST.ENUM), + NTPNodeSetting("musgrave_type", ST.ENUM), + ], + max_version_ = (4, 1, 0) + ), + + 'ShaderNodeTexNoise' : NodeInfo( + [ + NTPNodeSetting("noise_dimensions", ST.ENUM), + NTPNodeSetting("noise_type", ST.ENUM, min_version_=(4, 1, 0)), + NTPNodeSetting("normalize", ST.BOOL, min_version_=(4, 0, 0)), + ] + ), + + 'ShaderNodeTexPointDensity' : NodeInfo( + [ + NTPNodeSetting("interpolation", ST.ENUM), + NTPNodeSetting("object", ST.OBJECT), + NTPNodeSetting("particle_color_source", ST.ENUM), + NTPNodeSetting("particle_system", ST.PARTICLE_SYSTEM), + NTPNodeSetting("point_source", ST.ENUM), + NTPNodeSetting("radius", ST.FLOAT), + NTPNodeSetting("resolution", ST.INT), + NTPNodeSetting("space", ST.ENUM), + NTPNodeSetting("vertex_attribute_name", ST.STRING), + NTPNodeSetting("vertex_color_source", ST.ENUM), + ] + ), + + 'ShaderNodeTexSky' : NodeInfo( + [ + NTPNodeSetting("air_density", ST.FLOAT), + NTPNodeSetting("altitude", ST.FLOAT), + NTPNodeSetting("dust_density", ST.FLOAT), + NTPNodeSetting("ground_albedo", ST.FLOAT), + NTPNodeSetting("ozone_density", ST.FLOAT), + NTPNodeSetting("sky_type", ST.ENUM), + NTPNodeSetting("sun_direction", ST.VEC3), + NTPNodeSetting("sun_disc", ST.BOOL), + NTPNodeSetting("sun_elevation", ST.FLOAT), + NTPNodeSetting("sun_intensity", ST.FLOAT), + NTPNodeSetting("sun_rotation", ST.FLOAT), + NTPNodeSetting("sun_size", ST.FLOAT), + NTPNodeSetting("turbidity", ST.FLOAT), + ] + ), + + 'ShaderNodeTexVoronoi' : NodeInfo( + [ + NTPNodeSetting("distance", ST.ENUM), + NTPNodeSetting("feature", ST.ENUM), + NTPNodeSetting("normalize", ST.BOOL, min_version_=(4, 0, 0)), + NTPNodeSetting("voronoi_dimensions", ST.ENUM), + ] + ), + + 'ShaderNodeTexWave' : NodeInfo( + [ + NTPNodeSetting("bands_direction", ST.ENUM), + NTPNodeSetting("rings_direction", ST.ENUM), + NTPNodeSetting("wave_profile", ST.ENUM), + NTPNodeSetting("wave_type", ST.ENUM), + ] + ), + + 'ShaderNodeTexWhiteNoise' : NodeInfo( + [ + NTPNodeSetting("noise_dimensions", ST.ENUM), + ] + ), + + 'ShaderNodeUVAlongStroke' : NodeInfo( + [ + NTPNodeSetting("use_tips", ST.BOOL), + ] + ), + + 'ShaderNodeUVMap' : NodeInfo( + [ + NTPNodeSetting("from_instancer", ST.BOOL), + NTPNodeSetting("uv_map", ST.STRING), + ] + ), + + 'ShaderNodeValToRGB' : NodeInfo( + [ + NTPNodeSetting("color_ramp", ST.COLOR_RAMP), + ] + ), + + 'ShaderNodeValue' : NodeInfo( + [] + ), + + 'ShaderNodeVectorCurve' : NodeInfo( + [ + NTPNodeSetting("mapping", ST.CURVE_MAPPING), + ] + ), + + 'ShaderNodeVectorDisplacement' : NodeInfo( + [ + NTPNodeSetting("space", ST.ENUM), + ] + ), + + 'ShaderNodeVectorMath' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + ] + ), + + 'ShaderNodeVectorRotate' : NodeInfo( + [ + NTPNodeSetting("invert", ST.BOOL), + NTPNodeSetting("rotation_type", ST.ENUM), + ] + ), + + 'ShaderNodeVectorTransform' : NodeInfo( + [ + NTPNodeSetting("convert_from", ST.ENUM), + NTPNodeSetting("convert_to", ST.ENUM), + NTPNodeSetting("vector_type", ST.ENUM), + ] + ), + + 'ShaderNodeVertexColor' : NodeInfo( + [ + NTPNodeSetting("layer_name", ST.STRING), + ] + ), + + 'ShaderNodeVolumeAbsorption' : NodeInfo( + [] + ), + + 'ShaderNodeVolumeInfo' : NodeInfo( + [] + ), + + 'ShaderNodeVolumePrincipled' : NodeInfo( + [] + ), + + 'ShaderNodeVolumeScatter' : NodeInfo( + [] + ), + + 'ShaderNodeWavelength' : NodeInfo( + [] + ), + + 'ShaderNodeWireframe' : NodeInfo( + [ + NTPNodeSetting("use_pixel_size", ST.BOOL), + ] + ), } \ No newline at end of file diff --git a/ntp_operator.py b/ntp_operator.py index 18c274f..cd3778d 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -14,6 +14,7 @@ import shutil from .ntp_node_tree import NTP_NodeTree +from .node_settings import NodeInfo, ST from .utils import * INDEX = "i" @@ -33,6 +34,7 @@ #node input sockets that are messy to set default values for DONT_SET_DEFAULTS = {'NodeSocketGeometry', 'NodeSocketShader', + 'NodeSocketMatrix', 'NodeSocketVirtual'} class NTP_Operator(Operator): @@ -101,7 +103,7 @@ def __init__(self): self._used_vars: dict[str, int] = {} # Dictionary used for setting node properties - self._settings: dict[str, list[(str, ST)]] = {} + self._node_infos: dict[str, NodeInfo] = {} for name in RESERVED_NAMES: self._used_vars[name] = 0 @@ -284,7 +286,7 @@ def _set_settings_defaults(self, node: Node) -> None: node (Node): the node object we're copying settings from node_var (str): name of the variable we're using for the node in our add-on """ - if node.bl_idname not in self._settings: + if node.bl_idname not in self._node_infos: self.report({'WARNING'}, (f"NodeToPython: couldn't find {node.bl_idname} in " f"settings. Your Blender version may not be supported")) @@ -292,13 +294,15 @@ def _set_settings_defaults(self, node: Node) -> None: node_var = self._node_vars[node] - for setting in self._settings[node.bl_idname]: + node_info = self._node_infos[node.bl_idname] + for attr_info in node_info.attributes_: + attr_name = attr_info.name_ + st = attr_info.st_ - attr_name = setting.name - st = setting.st - - is_version_valid = (bpy.app.version >= setting.min_version and - bpy.app.version < setting.max_version) + version_gte_min = bpy.app.version >= max(attr_info.min_version_, node_info.min_version_) + version_lt_max = bpy.app.version < min(attr_info.max_version_, node_info.max_version_) + + is_version_valid = version_gte_min and version_lt_max if not hasattr(node, attr_name): if is_version_valid: self.report({'WARNING'}, @@ -1107,23 +1111,6 @@ def _index_switch_items(self, switch_items: bpy.types.NodeIndexSwitchItems, for i in range(num_items): self._write(f"{items_str}.new()") - def _enum_definition(self, enum_def: bpy.types.NodeEnumDefinition, - enum_def_str: str) -> None: - """ - Set enum definition item for a node - - Parameters: - enum_def (bpy.types.NodeEnumDefinition): enum definition to replicate - enum_def_str (str): string for the generated enum definition - """ - self._write(f"{enum_def_str}.enum_items.clear()") - for i, enum_item in enumerate(enum_def.enum_items): - name = str_to_py_str(enum_item.name) - self._write(f"{enum_def_str}.enum_items.new({name})") - if enum_item.description != "": - self._write(f"{enum_def_str}.enum_items[{i}].description = " - f"{str_to_py_str(enum_item.description)}") - def _bake_items(self, bake_items: bpy.types.NodeGeometryBakeItems, bake_items_str: str) -> None: """ @@ -1145,6 +1132,24 @@ def _bake_items(self, bake_items: bpy.types.NodeGeometryBakeItems, if bake_item.is_attribute: self._write(f"{bake_items_str}[{i}].is_attribute = True") + if bpy.app.version >= (4, 1, 0) and bpy.app.version < (4, 2, 0): + def _enum_definition(self, enum_def: bpy.types.NodeEnumDefinition, + enum_def_str: str) -> None: + """ + Set enum definition item for a node + + Parameters: + enum_def (bpy.types.NodeEnumDefinition): enum definition to replicate + enum_def_str (str): string for the generated enum definition + """ + self._write(f"{enum_def_str}.enum_items.clear()") + for i, enum_item in enumerate(enum_def.enum_items): + name = str_to_py_str(enum_item.name) + self._write(f"{enum_def_str}.enum_items.new({name})") + if enum_item.description != "": + self._write(f"{enum_def_str}.enum_items[{i}].description = " + f"{str_to_py_str(enum_item.description)}") + def _set_parents(self, node_tree: NodeTree) -> None: diff --git a/shader/operator.py b/shader/operator.py index 7232fa8..05dd196 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -23,7 +23,7 @@ class NTPShaderOperator(NTP_Operator): def __init__(self): super().__init__() - self._settings = node_settings + self._node_infos = node_settings for name in SHADER_OP_RESERVED_NAMES: self._used_vars[name] = 0 diff --git a/utils.py b/utils.py index 757da4a..cbf8b91 100644 --- a/utils.py +++ b/utils.py @@ -2,64 +2,8 @@ from bpy_types import bpy_types import mathutils -from enum import Enum, auto import keyword import re -from typing import NamedTuple - -class ST(Enum): - """ - Settings Types - """ - # Primitives - ENUM = auto() - ENUM_SET = auto() - STRING = auto() - BOOL = auto() - INT = auto() - FLOAT = auto() - VEC1 = auto() - VEC2 = auto() - VEC3 = auto() - VEC4 = auto() - COLOR = auto() - - # Special settings - COLOR_RAMP = auto() - CURVE_MAPPING = auto() - NODE_TREE = auto() - - SIM_OUTPUT_ITEMS = auto() - REPEAT_OUTPUT_ITEMS = auto() - ENUM_DEFINITION = auto() - INDEX_SWITCH_ITEMS = auto() - BAKE_ITEMS = auto() - - # Asset Library - MATERIAL = auto() # Handle with asset library - OBJECT = auto() # Handle with asset library - - # Image - IMAGE = auto() #needs refactor - IMAGE_USER = auto() #needs refactor - MOVIE_CLIP = auto() #unimplmented - - TEXTURE = auto() #unimplemented - TEXT = auto() #unimplemented - SCENE = auto() #unimplemented - PARTICLE_SYSTEM = auto() #unimplemented - FONT = auto() #unimplemented - MASK = auto() #unimplemented - CRYPTOMATTE_ENTRIES = auto() #unimplemented - IMAGE_FORMAT_SETTINGS = auto() #unimplemented - FILE_SLOTS = auto() #unimplemented - LAYER_SLOTS = auto() #unimplemented - -class NTPNodeSetting(NamedTuple): - name: str - st: ST - min_version: tuple = (3, 0, 0) - max_version: tuple = (4, 2, 0) #first version where a setting is invalid def clean_string(string: str, lower: bool = True) -> str: From 2998e9ece27458c8d5c7fabf21ac954f72b05b89 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:25:20 -0500 Subject: [PATCH 191/286] feat: changes to capture attribute node --- ntp_operator.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ntp_operator.py b/ntp_operator.py index cd3778d..60b5cc0 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -372,6 +372,8 @@ def _set_settings_defaults(self, node: Node) -> None: self._enum_definition(attr, f"{node_var}.{attr_name}") elif st == ST.BAKE_ITEMS: self._bake_items(attr, f"{node_var}.{attr_name}") + elif st == ST.CAPTURE_ATTRIBUTE_ITEMS: + self._capture_attribute_items(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, @@ -1150,7 +1152,13 @@ def _enum_definition(self, enum_def: bpy.types.NodeEnumDefinition, self._write(f"{enum_def_str}.enum_items[{i}].description = " f"{str_to_py_str(enum_item.description)}") - + if bpy.app.version >= (4, 2, 0): + def _capture_attribute_items(self, capture_attribute_items: bpy.types.NodeGeometryCaptureAttributeItems, capture_attrs_str: str) -> None: + self._write(f"{capture_attrs_str}.clear()") + for i, item in enumerate(capture_attribute_items): + data_type = enum_to_py_str(item.data_type) + name = str_to_py_str(item.name) + self._write(f"{capture_attrs_str}.new({data_type}, {name})") def _set_parents(self, node_tree: NodeTree) -> None: """ From ee2d8fa451285228b6a5da3a719a912173046bcd Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:34:20 -0500 Subject: [PATCH 192/286] feat: changes to menu switch node --- ntp_operator.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index 60b5cc0..13a16af 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -374,6 +374,8 @@ def _set_settings_defaults(self, node: Node) -> None: self._bake_items(attr, f"{node_var}.{attr_name}") elif st == ST.CAPTURE_ATTRIBUTE_ITEMS: self._capture_attribute_items(attr, f"{node_var}.{attr_name}") + elif st == ST.MENU_SWITCH_ITEMS: + self._menu_switch_items(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, @@ -1160,6 +1162,14 @@ def _capture_attribute_items(self, capture_attribute_items: bpy.types.NodeGeomet name = str_to_py_str(item.name) self._write(f"{capture_attrs_str}.new({data_type}, {name})") + def _menu_switch_items(self, menu_switch_items: bpy.types.NodeMenuSwitchItems, menu_switch_items_str: str) -> None: + self._write(f"{menu_switch_items_str}.clear()") + for i, item in enumerate(menu_switch_items): + name_str = str_to_py_str(item.name) + self._write(f"{menu_switch_items_str}.new({name_str})") + desc_str = str_to_py_str(item.description) + self._write(f"{menu_switch_items_str}[{i}].description = {desc_str}") + def _set_parents(self, node_tree: NodeTree) -> None: """ Sets parents for all nodes, mostly used to put nodes in frames From a62f6332fe598f6c5410bf05c8de127440f241b2 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 24 Jun 2024 21:22:35 -0500 Subject: [PATCH 193/286] feat: option to include import statements in script mode --- blender_manifest.toml | 34 ++++++++++++++++++++++++++++++++++ compositor/operator.py | 2 ++ geometry/operator.py | 3 +++ options.py | 8 +++++++- shader/operator.py | 2 ++ 5 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 blender_manifest.toml diff --git a/blender_manifest.toml b/blender_manifest.toml new file mode 100644 index 0000000..c25016c --- /dev/null +++ b/blender_manifest.toml @@ -0,0 +1,34 @@ +schema_version = "1.0.0" + +# Example of manifest file for a Blender extension +# Change the values according to your extension +id = "node_to_python" +version = "3.2.0" +name = "Node To Python" +tagline = "Turn node groups into Python code" +maintainer = "Brendan Parmer " +# Supported types: "add-on", "theme" +type = "add-on" + +# Optional: add-ons can list which resources they will require: +# * "files" (for access of any filesystem operations) +# * "network" (for internet access) +# * "clipboard" (to read and/or write the system clipboard) +# * "camera" (to capture photos and videos) +# * "microphone" (to capture audio) +# permissions = ["files"] + +# Optional link to documentation, support, source files, etc +# website = "https://github.com/BrendanParmer/NodeToPython" + +# Optional list defined by Blender and server, see: +# https://docs.blender.org/manual/en/dev/extensions/tags.html +tags = ["Development", "Compositing", "Geometry Nodes", "Material"] + +blender_version_min = "4.2.0" +# Optional: maximum supported Blender version +# blender_version_max = "5.1.0" + +license = [ + "SPDX:MIT", +] \ No newline at end of file diff --git a/compositor/operator.py b/compositor/operator.py index 91f9adf..92d6373 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -219,6 +219,8 @@ def execute(self, context): self._write("def execute(self, context):", "\t") else: self._file = StringIO("") + if context.scene.ntp_options.include_imports: + self._file.write("import bpy, mathutils\n\n") if self.is_scene: if self.mode == 'ADDON': diff --git a/geometry/operator.py b/geometry/operator.py index b359bf5..b0903d5 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -200,6 +200,9 @@ def execute(self, context): self._write("def execute(self, context):", "\t") else: self._file = StringIO("") + if context.scene.ntp_options.include_imports: + self._file.write("import bpy, mathutils\n\n") + node_trees_to_process = self._topological_sort(nt) diff --git a/options.py b/options.py index 09c8310..e223d7c 100644 --- a/options.py +++ b/options.py @@ -10,6 +10,11 @@ class NTPOptions(bpy.types.PropertyGroup): description="Save location if generating an add-on", default = "//" ) + include_imports : bpy.props.BoolProperty( + name = "Include imports", + description="Generate necessary import statements", + default = True + ) class NTPOptionsPanel(bpy.types.Panel): bl_label = "Options" @@ -25,4 +30,5 @@ def poll(cls, context): def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_DEFAULT' - layout.prop(context.scene.ntp_options, "dir_path") \ No newline at end of file + layout.prop(context.scene.ntp_options, "dir_path") + layout.prop(context.scene.ntp_options, "include_imports") \ No newline at end of file diff --git a/shader/operator.py b/shader/operator.py index 7232fa8..28e1c62 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -149,6 +149,8 @@ def execute(self, context): self._write("def execute(self, context):", "\t") else: self._file = StringIO("") + if context.scene.ntp_options.include_imports: + self._file.write("import bpy, mathutils\n\n") if self.mode == 'ADDON': self._create_material("\t\t") From 537e754fd609be18d02f7ca16cd35f7323764476 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 24 Jun 2024 22:03:21 -0500 Subject: [PATCH 194/286] feat: options for included socket values, setting dimensions, and not setting hidden socket defaults --- compositor/operator.py | 4 +++- geometry/operator.py | 4 +++- ntp_operator.py | 30 ++++++++++++++++++++++++++++++ options.py | 29 +++++++++++++++++++++++++++-- shader/operator.py | 4 +++- 5 files changed, 66 insertions(+), 5 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 92d6373..d5f7f36 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -187,6 +187,8 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) def execute(self, context): + self._setup_options(context.scene.ntp_options) + #find node group to replicate if self.is_scene: self._base_node_tree = bpy.data.scenes[self.compositor_name].node_tree @@ -219,7 +221,7 @@ def execute(self, context): self._write("def execute(self, context):", "\t") else: self._file = StringIO("") - if context.scene.ntp_options.include_imports: + if self._include_imports: self._file.write("import bpy, mathutils\n\n") if self.is_scene: diff --git a/geometry/operator.py b/geometry/operator.py index b0903d5..91d66ae 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -179,6 +179,8 @@ def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): def execute(self, context): + self._setup_options(context.scene.ntp_options) + #find node group to replicate nt = bpy.data.node_groups[self.geo_nodes_group_name] @@ -200,7 +202,7 @@ def execute(self, context): self._write("def execute(self, context):", "\t") else: self._file = StringIO("") - if context.scene.ntp_options.include_imports: + if self._include_imports: self._file.write("import bpy, mathutils\n\n") diff --git a/ntp_operator.py b/ntp_operator.py index 18c274f..2b3f80c 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -14,6 +14,7 @@ import shutil from .ntp_node_tree import NTP_NodeTree +from .options import NTPOptions from .utils import * INDEX = "i" @@ -106,11 +107,28 @@ def __init__(self): for name in RESERVED_NAMES: self._used_vars[name] = 0 + # Generate socket default, min, and max values + self._include_socket_values = True + + # Set dimensions of generated nodes + self._should_set_dimensions = True + + if bpy.app.version >= (3, 4, 0): + # Set default values for hidden sockets + self._set_hidden_defaults = False + def _write(self, string: str, indent: str = None): if indent is None: indent = self._inner self._file.write(f"{indent}{string}\n") + def _setup_options(self, options: NTPOptions) -> None: + self._include_imports = options.include_imports + self._include_socket_values = options.include_socket_values + self._should_set_dimensions = options.set_dimensions + if bpy.app.version >= (3, 4, 0): + self._set_hidden_defaults = options.set_hidden_defaults + def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: """ Finds/creates directories to save add-on to @@ -381,6 +399,9 @@ def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, with the input/output socket_var (str): variable name for the socket """ + if not self._include_socket_values: + return + if socket_interface.type not in self.default_sockets_v3: return @@ -477,6 +498,8 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, with the input/output socket_var (str): variable name for the socket """ + if not self._include_socket_values: + return if type(socket_interface) in self.nondefault_sockets_v4: return @@ -707,6 +730,10 @@ def _set_input_defaults(self, node: Node) -> None: for i, input in enumerate(node.inputs): if input.bl_idname not in DONT_SET_DEFAULTS and not input.is_linked: + if bpy.app.version >= (3, 4, 0): + if (not self._set_hidden_defaults) and input.is_unavailable: + continue + # TODO: this could be cleaner socket_var = f"{node_var}.inputs[{i}]" @@ -1187,6 +1214,9 @@ def _set_dimensions(self, node_tree: NodeTree) -> None: Parameters: node_tree (NodeTree): node tree we're obtaining nodes from """ + if not self._should_set_dimensions: + return + self._write(f"#Set dimensions") for node in node_tree.nodes: node_var = self._node_vars[node] diff --git a/options.py b/options.py index e223d7c..a6b0839 100644 --- a/options.py +++ b/options.py @@ -15,6 +15,22 @@ class NTPOptions(bpy.types.PropertyGroup): description="Generate necessary import statements", default = True ) + include_socket_values : bpy.props.BoolProperty( + name = "Include socket values", + description = "Generate group socket default, min, and max values", + default = True + ) + set_dimensions : bpy.props.BoolProperty( + name = "Set dimensions", + description = "Set dimensions of generated nodes", + default = True + ) + if bpy.app.version >= (3, 4, 0): + set_hidden_defaults : bpy.props.BoolProperty( + name = "Set hidden defaults", + description = "Set default values for hidden sockets", + default = False + ) class NTPOptionsPanel(bpy.types.Panel): bl_label = "Options" @@ -30,5 +46,14 @@ def poll(cls, context): def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_DEFAULT' - layout.prop(context.scene.ntp_options, "dir_path") - layout.prop(context.scene.ntp_options, "include_imports") \ No newline at end of file + ntp_options = context.scene.ntp_options + + option_list = [ + "dir_path", + "include_imports", "include_socket_values", + "set_dimensions" + ] + if bpy.app.version >= (3, 4, 0): + option_list.append("set_hidden_defaults") + for option in option_list: + layout.prop(ntp_options, option) \ No newline at end of file diff --git a/shader/operator.py b/shader/operator.py index 28e1c62..94d5eb1 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -123,6 +123,8 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: def execute(self, context): + self._setup_options(context.scene.ntp_options) + #find node group to replicate self._base_node_tree = bpy.data.materials[self.material_name].node_tree if self._base_node_tree is None: @@ -149,7 +151,7 @@ def execute(self, context): self._write("def execute(self, context):", "\t") else: self._file = StringIO("") - if context.scene.ntp_options.include_imports: + if self._include_imports: self._file.write("import bpy, mathutils\n\n") if self.mode == 'ADDON': From 3d9c29b76a9f2f829deeb9d9693cf62b41895025 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 24 Jun 2024 22:15:48 -0500 Subject: [PATCH 195/286] style: made variable names clearer --- ntp_operator.py | 14 +++++++------- options.py | 13 +++++++------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 2b3f80c..64a1c89 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -108,14 +108,14 @@ def __init__(self): self._used_vars[name] = 0 # Generate socket default, min, and max values - self._include_socket_values = True + self._include_group_socket_values = True # Set dimensions of generated nodes self._should_set_dimensions = True if bpy.app.version >= (3, 4, 0): # Set default values for hidden sockets - self._set_hidden_defaults = False + self._set_unavailable_defaults = False def _write(self, string: str, indent: str = None): if indent is None: @@ -124,10 +124,10 @@ def _write(self, string: str, indent: str = None): def _setup_options(self, options: NTPOptions) -> None: self._include_imports = options.include_imports - self._include_socket_values = options.include_socket_values + self._include_group_socket_values = options.include_group_socket_values self._should_set_dimensions = options.set_dimensions if bpy.app.version >= (3, 4, 0): - self._set_hidden_defaults = options.set_hidden_defaults + self._set_unavailable_defaults = options.set_unavailable_defaults def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: """ @@ -399,7 +399,7 @@ def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, with the input/output socket_var (str): variable name for the socket """ - if not self._include_socket_values: + if not self._include_group_socket_values: return if socket_interface.type not in self.default_sockets_v3: @@ -498,7 +498,7 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, with the input/output socket_var (str): variable name for the socket """ - if not self._include_socket_values: + if not self._include_group_socket_values: return if type(socket_interface) in self.nondefault_sockets_v4: return @@ -731,7 +731,7 @@ def _set_input_defaults(self, node: Node) -> None: for i, input in enumerate(node.inputs): if input.bl_idname not in DONT_SET_DEFAULTS and not input.is_linked: if bpy.app.version >= (3, 4, 0): - if (not self._set_hidden_defaults) and input.is_unavailable: + if (not self._set_unavailable_defaults) and input.is_unavailable: continue # TODO: this could be cleaner diff --git a/options.py b/options.py index a6b0839..ba88d24 100644 --- a/options.py +++ b/options.py @@ -15,8 +15,8 @@ class NTPOptions(bpy.types.PropertyGroup): description="Generate necessary import statements", default = True ) - include_socket_values : bpy.props.BoolProperty( - name = "Include socket values", + include_group_socket_values : bpy.props.BoolProperty( + name = "Include group socket values", description = "Generate group socket default, min, and max values", default = True ) @@ -26,9 +26,9 @@ class NTPOptions(bpy.types.PropertyGroup): default = True ) if bpy.app.version >= (3, 4, 0): - set_hidden_defaults : bpy.props.BoolProperty( - name = "Set hidden defaults", - description = "Set default values for hidden sockets", + set_unavailable_defaults : bpy.props.BoolProperty( + name = "Set unavailable defaults", + description = "Set default values for unavailable sockets", default = False ) @@ -50,7 +50,8 @@ def draw(self, context): option_list = [ "dir_path", - "include_imports", "include_socket_values", + "include_imports", + "include_group_socket_values", "set_dimensions" ] if bpy.app.version >= (3, 4, 0): From 0e964e7d12c59cb2ea4858b29d4f91682238e37b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 16 Jul 2024 22:53:00 -0500 Subject: [PATCH 196/286] feat: node groups now set description and color tag properties --- compositor/operator.py | 7 ++++++- geometry/operator.py | 2 ++ ntp_operator.py | 9 +++++++++ shader/operator.py | 7 ++++++- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 268799b..620a642 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -177,14 +177,19 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): for node in node_tree.nodes: self._process_node(node, ntp_nt) + self._set_node_tree_properties(node_tree) + + #set look of nodes self._set_parents(node_tree) self._set_locations(node_tree) self._set_dimensions(node_tree) - + + #create connections self._init_links(node_tree) self._write(f"return {nt_var}\n") + #create node group self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) def execute(self, context): diff --git a/geometry/operator.py b/geometry/operator.py index d50ac7a..05416b1 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -152,6 +152,8 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: if bpy.app.version >= (4, 0, 0): self._process_zones(ntp_nt.repeat_inputs) + self._set_node_tree_properties(node_tree) + #set look of nodes self._set_parents(node_tree) self._set_locations(node_tree) diff --git a/ntp_operator.py b/ntp_operator.py index 13a16af..cfee80c 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1264,6 +1264,15 @@ def _init_links(self, node_tree: NodeTree) -> None: f".outputs[{input_idx}], " f"{out_node_var}.inputs[{output_idx}])") + def _set_node_tree_properties(self, node_tree: NodeTree) -> None: + nt_var = self._node_tree_vars[node_tree] + + if bpy.app.version >= (4, 2, 0): + color_tag_str = enum_to_py_str(node_tree.color_tag) + self._write(f"{nt_var}.color_tag = {color_tag_str}") + desc_str = str_to_py_str(node_tree.description) + self._write(f"{nt_var}.description = {desc_str}") + def _hide_hidden_sockets(self, node: Node) -> None: """ Hide hidden sockets diff --git a/shader/operator.py b/shader/operator.py index 05dd196..8daa872 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -111,14 +111,19 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: for node in node_tree.nodes: self._process_node(node, ntp_nt) + self._set_node_tree_properties(node_tree) + + #set look of nodes self._set_parents(node_tree) self._set_locations(node_tree) self._set_dimensions(node_tree) + #create connections self._init_links(node_tree) - + self._write(f"return {nt_var}\n") + #create node group self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) From e2315ae0f8e8aef362c07688fff23b0b810eac57 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 16 Jul 2024 22:59:31 -0500 Subject: [PATCH 197/286] feat: moved property setting closer to node tree creation --- compositor/operator.py | 4 ++-- geometry/operator.py | 8 +++----- ntp_operator.py | 4 ++-- shader/operator.py | 4 ++-- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 620a642..aad426f 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -168,6 +168,8 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): ntp_nt = NTP_NodeTree(node_tree, nt_var) self._initialize_compositor_node_tree(ntp_nt, nt_name) + self._set_node_tree_properties(node_tree) + if bpy.app.version >= (4, 0, 0): self._tree_interface_settings(ntp_nt) @@ -176,8 +178,6 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): for node in node_tree.nodes: self._process_node(node, ntp_nt) - - self._set_node_tree_properties(node_tree) #set look of nodes self._set_parents(node_tree) diff --git a/geometry/operator.py b/geometry/operator.py index 05416b1..5bdf4de 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -133,17 +133,17 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: f"type = \'GeometryNodeTree\', " f"name = {str_to_py_str(node_tree.name)})\n") + self._set_node_tree_properties(node_tree) if bpy.app.version >= (4, 0, 0): self._set_geo_tree_properties(node_tree) - #initialize nodes - self._write(f"#initialize {nt_var} nodes") - ntp_nt = NTP_GeoNodeTree(node_tree, nt_var) if bpy.app.version >= (4, 0, 0): self._tree_interface_settings(ntp_nt) + #initialize nodes + self._write(f"#initialize {nt_var} nodes") for node in node_tree.nodes: self._process_node(node, ntp_nt) @@ -152,8 +152,6 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: if bpy.app.version >= (4, 0, 0): self._process_zones(ntp_nt.repeat_inputs) - self._set_node_tree_properties(node_tree) - #set look of nodes self._set_parents(node_tree) self._set_locations(node_tree) diff --git a/ntp_operator.py b/ntp_operator.py index cfee80c..94c46e7 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1266,12 +1266,12 @@ def _init_links(self, node_tree: NodeTree) -> None: def _set_node_tree_properties(self, node_tree: NodeTree) -> None: nt_var = self._node_tree_vars[node_tree] - + if bpy.app.version >= (4, 2, 0): color_tag_str = enum_to_py_str(node_tree.color_tag) self._write(f"{nt_var}.color_tag = {color_tag_str}") desc_str = str_to_py_str(node_tree.description) - self._write(f"{nt_var}.description = {desc_str}") + self._write(f"{nt_var}.description = {desc_str}\n") def _hide_hidden_sockets(self, node: Node) -> None: """ diff --git a/shader/operator.py b/shader/operator.py index 8daa872..bbe7a09 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -102,6 +102,8 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: self._initialize_shader_node_tree(ntp_nt, nt_name) + self._set_node_tree_properties(node_tree) + if bpy.app.version >= (4, 0, 0): self._tree_interface_settings(ntp_nt) @@ -111,8 +113,6 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: for node in node_tree.nodes: self._process_node(node, ntp_nt) - self._set_node_tree_properties(node_tree) - #set look of nodes self._set_parents(node_tree) self._set_locations(node_tree) From 69ce7da6eab3223bfc9097b3e6bf19641973d2da Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 16 Jul 2024 23:03:43 -0500 Subject: [PATCH 198/286] feat: clean up panel creation --- ntp_operator.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 94c46e7..89d4e3f 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -626,9 +626,8 @@ def _create_panel(self, panel: NodeTreeInterfacePanel, closed_str = f", default_closed=True" parent_str = "" - if parent is not None: - parent_str = f", parent = {panel_dict[parent]}" - + if parent is not None and bpy.app.version < (4, 2, 0): + parent_str = f", parent = {panel_dict[parent]}" self._write(f"{panel_var} = " f"{ntp_nt.var}.interface.new_panel(" From eae60174cd88831102ef556c7d4f60a1681c3782 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 Jul 2024 14:17:29 -0500 Subject: [PATCH 199/286] feat: add manifest file --- blender_manifest.toml | 21 +++++++++++++++++++++ ntp_operator.py | 8 ++------ 2 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 blender_manifest.toml diff --git a/blender_manifest.toml b/blender_manifest.toml new file mode 100644 index 0000000..ae80e87 --- /dev/null +++ b/blender_manifest.toml @@ -0,0 +1,21 @@ +schema_version = "1.0.0" + +id = "node_to_python" +version = "3.2.0" +name = "Node To Python" +tagline = "Turn node groups into Python code" +maintainer = "Brendan Parmer " +type = "add-on" + +permissions = ["files"] + +website = "https://github.com/BrendanParmer/NodeToPython" + +tags = ["Development", "Compositing", "Geometry Nodes", "Material", "Node"] + +blender_version_min = "4.2.0" +blender_version_max = "4.3.0" + +license = [ + "SPDX:MIT", +] \ No newline at end of file diff --git a/ntp_operator.py b/ntp_operator.py index 89d4e3f..4973450 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -617,10 +617,6 @@ def _create_panel(self, panel: NodeTreeInterfacePanel, panel_var = self._create_var(panel.name + "_panel") panel_dict[panel] = panel_var - description_str = "" - if panel.description != "": - description_str = f", description = {str_to_py_str(panel.description)}" - closed_str = "" if panel.default_closed is True: closed_str = f", default_closed=True" @@ -631,10 +627,10 @@ def _create_panel(self, panel: NodeTreeInterfacePanel, self._write(f"{panel_var} = " f"{ntp_nt.var}.interface.new_panel(" - f"{str_to_py_str(panel.name)}{description_str}" + f"{str_to_py_str(panel.name)}" f"{closed_str}{parent_str})") - # tooltip + # tooltip if panel.description != "": description = str_to_py_str(panel.description) self._write(f"{panel_var}.description = {description}") From f9043761d71917644d1d9ce749678c55feb45871 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 Jul 2024 14:23:07 -0500 Subject: [PATCH 200/286] docs: clarify usage of filesystem permissions --- blender_manifest.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/blender_manifest.toml b/blender_manifest.toml index ae80e87..51840c2 100644 --- a/blender_manifest.toml +++ b/blender_manifest.toml @@ -7,6 +7,7 @@ tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " type = "add-on" +# In add-on mode, NodeToPython will create and write to files at a specified directory permissions = ["files"] website = "https://github.com/BrendanParmer/NodeToPython" From 1671c629ff487b070f81137a7b26234c079274c4 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 Jul 2024 14:55:43 -0500 Subject: [PATCH 201/286] fix: correct data type setting for capture attribute items --- ntp_operator.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 4973450..a82b471 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1151,11 +1151,18 @@ def _enum_definition(self, enum_def: bpy.types.NodeEnumDefinition, if bpy.app.version >= (4, 2, 0): def _capture_attribute_items(self, capture_attribute_items: bpy.types.NodeGeometryCaptureAttributeItems, capture_attrs_str: str) -> None: + """ + Sets capture attribute items + """ self._write(f"{capture_attrs_str}.clear()") - for i, item in enumerate(capture_attribute_items): - data_type = enum_to_py_str(item.data_type) + for item in capture_attribute_items: name = str_to_py_str(item.name) - self._write(f"{capture_attrs_str}.new({data_type}, {name})") + self._write(f"{capture_attrs_str}.new('FLOAT', {name})") + + # Need to initialize capture attribute item with a socket, + # which has a slightly different enum to the attribute type + data_type = enum_to_py_str(item.data_type) + self._write(f"{capture_attrs_str}[{name}].data_type = {data_type}") def _menu_switch_items(self, menu_switch_items: bpy.types.NodeMenuSwitchItems, menu_switch_items_str: str) -> None: self._write(f"{menu_switch_items_str}.clear()") From c015bbfd6291b15f652bfb10c521859da5233a3a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 Jul 2024 15:21:44 -0500 Subject: [PATCH 202/286] fix: correct unavailable defaults option name --- options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/options.py b/options.py index ba88d24..ab28565 100644 --- a/options.py +++ b/options.py @@ -55,6 +55,6 @@ def draw(self, context): "set_dimensions" ] if bpy.app.version >= (3, 4, 0): - option_list.append("set_hidden_defaults") + option_list.append("set_unavailable_defaults") for option in option_list: layout.prop(ntp_options, option) \ No newline at end of file From 057303e314ec231555e36bdb09c0559ebd7b5db3 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 Jul 2024 15:55:31 -0500 Subject: [PATCH 203/286] feat: file permission explanation now included in manifest file --- blender_manifest.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/blender_manifest.toml b/blender_manifest.toml index 51840c2..7443d4c 100644 --- a/blender_manifest.toml +++ b/blender_manifest.toml @@ -7,9 +7,6 @@ tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " type = "add-on" -# In add-on mode, NodeToPython will create and write to files at a specified directory -permissions = ["files"] - website = "https://github.com/BrendanParmer/NodeToPython" tags = ["Development", "Compositing", "Geometry Nodes", "Material", "Node"] @@ -19,4 +16,7 @@ blender_version_max = "4.3.0" license = [ "SPDX:MIT", -] \ No newline at end of file +] + +[permissions] +files = "In add-on mode, NodeToPython will create and write to files in a specified directory" \ No newline at end of file From 1784a80d43df786aa3b0fe29492db47bca6a2858 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Aug 2024 14:16:58 -0500 Subject: [PATCH 204/286] feat: addon vs script option rework --- compositor/operator.py | 8 -------- geometry/operator.py | 8 -------- ntp_operator.py | 15 +------------- options.py | 46 +++++++++++++++++++++++++++++++----------- 4 files changed, 35 insertions(+), 42 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 74df619..14bf36f 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -20,14 +20,6 @@ class NTPCompositorOperator(NTP_Operator): bl_idname = "node.ntp_compositor" bl_label = "Compositor to Python" bl_options = {'REGISTER', 'UNDO'} - - mode : bpy.props.EnumProperty( - name = "Mode", - items = [ - ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") - ] - ) compositor_name: bpy.props.StringProperty(name="Node Group") is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") diff --git a/geometry/operator.py b/geometry/operator.py index 330f4ab..5a1362d 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -21,14 +21,6 @@ class NTPGeoNodesOperator(NTP_Operator): bl_label = "Geo Nodes to Python" bl_options = {'REGISTER', 'UNDO'} - mode: bpy.props.EnumProperty( - name = "Mode", - items = [ - ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") - ] - ) - geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def __init__(self): diff --git a/ntp_operator.py b/ntp_operator.py index fbbd02c..feaa8eb 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -47,14 +47,6 @@ class NTP_Operator(Operator): bl_idname = "" bl_label = "" - mode: bpy.props.EnumProperty( - name="Mode", - items=[ - ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), - ('ADDON', "Addon", "Create a full addon") - ] - ) - # node tree input sockets that have default properties if bpy.app.version < (4, 0, 0): default_sockets_v3 = {'VALUE', 'INT', 'BOOLEAN', 'VECTOR', 'RGBA'} @@ -125,6 +117,7 @@ def _write(self, string: str, indent: str = None): self._file.write(f"{indent}{string}\n") def _setup_options(self, options: NTPOptions) -> None: + self.mode = options.mode self._include_imports = options.include_imports self._include_group_socket_values = options.include_group_socket_values self._should_set_dimensions = options.set_dimensions @@ -1386,9 +1379,3 @@ def _report_finished(self, object: str): # ABSTRACT def execute(self): return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self) - - def draw(self, context): - self.layout.prop(self, "mode") diff --git a/options.py b/options.py index ab28565..5d44712 100644 --- a/options.py +++ b/options.py @@ -4,16 +4,13 @@ class NTPOptions(bpy.types.PropertyGroup): """ Property group used during conversion of node group to python """ - dir_path : bpy.props.StringProperty( - name = "Save Location", - subtype='DIR_PATH', - description="Save location if generating an add-on", - default = "//" - ) - include_imports : bpy.props.BoolProperty( - name = "Include imports", - description="Generate necessary import statements", - default = True + # General properties + mode: bpy.props.EnumProperty( + name = "Mode", + items = [ + ('SCRIPT', "Script", "Copy just the node group to the Blender clipboard"), + ('ADDON', "Addon", "Create a full add-on") + ] ) include_group_socket_values : bpy.props.BoolProperty( name = "Include group socket values", @@ -32,6 +29,20 @@ class NTPOptions(bpy.types.PropertyGroup): default = False ) + #Script properties + include_imports : bpy.props.BoolProperty( + name = "Include imports", + description="Generate necessary import statements", + default = True + ) + # Addon properties + dir_path : bpy.props.StringProperty( + name = "Save Location", + subtype='DIR_PATH', + description="Save location if generating an add-on", + default = "//" + ) + class NTPOptionsPanel(bpy.types.Panel): bl_label = "Options" bl_idname = "NODE_PT_ntp_options" @@ -49,12 +60,23 @@ def draw(self, context): ntp_options = context.scene.ntp_options option_list = [ - "dir_path", - "include_imports", + "mode", "include_group_socket_values", "set_dimensions" ] if bpy.app.version >= (3, 4, 0): option_list.append("set_unavailable_defaults") + + if ntp_options.mode == 'SCRIPT': + script_options = [ + "include_imports" + ] + option_list += script_options + elif ntp_options.mode == 'ADDON': + addon_options = [ + "dir_path" + ] + option_list += addon_options + for option in option_list: layout.prop(ntp_options, option) \ No newline at end of file From e560f4f3fb45e047d3b33537e69dd2ecaf0ffab7 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Aug 2024 14:27:02 -0500 Subject: [PATCH 205/286] feat: author and version fields --- compositor/operator.py | 10 +++++----- geometry/operator.py | 8 ++++---- ntp_operator.py | 12 +++++++----- options.py | 14 +++++++++++++- shader/operator.py | 10 +++++----- 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 14bf36f..126c0b1 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -203,7 +203,7 @@ def execute(self, context): #set up names to use in generated addon comp_var = clean_string(self.compositor_name) - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._outer = "\t\t" self._inner = "\t\t\t" @@ -223,9 +223,9 @@ def execute(self, context): self._file.write("import bpy, mathutils\n\n") if self.is_scene: - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._create_scene("\t\t") - elif self.mode == 'SCRIPT': + elif self._mode == 'SCRIPT': self._create_scene("") node_trees_to_process = self._topological_sort(self._base_node_tree) @@ -233,7 +233,7 @@ def execute(self, context): for node_tree in node_trees_to_process: self._process_node_tree(node_tree) - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._write("return {'FINISHED'}\n", self._outer) self._create_menu_func() @@ -245,7 +245,7 @@ def execute(self, context): self._file.close() - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._zip_addon() self._report_finished("compositor nodes") diff --git a/geometry/operator.py b/geometry/operator.py index 5a1362d..788f344 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -20,7 +20,7 @@ class NTPGeoNodesOperator(NTP_Operator): bl_idname = "node.ntp_geo_nodes" bl_label = "Geo Nodes to Python" bl_options = {'REGISTER', 'UNDO'} - + geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") def __init__(self): @@ -179,7 +179,7 @@ def execute(self, context): #set up names to use in generated addon nt_var = clean_string(nt.name) - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._outer = "\t\t" self._inner = "\t\t\t" @@ -203,7 +203,7 @@ def execute(self, context): for node_tree in node_trees_to_process: self._process_node_tree(node_tree) - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._apply_modifier(nt, nt_var) self._write("return {'FINISHED'}\n", self._outer) self._create_menu_func() @@ -214,7 +214,7 @@ def execute(self, context): context.window_manager.clipboard = self._file.getvalue() self._file.close() - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._zip_addon() self._report_finished("geometry node group") diff --git a/ntp_operator.py b/ntp_operator.py index feaa8eb..38584a1 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -117,12 +117,14 @@ def _write(self, string: str, indent: str = None): self._file.write(f"{indent}{string}\n") def _setup_options(self, options: NTPOptions) -> None: - self.mode = options.mode + self._mode = options.mode self._include_imports = options.include_imports self._include_group_socket_values = options.include_group_socket_values self._should_set_dimensions = options.set_dimensions if bpy.app.version >= (3, 4, 0): self._set_unavailable_defaults = options.set_unavailable_defaults + self._author_name = options.author_name + self._version = options.version def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: """ @@ -161,9 +163,9 @@ def _create_header(self, name: str) -> None: """ self._write("bl_info = {", "") - self._write(f"\t\"name\" : \"{name}\",", "") - self._write("\t\"author\" : \"Node To Python\",", "") - self._write("\t\"version\" : (1, 0, 0),", "") + self._write(f"\t\"name\" : {str_to_py_str(name)},", "") + self._write(f"\t\"author\" : {str_to_py_str(self._author_name)},", "") + self._write(f"\t\"version\" : {vec3_to_py_str(self._version)},", "") self._write(f"\t\"blender\" : {bpy.app.version},", "") self._write("\t\"location\" : \"Object\",", "") # TODO self._write("\t\"category\" : \"Node\"", "") @@ -1370,7 +1372,7 @@ def _report_finished(self, object: str): object (str): the copied node tree or encapsulating structure (geometry node modifier, material, scene, etc.) """ - if self.mode == 'SCRIPT': + if self._mode == 'SCRIPT': location = "clipboard" else: location = self._dir diff --git a/options.py b/options.py index 5d44712..3b64e05 100644 --- a/options.py +++ b/options.py @@ -42,6 +42,16 @@ class NTPOptions(bpy.types.PropertyGroup): description="Save location if generating an add-on", default = "//" ) + author_name : bpy.props.StringProperty( + name = "Author", + description = "Name used for the author/maintainer of the add-on", + default = "Node To Python" + ) + version: bpy.props.IntVectorProperty( + name = "Version", + description="Version of the add-on", + default = (1, 0, 0) + ) class NTPOptionsPanel(bpy.types.Panel): bl_label = "Options" @@ -74,7 +84,9 @@ def draw(self, context): option_list += script_options elif ntp_options.mode == 'ADDON': addon_options = [ - "dir_path" + "dir_path", + "author_name", + "version" ] option_list += addon_options diff --git a/shader/operator.py b/shader/operator.py index 858883e..3a36c7e 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -140,7 +140,7 @@ def execute(self, context): #set up names to use in generated addon mat_var = clean_string(self.material_name) - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._outer = "\t\t" self._inner = "\t\t\t" @@ -159,9 +159,9 @@ def execute(self, context): if self._include_imports: self._file.write("import bpy, mathutils\n\n") - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._create_material("\t\t") - elif self.mode == 'SCRIPT': + elif self._mode == 'SCRIPT': self._create_material("") node_trees_to_process = self._topological_sort(self._base_node_tree) @@ -169,7 +169,7 @@ def execute(self, context): for node_tree in node_trees_to_process: self._process_node_tree(node_tree) - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._write("return {'FINISHED'}", self._outer) self._create_menu_func() self._create_register_func() @@ -180,7 +180,7 @@ def execute(self, context): self._file.close() - if self.mode == 'ADDON': + if self._mode == 'ADDON': self._zip_addon() self._report_finished("material") From ead5f942f1e13fc2afe2a4621f62ab5cecb5c1cb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Aug 2024 15:51:05 -0500 Subject: [PATCH 206/286] feat: more bl_info fields, option for menu location --- ntp_operator.py | 49 +++++++++++++++++++++------------ options.py | 73 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 103 insertions(+), 19 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 38584a1..94341ac 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -67,9 +67,6 @@ def __init__(self): # File (TextIO) or string (StringIO) the add-on/script is generated into self._file: TextIO = None - # Path to the current directory - self._dir: str = None - # Path to the directory of the zip file self._zip_dir: str = None @@ -117,14 +114,27 @@ def _write(self, string: str, indent: str = None): self._file.write(f"{indent}{string}\n") def _setup_options(self, options: NTPOptions) -> None: + # General self._mode = options.mode - self._include_imports = options.include_imports self._include_group_socket_values = options.include_group_socket_values self._should_set_dimensions = options.set_dimensions if bpy.app.version >= (3, 4, 0): self._set_unavailable_defaults = options.set_unavailable_defaults - self._author_name = options.author_name - self._version = options.version + + #Script + if options.mode == 'SCRIPT': + self._include_imports = options.include_imports + #Addon + elif options.mode == 'ADDON': + self._dir_path = bpy.path.abspath(options.dir_path) + self._name_override = options.name_override + self._description = options.description + self._author_name = options.author_name + self._version = options.version + self._location = options.location + self._category = options.category + self._custom_category = options.custom_category + self._menu_id = options.menu_id def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: """ @@ -137,15 +147,13 @@ def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: Returns: (bool): success of addon directory setup """ - # find base directory to save new addon - self._dir = bpy.path.abspath(context.scene.ntp_options.dir_path) - if not self._dir or self._dir == "": + if not self._dir_path or self._dir_path == "": self.report({'ERROR'}, ("NodeToPython: No save location found. Please select " "one in the NodeToPython Options panel")) return False - self._zip_dir = os.path.join(self._dir, nt_var) + self._zip_dir = os.path.join(self._dir_path, nt_var) self._addon_dir = os.path.join(self._zip_dir, nt_var) if not os.path.exists(self._addon_dir): @@ -163,12 +171,19 @@ def _create_header(self, name: str) -> None: """ self._write("bl_info = {", "") + if self._name_override and self._name_override != "": + name = self._name_override self._write(f"\t\"name\" : {str_to_py_str(name)},", "") + if self._description and self._description != "": + self.write(f"\t\"description\" : {str_to_py_str(self._description)}," "") self._write(f"\t\"author\" : {str_to_py_str(self._author_name)},", "") self._write(f"\t\"version\" : {vec3_to_py_str(self._version)},", "") self._write(f"\t\"blender\" : {bpy.app.version},", "") - self._write("\t\"location\" : \"Object\",", "") # TODO - self._write("\t\"category\" : \"Node\"", "") + self._write(f"\t\"location\" : {str_to_py_str(self._location)},", "") + category = self._category + if category == "Custom": + category = self._custom_category + self._write(f"\t\"category\" : {str_to_py_str(category)},", "") self._write("}\n", "") self._write("import bpy", "") self._write("import mathutils", "") @@ -185,8 +200,8 @@ def _init_operator(self, idname: str, label: str) -> None: label (str): appearence inside Blender """ self._write(f"class {self._class_name}(bpy.types.Operator):", "") - self._write(f"\tbl_idname = \"object.{idname}\"", "") - self._write(f"\tbl_label = \"{label}\"", "") + self._write(f"\tbl_idname = \"node.{idname}\"", "") + self._write(f"\tbl_label = {str_to_py_str(label)}", "") self._write("\tbl_options = {\'REGISTER\', \'UNDO\'}", "") self._write("") @@ -1330,7 +1345,7 @@ def _create_register_func(self) -> None: """ self._write("def register():", "") self._write(f"bpy.utils.register_class({self._class_name})", "\t") - self._write("bpy.types.VIEW3D_MT_object.append(menu_func)", "\t") + self._write(f"bpy.types.{self._menu_id}.append(menu_func)", "\t") self._write("") def _create_unregister_func(self) -> None: @@ -1339,7 +1354,7 @@ def _create_unregister_func(self) -> None: """ self._write("def unregister():", "") self._write(f"bpy.utils.unregister_class({self._class_name})", "\t") - self._write("bpy.types.VIEW3D_MT_object.remove(menu_func)", "\t") + self._write(f"bpy.types.{self._menu_id}.remove(menu_func)", "\t") self._write("") def _create_main_func(self) -> None: @@ -1375,7 +1390,7 @@ def _report_finished(self, object: str): if self._mode == 'SCRIPT': location = "clipboard" else: - location = self._dir + location = self._dir_path self.report({'INFO'}, f"NodeToPython: Saved {object} to {location}") # ABSTRACT diff --git a/options.py b/options.py index 3b64e05..47871df 100644 --- a/options.py +++ b/options.py @@ -42,6 +42,16 @@ class NTPOptions(bpy.types.PropertyGroup): description="Save location if generating an add-on", default = "//" ) + name_override : bpy.props.StringProperty( + name = "Name Override", + description="Name used for the add-on's, default is node group name", + default = "" + ) + description : bpy.props.StringProperty( + name = "Description", + description="Description used for the add-on", + default="" + ) author_name : bpy.props.StringProperty( name = "Author", description = "Name used for the author/maintainer of the add-on", @@ -52,7 +62,61 @@ class NTPOptions(bpy.types.PropertyGroup): description="Version of the add-on", default = (1, 0, 0) ) - + location: bpy.props.StringProperty( + name = "Location", + description="Location of the addon", + default="Node" + ) + menu_id: bpy.props.StringProperty( + name = "Menu ID", + description = "Python ID of the menu you'd like to register the add-on " + "to. You can find this by enabling Python tooltips " + "(Preferences > Interface > Python tooltips) and " + "hovering over the desired menu", + default="NODE_MT_add" + ) + category: bpy.props.EnumProperty( + name = "Category", + items = [ + ('Custom', "Custom", "Use an unofficial category"), + ('3D View', "3D View", ""), + ('Add Curve', "Add Curve", ""), + ('Add Mesh', "Add Mesh", ""), + ('Animation', "Animation", ""), + ('Bake', "Bake", ""), + ('Compositing', "Compositing", ""), + ('Development', "Development", ""), + ('Game Engine', "Game Engine", ""), + ('Geometry Nodes', "Geometry Nodes", ""), + ("Grease Pencil", "Grease Pencil", ""), + ('Import-Export', "Import-Export", ""), + ('Lighting', "Lighting", ""), + ('Material', "Material", ""), + ('Mesh', "Mesh", ""), + ('Modeling', "Modeling", ""), + ('Node', "Node", ""), + ('Object', "Object", ""), + ('Paint', "Paint", ""), + ('Pipeline', "Pipeline", ""), + ('Physics', "Physics", ""), + ('Render', "Render", ""), + ('Rigging', "Rigging", ""), + ('Scene', "Scene", ""), + ('Sculpt', "Sculpt", ""), + ('Sequencer', "Sequencer", ""), + ('System', "System", ""), + ('Text Editor', "Text Editor", ""), + ('Tracking', "Tracking", ""), + ('UV', "UV", ""), + ('User Interface', "User Interface", ""), + ], + default = 'Node' + ) + custom_category: bpy.props.StringProperty( + name="Custom Category", + description="Custom category", + default = "" + ) class NTPOptionsPanel(bpy.types.Panel): bl_label = "Options" bl_idname = "NODE_PT_ntp_options" @@ -86,9 +150,14 @@ def draw(self, context): addon_options = [ "dir_path", "author_name", - "version" + "version", + "location", + "menu_id", + "category" ] option_list += addon_options + if ntp_options.category == 'CUSTOM': + option_list.append("custom_category") for option in option_list: layout.prop(ntp_options, option) \ No newline at end of file From fbcf139347d23694ccecb0dec7a32702b43b1f61 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Aug 2024 15:57:42 -0500 Subject: [PATCH 207/286] feat: error checking on menu type --- compositor/operator.py | 3 ++- geometry/operator.py | 3 ++- ntp_operator.py | 9 +++++++-- shader/operator.py | 3 ++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 126c0b1..f7ff414 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -185,7 +185,8 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) def execute(self, context): - self._setup_options(context.scene.ntp_options) + if not self._setup_options(context.scene.ntp_options): + return {'CANCELLED'} #find node group to replicate if self.is_scene: diff --git a/geometry/operator.py b/geometry/operator.py index 788f344..508fd08 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -171,7 +171,8 @@ def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): def execute(self, context): - self._setup_options(context.scene.ntp_options) + if not self._setup_options(context.scene.ntp_options): + return {'CANCELLED'} #find node group to replicate nt = bpy.data.node_groups[self.geo_nodes_group_name] diff --git a/ntp_operator.py b/ntp_operator.py index 94341ac..6f7a113 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -113,7 +113,7 @@ def _write(self, string: str, indent: str = None): indent = self._inner self._file.write(f"{indent}{string}\n") - def _setup_options(self, options: NTPOptions) -> None: + def _setup_options(self, options: NTPOptions) -> bool: # General self._mode = options.mode self._include_group_socket_values = options.include_group_socket_values @@ -134,7 +134,12 @@ def _setup_options(self, options: NTPOptions) -> None: self._location = options.location self._category = options.category self._custom_category = options.custom_category - self._menu_id = options.menu_id + if options.menu_id in dir(bpy.types): + self._menu_id = options.menu_id + else: + self.report({'ERROR'}, f"{options.menu_id} is not a valid menu") + return False + return True def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: """ diff --git a/shader/operator.py b/shader/operator.py index 3a36c7e..bd136fe 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -128,7 +128,8 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: def execute(self, context): - self._setup_options(context.scene.ntp_options) + if not self._setup_options(context.scene.ntp_options): + return {'CANCELLED'} #find node group to replicate self._base_node_tree = bpy.data.materials[self.material_name].node_tree From e97aad738491896aa2073b4b5e9ecea42f5e0262 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Aug 2024 16:01:19 -0500 Subject: [PATCH 208/286] fix: throw warning if image data is invalid --- ntp_operator.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ntp_operator.py b/ntp_operator.py index 6f7a113..adee2b8 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1048,13 +1048,19 @@ def _save_image(self, img: bpy.types.Image) -> None: if img is None: return + img_str = img_to_py_str(img) + + if not img.has_data: + self.report({'WARNING'}, f"{img_str} has no data") + return + # create image dir if one doesn't exist img_dir = os.path.join(self._addon_dir, IMAGE_DIR_NAME) if not os.path.exists(img_dir): os.mkdir(img_dir) # save the image - img_str = img_to_py_str(img) + img_path = f"{img_dir}/{img_str}" if not os.path.exists(img_path): img.save_render(img_path) From 31e44bc245ab782a8680632a24b6995e6c9ef7b0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Aug 2024 16:54:28 -0500 Subject: [PATCH 209/286] feat: create manifest, fix typo --- compositor/operator.py | 2 ++ geometry/operator.py | 2 ++ ntp_operator.py | 28 +++++++++++++++++++++++++--- options.py | 25 +++++++++++++++++++++++++ shader/operator.py | 2 ++ utils.py | 3 +++ 6 files changed, 59 insertions(+), 3 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index f7ff414..92ba873 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -241,6 +241,8 @@ def execute(self, context): self._create_register_func() self._create_unregister_func() self._create_main_func() + if bpy.app.version >= (4, 2, 0): + self._create_manifest() else: context.window_manager.clipboard = self._file.getvalue() diff --git a/geometry/operator.py b/geometry/operator.py index 508fd08..a19c098 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -211,6 +211,8 @@ def execute(self, context): self._create_register_func() self._create_unregister_func() self._create_main_func() + if bpy.app.version >= (4, 2, 0): + self._create_manifest() else: context.window_manager.clipboard = self._file.getvalue() self._file.close() diff --git a/ntp_operator.py b/ntp_operator.py index adee2b8..4968cda 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -132,6 +132,7 @@ def _setup_options(self, options: NTPOptions) -> bool: self._author_name = options.author_name self._version = options.version self._location = options.location + self._license = options.license self._category = options.category self._custom_category = options.custom_category if options.menu_id in dir(bpy.types): @@ -176,11 +177,12 @@ def _create_header(self, name: str) -> None: """ self._write("bl_info = {", "") + self._name = name if self._name_override and self._name_override != "": - name = self._name_override - self._write(f"\t\"name\" : {str_to_py_str(name)},", "") + self._name = self._name_override + self._write(f"\t\"name\" : {str_to_py_str(self._name)},", "") if self._description and self._description != "": - self.write(f"\t\"description\" : {str_to_py_str(self._description)}," "") + self._write(f"\t\"description\" : {str_to_py_str(self._description)}," "") self._write(f"\t\"author\" : {str_to_py_str(self._author_name)},", "") self._write(f"\t\"version\" : {vec3_to_py_str(self._version)},", "") self._write(f"\t\"blender\" : {bpy.app.version},", "") @@ -204,6 +206,7 @@ def _init_operator(self, idname: str, label: str) -> None: idname (str): name for the operator label (str): appearence inside Blender """ + self._idname = idname self._write(f"class {self._class_name}(bpy.types.Operator):", "") self._write(f"\tbl_idname = \"node.{idname}\"", "") self._write(f"\tbl_label = {str_to_py_str(label)}", "") @@ -1375,6 +1378,25 @@ def _create_main_func(self) -> None: self._write("if __name__ == \"__main__\":", "") self._write("register()", "\t") + if bpy.app.version >= (4, 2, 0): + def _create_manifest(self) -> None: + manifest = open(f"{self._addon_dir}/blender_manifest.toml", "w") + manifest.write("schema_version = \"1.0.0\"\n\n") + manifest.write(f"id = {str_to_py_str(self._idname)}\n") + + manifest.write(f"version = {version_to_manifest_str(self._version)}\n") + manifest.write(f"name = {str_to_py_str(self._name)}\n") + manifest.write(f"tagline = {str_to_py_str(self._description)}\n") + manifest.write(f"maintainer = {str_to_py_str(self._author_name)}\n") + manifest.write("type = \"add-on\"\n") + manifest.write(f"blender_version_min = {version_to_manifest_str(bpy.app.version)}\n") + if self._license != 'OTHER': + manifest.write(f"license = [{str_to_py_str(self._license)}]\n") + else: + self.report({'WARNING'}, "No license selected. Please add a license to the manifest file") + + manifest.close() + def _zip_addon(self) -> None: """ Zips up the addon and removes the directory diff --git a/options.py b/options.py index 47871df..2df6a81 100644 --- a/options.py +++ b/options.py @@ -35,6 +35,7 @@ class NTPOptions(bpy.types.PropertyGroup): description="Generate necessary import statements", default = True ) + # Addon properties dir_path : bpy.props.StringProperty( name = "Save Location", @@ -75,6 +76,26 @@ class NTPOptions(bpy.types.PropertyGroup): "hovering over the desired menu", default="NODE_MT_add" ) + license: bpy.props.EnumProperty( + name="License", + items = [ + ('SPDX:GPL-2.0-or-later', "GNU General Public License v2.0 or later", ""), + ('SPDX:GPL-3.0-or-later', "GNU General Public License v3.0 or later", ""), + ('SPDX:LGPL-2.1-or-later', "GNU Lesser General Public License v2.1 or later", ""), + ('SPDX:LGPL-3.0-or-later', "GNU Lesser General Public License v3.0 or later", ""), + ('SPDX:BSD-1-Clause', "BSD 1-Clause \"Simplified\" License", ""), + ('SPDX:BSD-2-Clause', "BSD 2-Clause \"Simplified\" License", ""), + ('SPDX:BSD-3-Clause', "BSD 3-Clause “New” or “Revised” License", ""), + ('SPDX:BSL-1.0', "Boost Software License 1.0", ""), + ('SPDX:MIT', "MIT License", ""), + ('SPDX:MIT-0', "MIT No Attribution", ""), + ('SPDX:MPL-2.0', "Mozilla Public License 2.0", ""), + ('SPDX:Pixar', "Pixar License", ""), + ('SPDX:Zlib', "Zlib License", ""), + ('OTHER', "Other", "") + ], + default = 'OTHER' + ) category: bpy.props.EnumProperty( name = "Category", items = [ @@ -117,6 +138,7 @@ class NTPOptions(bpy.types.PropertyGroup): description="Custom category", default = "" ) + class NTPOptionsPanel(bpy.types.Panel): bl_label = "Options" bl_idname = "NODE_PT_ntp_options" @@ -149,10 +171,13 @@ def draw(self, context): elif ntp_options.mode == 'ADDON': addon_options = [ "dir_path", + "name_override", + "description", "author_name", "version", "location", "menu_id", + "license", "category" ] option_list += addon_options diff --git a/shader/operator.py b/shader/operator.py index bd136fe..2825fe8 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -176,6 +176,8 @@ def execute(self, context): self._create_register_func() self._create_unregister_func() self._create_main_func() + if bpy.app.version >= (4, 2, 0): + self._create_manifest() else: context.window_manager.clipboard = self._file.getvalue() diff --git a/utils.py b/utils.py index cbf8b91..b7ddcae 100644 --- a/utils.py +++ b/utils.py @@ -88,6 +88,9 @@ def vec3_to_py_str(vec3) -> str: """ return f"({vec3[0]}, {vec3[1]}, {vec3[2]})" +def version_to_manifest_str(version) -> str: + return f"\"{version[0]}.{version[1]}.{version[2]}\"" + def vec4_to_py_str(vec4) -> str: """ Converts a 4D vector to a string usable by the add-on From 8fda601ff930f29696730b0ece3011971b2403c4 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 3 Aug 2024 16:58:02 -0500 Subject: [PATCH 210/286] fix: don't try to load invalid images --- ntp_operator.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ntp_operator.py b/ntp_operator.py index 4968cda..106f796 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -394,8 +394,8 @@ def _set_settings_defaults(self, node: Node) -> None: elif st == ST.IMAGE: if self._addon_dir is not None and attr is not None: if attr.source in {'FILE', 'GENERATED', 'TILED'}: - self._save_image(attr) - self._load_image(attr, f"{node_var}.{attr_name}") + if self._save_image(attr): + self._load_image(attr, f"{node_var}.{attr_name}") elif st == ST.IMAGE_USER: self._image_user_settings(attr, f"{node_var}.{attr_name}") elif st == ST.SIM_OUTPUT_ITEMS: @@ -782,8 +782,8 @@ def _set_input_defaults(self, node: Node) -> None: elif input.bl_idname == 'NodeSocketImage': img = input.default_value if img is not None and self._addon_dir != None: # write in a better way - self._save_image(img) - self._load_image(img, f"{socket_var}.default_value") + if self._save_image(img): + self._load_image(img, f"{socket_var}.default_value") default_val = None # materials @@ -1040,7 +1040,7 @@ def _node_tree_settings(self, node: Node, attr_name: str) -> None: self.report({'WARNING'}, (f"NodeToPython: Node tree dependency graph " f"wasn't properly initialized")) - def _save_image(self, img: bpy.types.Image) -> None: + def _save_image(self, img: bpy.types.Image) -> bool: """ Saves an image to an image directory of the add-on @@ -1049,13 +1049,13 @@ def _save_image(self, img: bpy.types.Image) -> None: """ if img is None: - return + return False img_str = img_to_py_str(img) if not img.has_data: self.report({'WARNING'}, f"{img_str} has no data") - return + return False # create image dir if one doesn't exist img_dir = os.path.join(self._addon_dir, IMAGE_DIR_NAME) @@ -1067,6 +1067,7 @@ def _save_image(self, img: bpy.types.Image) -> None: img_path = f"{img_dir}/{img_str}" if not os.path.exists(img_path): img.save_render(img_path) + return True def _load_image(self, img: bpy.types.Image, img_var: str) -> None: """ From 5967bf7644948d1afb53b58befa372ce10ac420a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 4 Aug 2024 13:19:09 -0500 Subject: [PATCH 211/286] docs: update logo and readme --- docs/README.md | 17 +++++++---------- docs/img/NodeToPython_Location.png | Bin 0 -> 93308 bytes docs/img/location.png | Bin 47953 -> 0 bytes docs/img/logo.png | Bin 0 -> 4421425 bytes docs/img/ntp.jpg | Bin 166411 -> 0 bytes 5 files changed, 7 insertions(+), 10 deletions(-) create mode 100644 docs/img/NodeToPython_Location.png delete mode 100644 docs/img/location.png create mode 100644 docs/img/logo.png delete mode 100644 docs/img/ntp.jpg diff --git a/docs/README.md b/docs/README.md index 8aebeeb..3837b0b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ # Node to Python -![Node To Python Logo](./img/ntp.jpg "Node To Python Logo") +![Node To Python Logo](./img/logo.png "Node To Python Logo") [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/releases) [![GitHub](https://img.shields.io/github/license/BrendanParmer/NodeToPython)](https://github.com/BrendanParmer/NodeToPython/blob/main/LICENSE) ![](https://visitor-badge.laobi.icu/badge?page_id=BrendanParmer.NodeToPython) ![](https://img.shields.io/github/downloads/BrendanParmer/NodeToPython/total.svg) @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.1 is supported for Blender 3.0 - 4.1 on Windows, macOS, and Linux. +NodeToPython v3.2 is supported for Blender 3.0 - 4.2 on Windows, macOS, and Linux. ## Installation 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) @@ -26,22 +26,19 @@ NodeToPython v3.1 is supported for Blender 3.0 - 4.1 on Windows, macOS, and Linu ## Usage Once you've installed the add-on, you'll see a new tab in any Node Editor's sidebar. You can open this with keyboard shortcut `N` when focused in the Node Editor. -In the tab, there's panels to create add-ons for Geometry Nodes and Materials, each with a drop-down menu. +In the tab, there are panels to create add-ons for Geometry Nodes, Materials, and Compositing Nodes, each with a drop-down menu. You can set options in the options tab. -![Add-on Location](./img/location.png "Add-on Location") +![Add-on Location](./img/NodeToPython_Location.png "Add-on Location") -Select the node group you want code for, and you'll be prompted with a **Script** or **Add-on** option. +In the options panel, select either **Script** or **Add-on**. * **Script** mode creates a function that generates the node tree and copies it to your Blender clipboard. - * Doesn't include `import bpy` line - * To keep NodeToPython cross-platform and independent of third-party libraries, to get it into your system clipboard you need to paste into the Blender text editor and recopy it currently -* **Add-on** mode generates a zip file for you in the save directory specified in the NodeToPython menu. From here, you can install it like a regular add-on. The generated add-on comes complete with operator registration and creating a modifier/material for the node tree to be used in. - * The current default operator install location is in the Object menu +* **Add-on** mode generates a zip file for you in the save directory specified in the NodeToPython menu. From here, you can install it like a regular add-on. The generated add-on comes complete with operator registration and creating a modifier/material for the node tree to be used in. ## Bug Reports and Suggestions When submitting an issue, please include -* Your version of Blender +* Your version of Blender (3.0 - 4.2) * Your operating system * Steps to reproduce the issue or a description of what you were trying to accomplish. Providing a test blend file is especially helpful diff --git a/docs/img/NodeToPython_Location.png b/docs/img/NodeToPython_Location.png new file mode 100644 index 0000000000000000000000000000000000000000..34acaab5123c36d69808a641b62f4391ed06e665 GIT binary patch literal 93308 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%0DnF;?!+9~UK4DVyW|`y|B|a6tzQd}{ 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 F9c5_)cWH1wM4@J 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 literal 0 HcmV?d00001 diff --git a/docs/img/location.png b/docs/img/location.png deleted file mode 100644 index 98c8b797db8d2a989e14867ccb4e3d88c5ab6d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47953 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 diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..40cf16b90e70b7a5cf4610ade4df68549fa50f37 GIT binary patch literal 4421425 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¶ibuGW4IT-d=IQ9v0JwA~^ve z_{AOIaR}P3`FL%#C*=vbuV)vS5h(tITL2{~yN50Ee-p#?I(G@8YrE_=ER7=gs>Bsj zi!QhQ8|E;g!(+J(CmbAZpM*4{`bVgjtcE=K%M#!IQl4kQwfqQC=io1?oh4Zp;#ae5 zWqqGj*cWnu?l5s1TdIS4L2Zp1`1r{de11g}r+^RJ>t{CWV{T_tuAbV|f8prq1}+a; zykROo=}UJ^zURd6=RMu?YH=}A4+$msW=zy!IyIw3jIP#pCdTN9GvjR2Rx%SlFCWqf zhIr<|Ut}p!;l#P!!V5|SmGp)F1X=v!7`m(+`sJ1YW+&NDzuUAzW&LfLste`K7B3XD zBF3&8wtIa;NZ*Mv$9qA`WUW#sG?bDtIp}VtsxjOZYo6D|f?ue*{{=jl=gG(ld}3k$ ziwd^R=<=*BaA>Xke30$8T??dDl|*Ld&F&ULQVPUUXwm$vpHxf!7Lybayr!Kr)uu7< ztR)c*Sjj809u4E4p1xGLmj==`fi)WJ%=;6LZ36-59lbTHzN$08Wrr|F=*zKC^Kcjh zT&bpZ0o!+6Ka|RzkC#ky?$9R7r5D85YahN}H9|=LTHCh=b@Cy1pJ^p-mhbAxIg6bO zE4g9q*!0PeoXtb(w*P=JgxV&Rlyoo?qvGP>XH&dJ&+lX-vQvps3E9;%u${_{)0^E6 zn^pS9h8vb_;S|me(HyQdJE81|n)kEJbd7E!G$VB2jn_)t5StExT=&I%<=_j(6bi2I zI$E`1h)GgbOOD^k2e_C4DJRNpdU7;vZ+r^~AcbW~xNsPHeaFZr@#zUFW%o=NLiq{O z^*E>$U@kw_sZj-Azz-6L-=WFauy~XWD+ZP5d9N2=+~<$o3cRP*+I zyEUefleqY!b>Y2K7Xg_S-@bA#r9RT@zO2$6PYsB+FgT=vwz8%#1)L($Ct)*bl~{35&`c zG%vN_c$aP%3A5#Nee({4oKu?UK>ElHZ5Q5JB~;`XuB}w@8i>dOw54EiTXH#D*X7+Fjxq$!bcoVk8 z`rm(g2c;sI9@^#x|Fwzz_ZjH*mufwAMO0v(Z9h|~w7Gd!8;7;R>OpWZYW|{>WW_|4 zZM)**^$k@tG8f{ulC*@1zEuJ=l2Hx;wSmKoTc3i2-IXidzccvnZ6VYUm~9kp_U3p# zlj92;a>zlLL+65l&s~&=d`(oCzNR2Qfxr{J5nK`t`qVfgXoz_1qf)7T`Qxt)2XBAC zzB}Y8(X9;5ZV=p%^QR5!xr{f@FX?ks?zZ|66eBwo4nwUNi<2JoWjI6E*;$ZPBdvl& z$oTVciy;~)%#+vZ$&Harbhf2qft9dDJRa>JoTaO4I7+u+>&duT=K zr~hEYANI{qUp9)tazy0yy&t(+9)tAz-+BSR&R0wnmqLk%SQ>p*eykRS^UGZRZ?tc> z&MTzYXLvEqK}x#KDIQk_;`jPeP>)mlGZDOlflczwq9r7{fC4XN0V{?$*+{AL#vUDs zd7rAqg+yoi_hY&QCxUXUz@jM`!aTV+p#Nwr;HA!WTgv_QOe*+LdATVMbj@N?EF?&bm}DR0RWR zDeJuP?mw8A@w5hJI`g3p$4TuL%Pb?tOGy@AZ8@{b1ZfCsC=P|A}o?CuR_i^`;++Z*6T=$9`N!Qh6 zRRx)7S3Tti9Ca)IS8@asH@%XaW+DIL5NYGmJhO_@SJ@+&8`pHd`62RwyuGksp<&#b?QB#=TdT4e`;%xpSBO9Yt!-`fnv zqyt+_0ryKlq-Wv8P&P!?h#@06Cr<9NU(T)tqZ%8x#L47z6eeKup{Jy58?VLZY4glH zJ_!{5D#Om@r4pU9cFMxNH$Z$Tp!(+BGy2C#X=jKt*e{g*giU{Siy?5m?_s{vjptY&=Wj=3ooQS!=C zZ|Ir1vYX(Av)xy`qCChPj9HHT8!k!IUvfYQbhx?m-`(`<)$w;>%h_b-@yG?MA&|^9LUKBTE!}q7&u&q}bU>T!BTw344 zi}SM=GU6jPYs|f+CGpeWBw$-e6w|$|yo3y*T$!QBL6KjTsyeb8eFmh-bs%YTZydZ5 zA~{~BxI5D4CRMLOe);A>dC%S#hryjcsAG&bg%p1P(>-VJ(bIam{*^Zwg+Y#H5dx52 z&;wNV$S2Os5b&NkM+rKzCCZKia{=5eX#n`|>Q{4#Hy<$bk^+4B$9ZSN*|&UE+78$e z#}~lj;MT?*&~%-NKpgMdkgR`l_0aKkD|sWeZ7)+``DxMt7vk{(uQeV7cuOqXy9w7& z5`qc#w%*i9wsMNIH{&z%zi0ag4$z3fEoC1fO_3d9{o=a;8g^^ljS2k1 z=1*uh(>OgjX!BWV$Vl(RdKqIiCC+B-?%UkT?pAKPw$mouEIl)bZb&>3fR+fslldX! zzRAfq?9X*icV`6Ff3DF4RirM=boHOJ?rv!-YAMu;j0@Lv3>-ACtP#iTB(7=I?y;2& zY@L;=SorA4Ui@6gpJl_T+$=u?VRd9Yp*E&0;%dcD9F@$v<9Idw^@R_Lm3~}E) z7;fM~A>8$t_ahJ8klkEQlaZlzFnzdkYW>@n-!TVTzeK&xPZV_Q`LYkR_I!*Cs0axqdmj?*uQI@^#OoA$qr&0|& zy%?5Z@Ln?y%kFK3nOilnnsut$kr3|Ha!naWGK{22+<|<4^FhdQM#KP?cJMTl>Bc2O z(E(b)%75zeOT%#CrM+EjeYZK-5j_Z}XqACEXe}M^w4xd-`(mC8=lR3lm?u)0xw4=y z5}E6&D{e6`885@s`_6A7(NL^%JERH>-`V1^Dfas@pP-7~ z1{XAhsn%12`%{-~Xc@^2KK{oK_UU8%$p^D;^m;INfJdYFg3T!wT~Wf=Z_AbuHW#5s zf}ilY%GG$WA^w_9Xk52bzmG+yD4VKWQ^J{_yn30u&1*Utf^C^2hqshj@y|42UK3aS zdRoKaO~s!Qqx{)5250J`()Q%BDOkgfD!1KsoH`a{O1%tX#Fyu~&)LCF4;5Z)qmgIFW9_T# zLX|_OcjzE2UHXIW;~!WVYlqs9XOw?Kt4wWKb!PUA%RxMiYtfOTi|h;gHvVU1i+}q( z@fzm4mau`OXbuhYYh`FG7VN{B*|0D=4Ti8-$3AsPWx!)lw4X`c!7?qL%fpSP##YpHsnO! zxuuhb7GnC^=EFGVH?f)!nARdc5Zk>{fgMjl#F;C|kZ4MkewG@`)yt?1>6mz+sYhegoXH zwTCl(+BedyJfAiBixv2gN4#{BytkQ+y`bEJIaVr#uZY52pmaVp1`X~;U^^)<9)@(a zt!I5~oS`PRT74Y4<}GpZD>bVV*wN(Y#q{kEr5JHi&ndjKpO9x+NVAOR&liy4JQ91> zXCu>r6CcI=VErZTS|DwJlKy1LfLoHxOEJ9J8zEV%ygxe}f{7u52`BM%M)^eH8!Wyg zfsdvvm>z2m90L?6M5P4m^X0p6V*PD>)VL8{*1|dje&}=rLLZVcsY1| z2+;Y#W-A(QF8Z%Zl`UZA89R`H>Fsb$cj$WMg&J%htiw&1MIX55mZCW6JG5C|%8$V?Vu_c|!umQD9|Om)}XV>ZL) z2kZr$Un?q3YvDLu&b6y0d!<+K@NWK8e#)BUWZAU~+AZh!xij{+wmAkJr)s)c0Jo?k2uS)iHDR0H- zdfcLI$9_5wTGl9esayyUV@I5vkY0hC=`u24abB$6!;=0ZtL0kg@v;K?$~19TWU#Nc zhb{Z%B=%4}Rvj|uHG+r$bA4vjd&zk6bBB7q!h@&EB58wnC#0l;8Q6|>5V+DUCPolL z#$1%u+)nAVGQWW9gPrnsMA2RQkx>cea|A^%)v?T89nc2G--a>R1)j zdb3E!v9S&G1yDY(3$+JlWfK@1HExl15X4VJL^B-D@W5{9x7vkBeYco3P>RsAg3jz_ zP;FN+s)~`P0#_IY&ls&9Ca;j+$E;f0(PI8HT+o=wN_60L4AZx` zk~37}t6%P1`AE2kYlJE`mWPJuZfZRI77}9$$v(z3~Jisft}vW9gE*u z$|~Cexlka}Ig6g5_2zi10=1M`=gat%0bF6-K3JDR=5DIR0-l9u9J0O?j1Sltc~;^g zK1&O7Hht%Rm23=K%H~5D(#p6Dw$xj&g<9JAzbS{C-LB1_PSJN*B64glC7x9qA{{X| zD8efVht;4gA4qGw*b$;aS%Vde8Gm~lhtKtKcPeYIGqGFLYl`72gk`7cWtEgn!2Xs5C zk?3GA(4|O_Hi^F!FMPnv&gpYi7ISH$HIFc9LQ8fnqP_!O0!xuNLeXX_5X{)Fl-v&r zFKt?B?VJ9-az_d;FNo>)g|W6I$dID8(PJGoJv0raH-Ybz|0RQj76iw!t}D%`t{%BSOW8FbA3bxO}Sgg zEziO&Vg6GGQ;j5n0Ld(yWK3)d7_Ff)j}a{LrvgrWretI~=7{e*&aYXKt7#CWXyKmo z53C&<*8kmRuY+SH&cMhptIe4$+mLhHByMW_Ps7x)lhXAm)tmxj@1OaNZN9seetsj< z`kI8N0}V89a-!CMNfj_rZBk3$kAA#3P;G&FS%g}{s4PYHLz!D8MC0ADx6@M}G!%Krc6;JVV_1dz{kB8 zdUpqkIl5ojffMMMp)RW|b}S!-f``LZE#O2zKXNg?U0zU;^0Xr6MDcrJdgTE=2PNsQ8Wy) z`bP*XWBuQ8tP;VN+sPLiZFMQm=v`cQ8O!X8xf?N-Dwa5AeG{T4K?4{yC(HUs7DN4E z-S+^T5$#jQxf^(<1Tvj4r@!b0Gponz_PX!`<%B5u3O!|p`JW8eqBZZ=$=&lq)-4Ok z!7HMU-t(ey(7@i2iB1Vqxj@UFs%k_pCeldZOd&%K>J%H_@9oM;Ser&J{R}u+4`O;( z;An)Yuw2me8T@d9r055t;*TPCx)jeyLcSf>8#p(AE#dU+hM8%|e)54Lv9oRE6!`O? zkST|?Nkn<;dcEcntY8;MGPWesy$zW~`0PIFGM>Cp2u})zwGsmg3E*hdl}({cKaanz z{uX}!r!+=yd$cS(w0lLB!eZ1tN%CJ+9Z8CuLg&_dtYJ!NjUT#@TYkL14b@cppOH4&LXKxF0=l zx#8YYzB;xat2~`f#B0@|kBOwSI*?+?9pKh{1q5MR!c`ci6r^hy#DKqE=+jGHn=|=i zneGg7(QlG_+crZt{Lbp`+sd>HbVhN0VdM`^Fo;lbGU`J(G z9*tPtmQt7OwOVVQrBY>i5QV}K#RIL9lh`Kpp zkv!l0rw{P*s|vnoXcQg_eLMG7@zuX7G6%GsMl{^G&C62HBdJRIP!F`Y-1B za>~|P3 zEX;5RDo@RblbO>IYeVC+_+EBpjk4XHe9reh3w(ASwRnTcU>}f|Eu4aifOO15%G5E} zm#Y3Q?HqM8=pgr<&i=82FEuf`*G2U0u1S!<6=474#C)RBUH_e`eQ4TAcE8OKl)u)+ zlq6Bw`e5mH8hX737BxC;Pu{^5wC-IuydQbTq@;LLA1h!xybOje#hR11^c`i@yQyM5 zAm}qy+kkue`E;9P55k;f+fdtceZdnV-X4du>rZ%kDbwU}wq?#x2-|d5&?icbU$#hq z5O+-8x;jMida36K^dpG>|1w>rcSC{Auuqrl3t8G9^E2Opzdb_UN+EB9T=YdX9rH-+ ze~z0Fgp`)YyjR7c$+UZ%?iK3pXs(WOdj~LTRvEI^v+T4!U^^zLFUCh=e?)`@rPZCn zE*GoG2OT3k$KUF+m^#S;DMg#~U=u!J2b*=?fUVT28~;?`4@pb;wYVZp!RSOtrS8=H z-L304WV?OD(>cg|-SeO`RToxg2}Rfq#8^k_<`oQ(w<{&u@N&J9(0rLkVyY=v@({*g zBUY_{(}!#+lRrptW`g{5v<1zVE$N=v3cJD-EmCkz*tdSbQOSqQlA;v)2*AE9j#~5P zK4M^PzVNc75Apf{wTzVmGV_8hNwsR;?6;OVJI>h+T%YZ6?ZT?d8c#qRLcN^hIGR%F zd<^hV3v>B(^C(?4LzeoF+SMv4x|tckmhH>8YP@=AWRR05##!#cyV39 zAy{^GNGUO5^Fun`V?J0hkW8sM9|;bnES+%9zIXS<>_u?fR+j|{`xfq<0790P{0vKv zQS>e7?AC0NU24>H)Y?d=eM;dwzk%fzSw0H-jEwY^#Cv$%U&PCy(kJ)S#E&Ca&wt%~ zH8qiCYgn;N2iJzo|6og&wAxB^u;YjsA=7%!f7YJka;8h4fxWIO%x+C5JSTDe2DXL)!xD+MjHG{*L=1Jdj zm*Smk@DoSeOPhhPE2)qh%J09E^(N#~+>t;Q4ZI&H;*FMNRYa6e*v`r(#%cmWb;_H3 z{e4xkZx4f&F#`1v1T{fsD^l=f-c#X@K>dLJz*-6{Qo&8T`V`R5T}V3+B3bf)jXmISvv5SY zt^qGj5ckg(~IB}^zQqHac56q4ELQT|9iAfkvgrj>ggTL6}JLf9?4d|}dOALaO2rDn0$xc){R4qaN^H-8MA5h~^ zcEMwSC!=A>ft1+It6Pwa!s19f%Dmh#dgYdSh}=cz$JC@Ok^~4p8A*X+&Df+_;N=kC z-WrAES77kWIJi_c=FHFM<&GmAVd}H^&2~Z9VSzA`OzNA0`$G<_%D4mnT%?!Ln9eYu zaGJKVFaEhW7O4rrK8lIBcZH^WWfk@Axmp8??6plB#|{#h_a4e`hp>mq zr<4K)q|TV$mCKl#uh|z$&nk6UCn?&O8-HgDpQ$8DXq3kUCB>2?zbE5*01EH{zFR9M z8h~lb*+(d41)la|8eldTFphKJ<6C824Rt~^7R7jqAkpsmlMweZ6$gNTla%I|q z+&pV!*jDQTizeEej^1>i`|p}2MzmRT)oas*X|ijH1(Ptr9fk@KjJ)_nfqtLO7cheY zUB%FGh$XriFlcRa`f3x7l%k3}Q7W65CjZ(8#txU^T2PqyEP_gvF0yI_8 zpy{6+NX>?u=B5`$W}Y32GO7!GIRjBzC?h zZ`+)^huJqj;(J2aY`pLWI2adhl@e=c_^2`{5x~CuTG%1V^bIZDbZAL%0%`eM>Muy? z)|TKHqz67L(D=sVt4!*U22S7*%q1o>Nw6lnBB`sNc{<VzrnvBcp-N2 zt?ci2Ls@`73JZMH$@JkbPX*|ZZvE`AwF=Krr*ZB*bG(Ffdk3-9*6^>l`AAH#{dmDA z+T|MKJO{G$d-8DE1z#6ULSh3;_Gn9?w?Aqe8JIi(@?JY=)4YPZZ1^b!{Uu4Kl)Q@G z+~L^w$9%LV-n_;5(2kh6kVA}J))JyHfnAU{#xH%i2>tN0ewv`i>4L5$?lpcheh+jP zaB06hYQm;b&pQ-on;(W6_v-|*=6D+Z5V?D-Ae2=+YAPFp@_{al@g#&2FUbcBDr94W z8B*Npa(k&)j9H#3i&~r+2-oExSn%v%cpo54diXf^a(18(LTYmC-+=!udZcqSp0pVR zB(?8BotjOf!6}#c!!>4N-7!$1Fv$l#6`hqhA8b~CK7BZCUfR(_{`)3Pq9VX*g9_Sp|AnC0)|ri0>|g?2bGDrZfPwv^P~M z;SbpxQGIby6|?xBSH)4wUP+B>@{K`+Owa_gBMcH$gYw_b{< z?66UHFrnD~v$H`fj6#W)$|wt3NooY%lb?UO`@iUmQIB}qMO%B0Sa`R|9I`pUvdhL~plA%9T*B?JKgj-}Vfpt2N&?0`faSK6_BCN?6 zEI0ff%z=Qn=*+V5sEqblOm(&0Y}ID35&+1}P{6Akw1U~_C!VIms}FayErw^5Pcuzp z;dp#~X@F1cG^BDl4W9o^C5_uK$m^BnWxWm_x-d=C;)YBArWni!W8r&k;6KW}V+Gg` zU}jWAp~Y?ESN_=}1;p_yz=)u1Y^qSVv%O7VaRo;oXq=|olcQjE_0XpLVVJVe>HT4w z-mlP&m#M8kD1^*IE6#ZX6WW=D;6<^rN&9MbZm~nQz-MRuq~q_4RMpD6vuU@I>51m& zcb!)SI<9C0ZMj_+?LdwcEA<@0&5K7NA5OvuF<9s(3De*_P`vLW8xkJ^_Fw5M%~`VE zOEl!N-(3et2D{*xZ92-wU6yUPKZ)GxH0NAVB_#=zFWhp{`llIKrR2jikVl{a4)eR; znnY#$L@+|N-g||U8*2HqIWPd2QUsbG6ylEdJ17+F5PY3Xit!`ff+gGo0%BcuD5cTc z{I0Y#f~4T{A8f5?1N?}PzYK4nHAlKH05E70WVW1^v7o;7VO%jVQgZ5aZ`yPzB+$tG z0na`?6LH0^zomCZB0 zK+m5{Ik57LY&9G!T^a3Yuo6+GV5CnPkRs3V4-HpUgM9*%Jxkn!$?Se?7+#i0^(-%c z|1#c$Nq)V5GSqcVFdLDQ_4NyIil1rT)5GQFk;fL*l3R=|W@()h|1;mUz~ZjZ`0C<1_8dD~Upe1FSr z2m+-VIb^5Hsh8UiqY=vU1y0C$>_?q;Tsm5Y;y@l6jNSP2raPI#ChDy%i6BWZTtD50 zBRZt(`aI?`erk^v=J*1eem(kT-F?fW4a%9=jQ80#fX$e-`$Bgn1FU!txI9iG{ zn47j}1aM>+$LQSkrXsp@t4B+lP4J?h{L;bXMNzqKl`_OU%Oj@oX7V}7S(h_>+HvY?xTYC$ZWrM`XzQM zLA$K(k@+j1I$azQrY}aG*fCHnz2|J)MShsqCZ(tly^w@^fD6`N3VR9BaExnNcM7lnRo z@k7fRaMb7d>%~;8HapU(U&xnqh7fv?Cf+(c$ zE}m2XW_*E|Y9pTqkx1rSp`Z#Sz%2yulgj4tpg`qgX|!M}d8X>a1-ZV7)v?qdqOqSa z$~(zq2!LReYWgt6PAJRC&77rLx#3}(!?viEoV&hnL2ZhDr;U1{chkd#p>?LHE%Ehax{Sj&xYk1L{^7w#WaTdWpF?q5igCt)Ojz>3A5FjSc;dw z+ghNEwEEfko?SH<^R_ZEhe45reV9Q`YnmduEKcAL8+_2_>95pN`p+J5zvRh*L_q+b z))0XC&o1AdqljuChiv@h5mRjUo~uu|`M&;O@|w-@msd}Cmy|>?o>fZ=)kuVo0?Pi6 z6Cb_t$${X3EeSu^kM4>jYnoHfz~cVY04mD#BlR?rEz79qR$>ll{!>)IT$MtX#!lH) zWyX+EEup=3szo}gctBnpKegbR06g~yU(?XF-)Bke7=|+ zVch$KYRDxY61>2b0N4_S6~Hzt(+^?C2rmsM+wbMcqt7}?8=0CF{W9PWuhFh8;C)~( z$KOF|u>1)M<^Xm-T-nnfZt7NDoj;o0bl4Yx$%;JV8FfkgnG8DiP?A7Qja7LuEWUOI zf?{;Cnez2V;*G|!ppUzJa@1If3m<<#XfEt=xk)79O;dPM3i(vk)xxT_fTdFCe|87`@Z?IssnDAf zIkp;V4dJI0tp~ylVaq>JY0-0J$v#o5@mH&Ao_lvlfmvUdHTvROn_AE=mVJ0$iX1>J za=7Bo>jC5bG1(;Zh@J5=FdQ;O+O8B86iq99@wgkp4!>AINgJdF=$jQPJ7*!Ycklo# z(#gcVx$&tCt*g&U{duMBJ#o8_5+80}@oL3{2cRABLcTTPelpI)&*lNeyuNP=p^!bz z=TKPP1D<}wNa?9R<7cD`TCicvV{0UjD*(BWGX1FNH#*9&cvg-9!Dbe?UQx&o@bV->8z^@W%s=|9Za79S?IT@ZZ22-Z)C~fZSFG{SaI*(!H z^A6GkDpEOystk6#u+7rLpJ{E33i>114$aY_WEluj*yj)kM zLYVjyJD92lvwcol`J{_wl(9g4+poO1=GZB?)@I0YLRi;qDtutQbz0!jY0T*udVOKB z+hUKrS7hy1E>Kdtpvt|Pr91qY(1v45Enh^2r!!B7Dgl<;r=rg~B8TdTDj-3uud?g4 zCDbF5;JS*F*{E0>0)%5gv?;9NAS2My#Z?@0WI7>~mGI%mp~CPzD5j&VVkIA0~t$;0}%EWTjytYcyT z$X<#$7tOl3=vPkd3{{=N-&N3VeZdfB)r6iXNLS9fNefGz0~1~Vy$6~A>%P9F9`PRO zohWWTf9QeG^hLIxNO>$#C@vc;276Gj00z_{tEm zL)QxS`cMBUG$y7_zqRN-O}Ir&KK9j+MJCAxIAl@jPk<$2O~CCT<`#qN;IAjpJAf8o zq5=>dz_R?Me9^D`7kZ@YDo#JhoJ%j5MrLFgk&eJ+W-+&Nw)s|YVw^%I2;DqiJlG`; zQ~pOqcQ42LsvuVg1i2MLs0$e$Q$*mVZ$1uS_rmg45X zO%Cn=TGR9-s^vo-J*blPhU3 z^m6oOh=5$qt?VWj0s#X^R&PF*3P-Igv2w%rlSB4L<4z85pEgMkd91zc-gr5F9cs5T zx`Dk<(2JS>kWGF+ZLMFcPQJJ@=-A+cH$O7-c|etYc|=qumu4y`iH1dc6sM!KvwU9E z*+(b@xb2q%%4uZ3;j&MJk{Q@0>VI0K{tMbbV27)?pP6y>3rgb81O3( z9-d{owDh_8?~G2dm`~*cKn27h56wrRa64r7&n5QPhzPNFJF0ubYU$coW9_?lH!v+A zHT@_gf-qUTo*vmd1(2I!VgBCBRTs9bZyT zyxIJHY?3izmK_4UpO}5*0l)@kPF!OGU9}2++UN}!0>1Lirfm?WBbS@hYY3%x=&^SL z@a@$Rfw5)P%7rSdPf)h@DwXK)1*Whca3P;AEA+kw{NxZ@Pxqv*=Ec-C;Q%v)GB^7m z;Q2TtgF-b4u52=hT*)CG@#vK0Y+waTOr_SeR;vabOU{^}dxDHdg7%ZfvtK0dC}Bx!&om0*(iy=>2v8lnzELN zR6sGp`tzIL@5Z%_14{+9o2?cQ1ayDXZ>;T$%N<{Scirx&Fvnk(V@ev_T)%BRN5z~w z=`7d#+5zS0>^gk-rABAj*MTU}x^Qra1?@=cJ}%5Tz-|c*j~!RLwaeZToU>nyRSWs} zalQ>abJi6(UXmLYiGTo#~v`~+c07mRY=SwEdDL!P;*7Cf^Wwh4O-O}h58&;>~Z^u(bzm^KQ8#Suqt3t9m6*3aF}+lQhQ-kX!#l4 zQSo{$t7R@xp&rvFilF(@b;U!L_wrWI4=Gu(tAq8_fu1--tMFeX|Qolbg>iR`0n>0zBZ^X_? zfZBcys7F#hVR_Y2=T()Hqz=WlfY8EnMc@#w!2?q+gVjTH&3;0tp2Q2URVtj3BkPO? zt9CG@*xLt{%SlU`8N3gAn6QI0ODj9i!VFG-xDN^PLUMK)wQ^Ul=yqODcYghY&>?Pj zKvuX#RJf;K*BuTss55s=T@gK4;xtdsK12Guj2P2+HKh{C{ccdCssak+D)ew6Q$vD_ zr<$e5LC-yq_r}c;bfX#24#O3}LOxsT1{ic}wARr{$Z$qKwB`Ade`>7cjWB6QF}LHDuuAt`EQD(CGtnFLwT4g92ypGwyKL%d@McJ5i zd9?ltt~mAm3}p6LqD6m$aYEJ^jpClE5A&3rW*?rs0*aO`2%?1x@Y6{wt}E`8>L=C48b(4n2t5G9}ayM-pRjbXPa6U-4t=Hg5!V) z$ihCD@HDPa@W`RFZ>v)3=6_AlUfG>*c%*m*M5}Tj0HJrc4Ur!QvMQqci^kyewXuxq z>w60Ex9)(~-k11zr%*!Uwhcsyt3dLKKcNobKlmq#Q;4G>^*qnv6tFs= zd}E2N$8#4GRJ4#d3BXwIrZTayhU}4&qN5L;mY#_zDXjd6b~bk6i?tHW7)@>FvF%sq zgO~q`8e?dk{-*iEO>CKAE*=Z*tfm$`SDJQp_VL%GClTO822Dy=WiOl!^}bfZyJf}U^`o=sRgz<3; z8iA&nf9P7(vHTYdA+zg`Us-#u+kWJ*Eq4RTU&HR5>?m`{wN2=lE-xn|6kWrSlPl`i zcnw2)n$0qa!Mdj0nyaOEEuDm_PX=2BZkVe@KK|CZDfuHI#uM(dx)#wi9{G{!<>hu} zT-?FP%UyhM7NU8viPZmluf&tWS~XhrNK?t2v0{;zPA@G+k}aoWI7ncb(eIGut^Idz zp4ZwZKsL!?_Q->F$ipqqwXFHUe`FlOs|%~_H2K(n_Dn|LR-cF{-?rdnafAm?1RfHL1U7ap=)80XnsJmW3 z3By9=VfVS7BOYG~r``+c*`6N2M_RFEvLCFaVcy0FT-U<$3r~)$q~&HjbK1BX`m>NO zw0DRFSZ>KXa+zY1um1Aj0O3QxMN`K}UK%z0L^ky}ua#d>g*%Gc9htabbL$e__rLAr z?X#jjs&q;1$(BR$dxS%gmUS& zvJ`vIL*aD%NP!W~5&qiWDahOb2_)&3FM3*zZ>Dj3SN-CAf)-yW7^0Y#v6FPx*ZADn z8QF(QB|SK1dC<%=lM+2T(%`zW=Bk61vL|@X#^dZ{PcVvoRxCLq{ejap8(Y^p&jZ+y zm&M$w;Br2&Y0~vgUMqkzzoEokI#W=v{J?wo0n1y#q@5U6ZU=(mFqUhkuP9t7hSdbc zAVK#trL!GG--&W`SYk(AsM6UbQ8oe_+?`KN7VHZ2o2vxEl_iO9`=53>)z$QsF;@a~ zAn?toMLyd+r7K@UryxtwEz;{q%=-j^@K=2P+|T*t65)C)M)^$YEKMGEM`^B67pKzM zG^6NOu`{Fy^Cqn^NsZZz>B1`JbCB)xULd+sK@YnN#Y$j+zxzmN41VnPXN5JkdC!X~ zui?cYeO<4u4nP1X+gptTDX6sykFcyCd<^+M+{v}y6H?zQJ19G}l1PuQDXg~>qo#A1 zEMW3|2k*D)=H-ODB&aE@hv&Dvmt zQO@R5T}V-5>YK2s-zPgw!_UM!w+VYVs&D$;oXsbJZk|t;IKK=PrQl_eR8ehhwy`&M z#4zTRU3unch^!gWP(|U70?Ub2BBIEZq>#sq0Qy=pd=rxwLU zYhvi&B9x6xoryc%=_OH9T|>d3_s3a7T-CT~ zZ3!sw;euMA#z))w*En5xnKCV*D<=ug3WO8L1BWZ!0)2I9Z+h|se#$BO!N%3q<^q=% zugql?5$r$ptpK`o#h`1d(si^FAXyJ+)P}0$;zIK4V#Y8eP6|DZ+n+gWlH91yR9hmr zj%%qU9!Jr**hH;p=Ad+8A{5ksNKS1)Ze?Fg4oif&bA;{=)VDP(-51J)R9s?I{D|FI z6o3+6uQmcn6zCrKcUe!Dm|=L8SG}?^N9Vp!V|*uuk?jx>Kp$|PwAky+z%eKAi?q-F zDre3Q^lVzJ^V}cxIii)U`UBzxYiB>i@9=11J>Y#)|G=)V@LKwUbD4W_x^XrA?ou+=%QLynY{vVr^Wl+;I?^&hd2JFqzxSX`NgMXJoe|5mi|>Ks@XHnKCWECpty=XBu0obhv*v_((v6H;E02j?c6`^tJw+X4bN+boFE0enUybM7|Ewx( z7>|7Y7VSJN-@5ppGN}_{UeXo>MgepKx+-3rujs5+5+5mhKs|PqCr}CR#F_9e!vilb zL^(#khiW~01Af!~FYF0%i3@-v?Z=abA3NkKb&PC2di}a;+5~j)S9kf4$Q82}vM($2 zE(Dk5zYH^|Wgtk}g1QG`%^dS8_VQSjp@h4&!KQ<}5H8ZT#=HxPF*h~l45 z#(B7qIh%MoS%tu;UQ|)*+jfBYeBrG+99YQCI@FvdGaq%Go{Qc1&DysIuH&g+hX7(S9La?cL0xEw~6`O7La7)~c{{t|OmMSxD z*4Nn0;&VQX;tvNPK*HO{fNn2Yz{AZ)VPV*s-ZChrXQ)nO^vbm9NXoDv#eILrfZ?jy z7+PU-ZgR6v?VJA3lRYRrU{pYY7{2@aSjXknkz#5WK( zpq>J0pDAfmBs2CgH=@m#4(aYG=2nu^%s>pi#H@sEP<2|tfO_Hyc@GQHNWE9u+3ROe z?-tvtHh`CLML&+Zc$N^*RuXj0Yd~@uvbCqTqj0O%dy!`y$zzOjY|&u_N=2a9FBDVk z4H)^@ZOoNPx9FRkT}q?d4a^XpG&~vF(9uvOPvP1|;daY2ZP+(6T}G-nUTaG%y;b~} zd-kVh!9Y7SD_8w))%%a-(k$y8-2=iQ-5Rr_52S4N-82YP(;U4sTehOVz^5tK`ubVu zAC;F_^y~RTbjWJwf)jNr>u9fm7fv;Y4t>^7tFSmjj({El3;cc-H#s~tk(eI7qNuB( zUY;{d(Th-1m%>(G$`f|XQGN4uF0u_fg*|=K9DD)l6GXy}i|d{; zxUI)<*;bvPy}(i54^>h7rwtlbi~7(hG!;L_)eeczFbHWYgl)8mjZXURTW0=o@wUUf($YnQ2I~gY=pQ12f8efO+0KuP$Zn?>Fms~;dL&Q^G6%YXAeQ(8DrpC^6-g6328CmuJ;yH$rlH+09fD8& zj!IuX>^FB$84<52*ZGigg9h*pOIONcHYkqnaQ4hRtrwVcLO>Z2o7#>vW#Nq*SH_%c zi6D+wYbK(S)TCc@s{spOB~|dwcaC%ZA2N4N%m89q*>Dy`M|^l>(`^ypEGMQgyNE5j z(C@?Z4_zyvko?dj!BtEl0rt-5_k=LRIzW@tTFci{na{Fi7K!u{|A8&L+4MImZih*Ti@%D7e1CX}q?sLWRJ1Xk%N4YigSV9fdG@SD^b}|U&ZsQxz2<}5O!XafvAhx zRd$5(P1!WBhV7XvjZorIVuwI;>kjHf9FC&CBHK+P82MR5dV&U?IiKG#!s)b(7c~N@ zqr}nf1>z;-%Gkp_<;Ve}?>N+atpBR_JY!zIFpCdEG0s<9o&C~|ll_|`BouN!P#{2m zdFf~-2v=NCZXG4S@#HKUzid#VsR;q~gZB7y z5%P>3H=Thjc>NJ_I_49ZWd3pz{|EB(k8+Ez^VkF^m*8;%54USDJ#p;kFYm8}GVeS& zxia=Zwi_u8xP-<(#QHb~D|=y;UdMnKp&x%OmJcdurU97G(eXD zM-;65g4%*{e7{N9W~o z$t+7Rv(rta#~)f@*0%~;myktRB@mzz0rO93<;wqGV72r8#lsUm?zc5y|BJYnrR&$7 zO7WdBrCri1N$m#zV;%I9J7VVj9Tb) zTOHrl{LU@s=3ajv{Af3bYlmS#*|nMl`<0}~{$dPrSlGH1`05~{_BiXML-r*)XYDPh z^y*6fOJM2J=(PK4_5&c^ojC7eFc8tY=KEe{&N;$`zX)-sU}ZtJKSa4IQKo0kDiK<_ z{)WC=>`g(y_IvylF(pJQs36{g&0bV!eCs@YmK>`@EUP*}=C4Yf)=f-6EBQGJEUXS% zi9#=(E`YMytR_0{&w5=2{ypS**2kQNse?MTN{ezw#(AolX_l!-TZjDZvAB%@w1PwN zZeoP)fS4po$>PtKMwyeL(Ti`xna4v5bgrpSP@6fiV-3xXHVHI$k&d_UEFDx&&b_&> z@;Oh7#N^QkKwN+t<^4n`u3l9G)ug8;G6`I^aO@WJ zd<#0G-J``I2YhK+SRPSolopT_|nrd(?CsV(ALKA10^l2=wj5A@MevE5fT$wBqHzo&?NH zR%HtFCF$F7vVwnN_P+7L17D?)`+cWCl(diRB-ycX$kti7( zWp>^Jg7ut&0=G-jyuR;-t#6FRO#<5R{+u-~Zdd?IzWrADEVW|4R-ZndaB|%oCRDv~ zy9$Y_N}hw)KgI}b+fmJekIq5B@M3B!{wCeTE^m&4<-5gUq50N^LHmb=M*z3WI~US{ z$W_O3G+HRiW7cT#JXBsF^&!OfYp-|BEUm>^vj_9WQb(Xnst{9+mOx>vzslY#y{*() zc#unwez5RbPYXw5#x=9}7h0GGq4TJWCTu zp=!r`OAGPUijVtDj6%B>){4U<=3=6nEtV4>Ue9{-OttpucZ?<70y(^I;(T`mnrtWO zSAL6Uelj7D^W}&W7kvO1e7v0(*ddzKUb^!6GOmQ5vAJbA-%Qi3v~}_@I%&dHnRPw6 zi&fa1BXh(FGAX9u6m7p7tcU2(HS~)Bb3?k~-cP(c_V9r@0xDZ{R}O!`v|XFs3S=8b z+?Jv@Go@kZkk1{^H}~SPy=amj4PXoVCmgKQpLI}PD+z+aSOm4e*MK%kwvuEGJTY*9 zOG9r9cfnJ`^}(y%4GZGWN{X`yI&wKY`aQ(3+!V3#2gw4B7=$%<}4SnoGPSHQ;3$X+;P$E+9B!r_?_P zNWq4|4B^*6FVTm9GKTaa1}D5wiFL6V_!u;cgB>1-|$cOVWYb$kp@e zxY%}BBVt~yv6Rwoxu-EU0ZD|cM2@^Y3Sx{f^tMu8clX-AoWw6nJ=O=MXw;;1J|~F) z%y!m4pMbG&U~+P?X1dq%@@A>24GT;=l|hxTk!tE45&9azAwiRHIOW8 zTgUP~Ri7h-Fnp{P@;sKwF(9F>Me_yda}d>DDA`$4P7?M z6-$#hJIyH%xk*i&o-lk1pCAO`ZdyohnuIIyv&l?uu(u!J>eBj80d4KySe9ib=gFO3 zRQ%V9#^XhxmOkJ*l31Tvs&gQ&)3>0&Bw=lR-dR$>pMXo}7t7ld z?2OIsw*{9$i&Pr^#(32DSbJ*p3bRI7WZUG0vwG{R+_osI=nZ0(kI=|I@*ozjHb9xSP zlj**051ri9Q&qUNN4`n)NQa(!?*Psv#cD+vo{2YrLS2o&q2h~4P zklc>Z!OCpq!##xmWOSoMQ$&W+IP*z;)pP08kG-G4@UNe(FV0&C!iBP9NZrDR&`Vzi zC9!&&oi>2;yup8B5@MML;%0?H)q+5fj1x-EKjMi)jFZ^cCqj%1#`jDFVcKT!7nT44 z|1y~yCJj8rD6u{3YlTFeEvtxFJf+J(^ok>LYrG)$SWj1f_t#O31WXJuGd6AR)-fEX zvQ?{ftIzaS$_d04K25XA#lM+65r#zEQ)=;7SS6U_ohR>+VfG)Ta-wHSr zl49{=Ffk@Slr0V5*34m~EY>SVSMe!)CU+=4fVTx`O16u;Lj$H~gJUdDhyDo|0ct#R z-|qAN%8q->c}JqDFZqyl`0@G}9;8kIanfJ6ltPnm|9J3wGEPBiSC8cCqFNRhpER#YUfUh`m!+>i@F3%K=*bzv6^P;QDSNrY_F`bO- zLBj**LpHM3xWB=r)6!mq=J|cua3zM7+i?4f)#pCM`0txHp^}hpE5IdbQ-N%FzlCQBpUYR<9uOxh+=aFWP(ntL4Zoa*6ZP)P04SwFW*MBN3+RAJKD7sZ7`Z+}*-gIg3IC~FtIA%uTZosyz~x1C7co-}Y6eNlGDTPN*u z8o00J=n4K*%+%7DkH(7ohBC_L0vBrZu}X<kPM;VUxhMRump^1+v2w472x{Ii=> z-aIwSda5WWef9k9?1RY9>(UiJvYD<2S{$_M{YxWcz{$bO7+8onn2tNm!% zXM3o$kB5~@w}YJ38{*e7Hi=z9-`gk)unXp`%`BfLuxyXk7TsZ`k99&j?Q5k`FR6!o zwRfY$wc#6|oq=zEikrqLAdfEtt7Ga@;6@^+0jn8&lT+3x=a!;pL(wG5!CaZ8$RjHy z@BGS~Q`h~37}zo!n?TQvsb6v~Mk6AhYkV~~HhZ)m^qo27m18XH)4ArTUewC*=or7+ z(}F7xzIF=x6Llm__jG)Dk(tXRAUQuWl>+h|CFGKaOt6(%fxn;NIn)`D<=2R+Va1+b z9wcE)SEpZjXB`bKIhdB==|SJ?%ux!SJ-1CmNA|DpT;|PvBPsNJ3pD}aCORi*WqxHk zT)HK$ajiRsC0`eA=f!(-*LlB$GnPO5XcrVbIVM?GABakbPS=!X&(wo`9{A9g>glXZgJMt}VC4A-$cB%H`W!VP_wmzMdotQF9yCFI~Tct}$ zU8*@0gxqQoEoVp{Z7t~InG{pK38;4AdpC@DHr*j7Fryou|2X`N&FjWNRSllj@1*{C zx#sx}`agwJLIA#zt-p#<7+*NL@kz_5T1Kxn-e4a+>8M$Oc%TdH%7N-j)X(zTnFe|L z4R!#FiCE~E%16`-iZK=W%>f7}a&0&Ct?Fv76iFFqVOy`^loj7MbqD`_FB^w|xUjYr7xSkykP@Fe@B@_748L=yffiE9 zoqoZ1yj1xesL;p%Ub;o!u#nRVPAx11+3Eh9Tb}3rR`_ZPHed@2+Yx{inrbzD)V5Q_>n8gs1?D?z8h7#-vlsf*%$kr8N&c;n39sl`oumgoAYB}%S`Rye;>Dv zaS?O(YC`*q?;>)tvQ@6L7iy3AifoT=0I!DpxnX|f zP5x=aO-!_3hi6?n_Dy9#+qEJObAx@dd`E-(ZFoxAtn$@MsN~3+{t~Mq?tW#;0ez|J zt#fF9M_sFT-~^lcx~Hs@U7b@8WUbhgLvY7L?EwfCG3ol_EH{rf?y!)Que|W1{zp#V z3nG&V!<37Vy0j3Ia7<)zF!e3eo{^@BA|`VZrFqbdXx;MIL-ga)zBRwHe4jhQ9VMjl zJF@RtIQND#433X_iG0KIuT1QXtNAq*IwanEy);)tJSfbaV5^P~o!0pERbi@EqB+JA zrFr}Ql?EV`Ce-5l#3X%#Isklu`1*wZp#|7eb_I=nk%E#Xio_BkS1>baw;e&3( zNMAa~1<>U4^2^VL8ar&}<^tVujxavV+*PGC0*a@3&Kwrs^ftLn9Yi=O>iDSQHs3cIeU*g5(#;$!O z%?EYNjc>7SAdv8-GrY9IF-lq2wX8oiI5*Wd$o%+dYe)%Rbf~o2u&&lu)iga>ljFm9 zPLNeTIY^+xT7|lA*fWFGhnUc*m##;SQ1J}%E3Zw=394c=iPMI`P7@B%*ZQ&$N)1P_ zKzxlYR{m3J-3p`XF^7!1R~`V5+$SiR5kz@K;T@6JN03duQ5N$e^Os}g|17!tPo~m% zb$llRP>r!)xo3MXk6{Y-h)Ho;27cfA`bh`*|GcgByT#-Ymm^B$Rgi^Rx`I!T(&%~r z3=Of76#JHG^;rAVKj%(H#i_~=D4EBUwPUlFSchdSn8KC4;*PnFm?anrL(9^^%XSq1 z)`roKrma~kbYMibVxgc0aKI6+?gjy89(Y&lnU(pO+HCoY(vyvRsRF0<#_(d;L2@bl$kn@AU#OLk=0-B~b*T|wpu&T_tLxNRBDLqQ(9Q;<# zy9dqhFzIht+!&C1xwBnww1MWdpI8rs@9>yJ>gCK5B@!(}%2vKwB+_#?Qt?Mk*8hBV zmaxFt%J>S$I%pAl8yBj82E@ll{)d2WkQaolKC+1=LBN+^I^%IZ>sw~6B9nc|IBd1% zV0*_{Z|1RavWs&16}q&KHXJdFiHl`^f{IK@OEoE~!F+#b`V-+(@w2w2?hd+ZF*Mh+ z^!%W7r|17LTh>L9N@NdzYA3B0_yFWAj+1JE;7?-@(Fv}lP9@Bb!Y^HH@Lai%krbYB zs)N^}wEaT~Z#kV~%|+t%NFN9+`mE5~kLj9!VmiIs%RybDB=g~`p7gGOJuk9~Hu1mM=xM8eWFDyUzKNKDlueFbm?e8=j*Z25Y4l%QJhp}$O z`%mN%&U#~e&Bh831m341o5Y7B?c1tq)(WtL6N4f<(xR6 zn>MgCjov}2t8_;?LjQ!PRw>J($Ig9?dRyKKtYqV;k&+{?`so#zu+NJ65a98#UI}n2 zJmL?$2;gqph1;Dj=B6?=nbJ}G4x4SCn9rvBcK>8Pcry3j4BGm)LXL2d*>!qQnqY!@ zG5i&-meoh-pDuL}gww0xuJj^sV|w6$6l^zJd+Bs)xL;1dZ3!vEaFUZVTsZqrrRDe` z${9>YsGY*?fM4yoT8gZD1~Iu+mm=kv_-uqZtF%0tDN^A7R`bxpzG#2(TLkU&G2mS> z*elq3qXY1W&}o#k#FVtaZ*8@VrB6}6lw#MuYvytszu3971$;4;wS6D8sq>*7tL2P~ z>CAdk#<8+}z?7*7%j72gQRY$dF`yKA2ia*-|B3}ipP_Vjc=|+r3oFhG=v!TJ(V)&| zoihAD2&DY!4}i@jbP1PW3U8^W>5;KgP_Ero_Uj}cYwa+!hODUFJY+j@QEHp2(rf_b z*$8V+_~IJz*3}|Q{*I}o!W!PD?9*f?Xc9bN^SFN}Yl8Bp}( zXlLBCJ_@4Pq(?5R`C)4&^|{eOyFR3%K~BU0?**^%C{h!r#-CX=bfK8}u`b#}(^9!= zzQqup@0^imK?1kuq&%Ib)m7ng5;J5=pBrIc#Qw>OD?cKIsRk^c@fJ6iVA4y3zn~%) zdq1nX%zh69#NHyLx|(-gmTWv8@Miz$S4$sS9i2T`h|28mrP-<&?(06x9-@d2MlE&nT=^vOcKhF89)-d_|#xuH`r@;>~lH*UQSIR-NF=fUW{wi_vt1L3Or z(zzAzKfDu+yq?#!@=wT$R?WF64I4{Zq^dCXg})4Qme*&m>5LxWHlv@MD)7D!Rxvg6 z6XBrUFrb3$t^GaxtM`6t5lFUtwimn)NpasDZVZOm(!eoKO6StxHB~bjmoclmBB#sSqxz4MO!>ZH0^e z2-yj#UB*Az?xITl7HoFCBi@T!c)LUKtCfE{Q9hHYQ({7IF%J63D{?k}yAf3TM#Zpo z%UiK3!k#9eGveeY57wSzD?9M{IR5PgWCMQV1k2c++iw#whdJ|BvmfCXHTW5MT}KmP z{NS>x^cK+!rhTS$N@jy9FS3tEC(S?2TK+Chvu}jxZl8(G!L39uX?r&dmIs?0L^sp>hdagDsXsGQ>-&2<5Xg_u1jZdH zlm6%DC$1mxHxi8y?~T9oPIWI146K<2KeWfC3ekK?6#weZjr1FfBpFcnBfZa2uN`+( zl@B^KWO;$r|Kh484M@@Ml+1-9JX3%otFN5k4h0tW%arvj=dA8Liq zPgdcBdg&lW(A>2ow>+#@js|@oX9(+NYt&=^O7M%y?=iZ}G! zwI6j6Pg94(A?St+2c~qpg?J+FlSqK=dIMw;;uw;;J&0oe-?LW-L$KTqp|$Y!AX z+!X1mOaq1s{#S|>%D4o|^2vbM-_JwG8prO~|4*M?SXe8ci|2oZ3@vxIiI?$Ix{~e} zz=ljWdpWWvQg;b+w5vca8)!Zwqv_F$RYU}IZ|q`8ytKS5&ciw7nO50+8CyEu)}fd3 zw@TtiTdZgPcCp|jB58Rb!-n<&9IF7)-M&KXF3j!vxVNTzCA7$R994<|Km^$sp?`+` zWK_#Js`iQ{?Yk*_&-$dQMaZ>CqS|?-*RAjA{xjTrcPI;wTt0cI|MxAq#_1!Z8;^pi%6}+p zo(SU-iaGJKYew6>3`P&%ss5ZPH0DsTrWx3I3aMyWc*SH!8wBzSU16EZ2Oy zQY;UD8UyJ!KG-rANnnGYXpCC>z9G&9;WO-sqYEvvL-i>v_r_UD*hb_WDf+yrdSVsb z=_V(|j&R&jlWt{V?tt`7$PT3K%ie~nb%gAXUb_t%rWX#J>X z<|mVlQab{c(bN69?gy{xw$>$WD|74f2s6~aGt*Lun<5&tect&siZ z0cS>L(0;XZ>x3x6VV_4PCl~{%Jd{rbgL?dEdJBI> z$oZ`8ZP})|9wES9xKk6Zvi1su%m+EpN*FAg7Br7*z45HCHv*^-*o=c_;GJQprh%}X zT|~$ETEk;2){#E^Q2C1%)J~EILwT|kFOFvCye?P4_580+(DQGHhE{yARovw7CASv> z&(3Elt)H}B;4arb+8Ktl7tn4Br^m!|IE>wfVW+HQrVZrQy1Mia`}pXbS_kz(!=v>w zfs>va90_&SvM*r@)`;(YBabo@-NMG1hKG;8Q03=F z<}iPHlJZkCV7Ca+_O{H=F=UTVdr>DHv9Q>|$l8SB%@i^oEO zbFKajq|v)9(HP(NWo)86iot{dxbEhWBV~of*yUVMXXIS{k`jhqcnclJOM3PcY$kb= za}FE=0b%uCr~J)6Vt$HoxEdu`K8UL|J(&P*aXqz5zdpH&&DZg2mtHs5;hwlA|Bkw} zIFL2;=?BJc+p%094SPO65au7m`1U>!;)$0&9W)yXx4f=xA5tsy+U0z23IkJFH1{QI zCv)yyXMr;o=mV|Op(E4_^&BdhTRfv-Fq5kv1{EV*V0YnE9dL=;wV(2;=?~k8yaV?= zVgAz}V4($KLpT81LVSL-?Zi-Nra#NdW$9T&tdB>*|4M{X6Rduh5wM*o0&Wlwz{fk~(f@}nmZAT$vR;)nE&lP=Sh7uVTP zWG-T4wzn#1)o^BH0ym7}H&4hwt`Jk9Ov~BtUHG>(^4CXg`$0Y)s1tKGVLJYwD4;{H zHUoHH1QI=tl%Sx08hpb)aq6}xe$=_qS9`R5kq)^qfl`%sae49Trt1EYSTrIGhnA1- z+O8JtPK1rvB14;3z7l*$@Z(w+;00>uze+!zwL)I9OO(ym%9WAIhKz%8NzCrh?5^}h zO$2l5+U=KvSJckr?r#3`Cl+3L%A1d@8-noeN(UA;G=s<0IjbjPmd|4St2hhv;MJaW z@IUO~&VtmRi!i7I-j=aYQAD$>6w9PmVUqI;TPdAb_&WgFyZ?UHmL*WBB2NM!Zwg(X z+`5zY4bneCuJ7WtR+Nm&m*v5$ICnT_#ofGs`8S|e?rlSfuD5FBG$rWJZVI;NRE^Xr z|5d8_=DiIxFZuO%(9c<3`lwFoINp1uT8h_L8q=Bm9cbELGv5?lIol82UQ-?3y3?f| zzflY1hHJ8>VPp@&b7&$iW1e%zI5oKj-HLFeVNu@eo_qih(LTLzKQymGZ2DvFXshkBj(89Md;ao)&C*dzMn>n#{`SRkg@xpo`YQH_)997`-7Uf!|w_|15RjMaml< z5{^f6Y|tKrbPXa{jA%C)Xa{{f*5cJTeZ!*DOgtQbaq9 zCnB)IybH54Hc5LKxw$KZc^p}W>SW7j&gxqFnaAB4iSlE;*rZ8EE*@107D3Q#Lv^tc z(O!ELnC1TvSMrub!xVQk`+6_U-r4Ho zC;qDXA*3LMok|WDY36|nXBq@}NTw9{g^Da0g%M}?T?*70I-8Z)N{O7150nd7i=C)z zCG|`~63x|nEnYUj;yz>a$Dj)p;3V}Q)@^knw^E=-Et1vwn{^-YD(lXb8|l-NddBc$ zfL6CS4@AT7f?RjQT7x}(S_*%rGZ`n*DCZg@^htlw4an-Q8z~i5;=DF1I-dUt8e8P$ z1U(K3oyWa<=*Hy z(K8}rVF9hv4ntBF65kb#a|V2wplRZ=4=y@?XHp}0qz2nPV%1hqaXqDCq>G^qKnw|A zFW42HF_cGMjY;ENBiv4=*^QSE1O8A-D8DR$`y+PUokp8#>3w;@)Q%A(2>1y3kntY zBY@FU#=H(Hg0wcyL0)elA$8)^4I4VfzdWsw*#nM=CiodT0H}O?<&fA@+CK1I`8S&_ zlM2Kpqlmj@e>wa~cO~|`1YfISKA-QX?l$`z5Fys12rH3Ar&tHuzY8jOz|_pxb+T#i z@X1$Cxr^~6Oa$j8bWEaSzlfZ)}v zrBu`P9rq@wJhtATS{J6s&BvGkPL^I;@2YmC-HvDLQ{#pn8<)644{L&S%=rni*%zta zMbF4EuaTBh8#`|W+wgOd`6!>}I=Cc~-qLem+ALk;Zd14p??o~E91NmU>LIG0K15q^ zDP-d&W`a634OSHX_^kO0{HZ&Tl8HcqIuELaG;^Dz`UiETNbx$;<>IsX_doTXwCxfl za6|OBx}_Us9|MG@KeqCo3~|EBKbW(Hzfg*8THr-nPZBP?ZXnR0cbi$oD6yS2qU~x_7<_; zK*obw_zEwbtXOz_ z){-rcgU8# zeq#^9IM2>MxqeRjyIB2>vCJKW2l;rI*e}_N0Y_WZOAyT&060aVqmA=Vr8yUN)*RvU z)_l!P-tAzxZsId^l^(X!>@I?cg423pts+jR2D-y3Q6j_6;2F+q#EP+4Q-3TP86#c2pUf7LSD=^=ewuM#%Kuilxx< z1y{XXInhu01#0EJ%D=^QhLahdT=5|qrYLk!@#i)T8g(PvxXHd8IdCrDw*NZ+OgoQX zoJFeWgYD0Qdq<&grE6iL^ZDijh+H&wD<-4KbWjB1)Gy4_P^Kiw?&ilSbK8JNF0es@|( z$b`qCyR9{BQxPXD;Jkx^tYPzi$Y6lH#;_(q)}c|Ozf(t?a$n+)X;OT<_-D+7sSndvER$%uQ zX9W`$%IwSJ@rmcoW-3er?G9%vM9ff(1`scRGIV~Q6_eT}zMz?w@OzpEW!PTMf>UGX zY)4L6Um#KuQ-Od9UQauxFu)Qn7ax5AXcI7W`@(KWSl~D7OLQYgX8_l-vrH#`P!g099IbD-1hmQo z2PF8(dp)D#>z9`3>GXWuYv~`_(8P{~;!fSzi}FyxL{xY%c37EI1JV zoP`H|V@&bb(pTn(@GG9K3DMo+bwU)kI`F}1_JhU zd2Z6I$iVD>#pnY2Y}X&~3vs@7o@fWUXao(ZI+Kz9AaQC?8?gTd`ol8>-;Op~yw9rt zfnDRfE+5u)=qA2^)#6K%+7orUa%AX<6q#oct@)*p8PER^bI&+^DO?lBU8I|<`^ZA~tfWsl zMaQ+6YE`KG2m+(LfYoc9g$%surCszPs8Inf7#RPu!uT6ls#*2`Eksx$RK=WU06uY| zi*G+ZxoTd13$;GPw8yCLqcc98EiV`fyOgSH2}(KGs1#}lIe5t+N)q>_h5q-`qp7H-7P3Rcsn&} zaPq#7McC{8%;wOL>sCom?(~B%?A-5gXbe_)F8M)`?qZ2cI;L-EI8mGWbH_(Ow<-!( z6kCfCK4>}LRx}~}!Xzzav2{E(f!~w45Mkdn;)G-_T0<3~QTF$4j(=wA2c+D3Oy`@z zpHzm4tdVPt8#-#kVb+Q) z(VJbq&o)6H+4pGs{$@*LgpWD{DUZX|dh5-sj?N34y_&PDm7T`b7bJwE;`2UIe`}c& zJi(*WGd3yGExx;XUc>pM&SB$xS@Gyd_6rWFrD1TISQP$>l!G3Ex_RY&DBHvKghVyL z%6|)Rc@>oj+lsot(z)A!%5?h*b5b_69queo=Y_Y5gVKKR-5!X()=&hs=LJ0p)!7>+RSbVc1`^p(9;9Ngc#r-(8z5RYFX5 zI`dILXYC?W_bqaVjKJdOWMM`r=E%Y_iT{WtqW1>nyCwFkLKDXKUd`@HJMae_7;kZl zEV^7-vuNGu8I)wY+GB;G$iM0Slq+l*R10I4E+U*t!zV@IM>ab<5EOqj*E$%GC~Lbr zXnBfOA@pi*UY{RwFMbxV-?ZKUpgEFrQ7veWF`Y{!@w447ElT%=O$8F7{c0iLW&oJs z{5)!Xpr81|$QXnFVY*;Z+3jmj@ox7l;g;_a??&0ij5I2~?>%Eoe!K$uJhuCij5@`n z4qEJbyFIFFUbZRzr}WU)nxkWT#`>`kJJ!*nfQ{v*{7=0yrl0&CNb;202)ixPzRkNw z*2jxQg_cE&>kpV#jz6_$x*WO38J+ShyQ>+^mfqJ+|DwlHwHH!YhmFy&S5YVy_9cY4 zBr6e(JE0}BKMx$CD2C`mvsygcR}|B0F2byO}uA)2eUVgZHrv*QH!4h)W%dEI2#%Xm) z@yQLKFY;&dY1vFSw_l+sWbG)Py3o3li#>S;hxUaft_@>Or=TJ><2Ne|d*55$P_VZL zotCl8Qn;st_nKpJ$UsmNU+HY-??rzebNYDaH{sgs&cV{1-mqqT;L4=Ec#N?Ay<6EN zgi(X9&afxObK0!Rj1oHSN;jT&d)vL^JEyZeV`#g&wQ?9{r^jaecgBdUcv0xq#8o2* zh%zhk4vjw~v(y;2nMW6MX|c_5pKWb6&kcLi*l6$Y*Hv zyeK`DZoQn|t<}>5&M&1NYKQl|Zsda6x0>?>N9~~0cz3&!^`F$>x5X9f|LU#O;|6M$b4$Tc zcZJ?1JVj>W`3u3+Qa}y;)H^da4`Fiaf`PV(wSa0gpO&0zDv4%@YO>7(s+&7$kk%Kx zbE6_h7oO8RJqrX2YKgQ@u}xU{xK|Cbh2Y5fFkvjkof%Yl{k%)MxndKS;sMM1uSr`F z2u8g=LH8{=K5$~T*H34oPAUQL{EY+4nh)h0A~3B z*|PaPEzxIl-!_rREtc#xJk{K^po{tZ*Uz!}?bZGUce476V0(;|mGK5L@{C|GH2|mE znxQ&7TyRl5de%G|Vh2bhdQzXVV_#DKX&)?!=@1C1+uXl{mNJ)iFU!;=ZlC#*c>Tjw9-Ot<;@9xks4QXO?)oGfaDL*atY zoeDi&!Clr$&%eAu@2e(0d#7+Ecky!&2!-jS;ZvlFn)9*a)6^hddK%s}zFBhsYlxIho5)TM3Bd+M=Q&O*~9oF+&6-L53LUP=z% zyW#3c*QsQj(mr5enc%@`Y>9S(EMc!#ZJbMN6*}a#JtwZGLKd) zU^yxIE@NQw_|vZL9j7*6+wU{efQkCfl;FIQV6TW_c5d&~#sm)yJ1cmi-wxdO7R*bl zwj)Caz1k%XM^Ec$J7Ht7`L~0A0V>6(-?`P!6?_(-+!r@vuhO%)W$$xTGqX%=jfuOiw5T5#K(B%_ALr( z^El3S_CF8`w+JZI)Dp6os1Kjd(@`^ys4q*sVmkcioP>4e51LMjznj>Jn0@_hXP5nm z)B8tXu>N7pp zgz!7ZMzf=dZ>XqVO8n`3QT@n0p%G)-vi=DU0jC zsWtOZCcb})^762()4^w9R%%YM3qCW>w-%p~PXp`yJg?6j#w-yb{vIsiby(PEi;lFm z%IC40p3`OvZ|Tu;V7@v%A7h~3aFv^R{L3|liTA*@61MbXQD%R0lF}ZtMVvqoJUD?B zbr2)27MEj}gga2*LEj0x3-Tsn!Rt|?+pXnpJchoDbr9Fi^USc2EPvkVZL-AScq&3m z)Z*2-W%U(*03wk{cH;feK(E@${HgqAz}+dB^P;5Zemv`-9XSvX)7kZ0<`Htc_QyI{0^|52pp6@hqo>maeWi~Ij zNR}3<7U@7W8@?AL1fEzhB2m3%m| zx1((j8!sPiR9tFKfhFIJHDd*ErRsY3O55hZlCCL9L9D)HOYP&RQRxL(5b!niy5NOQ zA;e$0JBu{tsenI!a~y>F^BhQdP1R!ftN__MNhLD?wrR;Y4SNOnVkusjB-4<}Pbj}Q zoZSbda2r%ks;HXQ%^9X5jZq?@`G1~@h7$>_}s(9{C0m1B7r~TB}em@*E~jC5Q?T-&R(yC zuOo*$GyW_4)yncGft%bJRd(YRqxmxHPUze;?zR2HOKMQpDlbdgacctg?fz-H{Zw<-!~*Gpk6Xqh2rj-Xi;rwKYrkA))8Q9)l#d8;uk;RMh69U zjwJ2*lTB(dLRQQ=ZG%`RbZ8TF8F^? zX9v9u&mC=Hy7CX~)G7Ngy5CZ2se-<9+P@1H?a_ue%2m*kEUJIjf5J^&?|m~bt~{{C z_SfXmSLk4^sR5iaP49f?W_2){Db9JIdfj6Vo>90L%+@DzAF-L zjJC0{y~tI|)}PSjF@CPju2$#suh-nbFtXbXy1%Wvr3;4}y$A3KP2GlXVRimlAGUrW zT~3vBucSLx*4{}f%#|!RiUMAl-v2Y{+5DHmcf2w~XB3mEaho0SAD{St``WzW%)^2H zo6C@ZiKrYHD@^T@AyGf)hiyGVXseZ&lp{cug1HVXrQATYinqg@ec^2amx3JkvXd>m z;bnd4)CgoKdygibo^Lu?C%&(JMQGH9zr9-1?0t?%r59y=`RI?GyV6_beDT%U5g<~u zI8i~!qhiGjw1YU%87+rxhx43GoSg!{WXm55z8}B^-@ru!3m3y>7)1@ zB6cZZoo4ykSJ4-?^*H#(9Q214SOCZmUVhiv&Q-VVOcMd%b^jA}8M!ykgWC7HG_-9b zwrx?(2b}SM%0DkXQ0SAZneQPUMXB}d;oH5_t2deL=Nv>GRN$RrKsGNKjT3bqOC#sjz)*hE;5cZng;O zxW!=kal{hPl&8cOk04rT!QeA`eJRwM?}U?kE%_b0Iru$pmfsN#=U{+3O6-V$l&~$8WlzBKj0jL%p4uo{~G=u{s*VL~w{nrB? zF#XA1O#FwBH;sy$0=$sQMC00553bu~+da$E^Zy;z+6O0j2#|Iz7_+1n#>sX&PvM;NZ|7}uGMIMsSgbU+Ep-%4Y+!BQWy>CB`uQu%7 zc3^%HjP)Y7lnb0@f`@Cg=4~}i`@+=|Ln^_NjbM4ASnOhXrua2UiBYrRIt!6)N&Z<% z6u%AIH!a8vF6?i06yF_(=sA@x`6p2?1e1N#fe$Ce2-yU6Z6H&f$^|PMuwoc3V`VFE zqkGo%kl3DNJwol#qD1iVNAJQ~gZF~axud%TR8{jm#!WXeItkXjs*fU;?#Np9JgYv8 z2t++n3-*axjeaPRCBiX$@qVrL6Kg&G3bqSn?$MqaHo4x<5N9567v;JA+e18NShXX~ zzv^n{PixLK09icf>cAL*6ovA8NfhB?r_SK~YAw{)_^nZI^-r`jCRWUg2Zxv6o4@#cbk*GuC|+2k;ZC!=DjYH|UjNR_yTI_6 zaB#d>v8_xD?&|B@?-H=C#5`9#LpjC>mjh)&4&?^s%9H|x7z1EVBS6pLV*PTB8XOan z;J1XkGv#FXJ>+GpFn(2~rNsq15I<)$U>^Xhlr8frf4F>5Trw}EkL^`RZ3Z6n7xyK! z*E(kizC`?vX%m^<3;E@R#NbuDJ$`Ba8}UTnkTgrAYjHzN@22np<7UJ8vIFDvBkJ9% zNA}o?7kkDi{H2MU{CZ12MX6@KYY0B!?G7qLPDoKd7K>ZWX?FS83t`M&9X%LuUte?+ zr10P<^mkS^miRrd-2G!_hru#q=VFb2G4|Q8wqOLK>wxx8imqf@jzMys+**20^46;K zJ!i|QU|C4W4(ui1rXgejG@GKA{u2I9pz#7eer=*3qEd@Ejq7v)&fGgEugkgVHmoYFut@ zYP|Wkp;pJTdZi$SxZ&DcadZ5PqIhsO42$A^wjfF6zxKl?k{ZoRQu0pYyOY;%efZ1{ zV>*}Sp?h#)a%Js&tw~a=iSMm>80&Cxoz$Qd0kYw=uorp1L*GeBmFDMt=pBa){G-3} zT=~6=q*U4u5gD%s+ACQw^W>lxn*XjO;FT*XoUka#A2ZiTH-K+;5U>bPYljo*19+}u z*235rj4H|~B`PK>KwEb~rI>=L=76r%!moI@G{4^Zr(Zwpyp$APS@2)sXXa*E){p}i z4z<`(u-I_Mxy~f>$2V2xaAX85QfRjwSiu*zx|L=GCk7%EKy$AO|3-V;VTfdffK%Fc5hwIIWqjXKZ}~FDlf`Kf41}PFPi>!z~>-yM5AM z>p7m&6^0AA;5vM6lrPwL{l@xDvho1gJZyx1g?;Q^;Y_nW=uhPh89NP3!8k+c%Q7%{ zCMDIK+dSRh3+;GAFJ1nIBa=iniriq($hG{}^v01pW5nWP=;s_rP{t?X5j8d~oWK|f zMEwK!?b25D@mf~SPCwpkUZ^7taaR-wrw+FlBP~O7@!D0JKKA$f?DJU1Zul$d8JQna zZQ%Ye>bY9I3e_cZpZTkq-?}x>^}Y9f%*V^>K-{8IHL+TrU!e@%;%AUCqHPr)E-}>G zT?qNFWe=;vP;Sm1F1ziw61K6vggBD0c77@)UI8GU7vc+Y$vb-0UCoGT?4Lwgdb9av z#mytS@{G151^Ldc19zwJnsdO-SC_`atjE=ISgkk6Y zfYXMXIVe;$bzwHdF|$808@lCXObuRnPqF+CMN3Sbm`$f784wDWw+-JM>o%-#GL{ZKeq5OPGsmTJ!e z%rVphYq(9<;?jQQR~P zqTBQ@c@akBissQu=8D~G)(m>|nC@%yWQ=&x)Z1Lc+~Ez-C9@bHHrTOXLz7^L9GG7l zB-(6(q}i7WQ}`p~l*Jh+W`R{d{~qXgTw4Y!ZrZD@*OGl}FqxQv%WBw$VQ=qL7Y~gi z?sTVsFJlh`67v0)@#EMdF|}knl%(e92{+e*Bng_2aT7TUB%|MtxWLw=?d)~*5HTOv zd#3^$c^&(sb5YHgyjFXc66$e7rX8r%0+(^?L~}6Gxlsx3wFvy=nRIy1D()@vooOwF zw6*!)GC_@}h_%|!AJRRj2@3vvt*x)wj9Y{D1X|+rb5CHp9Oa$+*eoaEFzc23$QTR` zD0__I|48GMHOJJ7Ci|JYJK-@5$NY`|GOOZ~&x(ol*;xX1Tfu_+!5AbucOym#2G9`q zr9a~xO^#T*`G%fbo6o)om}_-~N!3aA;BL>)yTs68D^`C}NmobO(G#o7G;8FuM#j*v z>^ldf$KF^Eker?D$L}2M!@lc%7@k59^|oxk6f9VIS7&^=IKZtl)BsT$)=pX6%voSP z>;Z|&`MDu`XYBZI{YbiB>EWpm<^rg}bHfg^v$8L!21TkxC;K3QpOujL3g$Q)Q!|`+ z`&|LWTcuEsWaTps*eiT1K-0$nX-j zChw35AZI)#p_|7~+`u##6I!_TG@BF;JpV^))S);Zn1-qxKGlHD)EG_zo8a%pn=$jy z!LC{ggGd17sOUbpru(%x)6AU-!RH`M@>OngnGG9hwNg7D{C?3KBo#hFVP!ldo{v}y z3`1R!J#_9*0(eOiY17>1z_Ykzc`5Lz#cSf?dnTLTu3tfZgbtoDY8#+$@i%0b6Pq+k zVQ$;b5Hfttz7>pHqA{var2$|U>L6`Tj(ZzECE8H5T9)?m2;50{HBzeiS(_q1T6L4% z!2^tqdpG%&ow$z)X*42Bu|!+bg|A)A1rg2!j?+r<7PqhV%Y7JF_%^w_O+o(-X2R)3 zY9vQ6?Uec%NnY#TLU%nEc<<{R#my9=!rgY=WZtDk@ofx|meMm}Ow~p)l$zzGUYPAJ zPZ+6)Q0$tbS)@6b&EGN(#-a!>k61ngFBluA1*oHTlcT{MPh64);!qPXPnfz#q|fTK zE6z-d;IH557Vk5g`fe8?n$?m5!MwP#$ZG$7|Gg+w<_uK!u{vf*yS<@K_p#ULLSnTQ zlTGnex9l71#1!~)12aF6BT%^*ai@3RUh~=>p6>PR*MgQ)NBb=yK3~oLd?>9R)zX7e zGt%HawLRsN_}McdSq*0XVZdWysoVuiPgx8lw+cT-c3<=Vsl3YABo7(s*8Lh%^6Dvws1s7iHcyj=I-e~K8{a#ZKm>KGGM^Tc+wGh(Jg3$I#QFJN68EdrgDx)p!6=T zg~BHX0TT7S4)NdzSH^9d=oT2Nz3;xN#=c^aU7ginJkq9np7F)vRlUC(&KU7l{WW!3 zp=H-G>W_gh7}p34{=dr>XBWW_#1{_qIxoIg^XfX9>*;~dN0kRn!-qKu+4I%XBS#B= zp{qpQc`kTI^6Tu( z4Gk||+*R~H%sTKM+~&WNc$VXVVzFaE%DxkYcl#%*byU;IrO*uai&}EtAp>a@#6R=1iEX*HCG=VjsQ6eW@L+#uhRNPXxYZ$3v!;Jl}|GZ z@lTL*TqNgC@x6-$V(E@B&ft}P#UzOye~UchdsSCP zWi5FIyTq7!%o9~c5iZDz0rLRdV%$a)&?8|ibPQrLY*J7#rS|cwwtzt5>tWwWdeT8| zhq8NcIN5P6s_E68V{{xJH1r2tiW5@#AC*(C>an~$_FeKi>+h)Yq>GdLM5wkW+~k}x zL-v8(DE%n^g8RB0Z1f_&zr@qcs^RnT!|hK{FNKz}fMtFzd^KcY#1GDX(?`?rXFqFkW>h<&j$2y_H22DGbmi9k&p~RRw7a0LhxAQ zsp~`3w|Gj~KZm17fHc(&{;flh_wVY9nNm)189ZEWbyh;%bJ`-yW5 zt)^fYR%>_(Vrv-?YeHdJ&k88E8Et_+1``id(d1MtEKs~H#k@W}j6Pe@Wf=+{CS90~ zcQH@)Z+agZEF<)vSkIJcn}6J!Xx4MSDP8=uH*ozN|4L>(moXz_-6^^;K_cLQN(DZK zNUco;6emrTp$8yBYdR?2;0mHoy7{UV2YL(4Dv7s4c)S{olf)-36${or`WbV}%1WY8 za#c^LRhaEd&X-MEIzyb^xmh0{L2?2x(BazuN)fs{vWq)1`Cv)u<1;!%#aJ3 zNQGHtxQI{>0s>Z(A#H~d(fl+}$;Ch*MyndQNHOE6wX+uv0PQaG@Bh2Ubu!BLqua+u z@3S})iFb0{V45+*w>#cW^vZs1S zKPvN$gmdS*;@Ou=w(VP2nsX>_o3M|EmT@5VE~}bqdgn;vW0T3Qz29CD7nr2-Z(C&2 z@QO>*X8H-H;z9qE?pmANzq@H8GdApAMuu}w zO;6>O?lu0=&DipBh-d~5h5-F67AcRTa4F9!hBTTB81YAC{!T zwC|;Qk~&MOlj~&Rm)u++8cBSOwJ^x6y)325k7c-ugmCIO6wY6;c4O|qJR=%bX0GlB znvGW~nYqcbq&{=Y9hFOyB*>bk@U=&kfV{HGyDN%rZ>KOO+u_2!$SfuVRx7-WoIGY+ z>5h}D*EQ2iqzl|Gl&KcY!$q>N#r%m#O6IdouNz_Dxw!MDpP?89@ypsQxu7B!1d-r; ztE$$|k;_A_E5NB6@R6tsjh@`c4hHv)_%g6k`=1`{*sEncvS-cf@^@LEicU>T>0IrC z$J~Lku!uRQ*PTgkmQCN6yJ8be$MMaM7#1H&?UAcKG0dLsA+n8dKx zjSxZv$o&4vGT@s@Hk1ShLQBF4D6RTCV#Steo5IF8`yZ_MTii1+!Mm~+U_G0KHQ-Ep z+;evnngQ>F>TcfJg8(9{KIOlOa0I=k!FaOpvz^$;i~&YvTd|qP>XtPy4KI3w2u-RG z@qM^bdo@z4aIOBf&Xd6jx*)R)CH3P+WGu3M&qWBhBJ<;%;_Sn6_Mk5G#$(h z2gBW3m`uBR@-$Gr)Zy-~@L%498co6PVTIT$dP zOI402W^eILw?oWBn6vdvKh3CN%E8un*RG5=ieMc^RX300H9(_@lXM2$96;4KgjB7s zsqQE-QroM+c|o3?t$JFoZb27P0lr+6ZFNFy9u|$!+q66&m5*Mq3n*m0xQFmZbVJ)E z$tzy>hd+zC{`zva%x6%tM#%%R@`fjwl#7%n#k(anG3-i12U**w*X6F`tX} zh5N`1JybOVdx;h&vZW4R4o3hcbo7Xe7uJhlIHMN9#D5_UH1$JEYAhc{@wn5ldAN90 z6rSLdfAw~6vk$AelXSav>_&@-+q%r_%sosCNW(B-czPPIK4^+8S)ck8ouHn#Cts|1KzfC z<}Bt0m??`+V=KI0tZYQcv={C1sZSfI8|5#_BfJPqG~d@5WT9U?1A4sSy(Xt`abLAbG7)~gWwEQwq3O0%Z((_nDD|*Ojb8u zrZ+rRH$OZP${F!zbTsbD2p6aZI-l!|A3wQqx6azy3d$$o&{#*(1?FynV}Z@mkJfJF zBx!r)AZ?$xrSbpMbnbCU-+lkTwpOlNlkMtW&J(uP^lp`wXo{THT)N#JxR$%tEDyCz zRLVoBoN?ufRURt06cwl}olCJqQ$#VdJWK>pgFFDD1}Xw7$U!{(zSr;Zxc~JZ#Ru^H zeBSTZ>-l`fD$z}*Cg;h_s?{R%dal~m*CS5;=p%;GB!%5LGOBdP(w!9R6`q)K-Utbd>ea0G%UL7^*^kSm+RkqldGUx4=qj8ME8jPNF=!W&+bUhTu5nWl@caQ&0q(rb30b&$0j~uW|1fiqtjIFS#!{imVu)gg<1X^ zQ9JJq7~Zf*i7unE zfbt+SwbIGhb@>4~s=+lLmy-JlVsq}rN#o9%@{A~ToK;WC?thelPWCmlDBvC1N4r4L z%%_=?%v7(0CR()=>cCbWB>lCzJM4N6Oz4JrY;mpAf)iyHKu-Hglme8XCQH00v-`|P z_;+0j2H?E2DSviVjV(*A@!QJT$+_#^z2l+)AbIbW`~4Z%Afdl};n!!Sd2ozKA*cj7 zB!k{Q+Ijun%_6r-GHEmOR4LK2Y`Q2EdoVHCjwoDtvD%Q(kHLTGg7{?pudpY-eQ^l| zS^d&)@}Mz?V=mj*TSf+Y=TU@!cB9l%(230!r7F0P54Il}f77#A`cj$XcFc=NjxjPV}y2TDebTs{V9D`5q|*2PN_;9`zM57 z%@%>(Lr%0$WD;sKP9|iJrpji04p#b!fvKvFw9c6)_jt97+fDRe3~AAQ>;`KtOLXHN z_QHY(Kt9SX<<$mBV^76l$1>0){Xqoy%UIoK2LlZ^Z|WB|9%MZ~np?t1D*zYcRadm0 zd>;P3k#k@K?n(tW##Oz8rB>3G*Oc2xppZ19a8$Zo;~d_(0Cl%Owp*G7%b0}h&E2=# zYh;g@PkjLVLdu`B{xxbdxBEfPiCY=NFYoY1%4)>Erg&;myjL;T+mn~c^69koZ@YKX z%z0j8S#v+J2b}z+HU0#90V!zb_LKp8>5pSrvRWO^-~j+xxHEOYKyjQ?zgqD8nUY3d zG$3KQ#F0&Fevleu&a3X#iye8EwrbKte}Zf zR>eipj%YA0%~vZ~_xqAu`C7!0W_w-g97$P+^|KTMzSw(P6inV#T($Xb#47(?Tu<`W zF$zvG~j%v@cHby7N)GZ_#-kCJ{8lP zI}2J`=;VcoZA{((tG#RK@k(?Z)#zho1+kwHHIL{JZ~+WRmN{$Z>vNnDA?hEV{?Ir$ zQc|c$2smqtIp^7$qwgTE=tQ3!23TCzW;|d~ODPq-%DnNe{#6K%?LQIvqfEM5ps;fS zPObeX8;ZW{onC5yM7cek=XXc@w_9{D5n!IX;c!AcD_9O?BZFiCb`Pm8GvEjFQGR1Z zNLCk6Ec^r3wz}@1<}!+VP6hi~&enGIhlZXg1+WmS(yXw?co+OlCVlHWCZ$VZ`S`9v zv)9FstDVRrPq+*$<;wRxfd(KoK2)3qz8g>%1EdMega^@ zVM;FKMShO+D@M%kym1%`9&lPN2AhcbVMc-0BGt?F;rSp#_qE1vuzQ949V?6~H$2i^kAbsu+5cLU>)QPF1y;VsXkIAJ_ExOoF{ z26#6a0sM3(!}h_j=HbKlDwd=sVXTy;;^tP9HA6wD3lHUQL}l5M`$p%dOdl)L8y-Yb zNPfT7!?VUqpxy0xULS}>qk^T2w(i>oM_1hzu-~b{XFgA*^F+_UMTT~so;e1zHJwkb z^<#=yA@lhR_S#O|J>tr9wrvS9UpE`YkUqlHFtBN$_zMC z8^4*&TKv45iisyu6{bX^Yj!EMOmT2IM)_-b=H%5=?&}K-;Y|F*AE{es_JJ>+>h%mc zWv|BU%*}~nNlR4wpKggKT+c#__Cs@9)V^|AWeMI-HC-e4Nd4&ZCuAGz{p2J6P(S+b zj~UPyNPP|}_2qJ0T~r|pA@%2qXyU;b%;uxx?(09=e~*aPPIZjrs7G*VUWjoM%rHW| zb7F_)N=?vnDMUueD68_$C;#Hmkymr#d}Ne2#h=g0RuQtC&tsB`p=QEXfFaUk?$uC8 z*fU*zu@kQ6D&tYDWBTyYZbQ?)C9PmArqWxlXx@b&4 zuB$L@8O3><#yrT252An8RznqM^X@O62)a;q%lVSVmY)i07EhJieqCH}g}=pF@NUUx zDYev$|LD(vbTd3K*4+Kzz51P{ESC+Yxq{pcGDll8?ii^h`8{)OVzCgj(^BXx_T6Vp z&0St~Sx7Yus|Sd>6@UHMsD*k5`-*-H5lEh#(3V$v0{M&54fQzMOK6*$$SdtyoUoI( zO8Pd*?8GvWc`VKlpyGKWxc4=+2G;AfW?ag6XvQOb{8G=TX-;m)lXr-`4ja1YhACdz zNIs#E^*DJ)9=)TJyi$3tkSLQr(ksSC(YOHS8)%H-qWU0R{Y|5Ntow{JzUIX4#07!y zfv(*giAY$PtGZS}Q9m@M`wOWhGCOMxnU6Oy%2pXu{VU>nmPE+}ES-Ciz@b?%mVq3i^I_PTs5%u@S4p^j!?}+++r1 z{CuLAMG|3{SheCkS;*R61AbpZ6_vnfV1@nWa1;D%hH$cc6k65r-3(8wOj&MrP<$HY z%f6%u)v|9%{qdVWRBZ#!a&2b&MYeVh;BPO5hwhrLav0?9-gy<>@sbxRe)8cS&++ong4wKXz6lkDG)eHF{|K(dGv8 z?cIym>4yw!X5|=EB?($d5d63`dgr`Xpl0vPF!)4(^eFb5mXUI_E}nSWin7WEDT}?g z6q*k;18x)spJf_xt*c1GREypO+orthAre=B?_O$nfB|EgQzd6y0K3%*U>yPLMaJUZ`P%rj@|rLF9M-Lf&ft2G~vZv`nO zKN*jXXr$uXm3wn2own##F0+)yBN}65GfwI%f&^w{i29ugCR2};lzXbT#b`#7j_^2S zae$)(=2gm#cyeB#s`}0u^Ne1OK!3Z37?vEi zQn>uIcbz>NBW)QY- zQt9zgJgbhjA0qfD{=}Y)>OxaLH@qXeWQ^{%7Jc*N~4kJnx>{`U_pc9lA=O_;GZI84iRtaYl177qGWY z>2I74-N6%;2b+@acXog0=<+DnoNm#v&i7$(fA8Nqc0L%*-rk9SfzVldb`Lf|)&ut8 zf;1QB?jqjZpO9~(4Xpu^v=d$CDDJc}wZE?_uIqzt546)}g=R zN_KvpuwmP*R==}{yT1bIli~H>1raL|gEf_zyE9PDIkiOJ5f9N^Jn{J?JCM`i2j7${ zq`kNehZi55eO^XVEr+SkW?BnssVA@<7|xjzg=U`DF)E>0i;koEL|L6r`q@KZwW>TQ zXmIIR*Z{6in1G1}Bu>~q9I~8{3orMH4D%go=28XHVW3uY7l*#Q{32f+V{vT*v`G%C z)nz#3L}QQt@z_zlYjW+ zVe1|{hqZ_v*cW(q&RFOU9D#HM4(tBD1*{OrAvd0Hn7?zMG_na2*@hDM=b zy`PcHk2AaZ=zhQ914+o-z3Gh~$E5!?SZD|RbJwR#pgw~Zlcx-;=5OdOpx^EhE%oP} z$2H}|%-%EHCq5a$Mt!X@?qt5y;+sq$vlI}Mv`a@jcDKuZ&BY664KttVG~U0!VrkA6 zc}lxo$vzOmiYi~31gxJZF?OdImIh946|t>1ZZ!}ETa{yO;_3pHApp$-?uzzfc^5!N zkwF1vJythQq#8KUVR;F1r43GIzI&a?0el*Dexjwr$`H$JK8vT&UEBqQmza+#mqk@Q zC5k}Yd3DkmyYYY^o}dtl*&mB;7J2IC!HN4^d(71a@t4pPevtUkw}T#)Ru}>~w8V}5dmyb1(na3MXi=9BU>?MAk*ZR_;Bn}h&;R+-luj^p&!)0-V#F%vT((yEc z#VfX^*d|Zk6kgu}g7xhZJ37DGHl34km_Ie-E{Sy2aj%E;IU*p2E7&Hw>tx2qc}Fat zJklSsp5@fC;e!D7ih;Scr6Ui2!=LGYR*l7$EqjpEEM_Je(Ux%}mbeU^AhwsRIk1um zn64|rVf!a6@St;*7S~0xys)*%@A+A{3aq~4eE(BueKL4nvTaiI%LeJH~E@kuWH~fsNH%5)wVDeYuIJ7a7 zulb}wgN~h>S?1KZQEzjn-ox_~m9-7Hhm6bBnp+}4?e%T;$j<&}GT;*<)oy;|5p4UE z9JVX0WE_D^hUby0nq!!gVicqE-;1-fvKM$zr@t75I|=EAoWl+qzec5&x#}Wx7N52n z5A7M4ZW*aA0Rr_7H6G%4*um8x3~+tVxsLySf?ZD2FbU-9IMM5i3##?878bOOxp=L@ zG`oCAm)Ze%Ro%zjS*{+jyS<8VM?oiN8yRq9dK9b;fVkE`o7O!yoszNw}!O?r{5w*R?V69@r+ff zreN{aFG~k#nPRL@JM@ z){LS!<80T3Qs~O!HT$k{1L^Oxc~6`52+iayaffA>Aa8p82aEp4BbM}FECN)#!GmECLawRa)De{1v|FB z%A1KWFI^VCB1R8F=kryR^x&r$m4TBQ4*0$`leQsh$+<%9yb}ZM*3=Up6{e0;_t72A z7ow6=2xik>HwwQUriiWIhw8%smZ|Y|_m}E~>WjfEoXU##(fc_QcU^H$1CvZ}ghk3d zaK7~XVd(KRwZ4{}ZJt(n2Ma^`Thv*Jbu zY77mwFMSXX%O6L!?gYrz49f2CJ;=;qMV9DB5o>%4GIl@{v-M+{&w%wu!9ns#eoIh0 zN-Xc(U2KPzi`oXh7;qic<%6cVYK~b5jSnv^?F_0Nb6i3Blr=I{p0gEItjn88YB{I> zzoPjs88r^Y5B3Q-Ok3d%>c%9j#$I#raurvWBd#24W7)`$FnYc|j`Va@FZqQZi;BqB zX~CX-@V5-T#6dExbA|urus*9($k;5I=2)EZ7VKv$Ps_6eDJ#f|4(|AX6K&-ogLPE- z$8sT#s(h%6U;Kc<#ZOBjxtY*`a;BI%d`HZayv-YX_+nSM$+)e%pQ>Gnvg`o}m z_RT>aY^!&ajc4*6?$f>&CQ714%vIO$z}vSx7%pt1cXkslt5%J3t|1Dxus-ql))ha| zD(|=JGjPXZKkLv@koZC&ZfK3RbVc-)(gX1}!Ctn#)<6+fJ_FElJ5msg=w&BI6J{^14f#@vJQI>1{(C><0(*Nvy8kWVvGo#=^?Nixm;Tq#t<1J61r{cK3#&RT)_VQQZ zgSk?HqBI4LSCSDCx?4`7MTQo+4X|ohoObn1vV_BsDhm&e+apLVaxS>80V;sl7|1qq zbn!h1dQEKLj4;^S@;2U;J&C?)9h2PrfTfkRJMHU z*F1z5&9_B~;zG1WAlGCEWY+kcc6fs*IagyC%f2Tn^a;VjG_}2sccHeopUfUI>)?2X z`SuC3NP}y-?nG!>Jm>t<9ntM&;`Om9CC_tGUK|j|X({)FL)F!ZNz`+jh1HOblGxXY zx|q!`>OMyr9ymnM*l z67C%mAgdfZy2ReeOuZyh32^;+FGV#z6SQRbHWKzfE>`g3x?Zv!!5?UL&cn&i$TafR z${TfibHsD~D@a+)4r7lrnT5WG3ev@v8zDW5Gs4@~6tBg8jb*Mpbn8t!A^M=^zrWdH zx7~dWCDARd=JfTh?;u%Naj9j9wzfBi-HXV<%8dc40@^V?E?gO6j{X)&Bn-9`Gw@we zh_fNX}$4StX5!7_^cq*dq5yPkWY zt(2m#tUXLG`HY9krOf9wvF}o((`1kabC|VPiAp*e>S);HJXZ#SaU6zHm9g4?QzI&M z6&K0tYg(Qo2xB_|+-S-=_^XYUWxF$>BYig0c7$_uPdo|b>tBFA#Y&eqNTEAac2!AcpFIb6fAN}`{@7s z>%h2eF~^gtL>s;-)~AP)4NVH&xa)2&Uq9b8V`j=#^+~h^lImSFDOC7ep+2CV zyZ56etk5~2bB2(&2*sD$4T9f@72+S=U&~&`xHL`_( zS2m!LmCeF+4)V~Ro|=b(360n>WN2)+#uo3{upys-4K7`sOr)rW?a0b-1aTRohIUwP z=hFqvvjIvHX$aXG7NF`!cj&j;=}4m-mlbxI@@!!4B5=|g50Oc#0VqQY&y2=lLhPc7 zu>f|fVxCr$H%%4IozZnt~rgWtL^20MF<*dSyE1=pCXv$?6-GwcQIKALe)t8ngk-Vzfo0aK zDxC92&PidN1O4msH%m_`VLU}?`_e`y`IkM5b$r~^vud6mN=Iat?D2$rBu)o=qAGO9 zm7D6Bc^4KR&PqgvTVWF$oFdELAqxU2!1SFRh4mQ)JF`6|$46yx4%jHm;)l~2gQHdK zWcAQ${#DRrc~;8Rk{Y5(VopyE%dJ{H)Qlf)Sd95?>wGoJX@99x)1rUpI!5jMuy;Vf zl){l_F2H`dkBNs>xLRCMfhh>vUWk24@S1?%RE#jJLNqvgM5q{*EIrI9B>Q&>3Ay)I zmC}O->-xKCxZ?OFp`a7@#Vsd|;zAf*8bVkpd$4i%(4POx0&G`xEv;YO*)sBg{gL?Z zzcBwSf-1h##HPXb;>0Y40cQ9EQYq%g;q(Xa!wm9Y27lnu#F_+9I^bQwsgR1xDqF$* zW#85sin#w8b}>>68NgaLC$!_R!IIZSCOj^?M@qg|9;vN6hs>g~B`fRkWDqpQm+Ox4q=$t(ey*Sf0nz+V!>hG^up0qukn07xi&6Yd0Fx2P=XRQ81h> z+iSLa=29^+nLy3R1ok@4r#PEVQwW%so0-QB-rCVD`*5A0%n}iI zw7n&z``!DhLhIG`Y93UE9#f|DAGz$8+5epmGqYG*1P0+Wj0%Dp-&d6KV-GQmeA=k< zrPLc(auqRMfxhGg#FZ%*yb_1)C)A!HRXKnvn$2Z_Ywu+z7pbpg*W& zuJhlIYZvr=7zRi$1c0`P=L3im~2&kCY$keuaqVH+e)u3ML>D~l#8AL0uKjCF^ zHrC?C1{et?vQy$gyr-vME~kAD(lk)jc`EX<`2(B|K3IiUzar|#$N$Z?SA8e8=R0SI z$t3s5Uz_i14_PEj$X|h`$-hc8;^br%3vYfy@pi96PM1s;=30N=UCHunS@2dxVPyz3S;CfzmzCH8{g@};nvMVlGQw| z=s|Hc&cFLsdhgNB5laDWoczvndr0t+_C(Q*WDR%AJzhJ%tT$UP0u3@jwnLYt%a@B= zina&_toOFUT1GN6(4Xe9 zV&S6Z)aWIzO3T673X*R=CvV5}_Wpki*66ua z_89o*4fZ)F^A#brI@5Gqrgeo^x+2ET5|jrKDeR(vLj$h83SjEXLezf%E3fek+H-l<8du(}7Vmy?akiEC#0LcxOZ$lV>SA>pK%fsV^y|>p_MWHw?L*hJ z1(7(nWn>eqAc6d-YE(XRIdv_`B>vDJJf`btepP$>+>O(1(}jH zBwpcZh+Ft>g8a5n;|#QKE~4C&1H(>TDTx1)C5YqEn7t)qziSxAljLK>GZ`R={~Z2P zdC+O>NxSX#xgx60Q5m9n5Ofm8g_LdV>3}IryTjAj+i5Sq!*Z|!m&A1~`drFYw58x4 zcPf=uj@n>k{9P8@n2#_h#%oz7^~sU^*=#S`^i&PT9pR@5!_xj{s#W(a9}XDP2Y;XG z7`?xddE6>TFp8xexV{A_J4S6bA#MZTED4%c1@Wb&4tjaW6;R7g+W&mR&LBl6KgH-{ zFm!0U^70%zQwWPmOvGwZNqI8{&o2K*a~ zR*D})Z$oT`T`ouG1%-AFfDHD}{NBQ2mDBQQHiLw}S3_h&*5vOP7G4kbQftQA{GsKs z2xiQR!@gF99IokOv8W>!+uNXXD|J3zvxjz%2Mu=k5!xJG!pG4+n$C)WAlQbtnRrh< zWLtpRA2Li!R4<8H>}{qj27kMCZHx;%O2-l7p2+$B_e)C3?fwQ&>C`!vEAlp@88PE& z>pBR^!X2B-eyPezpYxv)fm30np;_kZvV+0k`R45UD42D#XPPXY$)r_Cgipx_%1vsu*%d3vYZO9O}Ar zqakpf_@KGeE$XRX@DW_vM`+8^Sv8OTU9Z#O-*VgV*r7lNCCxe)KNIBdfZ#td0y_^1 zUfDl)ku*epnT3jnJ?YTn1Ici_I^7wBv`OUW{005Tdo81Xw=X}`AXKqEy>;SuxTW~_ zWnjWe$P-(JDdsxv?lV4Ug`A!zL)**HPyAdUvM_3`d$5B=6`Lk5X&x{ZIL(OY*NG&V zzM`cRciI3Ad>cDo5o%YyOx3hto{Dlr;~V;QK+s@&ctQ;CV0WS-<_fJ}t$ej^Iup=(BfPcAwH$I(^kiKGPSY+U_?^n&Z; z54ZMd{~H~miBzO2COMkLj#2~?;z}4QGiW}pPb5q&y)3qGu3`J%x_{#k?u@Lx>;J4wBsr8%ZkaGaWWJu6 zl7}(shDsurm*iu;-yFMD0&59`r_Y!UgdCvs72<|tSL<@@X3~h%0nnzLv zJFOK|NB(@^Qv_>?BWbSAG5>4gJf}mU((FQgHa7cQU1Y)3QB7ukGL0@lTb6C}B$VcW zm#B}Y3JxU!_s!$U9My}*VoNbHh>?Y=MKuj9v29;J$3q#m7JC)$9$BMLGhYyi!d949 ziepJ>+Da{yhOH^cjN_=>&dey9sbjYpfW&)E+J%0bfGyj;5%=(1I3e5oa4gFlxf+jz zG)|zHf8hMNnjGn=a$EeyaHkR{datJ!+3FdlMa=EN3n|T<4q^TzW*sIkzrdPqJ#G0} znaIFpEPkjwRkj2hoc(SGWoT1mpw)cQunOP@^1+ePAG!}yTG=2SF*sOM&eDvzxaAManHY;`rqXlQ|qZy%J+vPD18*4%Ws#qCC}*Cq{|X*Nm(IZn!I*$>;Nc96zmQ%M$`h?q`+dk*Nvu)W z*Nqm#+xrxMRW|(;~K-k&e{2af(Q!`(|4#wnoBEaI8?|u$Lr3$~Va;T`u zSPv`S5g8`alj-)kd(StglLzzuN1FpWYc81}Elj{cz3M<00)|n+N`xm{2L77Bx91n$)_yznGG7Vf7OP zzRij^io9iF)tLsaZ!s%17@0Af7{dIx(D-LnZ>Z;fafmEwyuyarT0?&Bf(kJo>759% zm`|g3jqfgUp^20sgv(1dVi~vSP;0Z}$-c_U$0HDoZv;YS!S&oamY{!tNtu$ov?y5U zHuG(r=9)Oz24^qK!+|SaS5zP5eaTebLe;Gu@%wN?xCPCc0Fi76L(-jI2!=B1J7;sUDec1RAC{8s*l+HT zS1_MQRZQ#tGD901+F=-DA@2a2Nq&ET!GkaaS=e;y%DdHXMtpBrM@FQPWXmt{qT!AY zWC|&KwVx1D1L1I)c^RsU{K|cstwo+T68DxzZVt#RY0snUoirNzy3oG42)%GBT3eq} zXfWKzFOT68)a?{drljq;rTi1#h;sRptmfs(cvehM4=7yf`=)J_QeED8S!7}HvTQ+} zrR#OfKiVKuFYVhwYE~JY59Hezn(+r*$qV53m=3L)JWc}}%xhwpFp3Z8hK9=Lg~H>M zy}&)$Nd~7b>4kHZ;njC+!x{dPi`1H_`AAXLU~Cs3A^AyD*)PLcW`AMj6z*8GjfMlg zS=M8bJ(UBg8S}&kMdYd}*XwfRz#&h0+CLwG1)V1B1CDXw6F^tW4SoAyV8hIn{e;50 zop)H86P>^2SsxoK`-PZH-5*PYvM#(A%LVcjq3X_3vJCzq1K{K^byq67sbc^vOR1sY z;!ECBBH(32Q5qAQT_~BH_cubG?(xGl>UPqLY|cvMd+eL$8clibg=5P!B=ZV=a;Fa{ zB>Ak-R46h2taeJy+&ex6{F$(VgWhhPbW_hLado=^<39N4^({J$o@Bi!RR@eHGeS@u zkiPhJ*AF%8fSP3b;8kW!LI>Co!=;OU{}X452?ooRW=D zo2xrmkZp)6XS3!3bbYTP9_00nBT2gY=xAwq%>@NC0%we@&(XnU((FObyzN2GJ**n` zjrL;GVotFychovB*}>>~uya9jbaSXPpxqJ0tyGdZUwtB7OzTJeujnN}gWEUL{$L5l z3|$VoyQ|oTnjlIxyYIKWl)e1qy>NwGV1ebYU1KgosfZTX;D`{@D9tfEDo)1hQ*y_w z?AwrElH3gbOIPZF7S~r^*`A33naq)m+3=EB%!YSq<$cQ##D{x_x0+JTfRd*sDim>P zEJF!KlkZ>`M~v`)SC}qe0CKp6uz~qCtuv$p&}|OOQ8x=eAR2E zn}6=NU>a}*N_l%Fca^{0XY0Wm^4C93RA~YSh14h5VmpVb5GE+!W&B$WC;!yyr8tfS z-Lm2C+kb@HV^_yQg_`r zFQ~Xf7yahbcMwOw#zPz!I+D`x=xERzb>l%Q>I^~Tzbfq8R=-Q;mm6D5Cl6e#IqwH< zV)nwnO<$M?j6Oc1|LvgtSZTSs@Qz3|59Oy^1+qwLQ)Mx2r+K2S9D=xGCu=*;H5nY(3dum>aV#v6L|JhSV#mUaq_ zIUa#5Uy84~pavI_7h^4=9&Dj_2HM`t>ECra!l0Qzk|>43LTNDB;!%f=CgGIUhZ*u$ zSt7n`xzB8YqyxEZ;96oUuZhbumr~~4Ta370kcU@)&75^*#Fy2@`~!o?N#+v?N*p|; zu>P|NQW{0tN-KxaJC+|kFLg@_U%Ro-h50eUUKSP0dI!uMMd8Jqqd05_gc~QizXK5t z!bA>UbNxbqYT`@4m!pw3U$z~Ps1SR+d*FB`TlQ}aml+eAfhw` zu&Ij!%MTjYaj)O(_7ECgt*9J2U>>Jds$;EkU|ueLtX^m%w{H+L6~2y}?n!>Z#Ol~q zPqve|P0c9p?JmH5QzF})S97lTD3KtvK+CegN7n6f%ClQA>%LFNUW)bSvjh2vkKu!a zV{>ymHF1+b%1;n>`R%sT80QYnC}S0h&{oP?mhIdZ9!;eoZ^^^PY2v54jwc{C zbmN-Q^?}2TsysNki&ewscoyG-ez=8S4kD&>rCI{8Mc_#1z~BppR&zGW_OO3|eZwrt z?;m@k_;_%Q^*eI%HP(*->^1hWok$-c-^zYJ7e$_f#$aU~m&{G{LqoCnRpurdqbMzq zQ-8vrvU_l5Y}K0BtUVO9>gvdA)?R3sctR{(_bg>-I3*GU&w3SZEGENgn|6&aWc{Gs zdNp|!vnLP+bPya87wrczM2O)_ZX9fvv1NwaRzdEemhU@INn}-MtlhC%(qNGvF_+1R z^|c;o;3gEc&=t^_OP;va#h)zrj})?;H8x8AEsE$`Tq4=7~_xre1(#eWu&@e3~!j*L^;745GI0D85C> zRjBGvwWk#4OtJC!5fB1jjW(TSENd|8ZXWz&3b!@d*7VqX{TJjKw$;42vh+|>w-?@q^ut-rJoF%RXa*QRn~&u8M(n{g4h4!m z_ScX_N8TMdGuB%Q?0Xf@+BFuZai3Q+}bT z-?`#gjtIu?p1cm{D|v#FUAbU^C@{mY;*~gMJ^Y&hwQsI+>rDD^NlQhS1MzjYZJp9x zg_f6YlmK7@pTjsf)meSqj&EM&^tS-PTAG0-6d5d!pBQe$CmZK$?4b^%7GA$sQ7M%J z>*kKKAQi#Mh4nhxs8$(&M!7LteBH%pq6wa02zw0~e+nrZbAkIUboHbQGIbN0?9Bpek_CfAs+6EPKbbL>eQX}rFp?PJJnfH%5*vGIxmAgvTv2W17C*()5kvr zQCHeF*ME4r97E3--^vxTgw!2|mY`L60kj-gzYp6R^*1suS(bxJ6%Dj#MwjZbPci0| z2dG0V4;)wHJ38?a0y-^$VRU`A!|S)?dC=C!FH$H8rTUW{H|5TRrx%M43p}IWOJO`_ zw+i#R4NWmcJOx_GeoV+M#q+~5ibDFFgH6YSKN117o=q!$@-KWW>emx*d;cenw&{S! zHQ`gX{`R0fe~EV{GtU)jRQw>zJUP|2Aw`nx-5tteye>|wTHan0mwi7F7?Zf;o||kt z-!I=0=_6OMWu=E9EE%YquzEySd_qjheSCm|EKA<$}i@qOC_o0QE}}{Q@>jd z%UtEKUWly3+sN!8Eu`SZHxC8uO*o%Sjb+cT#glL5lKlN!yf)EKac>8yBRGdsd8`K; zBd$x4T=mdZM5mT|&nHh^Z@b>TO~Is(McdsKr_+YW<;Fv+t6u*I|E(;f&)sWzl)i;d zT-1P)m~5hNHn1h+f$XgfnWKCUf0DByF1SfJ*Y%ohdCwtP+Atq`+jCML>MwyR;r#W2 zq0OxxnQ zKXq8LF3YzW->^6{u=Y9!iNVy_2FLmj^)eZN zh?2G?pSm4_TS4+#j3ubtUR)8x2ye2F;xWzUf_0T4GP^M5UZC)}_$1xHy^aNM6&WUL zHMS^j=HgieqFth~{pi(66#>TYS-zMH5f^xfh06$Mmy3QLZjE{?OSQctAC5EAEw`Mo z-ul0(I}h9b?5Fi7u!}M`h^F;@Qx`c@x+Qq&XVq!+WLR5X~Ilb6SHBg z0-s4+MU6v$l-N-eJWm#31f4*sUP=D5D}^Xhzcg^>mhSKDJyFCHPR2O!KT0&UO7B`3|d1nfvh0N)vum! zv3nhEK)*h-tus4dn>m4W`Lj1oHpF}H| zd#IS9nTgLrp5kYW@Mhbn37Gh_g*%QLC)yxwK7dPPN{{#&^2)uKhT9o|$>1V!+`_yQGqkf?&f+g7J!4NE zpvRskGfM6V0)@dY9a-hqw2sBA__jIY*J4}W7a8<9a#7ybO~RtpURoQvK#Dm(?y7RJ zti4Ah*72V}W?nm2bu8`fJ!Dmuqj{>S4O&pR*mfF*(9W~o(peswiIyi-z2utZ0=fE6 zfRld|@(}XSp}r=pGvK!SHv_F?>&~jdqPS6O{w-MHk~Ek4zYXFKakt~2pahZ1qQye* zQcH9PPnz8GhpRmvpa)lW9JEus5jE_~eg8P+Ja}XGsk>g{E6{{oev3DylK`H35x>JY z^%%O)UTgy93a=G%WWZGTkA13}Jw)?QBE5RD=DBjLbJ-4OZbd0EZ;2FS00Fu!Pjt?C z`T`5cE3HhqO+W@KDoBPbPhAkgZD!S}h&&NLhc_-sZl6G92~RtMNZ_IY%y)xDY9DHA zsosh*WmEP|_cLQ=ut|b$=}1-Q8uvpbw_pmlHB#x(WC9q7%5DC%l0RY0N6T zH!T22MbHI2b8EOGNnH;0`BprDd5$?%@(vn@8HN-)6pce;3T1|%$=|n^iY5A&;!4{1 z6?MzE-U7XypcS_?pQZ>xWB!=N)5-C3x{HA4DsrrZq<1& zY~Tzl=cp7lKUeShfo^mq@+4Q$a$H3rE@24w%ro0lG7@WT)yB72e$m-NO>T^Bpm zXWsplT)br(Zre=Tgn6Pr{c8k zg){oWwgSB|OuD8%)&hu{W?CRvKoPRfOBe|sL|6!aNf@{Mwu6LnZkM| z2;|U4v%%lTUy5e`Eg%4i zo@DB{tkxw!|4xWW`ZY9KRFC~ROKR-$v1d!d%OLV5IeE!fyA{mM!5)mLhZikUd&A}5K#J|$_>#T{0uqjh1zLi@T=Uv>P4Z~A7!pVPg0t!l z4DWmNEAJT=;n8wPj=3Z&TN%h7g#or2G9dEGk&agGZ)pZzE%e=gFsyOpaO4_~-yO8T z9@MpECUPqd#~hzm5RaJHVogyHx{l`SOP^h)-l%HGf&P$KCa;>jFb*GMLEh5&yFy{_ zfu1l+ADZ!q2Iq5sEc(pd5G zkh$Qx1j&0UvU?3*5!M}JOb($(=B8k!;P1`TO+jb`jrs@*E^Dz!Hz^Pp<>5FrCXm-j zC|;C)K=(l8%>5W_z7xv7uVfJax>V%5&`tIsJQJiPW~fTf?BmEv)L;al#nxYOD&cOB zzqR?=Ow|s7w+N+}U*i?W;kx5=XAWeTfDtu28#^pqF3+l_5{=)_sPcY1t=|wgE3IA*M1IUO@Y71AZ)D2p|;l5PeXz*vE83` zr;0`41vv?+noHRx;(MFPewrUl<3Qb>l=z%PW1|GcnEXvmOIx>^gizDMC5W;eWeX+f z;!ts9okATm^Q6rNY0C#870qr#3kk8^=S?Tnhce%k&~>qz-({uyI_2MjIt8Z;%$L~~VxZ)#5pn=Ey+HHZZ**wtaaxFM;V-l`80jT?|} zj&6<_nBM2F6-z74+ffihW}=~WwL+gLpTK+U>#>u$`hB=FV12qGms^R@;Cyok?e|=N z2)x~#JggnWjIDKDlK<7<+4(nQg5bU43Bpp7x^ndmMfyhMp4mR<6z=ic!Opym|2Z=^ z5-d9zEZNP(KJeGFFi6r&&G~VXQBl@&@18wznykK0boY%**Gv?r0i5``3+)Lx&6rB# zZ8?03$Dlo@Rj1+9?)t6?QFz`SV*d)9v*K%BwMn@^H#t~w;GlFLZ%13q`c%mR!HS1m zAh(}v7;hM8^$vpdmPZ(aq|dcld1GIEgkc<)8H1EO zwHSs^gPJlVsBib+Y|4Po1ML53+Xu!HA!xfIijATb)ey1(p!V3@tS#gsf3%Gw~) zz8YZp(306%qP%0VM-b;zV{g<5$SrX6MFisuHUz$PRmmQldC(5uEXkJhL8&%l1n;c= z4-R>evS-Jab8&*-t9PmoY2h}hwDLp|37A6#cTDCBQ3Sz+@;FBBr;4SHX5G%^_}NlF zkV-05cFlhpbMAQq4)LBpgpKfa<7HYn$Hjw!qK5LjPnc!Ch)3wVYn-8b{|z-?x8-Ct z=$m6qRn@I=E?0eMPM8Fp5GUjSmmV`LT>H0|+V3ITz-`P*OSUkm%wbl-`vGES3JRBp1GG8VK!5F}Kogv>K)olz49^_%Zx3ya?#@a0c-?r!cW*6| zRbu2rF@dIJHbB18x}AgiE-N5yk1Wk^7sfHNZfd)J^B zckD0I)`a2rPZs_&zr}vH#}0aq&>!i%-aa*!(=NuOpJA?+K?3%~=B4$Ddx_S=tFPR& zgW`y2(OS%d>-&G`P591pH{_JxvWTNc+#H`QSlJn1p}qwS8JE46?$L;^swIFjl2x0w zXHJmTQP&=!Gmr%sF#VSEuHd(%K}FYZohcg&^LE*q#bX|z^8-ZQ{k2ptRAwFE!o;jj zX^GF9v1{MV!}B809!Cc+IaKY#B1W=)5@?YX9iSwh%*olx?gf&gIXwVxipT!Z`@vPT zpfe=AuEFc8jEA}1e|t~Aj=|>3q+}nD=FXJ?`1yEtC!8#qGQwk39@TRtVd=kD?-Lu# z0@bRJ>LXWy~wq!gtz+ zu``clbg-dXrZfF=|C55mj1{6jtSjB$M@PwKgU(>Wgnd#hy~&LoB^!)tvDH+2@oCBU zv<`yl`F`~Ut?A~Uw>SiNo}w2OChKKkm4}A~$t~3=zm&!LqBFWLHX8l_v9*tPF5eZg zjR)edfVL*RX4~p(*Q)ed)!JXfCA#idk%*fKOCssJL7nOY>mnHS>RLVoqkKaK0w__8 z1L9F^8XEKH0EDs@-t1B5*_0Wy`s4b~Pue2ehhk*V&7Abu#ctfZ#N4>zm=T%b%ICrw z@ceY>>QCO&UjFU+GW_t&%`#bYDf<#fJ$9wG#8DcsdH(JD5E@My&lZ0xj2|~n99sB- ztls5JXhi8WDqAe^iYu|kiJ$9qnmFJ4fu8yCx|#CAT4#|S<$R3o4kk`5Q;6uJ`#u1^ zW}PGbsD0`ep;0*b*j8!A$E}VQZ6L9c?c?S}OvZ*Y)=Aq?{%@+(Zyw2ZX-tLDAjdAI zOQ28cKk8ZSJU7W>jCGB7(ja){OaoI4vZexT=gQ_QbN&qAhV_j|&SSlFDgZv1WR-4E zk+=G;9dM;_kIQszSFnc3gpdCUsL)R3awUu35Z)=408_ibSIk}z3K-~*f3)C5^o2mwU`Hs`{g^90ia$ zm1ElQtIZ1v=spo(8!zAQf(U!1?c2V&HTxAJ!$?QkF3rBv&Sz!@2AMXlP#1jqQDHGa zpT28q?F|2uz-voo(M4X#c_`6=GN{LcUM~82X?lC;38xvmzvFXvkYYro9Jx&=joV1s zY5RSTKjrT)C~$w=ABAp(9q*xVj%s1Op4st>i&bL$ zJNX9)nRcXP=KKQUo}XNy`7@9|VUj(WeX_&l2qP+D@%tXqV?dTK$X3jC-!jJl*+;PN zJIQlp*gSx1I2@ZEAzN*v5mDL$15jl^()VT={*w$ps-oM*c7< zx)O7Bm?-07WAw4vn^4%Zw9st2+@rVeGl+av%k)Q!YhvhfN!Pyk{-Y4ltS(`m>Fq(v zKb2$+YD8$i9O?Bf$n*_qq!hf&1T7)IG$}?HEOq5!S@3?yJ|p*M*gi)DZtnkrzAi+c zh9!jx=ZVJGLS2&h|6cdn3>Gd_5)9bkHD5QIL-_ce+$RT15Z3Ox0Ah;V=*}px;;_q|M0hw&-iQUZmcZ-mlel zncu3TM&LkSS$R|8BjstI#si6qyiWpp(XMcLG4J2DR7lswpd>4Bdi@?S=m+6VH+4cP(%jzNJ{1@Xn>lI!hR%OcUtg`Z17bZb{MJSX zVE@2CzT5x9udC-AIBtaEdU=hWyW(mAuFJ8ni_vrYHg?m(jj{cKrrvpE;^|KFtV%xDmKMdkAOG=9&R7JojZ;Jg zBfElltz6hM^5)L;j^LK@&*}Uz=+dotCp>Mou+5K_T0uYuL1|KHm_>m$xosf3xASvr zTA1z&%z6hGD>`M-&=ZcY{8!*IfV)>OQ|KxD;IixH)PSqXzo7WuKcjhQKC%CAZy*NW z0|W}l+mod?6pJsi*?oZs^tWc`OUFX=K-`n{DslcoDTjYM#=BIf9K~0kR*K}4Yl0C6 zYXqL;Z|uv49Ra86L|%AuSwmKHdsC7pr4)Qq50+Q@OA+Cb`2XHwSzgO1!1K}_XEU4+ znxwgi@fDf;w zS7z+0s=u+hp+!Rd{#7W7~t zy1{#_(m2OfVMjUM!%N0>nWbPn!0BmX9yWEe+N}xhoNkyIR!H4mxu}v9;FHx%DBTCRRJ0xrg48(FL{S@Mh58qaSapWI_;nk!B7%whG*At{h=DzwnyG>`^D@0m`3< z#gpi|PB@sh%@-YHucOv46zbP)hxzJ5tFMZ}d4N8<%v{nYUS1lNmYnhA-l(}C2fOX1 z)1~WdXGhyn6B7+0RAa$};#!lTA1PZr4Z!b;LycrF=c}%=+C~fucG*K0>tb|F=0ST zmnFA_;UDo@EnNTP+@!}y(&Z;X|G^IH4}*b?*Spi2I56QDu`5zsC>JfAm7b1>dqq<8 z=_n!$oXqqe|HHehM|2>1x{LJj)vy=LXjd2y^xyr1FepT*$hn3fm)af8YN@htQa1>g zm&Z8;Gb{XWc@$_Gx~U-lFwTd!msT?2T(Zx_7QXToidGU@$5CXn7-e6Y`4R8i+Q+B_ z?q=O5PSc_2jQ;7PV<6|mqS^4m{dO?FwWw4ciya_A#Vss8?qF#Q(~J~wolYS8&f)v$ z%saQ;412?wYe?9ebX(3OQU+*bKps85Sp-r9Ds6G6&CCa4j$m`{1E*UZHY`vb^VgraAn&2*)5k0V ztogf;xCV1)!eSW*_%mM^VSGXt6*H2nleuQW_jj5ZLN83>y3$cr{@Ul_wYA_MeBvo9@6jeH|L8C+>gH&;K{yKktFswj?KAsdV({Y#H0Wot}SNmN`Yr*y^psEp}uX++us^ti1 zZ8)`lqf~w$;ih(I9>-{L>6rK`>1#C)n3}ywS2(Sf%NU;|rRF6zM0XY*?Ip;NX?kiK zs#bx^T51)H8>dArHX7651`)6v-~b{qy>9hyD(^R5+6F%57(cxp+mwi40u4}$&K^gv zy}hd6VxA_V43jVG=gKx^WZ$AOPB^atCRN`<$g-YC=vy-hU6=fW)@w~>QQ|1>A;p=; z)$m=89uv^J}I=UV713o-U25_Z`KP;Q1ITh z=hb{_ksWd!mV3-CtD~tPi`0~gGWf#awopL!33_MVo>ETpR1nh%O{z0|M7Fo67b5kd zUjF!+Hr7;?U*kpy_EQ$n9obRn0SI8yHznr?|KLq{rx8bQiHl2UhcT2t$pR$d$;BN& zNDReKiTs^#R7&9cu8#pkc^k-0vQ(G2EO-3 zw90(a>21y=+qStB3LnL8`a0Zr=LMr@p&zE!3)M17_ow*%xG8}Lh_7EMFZU5d_}j?s z_)wsP7Rg@$^-Yhl>&Ak%#j&=wNVef9DElW|W>JBEyfX+Y`;{k|UFMpSaPhxrrdp04%F7nW$S66Q7MbK z!7R=$EHKuYBgh8I9hx0DzBq6%iKZ|%bQ{?U>Zl{cUHcHvK~+^k&bRcW3ZHhOzn3>B z&xE4#ZZrC`aRX&-U z>~XpQ$XEQaszfKWhq{E?alkg8{==m+hTdk$xN?OuY4gNPkeb!0u3N&%O5pC0mZWMW z4M@Gzhl;&K8l^fnc2UmmsASe-z35h+)Sl3(>NH9T5Wpquf)w4CvdTx@G7EL(v)B8P#a*L!+N zj8(x|p@up9WihWk!5h?4s#KLBCdV5}CzV_-eX?xRXP?OF8XqNZO`h%76^((i|^Nj)<>tpurD(HCq?`@GvF%oQY>eYjQ~CqE+VnrC`(->rNIy3eey zg8IP`>tEOj35kKmrDFv^285zJCjcb=!xdlEeKNpR0cUe>Y?$h5Ac%eKVe_26*U=@l zp_}hC^6P~64#3vax6TICR+4Sxz<=eW=PZ7gbVdn*Trh83`ww7Tc-=-S`+&)rsoxLR z1Fg*Z24l5sgZl*3v?|hU9u};J@kUe+w>5w6ytelKr=InnO>=DhfBsFUCF}}}=5@E& zlv%AqO&SFmat|$!-oxEKy}ef|+0^2JNG~NQAPM0JPL+(NTv-lHezAB z2&1r1V`-q;G?x7lL!PT#qNbCMT}v+pf)${`EQ)0B)2*q$1W3^d^_`APLQ@1Q;&%K^ zY)+Bp|N7WpMW9?J()a+R+PaTAb0O8GHxry!E|25T^U@|<>EjViAN`j->W*RF+KVpj}@ zs2}H`E7CI;im?wJ<5K6SrFNF#!v~y!&3ArNEz3HV6 z7Z&am`X)ce0M&K!o0oGYSF`*dMTyqDhX`Rd%4=+Lh$2^w+QQvT+xFtpTUU^8O3VX5 zsO_k$xzKvIS2c0BKr!{3Gij}G`<>D;U*?vl6GeBFm?+Ia#sd1b%p z!eMf?65oI395FLfFta>xFXjbobHEhR&##3YfpKPC!rdc86C*QMNwTC=fx&M2@iM7* zf&d`KN`KH*>5zp>x|v-U3rL!lD&7-)&@1E#^+|oNN{H;e72z5OjUR(G9>y zHB|* zl*tvP#Ij@Q-O=E-rN$EDTNiIHHx;J$-^Yi=`Ue|;Jge)QeTJLOnia3enjX&Y+`-f5 z9Ek@vpKiY=lbUkS9#`7JM!U7s!9w}Bw(9q3`+e)qCJ$H1P47~^+1JQ;XXhP&`bJ*m zTRbcQw>JaLQC7MDgpg zJt_13>U5Yn|16ci`56Sc5;b^W{9GzYsIdvEVBT`FWBSPLIfnnZxy|^!`7-|_|I_0Q zO5gD+4OqUn#p(s6k^m%fO%fnlq^GSLe(f_8IOttbekS5oui&kpTAjF`Nj?7 z8YfN00$L2rldB|o2}+FiN0F{X3_Qhx!NZzZ1-bgPGex`Tscai=#Qr%tCOX>NreUdH ziue=cDS*d*F>_dYs@x@M`J9>G#Y<->NA)v5moC^%*7)-mf^2FSTU>!1Xc+YkHkq;ye z`($bjm3Mg$X@`j&*mIuHeY>5~a@vE-q}%eL=fzxGH*k*b1epEw!qjhW->{xtfqMq4fr#rh^_#pvs#?p0d>*O;{;rr3o zJ4=6DeZRCg)zt=4*`ef5%E!zeedMEGDR4(j#X$LO-(Vi;P6s&;nW7I!15Tda{DLpZ zFV$u3j*fip=Q7120@R}j6EpA;)n({)18U2M;o@b|JVHfaOTyTeg>8&aKuTt(+g zwA7?Xc-TzZtu4qy(xnGW_~(4O84Sgynsp#bv02I?`K8Var;#IP3$=m5RR84)OZPXy z-L3L@^j#M?(*1d}3cv-Za8jKCBkV3n43U!Am)aWqd>l#f#qIKID-3F~M=vybyRay> zl5k+OlL7c1szXZDHl zJs8zY^G=}~LD4dbt-NerGUy~j-!zq9Uav6$&Fwq96lWCQW{(wrd_xG^*iN$~v{J~( z5TE!+g&f}t>oLtuXfFLiHJANcJOt}&06->WhxUaZgI=kq=6)A>#z3)=#;)dv+V^nn zCNU<_b-M4|GG>SvKT`N3AG~!YkuK)}%vjv&qAMBZ z=hMAFLAU7X(0eBJv(Z^Su~#m?fk~aE5ECmgQ^#RfGVi4vBQ7fDsmZJNrP}Pr`}Q@a z$poGq6D)xXDF5GBd}M1Q3llIM|jJ!c#G=* z0(6?qVxperl7-`aQsA;$)1TRjXO}*^R`9+U;)Bu7d=`LubO?D6FYGJ) zF!3;VO65YO-&t972Yy9}Xl+%T+E}WyRS1S#r4m&B|A2NaMFc7FyU;D=R3y9-uJRTl zKS?}sGwRs&pRvBlEq1)?NeL1&1u3xfG~a@X=C!xS_fBv7-{{iXYRhM~*i4_1Z9$e0 z7Gxm640YA=DvnT%wvE^_`#x2fRKO^W=3%}Khnxv$#p4CHLJ^VRfg0hN<)fdo-2^Jv)rw`pqnDYHzR`G{mV=K; z<(`!;dYYrG0REiuB^fhoVpeXqjC|mI`PgkQoZ90ye`L1Y?jZ6Rt&Md)fc}xd54BC7 zLKQ*IJLI#I5e;CgM#fxk8kkY9>Q2f%69O!PHDniACmV|<=@+j|;AKAa*WqeyLqRi( z@kCyjtVi5PFB+2HL!Re-A_lNo$n@={H9M1DqUEjSHCA%4CN>)_J8UsdaS3zXP!e9( z)(SmE{3GXeg8s^DuI^girWNh*ayqQbU%p{`jBXX~xq74Ubp37Awg{Eek(GAH;+=d; zcoZ!U%J4!I23|E?iD2ccsdM_F0qDr7URS~dD$HbdD$2{{c=8~ zX+7A6b_iE9)7Q=vr3fci7A)72or|>n5MyQ+K!Z)z&TW>c_!%DI5&*DQrILiVt5rLR z{d=Q315`)%Hi&$IoTcBq*^Kp2a#`gx)~g8VroO) zhKm&0<};1dq<7E;2<0C7-Bfzo^6x)OmHI+_I6 z-woH3aN*-pGD18rSWBQto<}6>+T2uZIhP%hd?{E$2Avo?#NT*_awWN5t8&w=)W7ED zLCxIk4>leOo6iW^UjP=lpL=eM%?)H=N|M~ptN%{oLF~7}<`++6CfZZmaxg6eHE1ld zK!I;jdIjaSR=AGz&p7bFSYc_evPN=K4b0T;m(t8v52PXMXRn zZ_hRZ|ImP`qw5nr+lzT@iR^P3*=E( z>9f(DfE+LG(*V>j(Ms&rk7>uCQR>P}%C_Zawpqv*KSgzUsNF^PG+6%a zm#n7r8UA1L&=DhVbK_Ji`57w#xBL>)362)_=g2wPE4kLdkVdN#*p<n)I_HFLElkKN!Kmk2vJ2nl7(P3N33^0E z4+Am!^+kGWZVm5u3mMpI#MOox53ly#8e~9x^-4$p>SQUI@%zt$C#Pm_-Cn=R*ykHb z21LNTr%52>wQ;k|xqLoc+~C(}_C*U2`z47Fl=kX#O{HTjX$rXc1^q|{P6i-cm->Pu z@9KxAY|Mo#N}~Epvudy40@H>3iNQ>3>eADcU)iwc6!_xu8Naza3H5o}WEm(EI|^jz zouV%9KO8!xGz(}aL{Ff1=I?M+-ZR?_6>MG-{XpC0J73zYeu*u3@tWH)(OJk;KRg^q z(Ac3+ze=fobL^hX_J?6IQ3vdXs|KBR+ukBnr3Lyx8G#{%pe zk2~bdNvet6G>x9H_Hsn%uhZ}PX&Z)v9EhFYIJiC}6sI4flWq0a-EgkjsMed|O#2O2X>MdC0B7jq{*e^jPS^P9{5 zQ_oA9CFI{m@2T6e`~-WMQ~jd7g)JwQ)$3FfxY1i`l4&mKz_SSc5~3NV`T$jxEv_ju z(QC&&HfmXcj#Le^t_TS%H3 z!^^;m+H$|;O7*>D<<(qLcPc+W>FC1fYwap|ah8@>F1{St*vtw)r2X%MKYv7Z^izF8 z6~)zU0oJ>%;0$pC??g6wEIw~@N`&H_b)gB8tGC?_9pJu>={;!Sr|)YA!nrKKj=5uo$1ytF{vfju zWVPb+uIc4$=#x|7Z*t_1a#``61n-i;Ia7(A&0BNfw=xR@WVf6G-Dy4ZU!sDfaa0K> z4GZDas}0C47F|EN>1jS5&imdb0p4?69*5%3Y`onsS9g7tv*o~7RR*SVP-@Z2gbhqcp`+!D z>)5nkHMHuhnM&w(XV|!B>^jCLw1R;vpo2`nQ7#A^veye@WL#V}LIR_m8RkuJml+>{_e83xKeNqdxgjF8rGJF z#Jp0h7l2`I>w{s6XB`TB5(E>P^s-*a>?~|*uO3}Ni8N4~ha^%^^6+Gk=8{O+A|1)T zt-Vx%=6eIzP+l~R)};MCKwk}5d*_0&dbAac^<h>3p z(geth)B-Sk$k+-+$3%2=J$};W3~y!#-aRfaQH$*LmmULdS0mt?qxr5}QXizjkoLT3 z5p8OX3Gk@}9$S1rQ_3tf+tk0!(#t-z4`CjFwoZ^U9$BiK`N7|0uRqNx5V003lLFa5 zL;r3E&OQ10nyPGRZK`{xoT37ropKsg58?u0RBn4~4KGJ$e-9|NK*|3;!6+T~Mg$Wk zF*~B?9MC~4#!p42%G^`pb8osU)r4$1yNxL1!bpu_nzOIC9giA0XW*Q(JnI;kC@sQf zUhvan5Ao%IVVaYFMLc`4_*&PrCAWs!&}ftTmJq)fX-L`c%KLtM%L~{M+;eqjXlyHd zKx@25IooJxO3M7mX`lK98=5Rcu23H`=@untBe`cWDoJ-Q1^JM(g3HDF;V&>su`IPt zf~2=zP->eZ!ISForTNC3)hU4M0{6p*3oBx@&0Ef^XA3faB4{67Gslk&UeR7=m1lZEd)7$dJ4tk@D(pS2c z>vH5=%P_@3G^GE|k1A$O7S?Nv3vS=DJZQ*bWVGlHZ^#h$gc17W0izR@PBIdATzh61 zE3`{^ZZRO53v15C+y`9TRf1Z~rV)u_haG$v@}Ie`K>>&xOuLuyT`cX zm7n?X4>3oG^EU^S76&)ZF121xw5&PQG#JKJc(h-Cd_g;BY&{HL?=GMbX;8@Ls}(H+ zfXn-VU^neYWYbiXPNrcV6GP5Rb;zt&>|9Cn3*0k7I-Puv7PsM-wUM%E8z8At{E}^l z@}si63{T2kY>zk+e7&1??n8%+%gK|2;X4dL-j`MIOCvT%d^lB49#5Cj?j21}Q#xs8 zGTt5otc?0L#1Qu5%dcSx>$DU*^YNkBN=6X+%c7>92?>^ytO>7#dnPOOh&H=+`CVSI zQNzlGyKUM1ALo>F?mdxLb0qeBV|bcMH33uK#JDzcOlnSt z@>1|pS><}J!0=l~>A!E&$#8)9{9Zs_v7k1bIz z0?uX!aD1EQr?yJ_JcbMCoY)&jZ}XX`D@z+#YfV2dog|>;bwW5N_9bIK$)_$Jxm`Ir zOIdy~A_rf`^aF=zmG8m@I->hhkTL|vyWx5+(va)Gz)JR5Z&Hi2mTwm}l0_D>F*qT( zxf23@uI)#i_mq^h^n3~OOPh6fd>D58#W&;n8$0sJ>+iJQ<9x>>;Um8zi zBHEZ!&)Oy-<~==Ge&+iYYSQ;J&(d7TLY7$hsspjUK|a)|4|CL~YhPB++AS{kRb1P1 z@LWtp-enOL66VS_5pkWTS48|=?DN>Jn76_a?`Hn@uKHuMZ*P;sd5}F5%uciOp6f4u z`=!~Z*=55H@y2rBD9%Rsov}FZ>_qiC1iJmZJVWQojl_+XxyjNvc=;qFu&( zIe>o6S)vv>60qla$4@qBk8y~#+2Qp6t)l8TV_Qc-qO?l0B$Dh-{9#N)vorCdR}7U9 zpN{Y=m-eLn&+f)-0&29VK{e|@NsA?{CVB>+G%up4HYt*43&>DTRV?c(x+ZE0*jQ3% zcao~*s^NSyo!GhWejrtZ@_~ob4T|cuiUxTDzin+Gv^$$2LcqO%5qlZ$j=QyFYrzz@!DlB^3Qhc|&T1$9>a`epIh7CfL`pM{-u?4Dc!Voo@61JgFcqY4}9%=|bex%5l5@zAC#h%yGdp*6{& z8&X5d2lEqr#vM?uWz77o0n6P-h8{$TY^@Iu(QeUW;x&}P|7m{tGGj-juftVdF>UmG z#=*>(5Df1}(C|>E9w6IugHKBDx}MVu(+b{-{T80gS>(ncM_iLC#S&ig!Z=WQu^>=y zFsJrLE!lZpp0HU{kc9nn&c0f1dU;z~&nj3|uQGawL8mz>@$G6?A6}oY_R`z8UepwC z={KeF2JNeHWW0+b2&U2%iaAbdF2FvQ>)4tS^Rg0#+vX&iYvQ>VWiCY$w_b_Wr3_dR zK4eKW*_mJJ(XEAIed7gT9J9YcavIbt1QUhCdXl_^5Gc%1M946Q*lldYg5c{l5;fcq z>~aL(`xr#eY}yana8`uDz#jls9$8!};5LKl&g@NeI|Iu-_0D(N&rXRP$d8?xEc-_K+`P^2i%(9BKV+Xmb4ln+`_a==uzf&K z_f#_LjMOkbz~H}wr13t`qc$%6Vy=xD~T8tSlH@&DrOlYe}M0faB(^?VD|e(l+!3fk3FoY9UDvMw9F zPAA7@xqEQ4%gS%C-WIHtmP~~48q^LHOCq_JFDCawrqLJc4D5Ch#S$@QAS#pND?}U} z0we0Ed>K`(-4x@ePp~|eq3pFt+a=lo{RNZMsE3~*5MrEh2hkwl=&i3z6{9!QO1h7Bwtt?a2x=IRUJ?1|=fi^wIvtrca|o1L zJI(jQ;`}0vi~{l`B0IRfuvFjCvTrf4U=QWTUx%GgLAp70s%%l~8s7?><}x4tU)yAN zi|+dI-Ooh~GY}buApgo~z)-l3JSg@N)`Kc$OB z9{LTJnS+{j?C9HJX1*|=dk5kVhLu|II6yjh<8Y|Sr(+ErrzXv<1!a=Y%f(Ap~Zr(x8t2(9|Xn>_qIw8 zWwcDE+%|@T?GH9xNwmB=?_|EEgPts!KQubSO3IV#P7}^%#*~8O`WqXd-Zke14|Jpy zmu=kbs2m9LsQB@=wy*8ywrZE*sK&ELfbEe+vMzIR=jdoH}4^a65lj(G$l`2H&umCN!NGJuQk<9yvS^s zMsJk|?+6=S?D|k6Lj+veG}qrBSer@pm(nJs@qki;euD7wF{=083$zBn%jY!*M`Z~W zB;NnE{^GZsS`!p^glP1W4SPIw9`dz`=Wo*(dnallX}++v!OR`JyD`&hjX`;_05gdS zEkwV2V8dqKnoM5o4EUx%YmP#F@SfvNu5?fDc4BF8AsIDS>ABKdd|!5rY^fOK?C7-H ziowqV0|T40hO&e!hhMHz_o*Di9@2f;p1YWOtcXG|Izg3aY^U< z+y699d74z_+?_HvoH>2VGi6$$DYAGvPC88~XVP!xUPlv`QWIqdr!1YyWy&!_5lTz5 zTuL+-Kqbp15!}MuKtchNO+is{xj*Okd))u|9}nRJ@AvC0pj4CazO1(2ee zbTg}1k5G{}Y3VVpES=Z;g)vUbntNOLVc|WeqkVDP9-S$h-=LoE$!}J0W9C5tA!z3% z`PsC^k#G&ygaZs+&N`10CC!Vd}kGlHNW6m4VE`?E=I+(r_T0J@8Cu z!)};V^q{8aBH#m|wV+1q!#LXt{hooPvGJ_y+zF$-JqQsd6wkpM_wG`(jqFs=!cmS? zMV|al=7&~&*Xxd#Ea;vCAHha|UD($z{3bdH$65}_j7^I?@Y@mlk4(bxK1XH;LQ|D% z+#P+@fPanz+0>T0*G3AhQ-ioH+`F$+V2_eC{T*BMIo3@(%t;nXta<9kTLZ5-HT+(1*;ys3VSXEh#Vb7rNJ~0@Dh2h!3psT9v1CtF4a{ zQ1a9*`-=-;*Nh$;=K7^>sPCA_T?p-LjW$hHoSmaCe$&5iQ=mW3kDi3Q%-<+{g`_ZJ z6rLIjT?z{*WbeZ<5i{c5aq8P;jQ2x5WYtVtqe48b|2_G$Z8SR_q&joO`Vn_^W>Bl6 z@5}_I?--?BjOG`t?jy4)LpKuDD8<_>Fmi(#9-k(%q&2Z&F}tBK>Xk3!k$QqyHs~YZ zwSJOaUE%#Yq{63Hi*DNKg%q9WL{P`a(~jzO_eG1q8f~eHU1HC~4aYHARnYc~I^PBG zwIkM>@1D#j7C=*D=AFoI8RW%O?TVe2BJxm-d#?ur<4u$RvIx8S;R?vUD3?DzHxVH> z!uFW-YffEb?xuDQ>$+mlA9eVny$!(WSxgIC=<`+ZyKB@)8r~`2S@3o$EN)>?vm~vi zzxRmP2&#K+V8|vThprzcDTAh+(8Dmv`aB1AEtM0`ksLsHv{hlAWKh;}Il`Igc?{6w zv3kfmgUvv@5n9YS!AT>4Rn!aHnL)X-!C{K7FtAUO1o|X%$!jmhO9c^K-+=i$ak{u}uw$ z%;uMg363_3-vEqx)iNQ)NzkS#^C9H5YUxz~8|9h&qt*`Y1x$~Yy9&T%9+v>&z|1sQ z*3~-?S&>4oqjQ8RjGJs){kyqO$-K~Z7U(t6g|)gxtd)|&iPwiP$oCuZA)4xeaU7|$ z3URA^J`p)J(#miTq8?9OQNL(fc`7NZZC!c2r)(`1QQ?UWSod&TF5Lr^0H|7Jqyk|~ ze&i)lhHyR)v;T##(a@$?<+Jv>V$y4`IPDV-gR?UID&~JdM#+_FE{2&pkt&_1Z4sZ{ z0@z^8aBc5Z##Bcb2}Hmt$^^quSe{Qbez0=sGp+N4i9Dk3^x=-JS$D7;1HNc(`kn>D z24H3gve$7ySrlavLiF+HTR&xiHmV<#c@ua;_ls>@F6x!-)v-?wHABL!DM|EG+C(nN zy?a=HZpy!O`~c?2Mq;44&Iwp`upeyS!Z1Wv4rhJa9ePtsOq+zM$1ksF+;Qj$f|v16 z$s@E;V3k})k_R)2g_c^r&m=7AOWw5lpT#A`!aPubP<@#?-?2RfD~=q!2eVy*9)#E? zl5nemIpU1rzypkw7Ex@nGXdu8CH#8&DHk?UCT>@*Qg#QbbJ;e@b7jU!;~!JIW1^2h zFU=DC(8st**e0OE#&t^ppS}JDUx{pM|1^e=^ZF9Vl4U90hhk|WuYNABB1cQsZ8GUm z34-gp*!-+trEaWxQX|TPif*KSw(8H2N~V2pNe8cBnb5ID^xL5fKRMDjW@PFB42p>Z z@>w4~?i&btugJYV_JguR_!_VpPYV*5xJlUDPN37HAGvsB8ehvTN z)S<~DzE99tonHT&&nHcrY(oFkL(8y_nKtG+dC;S&TD9+_c()`WiYYT1|4*Chvg?6X zS0N5=Jas{AlZm>2=5#UCnks2F6@OXw@IsrV9E0qO{NnkkFzz!q3+XMGFy>}^U)hyp ze>KM`g@U#he*}GuA}ZEvc&+B{=C2z1{I$-n&bB1)U|@t$ya6F|v-=8n+rJ=_x=qpOR5E>}9a958;Z)z5HW zu0D^4=+i1QbohwcJ;~RI=r>wB>IbcToYt!QoS(QUrTySwA-h4q0jbE?Ze`z$1&=p) zK#%zs+BM7z-PtX!xP^^(C1>9>iRX~E*hU5|G1@3Nfu`HX#M}9@Wm(~} zcBoq?_o(o=-W$*i2 z%n!lroQp`;vstx>cSp5muy_0w^?E#x=p~qF<0G}n{<0t|TWs86N2{8n=vUSt_TX

zsuG?Keol1`^HemFkn6K_%n!{>JjtxwVVg{d<2CC+72UMK;5cgRuTuHOT+U;gN@z76hH620)ew# zP}7J^R~nz5g{Tv~UU*g4@9lNO9+P;LS9S)~L>()LjtKzW9^h~n($qV;v=iJWLs`+dtKb*QX4pYm z-E2_T{Q`mg#`_`reU9jaW9Jp>^*IN(3Z_N~6=&^d+>KL1-Ebj>l@WIQoxnBIb~sZ%^ivaP)YF8 zuyM-R9r$I*-gkT4&C9wq@3#595({$B=@j4@9mKb+7*wQ)sYR;XS=4IGH%LDLHg>q^ zbH-`^G6TK1EWR2~^zrgO;+>dk;d-sd+>+EsD zJPv)XTLZ;X(IudsbJw^Ysdehoma^^^(~k!)x>FC+cvvtwm{GcHz@ZWzN8L1m(I{*MV#FffAlOQ!J zp6OPL(;{Z7`wo_lZ&>-t^ndssE~zf33Fi3I)QwnKf_?i@qKqfP)T4(>_-b@F>X5$F zLecFXN2)@{4gA?f7`z|QWNvw&B-qHtJZ7zYao8G+W~dNNv6wfb87b903-8S-k%F(- zFN2Ua>OEp%XBa-F>~$#>X^I6!7OO-5M~_0# zf*asCKd-303JXm!XC**Ct3~ivx#+ip>~%Jb5mASOrYaX#NSCO`2CdzGJ6wCh&>A9B zY3vO%!KpqFVnca?MaR+5>V6V=Z4I?wjbAR_GCcVTUD=QWInh~GZ}Rx?QsUUZZRc}GrIDP)PWd+pn(1By6|+)1A~XcYyJQ&4m7HRO;b{nHG#>Nc|-ze-an z-ZSD`d(oA)Dbd2kixM08R7FLg{lzhSr^@^+7btrv?Sjma`=tRcuG;@G&%e8CtM2oY z3A-BCnEBe2V=M&B*)}RZqHHmsU@R;q&v^Bi@jxDMEtU2@KA8`uzTkB(%1o?}gtEWp zlm6pK3~|3C2xUIdPbv90W-h1wBcQ1ih!mX5P>#H>MDGhp=T`197;YtK{n)GMg-DCSkiV{KbycYZhCZB5#U zePp(fXo)CE$Ud9lcr8vGZ{~%$KQ6 z-FtinRF&mx0ePPFKy>EOZ{KBZEcPtRZH1RfCoT_pnD3`24Wp0-KtSZY#C?;J5~D5? z|1D_>gT>-KKLLf+`YEkD4_aaBvt!sNE@)C$J{7hjXlrEWsO(hH2(IYL)e5w^;_qg@ zap}Agf6tF1HyoG+OaeS}U(A@S>;-FPTuMWJgzTHcJ~{0`GPgG9zUbRH6fH<7{dQ1H@qP9BM(6940z(nt;U1o4Z@HNcY5T& z+K5eWV-JOd#mEFdr!W{36QZt)jwA0X0ajD%+=nUQ*OqY1*uGS1Yd^1tQ3j-E7Ns61 z=Q_6|i>62F=Fjz@xZywCqBP9^l0Ry!>sG_mwz7>q*`aLsPf?Un52*?9tPS2Hvadt zUJ<7vvRW&(FZEq^7ztf5P1PBL@QNH+k#jT;H&#TbxHHxUm$CWm$k@=r8v0Q9k zmm|Ey*4JD`*u|wS{@Rz+eqB!mmlbI0G}z{zHo03VPBM{7Sca%9$V!@P8RKXu*O-8n z2X(;og&>AW7fM0m4UxbKF;@s-?moUSuHD$O%1aq_z`J0?f7O%}Xh&lHVvzkyMt3YX z``zvs91Q>pvQv&(sYN0<}g9!6TM(@!97mOF>W7{VQA;y2rpzrtVTAumQ0_M12!*Zna4n34n{&yV_X=)X@ljyF?8fd zIHGB-4_!-GciOUxbW6)@r<;Zx%lS;^_b?w4C$jb?>FwM4X$AT+5k((Dke=&M5bqFR zwJ{H1$`oH(Nd`w))J%rZaq52AJ@gEMSI8Wj_E_u&>Z@a-nLEhC53UKHvSB_ErraFU zMy#Vy{@pk1ME5R5W^w68Q8;6!b)tvwh*X?l}AsK95yA zVH>wpWg}=+((fg|C^lZgh)>(@=nIIQ>ghc7*NS-(O}w~h^U6-Odl3(F!?X|+BD<_OWW z7)G}6{wHa8dnK_zArMeXjCHUnp%WvX*OnrNO|e{yz~YOT*>E$z<#GBM$;VK9c$fV( zcly0VAmutgP=y0eh-`9XHGSV#W$?wj{qm366BA{4@-AXy$be8G%f)v>AsKI-1n4x$ znt!CvB^Hdr%g@|9z=oo&NQ)xQNa-Rt{*)0f6d6s7k5=me##u;8|MIE{8xPsV;Pr^U}CX;aKQ;7qv$2GC<)nNu!2w8 zmwv<`Pc<9kB8~Jr-wOFIfV}joiiHa_A#ep_UKd}GlJb2cr_Ae~aA{1_%umQ?s^sG!;Z%kq$pJzR|K1>yoROVfeTcZ8f z-WiIo@DNPFF-PjfS;cqF9U%K0j9SSa`GrjK4WrOULQ3l^cXBGaxA_vxnE%%J6$m5g6Kj4q7)lK8X?l7(0Rv^fK4o(}JE)&{ujMB3M82wZjnv>CEB7dh{Q$XJL zSSfCf3r#uo=v24>7<8s1}-w&^qYg%#G62 zr1p8(L4A6F*CWUV?FVxJ&LR4APf(<|i5@0_ykj)d@g0hFo`a-x8=V9k90< zxmp9!c`#_`Tis2|Y=_xSRQr4GH*4#%34(KOWd^^ly~=?R;iY{H0*K>48Y}-WoM{)c z+E#u&Z&%r(ruKS)m2(lqrovzQ0e8~Y?NMzR(I92O%uRHU(KHn>;R!fXM@k z=K##VVZ@50CAu9BXleg6r_GBGTNp=#Nn{ggnv%x6`+uE+{x@5yI00C0lPv_xc9!d9 zC%ufH#YhGeh&k{Et4d1oNz)Yp89oVshEa)HMm)(lJ=reuasmVOOBuIudD)8H`K}Q7 zRB*-k{C=R9J1KIVokTFVv{4)3%P@dCoX3@R>cY3LF=2Zuas`*NS-1TOL4S`-;$^MnZrN8fA8zL_oc{TL7lu~y8*1S016Q!}`~tZ! z0xA1bI<3Qh>VYRz04HHrsGalJE$$D{)kIl3|(nYYiy1jVJd4p!_y zSGq)im$F7O;|neq?~C;6&_&U28Aw^e~7P|LL@))~ECvC-jRlU*z&8SQuua+D!TFM4^dcnw!w$?dA((OFwSn$gvN4t(f?(cgy7$~wPDtc+ zR+lBvd%KB#{+8QMPnCKnI9(ksKO4Cj%HyKHxJu4U_%jto1H$hlgFnAqA?u-JD{ebF zLhEylSOYn3!g!&CupD&Z<)=Lw+H`82$U{u`DHzH&ZsGwrE6R%`J&$XR?~Cb{?fkJz z`2V~B7D+R;z#VW4iQR8|1U9s)il+vdYF3EFiz%iRiTdv>1g@n+(fdY1Nps6;&0$aO z9Ggf;KF0oZO*mpggW4~x5CRKw?$!&h(1ng*MPnUCcamYj+{?I%y-{^i1mw81>3cmd z3o86Qr*k|+Lsd)vnrtF)P~NLBu7~KEWE#~%jt)iTza$vL^Zv3lRu{u`eKk*(-ZUcP z5*1gnD{iWn%6-qiFPsQ*2f7R%Rc%ZoSeZSAXEIKHifm#;R&zo5H6D7!oEaaUXqAul zl|MaHY-_ph@TQ+vT5^v#<|-Yq)}}>;&v=pIh)H%r3%@)h!rE&eIPWMTDlrvf2u_bh z>7Oz@y0r72xg)FTQmwDAC6gQbtF-U3 zABZu2z| z%_lc90W&6aWLi=&lrKJ5x~KgmLDPR={n9i#xgbMXJ$s&4JtO#PGGRk?*plitBGv^1-#ylWDDqGLhZz{y;aET$rZjthh2dmrXT^gXGfF60To#vngE zj@4=)EF-c)`=j8&GKz3k)3`ER1u*W&jVc;PkXC?QDz9jOu};KkCPVR9QtuCDk#S3d zUj5#(*_q3J+KKiAfsa!Mn>mXKT==BrYZh&NK8u?4uJFu%oc;#{EZ{l!`6r1tbCf8H z*z5WEzj=admX*(eL@sZn*>N*SZExu2MM$gV!`jqzIc_thNzkY7y_(Ajmdy`U?1e-4#@>uh>C#Dg}_m1qN|>%4l39$ zU?s1qsu89T6pw8Ha6Sg1X=JERdY;O@Px(pN6Zq5KF!{(p+oNbw)n&qL*|KH$y;;Foe z&2N>==lN@MG{;hhs&H6gZ1=V_>-k+~n8C}>H1LtOdfsHYdPI9_bS+6J?Mv7+)BGS$ zYSU(Ieq(@3WB)z$?<$K|eP-5~L}Acj&QakW3r8S!URC}?a~wW2O*#A)xBsFnmKxNj z)L-9^#xYtA_(2{{9jVN-!=UzGlyg3*+x3TC4tTruVw*H}o3roDJ+HidGC&)gBY7cM zO+k)j+CGdTJuV5iwijHZugTI|=}}uEjX^~-Tq?{4LIw@ycuXUGmr(`ELB-fwRJ?eJEXm)A|{7@{&2L z+h#9V3>IWPyqgb?(|32W%P)g4FI>r&_>0e~ZrUxVQkA`!Ws@!4d7Ytt*1XHYXZcKw zBUrMBoQ5ri8etTfx^L#-@l!Jt<9T-cA4I-S$ILE04bQTNDrC1_%I}bep+1$!VHmaUv z<0R`0J$1-#BDvn4=6 zAdh8ce@!Bp?eXn?+S)h-_e=xA zL{mPChD+Jn{6>7YC?i)uX8AD9h4iVq70r5rHMG#lzFr4YTWR^q7LXTd8U;k8^&hJK zY+n|gR1oGYn7EB0d19ml@Z7E^)&u^(jjy%dgo@qN=53c8KKXD}N6;Su8T%h45nW`w z86Zcph_7U7?mJ@y@hKQ7=Dxm!O1<4ILD(p%hdF1W8FG_f45h`9>rw$@4V<3Z4Dq zwgBnX7~e@-d|ZleOa%ZQayR{5fidsR%M9E&&`Dod0AhT*b?v?9T(%iX;_4+>Q3o0X z?EWRF?);?nF?y2mY&x}7|5#R|>N3j=2{(PXD_bT@s|6*m?iA#+HnR&vQ7em+_s41d zdbcPTuB}*A)GfTEg)kXMZQW|kbNUgUetu(-f@#dzU2A1M{Lrw4DUm(Mg?IF`xj%rS zx#CEAyGE#S$oYqtE51B)_Ed0F$MYfwXIsI4EMd>%5n0#U<-HJw7-AD&eYWRSby?Qc zoE%RDIQea*qRVBh&(0!KzoJ<|*}nR*)FD`GNBT53fmpAby$K0w4OvY&x}_Y^vs8AO zBrW`?saNs#tcQSmO9p-8LX6S$r2%_zAS!fG(Vju8tx_Nd%{|}r|Bvva&CIHv{hx{P z1H_Gu{2wNlb5=H{d8WVCYTt_u>gZ4RddEQ29SUnxF1w(c?SzVp_LCr_b3@h=}W z6T2*y#B+-6H&PixPj@MD<2!?-Krh~Y`&?T%7s8ifEIUS2siu*NgZ&u6Fl0-V1sukj zJieUQcTyX%fVE9+?9U`GYX6NX1YZR_8;D5cQNk!p;?lp$?Bn^)Spahq$r0f#cGXpv zTPmo-8u!(R`NgTSLlZ*bmn4`?F#5OF%H}v6D6eowpw&k_(NL`!&jVRyj@H zp#P$G&e{H<*U@_i8}oBo)6lvzEw8oX9C~m5y>^xxps0c{NA3*00Y~bdAv|UxYZoxQ z`y)}Z`07FtQL}aiEeuTBNa$!{BW*Z?sPjQ)Ky%FEdtyx;!MTWsTGHt#MzUdE3%BjqB7qm=An?2E|yxB5jn9 z#(g~`o9VlfIQlaSn`%9!V)F9##(!N)nU1Ij~?FWsct-50P*dr`PI^5nWbYG*>%=#?9m#8d@#lV90LG*t^9VJW|=0T!1FRt6Lvc zF-+la*KZck%g26?``lUHsyWNNEr_g|hU;TPQHNnOT1{2cEF~zju%7|nB2SS66v;p) z42Uak$(isKtdRbtpA7)%xj-6!g5k8i_YKTHb!mQ$e}6Y{!a24q8%6wrYB4t@p@4wUd0m*_QUPhok6>ghx&^=;N-iGhu| zc-94q@8sGA9A8il#dT-eFM7uuZ!`$rftuyyp=I9uRu(2>dmxY#q=pNXPBl>X;MF=^ zWVlhSqEq+BKE8~#R2bduiK%g908pSlox~3#)k?vgSoHVIb8#VFFIo+Gq(Cierm5RT zSzSma6lj?nFR+5L9D23488zp+tGEb^@PHatrsgL1x*}8Msnq*->d<5z{hkeime++U zs*(NNLy&x{^IRGa;20|y=_#5fNXe9}nVJr_#{O}NdSuFBWvhC9xJOp=V-`maAF0BE z?a{MQz0dr5_E;1^IyvSRKEx31&Yt3udkQlY<#jz;Zm+9bq%557-<&Z+YaD1pgDCX9 zxVL?n>=Wxn6tdKQHj;JgQa?sD=LUA(UaA+yiYbl!I`~oaPyPF@MJaP9edF-(_-dFv z@*@<{0q#<;T1HTR`+zEP*o&B0*fqGndBSI6@NEhKWaC@$L=`?&&XAm#1HS@E!QN@MH zn%7Wm4nETEDI@omUjGwJ+TJt!Q;Y)(_c$hJxmKTB2jPV;j8lLpoSZ>~t5n*u8P0?E zhzIwWP!F4xM-?g2aScu`NcZ65ZfvX-S$9V^MK|Lnnc%2ad0`hkp$bu(DP(4vC%PJs zt7)%5+t61>D@cu(#!myaUU(w#5~{5#j31CSX3WdJ#r0IsJjr61DQu7C3&VluRZ3dI z9tc&omEck$WeA@H{U$G(Eo<`G+`{PAf_6$SuU&`s2zSG?=X{Wu_M68xzJi)V_8}%l z&rIS?g}&LspM~HMG++@xXL`v+Pe9`06X=U*%h0-UyMP6{bgMax#1=ZdE;bcZ;?4n^ zVxp!R(uFG4Ls1JiwM%J^Tj=aqa$!Fh&LBAfofQ1mj{b=&zg4x9s@m66;dV(~B{A3l z?H=w+0&yjR^h3UF{yqA%g=YO=I6=uV%k@@UjDgdG-GNI9t7jiWA$9gzm?xYcn!VkD zK*%~?vN=EYPsD26Gvg$MIh65n60Nk~|82*^5@Vp-rx*dk`^&rg_l?yVh-QiQ7+0@^ z^WHxGfOkk^p_PD0H1LDw#>I2*{P!0*%Y%)&puBui%9cwG86J-#D4oE9P>qQUWU_*I z6EOkC#dE}l!Dbhhhu}8|(?0IVcpWhOuK;MaOO%saZ^k0hfH!{Pl>Xm~*gVVJcA+_= zgm`VM+`~L4yJF9GQAe3b@#ZlItK&7RBDbK$wg;0X zd~(!GOQ!q`tG}B)>A5yY4Z`e?DiovTQzD+D=e5-y(nI6umVrunggW-AsY0jo=RY!i z-Z=B^Qd@6KW=Hg|yt0SU`<8H(cRD6L=c}%|)!_a=08^d>IQz6ICK@3#oV3_Cs?D0; z=vK*cFNp#+%dA{7*2RhZwJrDiGM0^5Pse1A3)~ex`eQLhJm+1?FwR6qhZD`&9o6(w zix=E(EX5#Q3RA%3WGh6)nSr?)YquC{9I^Ks+@TTM;|o*aNgG;a)imttTg)!mJYief z>6H=(=a|Ryr6`6gXRjy>eGZ9Mt@kM~ZB7*@0QyC+VYJMOqXp67M+kMPk+n|>vW+JY z;8phBhZac#JB1^wWLze)6tBDgahzZK-aN&Ja>P3Z=jCkzq!XB#03Is2K$-o{MfgnFFX+^OW&DU<-~Z{wBfv(dMPuPD;3wBPqy< z`hk&tDcE%Lddh&2qqjk6`SO`OR!*W70sw&{F+}|;ueZ|-B;Xj9VY>oamOH*8UkxMX z>>c#5brf8#y`q_7)MB=VufGYpWnIRl?-7KhkESYb*4ix5^NgUhGxZ{qvMSfn-iQ|+ z)y3EB1c_4M-i#d+qcAQZJ@&qI91(RKi+MAX8npj_M;Q8eDK3f_6@Nawi%`PWyZd*$ zz`W4S@&t6!P+^Zs-{N2Vp?_m^5}>1$6WRv`!ma=^GrL9sV8=v8qDwqyUt&W&q zy{Er@$J|uujjK{vNP#>wetGj#4gh?x7Eoh0IJ+gVp=T3X@l-RFG^}XrcP~bga-|Y! z60h|jk~ANrmPl29$Gli5yg<@X^tqzYztL&JnwgitgLT}!_HyN$o$!z7li-3@{s1Ir zp+ABcRdz>6Jbol9?u%6pE~DKP4+y>h!0dPI+r_78+_W*L`JQC=V8NirMk8jpwr1my zhU`cVT(H9-y;th^1H~}|i_UWW<-Tc{PYdobyQ_Ad;Vju3DlP@9|Kv#~2k$qR_C0dr zJ*S(4^i8s_)^W5Z!|bn%rJ0n8e~R}B?PzS#l@;*nB}4pq-p|IXk*o9~MLu9T%0{7* zjp`gD;-atB#xN7sIaqOsC3NH<76GeyJjW?)rPaJ5Fe)u#sA{-Wi!7Pvi0=E|UKsbH z4Lv@)(|_Tv%K-!!sihIt2t$)OV=xAB1JwotAe6~Q%=hpTwnJ($Re!ZhfAu-OI;49y z03CR?tD-IXFOy0AujcOB|KM2y&UI{+#)7d2dEv=c2)a zktpDL;1GSh)T3?XZ2@=6DEvp5(}e4MU+rLMC0^!tARkUpdG8 zfOd>L0td=Vm09;=av2uFppO1GOhn;BekvhfG~??Vm(*EH`qHPo3!;zjbNR?D;14XT z?1^a+1J82IaFH;9WE$s9!ft->{uv1yx-ky9tV<1c+o%~lAHFBhl35JUvIHy=dL{?8 zlQb-C#X1PdMnz;p8#Y^U)EK`S)jM8u#;2?pA=mvn6uYb9?K9hosxW_0^OySrSEdv< zai{k@Y(0T7NJb+AIr3o>UEV$pnY)p(@@G%GaWDC$%HQ0SH9{IREw&9;9BO`Pe8ghr zUQ(9&%g}0$rg(c}ZI}N^*223v8r1|NdZ#Se8R-n5$I@rb&R1*y>e-=|BgCZp-{>(6 z_oJp!;BDK#FW}3|Ov-@k06P$!JfH>VaxGaO4b~_VfG?}z$%VX)Nt6lo$Awf(hBd^ zi*=1(#~uGl{`7A?w8+pR`)E<2HGla_{rda=b==bY9bMH&#%-$?$FVH=h-7ULV`Z3M zd~!L?a5V%46%iQ|!Y+u`0|gXC)Itz?=<~j>oHnO(?aA?3qw#G$dUu>C7}YU`V{ahd zM+tbj;9I!EikZ+6+4YVV*;&E7MN*Jr3GT6`Fl_FN{9_%lS@Wpk*>*6O%^y!Xwh_Ko zS0f{EtC%0xt1;?TIvLk@$S(It6Tts-2}r74umPHdyfYKOaEFC!tDK63tr|CTuC>df zV(nO4-6C(qa|zsBXKXBJr|2Fl1S&$hw8Y1xPe5Uo7D+j1zSR33_mtc7p%VX;{Hw>S zl3iIdAH0yBTR8LCU43s9b#FYqH>6c?!%$nG@V$cGzF4fn6En5p!Y_jX+gGzs8oQ8g zSrJNQR%%}STN9L*i5JG@4HkL=5SS4UXuMPUNg&diVhQUki~I0ok7U%#ZNfHP_G{R8$bewIR zpD7~TchkMV#Wre$^j`H{?I$+BDpWY4#jYS`rU_v_%Zp3@q2?4m+~h0EAlDf|;r?Le zK>T5Wn2%Yrd3%G#4rC^M7W65`l!9Y`rFo~119Lji%<<_8H?xxN5cXZb`n=5}U$!s0 za%-VUufi(;KYQQaWQ3z#J+Vsbyl|e`ytby&t&Wc?mSJMs#K!M8Zgs@#PA^!KWq(4i zFVb)Wd|{>W9K~(vv$l@hwo3YQ!=r;brd=9pi1|`_@1Y9j2pI&UOA17kFCssg={1s7 z^-}M>XFJkGGBBh|v$BD4`tzMIvO2$>DfCQ)V@Xll_R^C9#lpJj1bn%1PcoAn=r!W% zodo23mOHk_wyocqUq9f{dwD)f`p>r{E1`>VH1?a;PyV2=y>%on6F{9(fDb!H952QM z$~V4EaaqpyubR9aro?z3^r-(!Z7H$kv8x-8@BMNa?nw&sMO}EcJg`j9of*l6NbfL= zBM?PPcaIBv?Qaim@5fw6l?h|65i5VpLCyiG2$QoQF*9y; zF;r_4B|nwOnK3n+*Xe=qrJ&UGy{QPN`tTm%jkZi~|Kqmxk7xtb?V#ywW|?%(hv<&~ zbUSYD$B~UXjRjhEV*#m{4|Q)3f#2)U^fA~I5QVA%TOyxlE)m2k7BV9$zAY|)?2~D- z-(Ki1Iuq9LCB9{_wBLdO>1xGwyQ8v~NAg#m>=<9XHKcft-1wfvNE?)zEk5%sUQc#H zrcDPGnwMu3JhXv1fgOLZYNBb~<%_hgNyV#dZb#xoe^lD1-6;qN_CyvA1^&H~tJ=}m zX$~UhXI~{Iv0O1LZf39oi-kVGFH!SDsk3oZ?N8F+x50@N(^63ObUf~N+;Cxxwl<2H z#MrkU`&2&8)_Qa61&`upSMuY#pk~P*UISSf1`nE4qTkD``QBBaa$c&eVJzmVn}tmt z9iqj02=YLA%vgFQ3A;@e!>C3^x|&mEZx8(ZOd8jIm>Hy5SPl7B)!?JjMvPv|C1O=#2s>V9rg z64qmVM#Cj1++){ue!WCsW+w|FtY*O0I_Tl>R z({9mIi;$c>NCfLKAr7ykAV~sZH8Rb6gfKe$O<(l#q2mRLkpFRApFKAgxix#j7}_x+ zJ#~2A$t9(LFt#``25I2235waZi&`ilPlWa>7()n|He3iK3ntUK9|S9ZW6S-o*6MWMF|^97|L;W{|zyU4+? zMB&iJ?U)n>qzS{PRmCM6OkgpE+^)MV<3=q@P0PRRfN9He&E_WE*=R*? z%`!I&?C^6`DrNu8g!I#s#w?$o9rlD_?uO~7Ew-Z#qOCAYcY@?|_G2WAwDeDvNQHfJ zMS$tv6PB}*?1)U|HusQ<`j`Kn+&*LOln@u2MqSX|WIVId+SovkZTltzt3k~@izNCT zD&och6d!0=4tncRH@^6+Bl<1oeHO@yzM9%@-nh5?koiw%L2o_d7-h8!;&%Qcb0}o_ zl*8B>!Bj(Es$1mJa78w*pA3|Msi)E!#(h+_N2)R;6JFmw2<#A6Is6gX2|xc1WTe8A zcQj_8jsw4q+#U4?1`G0$KDF!_@5G0nP2u8h8TrDUkx8Gj9zuZzt*WFR|9*>iT5*#C zId(53&WjYJw^;n_YqCaw(eRIg?e~rdhC>>P7KF)vADOqwHud0eCs!UH8bhq{r;Ij> zHnJEHa88wGc~;8b${4n}-RN7ML?;h$y6#jIKX)zgl${vpj)_sbW+d3DMtaEVgyn z{DFA7>xSwVW=OR1(T&;)ZL4W?lOZ!JZf`Gmw6o8QHVrJjG!wK~oA7%KQ>x=Nee81K zA?u&~#r~P@3Z_Zo1FAuHK&qL8Ci?CICis@QdYSbKIl<3e3Ekr}SCRD79-@`G+gV9O z+(1S_X3lIN(ksS?#kPSB4SEJ*FxB%}lwFEYYjM=V^P!RLeasDRhiN{llAjun(82{N zmJz9+`+nYX?qH*&e24 zI(`^ctO#-doaWa9g}oQseZ9(ZYM!+&_0heA&z)k8?xigvpXJz8KV!So>M{A|rZ6)~ zOG+o8H)%7@GcNbm{zXZ?P>FP<*JE_0+eP6pmxExP%;zidZGU>!&J$tm{mR2N{^)wh zbHb}wHTaey_5rUBNYL7Yed57ZjbrxUwy5 zb~VG(^!c?A{a8F8J!P1A*L5R4OB!Xwj&?*Xj>Fb~uJ0T|=!Ih#ViYHOzWUJgLs6Ax zj}?ETZbg4)YB32LiN8sBaIQ zlen3&zbV_8t7rD+qaWD@jIrSy8t}#8W(36v3-2(=jeqg?7DmUG`{UOQ!fm zjob(-u)c~Q{}Eb&Rt^nj=}sla@$UGWhoP=TGybxjI>^w-a%7taN0elePUGcP;|o*! zDk#;pP1zd`ffGNvMkI0d#T!akDaix7pFJ+YtWR@r<)lnBeYb9QbI*ev-Usc4Ur~n% z-4OA7Z*I@>Q8VzY_1K~Btt|r79EY6lpLb0)eJNruNKa{R?FnoZE%9|aq<>ca_y z9!Jh@cFEA5ES?}XgvE$GgsxMmvxhQ7)g;Me<75dN%C49%)NRV?*iLN=K?RIdw4JTyVtwAwCG&e4VMbi3b6 zV0;(|oWC`{)=VAiGRL9+)s_4mxc+_{L<-$@_m4TZnI51>6t>on3mNue);SYB9$9A6 zoM95Qlh5w&)TG12q`{ia9-Ee76KN(Ici-~|n%@^?5S!^Xc*57wutu}1eYOH$euu*n zqtvtwmCnM)D}jGnVZtzpZT!rS>x$p`L@PAIfj?X&CzTRpXEQeg#`FfUj5w_EB0tW6 z)vak@2QltEDhkf>^kB)yRI6^ACKz^RXP**Gy#iLq5+jXD-CFyM>I}u$9=@QeezW2- z2GPD@vTWIm^*b@qajnCwh0R#uI6#-WcKR@Mzgu`{sZn5?z8Q6&23bLWAXPcL^&S6g zc^-m8S(Yd8>8vVj$}ymjm+-Iz*=xn&4{HLuLTd)X1XX!pf;Lg8h% z$P{Ps=RFI8a4fG6;b?>V2jK+~(^{_53ZY~Zi|YZrPf z-gz80Uxjc~JU3p6NWH)KIt${x$CYJ3XsN@0==+@&KR|ldRKPwldI8=+K3q5iHNdw+ zGUFvyvbvri0aTf-v6pZJ!H%imoSSM}&FHPqjm*n05|81_^Zd2Oby-ZVVYt!%U zH7(H;IjvQ??o#fp`(E>a)-v%>YNB!yT~XQQsdCFe1k1`?9!fMtKvT;@0+)nAnxcq; zihv4&h=<>G|MB~ezj!=2T-WvfyxyuDv4Z#uZ%PdIott5oUH{M2}HEbm;Y%>hEHz3SYltRoyG^{6jXM!+pDLww7)%sh9&%(XH z23iZu}^@$TC%7;bu=@y5$LFu9BXZ7am!nLXidoO`csl+WBA+PbBG{< zc0YCLu2aN_r>hc{Y?$?R)i;&8&3McuCHQ7Z-X}Jxm)RX#IPF2$_lC`(OA~BLW+yI{ zq@7R3-*jAMM=9Kw4(ZB|V=l%=zz9P*2{S|lOdI>CZtM-X+kK4TQDPq0M)`5 zbC8jT6r-hY*yYuRLh!^8Fv)w@GQb;<6oUN)nANoth$h)`$~EASvv*LlJxLK4ytKM8 zK^IMgjJqf7=sn*xLwM@sj8KgK!_hXE4+KGPh$;#EFs~P~W@=-`FXs5yRbj`y0?KmR zSTM0Mm`dv*p%c3CUlAl>o|$@&1Xlj$ih`-AZS)Bz0M%i-KvypMPy7B3b z4Tp(}(|>E1X)d*Bj{&3khHbz-?0A|lTr@@uM+b}h@duN9d{-A%>W=B%qR!66thfWS z+Ef0A9+HTtobBIy6g1`tYdXCW*Fd^8=C!#n^#dQfF+_;4M5|fNrqzTiK0AOvvQ}4{ z&Qn7h>$ZjY247_Pz_cd}`&k-J(6TxRb}Aci#U=(<_DF*|u)%Ik3~!?-+>CIBy*i3-f3Xg3$up!6CmHg2=F z=SOe6WjG0~T*U^i2t(2y4vVmAP~~&!nnib1wTp%3U!Z8_8s;p5yhg!zhora{t(gB? z88;(b$otB{?|SZQ&FFAX;n=LIk1@y`LW1ReVE9bMBr5;<#4C6fmWoEL{nOVu5C+Z| zUNfQxp@4_Ea5bX9Z>6C41iN9qzT%~DZIZFn|3NjE(!&y(S-=Rc=-I{De5*Ot5tbcj zDL&=}0ZN!2<_c38JQgV{9)pr3Vc4z1d50v26;ntzF7inKONhpexdXAoPHN|T^!2XK=5i(vmOG1a{%uliV7)#>2IuFwj zNOv^)XR}A`#7da-#>-l2rt+LK8bsdvrxbfiE*Cg*baDQ*pHaWdoS)6@t=h}Y5)qN6 z3QYTQ^eN!II${0r7Rt3U{J?oVJlj0IZO+rXbl8^zZ

o7JUM^f)G0QfP?rXUDAlo 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

S45WliXtTiF%{8gk=v>*W@G6cvRDk$h;Qn6wn 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

11IS0gPo0K?+lIb^@t%qW@Bq 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⩔2Z-X?W1^n<-^|H4h!Wk2r4U1B&YvrIj#L6g+*U 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

eayJNSj#|EYj*e$+>TPs$J6zO+HUW< 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%0AGaiU$neDRobn=q~w~}Y3FBjQF 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 ?vP>Z*J5(6*lnudQ%C>vVht`O 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 z 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≠sx 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%0AjcNLX)%kBu;^GYMn5XD8{O$9> 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

#-!qhJ#T?_yG$gn9j(JTPLnbd%>@dd*{E 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�N{Frv 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%0Db5-He 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 CSHbD1f{ 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

Dl7%L7@Ow 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�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

}K=;fjnCpb?eCcMErTc>h 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

>N-$ zq4_#L=H^x6bAxHr3o8a8prnN4*am>XD9G{&5`Gf>YHY=CC~BttCrxI|o_%k+_y0ed z-aD-6bN~Nuk4I^Xl3J>$g>b4>K6OPzgg{0;4%(`uEh@4Sg-Q^V6(MASN);y@rOL{% zQbh<5JrNmMA|oOhVh9K%VJ9RZ1F|4t{NCq#UBCaifGgbG_iH?#&qwT>oqUY=yY;}c zN{rjue|Lnk%zqm1je{r!GSdyjy)7m}we||cl(2lw_mL|S*Vg9A`hF0oNb}oZme)6w z7I6BFobj|>&CQa2)|1&g-tB&i26RD+0;;;H|9ovDL6eY2DokZRH179%oL1*$PwISntV2^u5~rd1(>;A7JEqDo^95J1q{|h!5Pq;={0QMGp2TrWiiMOr&w#Peh_^ZVDN-zN;3-!m5L#Qrw4B$=|;|0 zr{!xdR+SRxXD{3~4+Lgn>I8&kSFe{jJ zdmux*qzT|K7qP^6I68xrRSkM^H_0$?h528Vo$}hzMl;P zyxzL;kiRwXK_Q%R@RD~9{+O>wF=5X#A;#_KL4YscI^DMVd10NFuaAs1T{ZrO3vDck zohd!g&e#MIrq?@1f$8}wZ;Xx(N=5C9*yjt$iE|55!w^c$Wkk-ykq2noULcr^jK&oX zGKTDLurrT)8l;nk=?ZVvZk1!hKEukAsGQ$CTRnR&6IeHW z!NEPJXO|nAi`1mu0ZI+-+g#b%REKu07QZH(>TJz?K2EEcn7ZOQG=B1~?^;Ih#35jT zY=IS1lP;3+IXT+89P(#gxqC8$t8wtcBZH0=%L`jy+{RtHf&XxCWJTWCK0u*u|14+& zwX3oJnjShaRqa_Oyr2$j)F;*b1ozQwrN9zA{Z6|a1em;$bW5W71SGOdZN$+Lq%W2D z)YNot-B5<85u0i6OzThMrkGxIS7tzLmSW$D7qTcg;+0+16+nVWen&8#OQa~-%+`7| zaw@3RGi)0??Kl*M7$H9VkFdCntg(9X@^ST7{Pp#-KedtL^;Jy5q$h>+q_EQs5V&eE zZn&q?{>@xFC_C$z>$*U4u_=#PB^~Nj4O?h!EA*v&khAl?gWs#p|H}{(yXR7GlF0u^ zDgvxsDP6m|Xyt0(Ir=wizIMf()e=BWg$8*;b0}nd`is7MI3qM}ym;Q436Eusjpf6M zMfS6+vU_uWi7CJm%{SCx2?{dc#JR907-2?w4tzh8>;@yC2p#8wvJ*WJ?FzwC;1EaC zc4x=ZzJ3mpFoh#)Zu<5RGZ_|%(3_MIr$BjBWw5)1iF?jq~-IZ0^Wc zm7kY{+=IcnSL1wgc8U%9yOgVKXM>!Ff^Q;9dDgHt&8IAQetzqK_*1M0dGlg#&Z-qb zN5H!&vxgk5tzT98gNiKFN{qqf_VN?+&75D`7@GkkBj-p-F50^@|5v|ZLSSykaVcG$ z+b-3AP2G6tQsJol+;Nw7Vg0{E0sYiUFVJ}3Wo(i6QQX8$>qtb~MMPka=K6X_SWdf@ ziUb7J`!dh``0|qrYlD2>M3q-A=fu+8!UoaweA^$q53f42GJSdZBnhvuBPZ!@Pydl8r(8=79(CBZd&J4AQF&@X%s|QqTjJ;CYxTgo0v$a#GIfu!y zYDa;P-mrc@q9iBx>J<5o{a=2$zx%#5I4?k3a(gO-^DiM9cNI5h;uF6&!{Q`Wd)kE$ z8;%+&ZwIby!03PDl!UnD&NZdN7Y=cO2v75)ZS~UI;>EIkGio{Kk`LO$u3e(Ii7|?W zvwso=`6+@4!0R*V_4&eB5G8x_?mY48Lgd0q1p=n^xG;8ktwFo+t{+amp{NIDpy=~8Jk>>?6?z~j#yooG}67ng7?U$KVa@5{?*c}o%{qS z<2KOe0oK?k9fzX^Fg}(8hH<~EqX~CiNh8puzO==@lHs|#!*jFZH2SbA+D*!D9ogV^ z@ZdrNF!qGxncectlYlk|wf^@t)I+8pjl&ym7v@KqZ&+`_nJGElrvJbbE6wO_tQpaR5vdL#XqaZN6o`(RUw1IP?W-zXRJAozrdxroKy3OfHa~Oj%&u z7qf#1+_uq2+g3G(E&UR^bnVvvWAw88IfI@QB6*El0uWX5sZ_lInEf;Y=D`KLx2y7C zaji5(;Yc*5dQ!Vv9X6OX(Q)KtQC!yNAr0I zdKe$?b13Mu+@Ceo<9gqHF4s@al>W+*yq%vfT~bK4ay#I#o19`90VhUq&1?|RR0b8~vg!)-Rh6_#QIbkFYrsf{50z|K`lF)Fl5z){bW?q-nPB)72_&_>n)Q4u%sTCUJqSq9 zy4#bm-i95QcrmJ_^z@chK&pR%o3Q!CHDBM%!_a>F(c_S42Thm~VzhYFfnMeS!CGYi zWA-}O2O-9)>WkR#|K4Kf46=F3hq%Z*kTF?A|fCqh7gZ7uU?rz1d3lDAErGQ{vSq>KRTx zO=~H*ygZcWO4EaO=3Am(uTJOY<00M)+FvXEh-tHtv5Dg^ZW{u$eYph(B*pXg05!~e zq4nlei6aB#Evo>klF^AXoqvoU{G&KY1U607H9~+?)DntzmvN?*^Uv{*=eK!-gma~w zZa9dNGCJ)nZuGZCy!4~IJY;5WNaY6KpKM-<|06*}aQ3Eq4m|h~l=`@+zGtm6Z$b*5 zAz8y6LesZ7gU!PMv(Ls_m%lEZ_cp9i`NQ-rra?`AIg>!YQb3^&-bqL3HRK>5A=B)@unU z<8nOm=O%btR`B#!kmQ#cF^kqhMR4)^UxvqD47Z~gK1O!hW-~`v@i~H}K8poI*Ltj_ zDsPOKzmg?*rCaV-GMs0`+D+)q7MNdCih7mwz(tG&1sIykR?wT;W@gahH3dG?1N@xU z^Njk@EbeUU7XL6DhaQ|X6Me+_NnzyX(@9g`lyv;8%^xor%(ePpY;ClK_k=LZTWyZCGnonxEd5gj?mJ^YmsXU)m!49V*_i@n65 zeZVNTsF&N`UBQPrLaM?=tz>mbXAq=te71f?_!rK*&DXsy#L0#z(TUF2ghyNVZaMK> z^1?r81KsMw>2GMJf1?Nt$RB9)=5CV^Zc6oc=r;<9vsT0?FC-f*xJ_4KWS*YEI-FP~`N`rgfSHLXb;R0JkV@7We{ zpHGLe$Lnqgk1iUbK9^d`N=z&Zg)NXK_U-1kor8=`bOb)?56p>Y=q3G{8=ZXPI0(|< zqF)j29y_<_(Y6JsLev8ZZ{9!Yk9AFFrhN4835ND?nbfkI-at6WBd=9(fP<(Y%tp`Y z5YC*}f(DbyTJnmkzzKNfORKAFMp@f!AnA6b3e-=zq`tDYhgUOxuWexmW?|$@9JH$~ zqwxAhLPl&pZzMXTdkah-`MbI|xE1UZ0tm%3g~E+_Gg2i_gYZ2Hk5zoY?{1 zMqQjmzFwlbONsU*SYYUPnWxVi)pjg`xyD?hz~k5d9ye7^-ZnjQFv^?;vcj>Lp7%mhF5K41$f3$Aal??wH})E zA#F`y^rc=vKDy?}p`&?g(-g1|R>S#=`uBcE+Wh+8HE{5)D=?&gCcMhn*EtftFnz#R z{5Djbam;n7*bDu9^n-w;hu(m|5?{L>aYn|j^r79yLu5@I>PT1h@2k%AkIejCAn?yQ z6kJ`Ga-2xG(sow@uBN=+^5%(0&<02{Otd90Xslt_jzad%oHJ#-`AQ_o03x~Lr*F6 zaWkKVgZMAZ#^A>>zZae*H5Y|7jU3Y7g%-4>_TKD#zXuXn8aQDc^_;oZ@4vhvap~NK zM2&?;1(p}y<7d)uAYE*vYZ9O5zzY@xLczb=?$JR_cjw7aWN`J6AFr>}1P%t1k^Y8% zG$y!4<=kGQ%}BqvYtv?gXzSyQyW8%0aStUv{44{>l|Ch@n!xbQU zayz?RQI&upoo-q-`!21}lW&*@DniE?+D-X?h{c-KCxq1&I ztAi8ARKIfDl(@ESe9<$UJ2l>I`7(ED5|c+eteJAKCgLhM-IZOK?AL429*=R7l2S0# z|D!QDT;JA;PW^Zres%INZTQ&cM*DW57b|@x9kL-O*m_@+o;TK%S) zVU3o;^~>vuHtqKJ&TMK8p86Gk$a1Top3tNDq{`z6eag=r=3UsK)fB1M)^+Vnj+de? zqH9Oq*$>{57IYr>1#$g6Ho$aHXAP|WTZO8`a&}2xpY!GLNe7zlqY<5Xz+#i-S z0~0vJp`6~CaJm;<-BbBgpg|h%F81L6ICzY)@unj-nBDWoio`s1FLF8!kxC_s?QvseJYiCMCzE!%T1z7ZdY z?f4~M;7Q@DQNfxD#>$0R$ntCnW4??L)z56E77M&y4{<8DJa#XMDwe>UNnZiVqg14N zZO?BpVRUpof|`{1cj{``y?I)deXXiIgCo@bwRM#~%J@XO76!54V{wm7gY*eA@p^;I z!y4L|HYkP7s#*iVDt8fg!cYR}4c1b0G(YP1v#Kk;8Dqp{b53i+eyHnm%<|kjb5o~z z=IB1P0&YH}-YY|U9`U77it~EYJAR?BrHqA%1MoHPzw|5gmkf~iSQJ4(Ea`05in!d} zuSZkX^sPmW)q_-~bE=gf;e5EaRCIO&m^k)n-4-~x)UY8Joqj|8A6Z*Pl(rF68pMuY z@&9W95@x-dU-i+a=4bp5l6+nBX46SGtbOcj$HBaNVClh^qCbwVR*}j{?C5XjfEB;~ zzA1QGjc|QAbbHgTtT7*sp}c&Do*Ssmc-}qcUS--)I8T$g6+NVuiM|Ej34F7d^jqb* zg6iu9s(_x2Z9`;BVJm79`vu8fZ#+()et=H#L!2fPuEcdjk`C$Po*4$fB`zKD6@*^o z`1d(s!0Txx%-pVMXcw6gOg!g^gD|@)Vg0?hN-1V{`IdS40f8pwAZXdzR~YnLy5oJc z+r!UF28>XKGv`C)5x4NgvXAKM)~^i8EcM?YMsu&yJsh+f%-NL7&5W!bt$GT4Ib^K| zlsgqH3JM3*M$J&E<)u0kUKHV3v0(l8briSUJfM3!ndOp0n;OOt2P}j_bh|tbr zLSGQJrpIT!{tR++c^5$U0)zV!MdLIBa1!2*mndxe+EmuzyM6cl?xWa-0EjK#_`!6d>JQt3eSA}3DnweA zquwUXpxOtEaIhXtQ88qxU3R-Fo0Vszo|GnndsJm!T+OR6=k3rn-g^?WtkVZx{cE2} zd&`}LPwczNU<5TkuI~9RWLSKj>eD*&qk(R*ijInBM#G1}znHv?;YBEC*#HiRjAJFM zVn&vp$4eFSne~VC)GCl0#L+7H3v^@+{#Lro9T|A~F`U|V9u=Gvp$VKBCGLj;wRV}f zwpUUXDyHvA9MhLK_g%S$RX8J?;Uk^5l^lj@AJZRZKK4gK+8#&Uw`t%&*V+=$<1L#& zq6@#C`T~RjlmMgq0e6Y|L;g2X3EXd?7e8HEu?6_3b#evyb^hDfsowU^xbXuQjyK(H zeWKZv=7=87vf3Z{PG^@HUs=B@F{%i#;wuVwuQ(!km;ZW&n=3YB+MTfh;_x$_5xeP| z_4r@@5ql1cIl@&(8CyN4pk zuTxd_HF*3Zzv~(*<+ZW`rVYK{h7#v0-3!3%YCog0c;bdQ#aH*^eNN$i)*0yFjt%ga zo$uZBZ3_UY7YHKyObs_*84rP(lX})_0jt=`{sziu+m=lQ3_6H(HD5X0Ti6+1w9UW8 ztb*3(IOb>FJ2R4fv&?7G%}>LJ3CSK!z2dgUjDA4ES^v0s`gz4V-{7vgJaWjG+c4_;+`iZD54iw}AqQYVHezz1 zcNlNSD|rWIwp{guvaAf`!825U75C~NMOFCn?8|u}G~b?0`9g2khoiq=cS+i2M&rIg z-F=vHcISM!fH35`b;H>%> z$I+nOwD>pexw$IN+gWHI|8|3x}SrM-)nAP$jMt?+wnVkwjb4%0fz zzP*4F9*3*Ais}ba%P?--kzYbv3f9-M*0r2xSl_p9*$<{X?;Q1%nP?vZ62tYSpE7{! zuh4(iER!C%ltzU7&3MbDffns5!iM3=oKb*6yIf%DO$WHu!YvIJ5+yzOLz)Ng5O?&+ zssNK=VZV!3W}n~^?c>J^<90Pow$^H!d)wbqIh}s~z#XVs9K1J2Kuv5Q6DgFts(t(2y1es6Fzsuv|J`&H-Sh{~P*A`)!Jr526Y zjjDYKV;=>(l`=vOc+)~icx?9J(2S1*REeK&@U%a`1E+GYj>;&&hy>Oef!ob30LVhH zmxqFL9(D6FK)FKo->WRKv*cI*3GhTER{A{!*iuAd&gm7eZg;216!Vuoc}F$PUacd0 z-*GEHUl`>+PBGBP-$nAwr3V){0vE>y3@iRuDI8t;#VlW&b}5vuDb9O8aUi4+)bu>b z;?=XLV=d_b&E)8K*d0W8Z+rSo`08*2SzAC_OYwMF%zBYtUFKN}QU?OUHd536REV`u zySyyo9WA;Pll`!Q|LcbCj?uwAKPrwzeRcrg(H$yb{7|yn=Z{DEf4mlawshxW(&aB7 z{;=;I_4>u;3!h@)0e$SToA+>sbB9h0VBg(KxZ~KbzI8{mXozd*mf$eheY#p@1e(Dm zX6QWhadILOsSWil<(LQbD~INLTXE{u*HJ8PL+qli6_%6JrOkTi8CjHPCq7FDXK3P1 zR(A8$Z}nOAsmZjNkK?igP#SpA_%^0T#Ak=r$}24hW#FQ$O##DZ$&ij-&JZeG+L+YK z;eh=EduKbaEXnGWtfby6GSej+S6^}1gB73S=aI()eBjU@7uPl~{6j_d!{7w zCk9nehR6#q5|=F9n~Bozz9yv;?s~w85#|zlJokQ z?6AnY8&73Pj^+XJ5&q5EdsVZBYe7|1I2p506kr$eCZ~oCC6&fZ#gIs6&aT_=ElUkt?}+#3hbqFNf40SLnDNp=ic8lvEPm8J;UCEiB4nhoRcggIDjSiDg*1 zFpqTrL=~{C)i@QLNtG{3PT@`SLcC9*&oN!?#C!byq3uCgJ1h&LSN%cE@|&)urm$Se znAAx|Jg*)$L~IG8;NM%$t54QJa}0GIQ?_Q$X=bHc9EEo=P)#WC0fOdkp^7%vi3wH3 zmRyNiN)sCpws61^%oA*eWfV`Pw}Dp4}`dKNOYIDCZr8YVT)176zm9*cOW5>7GN zz>|}=0#gufAq1WTzmfPy&|Tw^;L|fvOd;6xp=y{G1~Nz{6hCGUwUj#C;r5-b4g8!E&D>M zE1XyTV0u2t5jcL^qV~WNYC_*tv+AQ=n&m%||1AIJGv&aO7j?I%PD-bbUc|j7dzM2< z>cru5W$;B^U1D|Pm`ooIGxKk?!Sm{1f{i28#H{S$uV|QF)!ERcxI&^XTtn$?Zggf^ zGf%<9scE?>1j`6C^F%NTo3Y2H{xbk|S1vL|;|BuTNVRdz!`$wS89jx%Q6)=$>SBh; zN}?SNgOwUuoNXbuuOH6FmqeYAg!|bSb|YTux^xFjwBFP5$NpZ0pS>6Z83TuFPi3hC zaK`_($IRGOPWiMtbTu`?v||1hOQykH8O}&<`75t-M}4YeF}A$I@o7D0sI4r8MpP5t z*EEKUQ`JUem9yZr+_&t+yihXV|A9^TY#LSaz3Ja=aHw)r?_J}kG3bpX-_n<&Pqp6*o*43_D2a2fD%iJcRL!A&a<+X8`0P3FMp z_H!DD>G%@~n2V17g2co?Q@LSf(Ewu zcu+7pWm+!IR()Qcwkyn3e-n?Ww`GcSKHE<_pqJCS!J}(7EoKjM6(4V7l^QbUu5}|7 zo7EqV7utU6-RE^-OjXwcq?zD{2u!`tRJW4AvxM?C1(YAf(3kv?su!8gYT(=lV0h8^ zkP^tYaQQ*$Xm&CObd0;W_by~k=VKjvXIes^CFWAu0v^e27VkiSU6XTQ?q$sx73~PQ zQ3%_&SoUuw=x*qg-_mX`3aUX|s~$iK9PzlI0Ej94X}LXq;u3^$MPg3;V3LfX;)!y+ z@5kQO{1?44ByXv3>RsJ0g>9uxwz4$B5?Ipy~DLFvONv(ec zk7fu-Z%`u9(v5*i$I8S)aI?gIYM-U_U_)M2nKv7;gCt^uUq7kXm_*D=CCrEWTR2;W zsiC~+c|L^4fi;wCOCkdZ8TtuZ1UxzPcGT!}*Tm$`{y2kpT}77qS>qcE<+1L;(8<6P zXmN=rZhx49&{qv?hcO~FgH3up*~2?E#eg44zc#kjQH76UTVm&{D$yi;s3H zO<$UrLdHR}Q=U~+ipJ_Vp#%ky zs>k9A3>0z5>DkjpkZ{IBwdM{V3~fLy*!fq{JHWw9TSqYS4>0rp%QacP&jiuHDbP8>2(u?BOO(#_=nj#&f2=Lg*}_9n zl%fS(>xdw(o$4j1WDu#TNgyfj`M)tlo4(!2&;RetZ)baz zS8W*CN!8?aZmBQYNleGY%WwS3!tpmcJ1VwhN6t8FI+Ygwn0&B1%JweCC580@&l7>N zKg(HD1;K>#$k06*Stl$LwepuH>E39(*|3*M+{f>I=(Yo)NfsPMB3(A;9pw&4m~w{W z()uSj)m*@ZwEOm*YRIWV)5<6ul2{b_EX9-~kT+zzHHB{TXl#4!tC=}Jpp+hau%Ix9 z{NvgwIcI3gkp|)KX_U`l1snwd!qcaEgq_42-fAY_g!}B@gT@O2^rOq}|8=zK%Sy{; zPwW$ah^Tck1{dJPgDSZtV+nqjrG*EbK z9KP)4)3UJ>i)<{tEJCjktWp}9yMq#p32N&`JbObH*kr;h2)YoGFO#ZLg&kXy6;DBq zSYvEPawh&{QIu++#hl^ST&9JK@0&dQ^>GimSydGqNQx(EeY4Kn1KnES8|=wxNN(3( zL}p1M60&ztFhtNEgC67F14u>&ke+d$R`wuAhOl88QoMYqj6cBPJJsd=HN)FAjthx_ zAQUCJW1>2pJE4$838Dk>Cn*HWgi}-9b=;TB_^cs9HsI5%>yT%<&3F0hAsXIHS8?Rs zGGlf4otki#?O*i&jswJd+oPZuRw-EbfqHpqHa_uB&+(sm>o-w!yuc>MFI%$DTXrV? zRV`6U@gwtyiWG44Vm!ON-^cj0{M)ChFC=9g-zm?aDpGr|v4*5eDRNsQSYb3i>Rix5 zOo#@dXKZsipT3YF;H&_)RvPhNC?jUQX}A!T1JxAde32vYb! zMbp(~o^Xii0}&YijAX}P_xShQQscO-Ve162{Cq)^_3gWvhmV-+@3M*8g}frIB~o>k ztBbA}pnsiZm*{FoxYTOP;p<^O?6S=G#JvI;rxB{_s8#;;biSjeBklSo{UmZ9+)UIV z!B77yuQ>M)HVZXo`i!iyL(dq)W->Lh$A$M|8EN>)J@Ya?{ii$FKq)a}e&?00n63!- zBPK4>Q%|wROg=NRZ$Tpn%E_SH=r~GzA`|BpfR%u(DGQQ}l%k6qL|+7)3+T$rNUAEy%2)-h?N=o%Jn{qQvn z*7-(qCJ~c}_oHOIlo%OKVvSP!+Gy7+=M{#SW1YS>Z8%BKJ<2$jJkbtFs=Exxv$*br zJ~q~O7-gwCVrpsoE&zpO3mLoo117N#BGcmV!MNMUmm}HeOZL8aQzmzu*2x7_QBxT8 z@eR<#sFG=Ngg$Sy7-%BU>8_8GKo*_~vxw>v)sm<*xK-Ye*F!V4ib^fFHQwa|=(>-b z+Aghs{_?+zu$g0~?elXgg5PquE4APEIww0rIF6)Fl{v~yCmT3R?+|b8nDdh?ipJz_ zE*n=k<)qw6Fu~CEUhfkvS8ti=LfUePX6J0Zdh{J`e(Mqe)L=ZvY*PhwIuE$i4uPTop_U( zVxa5VyZ%q2@M@WLJ~Kl4zzo)y6^}L>D_Qn;p=J)%S)!iHoPVh2P_#>F8K=^aj(id- zg+0prKCDQ1VHw>5%?!o7P``|nQSGzJ&($!t`RZ|ncTTRF)3%eriUzQQS@GgpV?ARD zYMSj^lw$v6p{7$c8G6vNdy`W{)|^Z^slRZJ1>Zz6$p%&jH*^?ZjuAzD-43t2Ar>a2 ziV>}V5wL7pciZt;UQ3ibW|CITE8&)g%+Szv>kPW03m}UhdbV~}Drh4v?Tl00Ydfpn zZON4nFlL4x3!>s>KY*8q^YZ>DtpUiY<3WgA4L(z5T+2mSfT%^ODyj-~^{Q4r9e>&~SYcQcmu^xUw}XsFX@pbe zID06!Y>N1H)`d|HR+-<6EE@@`6xD+P8Tf)hiv2-#t5c;(w6BzY@Av_XxMch#BG;bW zQD^%=^2>n&c+{{NFXh|c*i6LjSRA)#-SK(tuZ^;24K+^&yBql9cyA7#QCX&)j;k9x z;jj15E9E!+hbowz+f_AHoAzLmIH3x*h?&ud4jFsIz#djt?>)8>6T^z%&Q^q9* z^cphFt{Nd{9cMv^E(%erN0^N~w9ZErYm>h!X&h6|3>`ZjW?Q;)id2B|!8uxhSElJE z>X-n$1A#fCQ%h%eqv|+yi7~Bm@LjWK=-S1;qjQIG=X^tWr)pyJofVNGx*G|MjTGMK!!&X#V zYU2iZzieiTd$1v*Z6|72ip&khJu^urXh6{AZ$TMq)mkOB=;-cmVlkHk8dZqlFPi4# zpI!x&0Zoz`+O0fp}g4^VJW|qGc3}FOiy+lJDu{V^nLRlEm zI4*isLy5#gRjq?u0%T!QxpM!Evc6i&?fyU0Zqqa=<5bkbNaVyp5A0KoE?x z8Eg{H*NrR|#ZgUbaCS`I-4R4$w;E<5g|USL0Tf^cyX3;M#u_3uu{*k5FG8}P{@r^3YyZ-kci=Pgk z=N3bCqANjRccK|+b9Gi#v-5o>aGQZ^088bjD%Pz`L(d*pNGiv;BlU>s@+5<1f` zH2Q3ci-Mn_6`gH<4ebl0V$jxaRp)2s-i+nlyTuO<5bkUm@H*Ii;biwQQ@2mDJTT>~ z2FHwP)s$$pwc(6)Yj_M&#&(4$eH&^Qe0U93|3-R8-4$WzQPGSiWSpC2Zb3K_(slwK z&meb|H%k)tI7%DZCV`#-&1hOz4?}BcM^cSbcUU1!%N4SnL{rv2$cvH8Dc!+fP4b%G z5_Wm)&%oWTaPL>`e8J()obK);lbEEpfiWUlAF6~ZvvnWV)vGYeEPX=J4=B~Z3KoVL*d zCf2f$*B+a8kksK=s_HMt_eE;vMlmN}FmHN^+->|HaS*X28J-XIU0z@;Tl7n+1cX!> zZkxqW@_M6+irTVTBD_V8<*y2lpar;d9YAwlB8xb7+@Ggnl_iQo7AGgOp_%fbwl3+< z4+*CzCsai9q-70j#IKhl3niGE!})WxSHV2?#=bMMo`4YnLzm{f#l(faH4#&F3dOK&up3QdQ3@*$o@`%verPoJajG)CNcfAdZ;_~?YFQuL>PQ(syXzwrj z43HdM7lo+a6fk0f5$ggXsL4lO7|pJh?q`kU8RM6%S8(noa{8oZ;l4QCdtu7y*{mkB z6f$Qz66wh+P}Ca7;5zs)pq0ZBy7+h==eEG~R0F$X_4ri&Io ze5W?Ne}LnsIi=$6gNgXXal)0E-g6OYTJtNzS13u@=P1g$SHNvru2t zP!ouu4#M4${()xuDNEw6wEA_sV61r4-fhBI2%J@>hfjzH2$Q0z3rObtsilSesO4k$ z5~XWoSlRD$>XM<1R9>CBNRiAtLU2Osn@SA5QuBV;$2y%6>EIj{{d|hV!xfmAgAJN5 zmD;N1)cq)WbD2HD4dK7HSDGspdci1HDk30r<5t!ZYkvDPz;cXATPiGJ3dQNgCWX{- zdwD^$b9!38Lclqi0q;<3(bRUnQ$9U%k-4b`Jts+C*m%0-pox&p;;XA0?w_we%|tU} zO|wtu8^JQ>OxDuTT@VSRw~R+w?r(O7=I zD4LR2$Rzf7<6*m7rqqoEmyZ0rOl8EB??`*Vwj=l@>0I+O_9>HT7nJF^^r~-1XPv>% zl)D2qC^_RYeInB2_sh_C23;RHUVJ{oS>2zfWdJ%=l3?^l)wTc!;AW_W_H9vAErM5Efqxce2))ZV(BKR;5d&fj;wI*l=;c-0 z*4&a$F~>=89t!`?R0Hixel7Bkp|KkfBq;n;PB6j7iIx@yh0)esbQ!;b>}U6s9+%^^ z9(;|b?|-2j8ZcH8mOs!b{~PZ@m;Y7IM!G>h&QS3}no8ax>%Ip}Je2N1SV~=TyKaSr zb-qI@u!&qPX-;MWi>1?D#H?AI2pNX^ZNi9|jZGvXiaqmQzpj5vs;XC4(s;`<|3p)K z(j@BWS4!e_b!I))goH=iK(iJXGh9_B^{ARRR4mSYPgtDCsLB2;{(HDMi_Pv_NC5iJ*<A0Jr658D;R zMAj6Pc~K!v#NKFmKwg$0QP+naDk1EjTq8p~Fca$elRbdFY>eaN+ln%m?L04XweLlYae0V_F^tc4~& z%VZ<|WC(PNBG`XI>11e1fCAFDkw+g3t=n)?>a!|ulE!$Df;eX9P!nIV`j*Z~zujFQ zd1qj0erV>eS;R3b&G*(~WJ4&AQ=1rbTWZa;s$;~D-T=)SD|bdW70P_!ydz2Ou-%Rz zp(v+pl2fq6%Yj&6Ww%x_q|KmAyM`0i^1MO{5zN!rOi}dH@!QMk@8|1{ z+55ZUr!q(S$y`WYFBad(3C+RoXo&-D3%AX;xSOaQ)?6FilA2XQ^0+iA);JQd*#t$T zY8mvGuu(13hX1(uh4`<*ZgB{&7<+`>tyN}obXvMy$eF!=Hw?X8%d3pulQkx&e z_*HV#B~QJmuyJX+v*49e%U~RUDT8=(-4zAlwRX98nlaFc5zQ=K&#@MT1Q-+3 zo1<9g&cC-V*{r+AI=*6GWXhMflNU!$EZ2~ZEh);b@iod?VYDy2i3%0jldU(IFT&%n zF#c=t^Q*T1bfw_Umo&TE7zqpF{|dUZ8KEJve2#RGbBxDsaA|xNQvTa4>?kpm7ySe( zotsu}Wrb0{IE7wwx|ukrUsn;(RC@9vex0YF?cGq&5W3LYKY&&(KhCG}z={48w{*kc zY=OC0vsbWxitBfW5bws5h)9cf%{kd@A|7YdZCRXOM;k?>QxFcesKv7 zDMi#oB~waTz3{z&%X@ff&W2gG6)n#omxRvc)wLLqoHm*Gs!aYeO$9)63v2(MHCG5) zQV%c8sT_PfJPaSZaeQ$_P}?mOkINxKoXLi2`ZXxE0royMEKt=Qx+|5u%=9ZRi)717 z^9#ovQL)2gvr9YuofbI5LU^*W;z{Bu{7WLT0k_Jpf7+*L6}3dVQXQ28A%2ypJh{jj z3~ePLiIypN=rQ9cg`E2|Rg$AP7Z`R?-}~sA<4L5?y29vM1iY74&&7Y5f)P(M*;UR# zW%ufRvu9K&(Q4a>EP_F?;Y-WAywaqpOMD6E0Y~4=6bk$QMx00;Heta|;&k$-;b|Z2SWn*XTkt;>b-6yUV<(=)y2fCK1NwHDEN8qZRBLL>d zwDSlrbm`Ku;a^pc`~C}d>z0ESsXpF`~w&>bG$w(ov&j@rmV!2RlT0R zMvEeXM&&h}%lmSmeZTlE{g8OXCOyuIHm$751uRA^e!)`LNT9nQ3e}<45JoFBdxgO9!wis|99twL>F+fnfD-l{AMfVFQ$Np z*g@sZpBb~=s;+EttPEX6IYA1f*&-Gt4}}3(Tz1x^cPL3$a;n z%y~&Ks@d<-Kl8(q!7|qu3%CCT;tRD7JMfe6U_Ery{&_QYLj*U*+gM3VZV>CE3 z$+l~3;UBE)$xk;CGMM!0g#AK_;ty5HrhwX!Wb0MJ!`+U<0Vwvw>-LP&IBx@0-kMbc zCzAG2Z7Al^|0}h9n}jr0^)a3u zEv2;`iCEtfxI30?PABMc21gstY*7MAF@_mk?&8`}Fbas0sq*yt#xN|@E-}-(3s`1O z-3LuIFDX1fOx^j~T5#FfW6cD{+FKec$R5kqOeDPgECG4DF3V76QJIZxgL%%9Hth6|1ouWWG5$(IxvS0)_+KGp&?NW95 zsp(;d;Yp7i;g@^dX4qeceu2I#2cqX=21i>UzS)a}^W-L=g|tk^#={PE$-3<|+(8i# zghm0z!r$gUW%9c7bwW7pn8@i;QNjSd<<}(C`(OF;?g*CQTMq<8#p#cVKMrEh&SAqNAbK z)xv+hQ6+bUp}$!i>|DDeZjM1sYhr`FQ3u3^Q-OnpC)?*z|#auvu68RyIakaFW)XV4s$>N)GqyjaO^Q;FXKu%9{(O3n!-wmGi%jFCO@o zM@U#&)5}&VWFcnt@RL>YvzS|j`^OR*?r)Wt9$aiRS0B+U!s|`L2WEe}&D78eX7pjC z&&0p5q2j#-if=UE&5kJ{8vSWlvGd4)mTPMXW?mK1rZg(RpRwrw@JjORX5$_>YHRQJ^0{Ytq#s|{|x^Fo@fsjP$5adXE zeN1=vM(7PLFq8clk2C8d#weS7NypFPRuYtl!I-2Fiy>UBXL|vZ}P-1J= zVpnT_nEm<)UTQYI4#Ap{w;3GZwN7P9dd@;9RJE)FEY@Ur@^%wfxWI)Z;B_Iw3T9O> z>~g}omC-kgX8xqhD33x_b^k4un6VFyGal%K*HeQfrC$)GntKIUB zD9MsHa=;}X-kGY%3=~f^VjQu>!i#LoZQ=LypMcl^P?^*ZT@|!WqWv+Ntbhg)?YO7F zRI(3l#xEDtyV}`m_3DUr{IP?DsqMyXAZCsn7Ro6`(}737%`diYxZAB0yNj7)aG3Mw zkdAD$_AYwlkHHq9uy3ohf!?SoYUTBheZ4UcLS^{tLD)$K9P4RH=cKGH#8kW&g34>4u{bw;R&cz?ZV^ zRHwo`Gea2=?=w!>-=@os3!t3-R~>Am()aA0$Q7IG*ggpx@SD=X!j-B2a_Sjx7pMFyaN^2CoObHxz?4WS@jP;=j`QU zvE5l{=TL+`k18oqD~Loi-fR=Db%GUS*;Nl3XRty~x%)>q>R}Nx!SuuDJ%3+)ZBVJ^ zBh6!IqG=N?K^Go;?2ncn(_f55#E$3>M1NsIiY0*!V>}~~nOgI%w8%V=|KMT8K)*Pc zS)aq;C&Kx*$uj@9B<^mi>K3(T4P8lx2!M2k;S+jtIXcS+F8MiA!#}0^S4L=3R~*vN^fe7C8r*X|_x zQAldDyZ(H8C1KKSJO)c;Oo+E2?Ww2m|Cy8AHZRc4*^(zpwQABP%~-Xz(gGzs&o7HFnJW*-9AYtIOVMN2Q6&85GKY$>V$bjWB0|hA|DUAttjZoAq>c z`q4=Dd}%vm6Px1iwX9bOvK%W5L&U>16uU&=_daL@6l~7W@_T8>^+IjSL(Sr4V~rna z6jX#cm-lsgXM{ce&kL=UvW!*5;Ca+b(9aQ%wW;!QW-|qVtyngc9%3^SF-fzMf3qP) z8D4BdmKZ9uw%;3_H9Z2SE_gI+KGFZ(i(0dnFLZufp~gvL7rH{55XnaBkOCsxsIrg{ z1TPfarH64UC?_TM20KBR5tz@9WTg{Jq2b4-`F@ar8#IIkRJX zfuycnokuXzbb%tzOc*%a6ssKlql@iA1*s2f7KorY8B_A-wgl4`SiJe>O9hWPdesgkj~*2#oy|hPm9Fdrh}&_&9O(auPNt%b2Y>|W@pFI1XRyg@Zhwx3h~$Q>&1;=R zv-3_E4*{!ZSAO$kIP1o9(600BA- zg;oQLYLy{qLyGyX5*7mWYv`N5_v^X+gG+3!IUqlR)Cil08V>e2n zetU(F{9fJO;w?fes}MB8zL*034`6raiuSPmWXK~0>x}vUh6n;f3@<4h?eGgf$2N)1 zjdfV*mDQ5%#mnCxomd^2&sVDyn$}y!qLKc(+181>J&qE?1IKB6dOo`bgBDCPtMaf9 z&}gbazq$(gA#g%`EV_6=&X?5jHQ}7>7uwyrJB`7xo_r=r@SYz;F`=U}qPs#WyD58} zcs+E>GJ6hX2>V9oQa?B!XZ|@apvYA-mbU2zw6KFqe`Hdh>90>f-<-;WB3CNI62h;J znm-0r9Vr+4mHs8E=BInWrCl<8XfQYiLDT8gHLO6Ze%=`F-*un~b{>t+jFg@>^hb=3pJ8Y?Hm3 z4zF(hm2+V{r`CaQ4;KG?R5kwwWC`7`HCTLJ-xI&lhObzVDhAV7cS%G9qlFfHgxbT? zd#ch*l;wq2?jrxuSrzgQPuNL+n;Zxdx&IRmv&6oCPP$UL1<7W*mK49H3AKKw%U%R? zeJ0cV+AaQzri919wVs%&QzTUg)bpxqRX#sq)r7mG6GE}#e*u`UqW7noCi3HKz*HzNmH#3Z8HVycI4!;t7K-taT&Z0Z9z0zLK z%kHYL>CqN$=p^>}xBei^$Sx{y#&!+ZCxhNlH^0k<9CePfI;Y1=CF82kNvwq7dA8|9 z*P&Q974}H~7iBJJ*zsJkUsTi~HPDRr&8?l?+%OtOml=S((~-pAVVvQQ_fz!6h(8uw zZKp0P_QZ;#>00mP^R%hzwhv&uwc!NiIPM8IKtj#?Yw?|Qetm2>3?A0?rq#3=Ha15| z@O5mWjj6v{xJz7UIDx*sS;=+K{IzTU_R0Sd5_vw-hCg5#+&lFum0h1g!1v`Pqo5tm zTRz-?_5H>TL9(e-0KRV~==>d4OZShBF#%HKJ$yn;%S!vTbm1SEJ~D@Uam;XS=vJX4 zsu6ELZ5+qwqjc)^Yd{7T)ui?=%`VI~J5A<5kcm|3pAq6Xkjv)cgEAvHaal0PWI~W#m}@6>u0R`SE~UYypU>tbjK)7 z&O!Am=2d5m37cdd2H1!-n?BSOx#_i`AB=>Ovxx2wk9yp}XZU}wGneho%)@co6Y2V= z$Q^&^+CNSQlk<32Wr4Q}?U>dQ`8dhd=A2MvvJ?H~4{Pnn zc4E0~LW#Qo*&Ak;>@$-8DC@*jsXP6yD%8o-!&%*NUNNfOB(h&u4|%@Nbz?e@tnsi~x+@!8bJ5R#;mVqq5MIfmd&; zbEew!8mr_f9c(DC4iq9xdvGd+gXOd?xD9pZnQV6j#{FRVlstzAd}7a()Au0wCvDT> z5O|F7A_i}#12=hVGP&asx+qqd@lrTi_bIII9_OXX@-jk}r&htj(?hpAL~VDz*CnPc zHtceUKgMYqm<+#kA6eLC9J2_<6c;fBTKlXZh0xs{}{q_E>Rkhz#?v>SP!Of&T1I2^+~$ z>t8GtgWG zAImo)mY>fLA#Tg_*E5~>rJ>8y(j|0QNf1BF;U2yn$1ntPS{37I<3?nMP>v0EinFMn z=%rG}ahT%jO%AuZt78XGe4I=`Daw(kYYjVf_&wQeUGH=C|IEF^Z9-Eqg~@2b%jCaJ z*^P^IT7X~-cobE$OL+wwPsr_Cv9fN+AyS?g1y0WwK zMH&*K3SF+BPwkkkX^8IHu_875e`M1eh3?nr)Ef3x?L2+dkBJEr5w7XQDMhyZ*9QLf zY5Q2FT;SS_7$Fxg+s8C#DiRcTA_hkbk~@;&`+QlycBd?^%6{v$WMv*A?zU0vRFS!N zCsWVzV9Cum9a#RPQo?Qi86{vDdgR0mz=Y(85U4&}T$|2L!diP<&Zh+sUqxrHsCwnC zRZa`P-h~njuG0|OmpnCH%IgC(bEb3Uh@qkbi}@YPe1_PXS$H-O)D?z^<$m3cjt@5; zeB8C}*v{^Tsfl;Yyn4%hCldU<@(P@pPv%Bh;`X~+(T~|HZu*$W3b2l;_{q3)vg>-; zHJ<$->cT1S5$>OU3n^(tE38}}QM`K_q(8T4D!@@zgXjY4p5E#!f_Bem=7bzEx7M0? zIT#!on8v@jmLHL%@I;wpb1<4`$F#8sIhY zI}#q|4=}Z=;ZL6IY=RYMHnc(Vyk!}&ZTu!EE7{l&^RGbv!2UQEIR)4t9R#)6c!t|? zX=}GJ-!G;D#u_+-s@Vs~L*}>Cd+f)T%4iMfD?e+(2*bge`MNsJmhJq6ynQh`I${HN zFv&Cj9ewSlBLI7LcxO-^S)_+UlyVqrFISf%JE+)w9$+uhg8lKRuUE^zui;%HJ)iq zShQbIY_qp?F7xZTlko!$Z=-8RX}*1#<44MLrQ~=hptpWk1Tl`(As1&^u6AD>%XhRJ z?vH8HH^MdIf&qn#v#U7vaA+4FbKJ8G|Ly-Io<4YV(f1GudLG3=g3A^xu(Zi)xl^nyi87PuJIxl$s7nUo8B3RjQEY!hD5Kcx1 z?P-z%>qcn=S(JBljurOx>T8B<{)kEtz8mglkJwiJ3`w4u7s4A!Fh&} zl;Y2qx#T7(&5-Ayf zh_!?7mkYFX+iulvW~Odph`h!rsnhi|_2zc;+UN0~IVt1VT7-$F#0lYE+t~do(!b$k zDe225reCCa`XvD8PfqpAc0FvhsAuqFXYwMZ3J9@aU|qiBY?sc1N0ZO$4sRf-@LjC4 zK}JxUiB()y@IWESswsdW?P#7`km8=n)~L$$MzwV@yOc{kWd#&FGMx(ojJeD)Qn2Wk zg}aZ;0zNfgfV3(0uqa|KVmOlqHDq?7TSVehW~@zjg2lj~+8t{_UWNxnGHGF67Rhdj z{u9w&nF=DUIKK9VLGGGC3SrcW&j$KY|Kn9{_C%6?S?Dcw{JPzVbML608Ixv`| z<1c&PCi(VsrI7*Y*R%2OTtwHVA0+_Wdl<)MP{#StWPhroi3loaEwDY3%0kC<$AQ-2 zdQJACxa1HLLSt&Yx}&u1(^6mZaN%N93~y2L59P%sDo~M-84V|TImns`ckN-aGeGE( zthRTc-zeO6O2n*7n%v2spc`^lZlSb_M0b>Y*5$Q`hgswqw6R(Z$sFw1DA9uZc?IPKNe~uuW+ z_{IjBjnIo#2~yk2>O^IxOKRiIESUm%$#&_S`FD7E0Js-^Ee_J&eF~na)P&J?fJ|?u z2F8pr>xx4Q1SCTg-Rao(g7Tez($kfYi`TT>H5sbSDlMv0wx5-tKI5LOZk7kc0Tk8f zb|ieT`+&y(U#VFasS#kEKiaRL!K-T?@S0x4_Kvarb>RWvl|OB(LgEPV8mV0(yT>3O zP!i1X=s!fXHWd=NAF%e`63l&=G_MWvO$H_Z83>CaFousQdPFU{;@U)vPDd%ct?V>B zTvJ&BPm3QKP>`m$V=jKO z^99yg!;Y6{BsfDZ+#foe9yt=?1r`zNWzN47RgoyZL-j#LrowOO+#J>=`|ZDBsF~JD z@6}st|yqBY`*erT@#d+E@@qM?=~m7*l+^(n$oYdcp9ksfcK0G zSFg{Dab6{LL_Dp0{TR zG5j$!NEECtlG3nRL`D^0RPon zcmSm6$mI0RWDjBdYbY&3GpZi*imqvS$ya$>Ea~V%jqs>1Qv1tCFai@CL zs5*ncjJ8K=iiKg0L1)y!LNoB4ctjcc&3oZ6-bHJRi14`b3;bsz&Irc9D`S`#oxo@M zm!UUFxDIKCB`=EFwS_^a#3UrSANZwaz87}qB+22wpUA?M;I-+1HNsWc$|cwd5@Zzx zcA_FpuQ~e47-wa~L-p)3J*-19$!gzW(YR-T&0ckOnq-2@g`wa0t6wtx zu%TbxHo@>bT-)15xcB6ZFk1Ri1P%;=cV((w z?T#?Tg1^+rVmD*W`;5acg9A`PZzlT9?9a_GA9tp*ijsc^?fZn206*p>>_WCHR;8*R zf*|Hrq;wjlFr|&}alSYf{st0^b-7q;2hRo0dZ{cc`-ZelJ%BA$nyDMJ-oX*6ReVjE z>73cLPVf251Cccx{>=`WnCERwtYI9$+J_BPeibyf5?8T0EX@K#o#&f5EvSmjjsm#C zdT*8xPrB?kql05~CR&ec(=w<1`cC6pT!*R5{sI&3eA3AlpcN6iRzU}q;M90?u|Xio zgniETL}Rb5bw;M}(+jw3m5ia%85LU=VrfQYXg)#f+eUCdjw*vp3$)e%%QEDX;i>s< zTf~Vx-02R^)4O?<=O(H4;u_~aC-AK9!CNv<@djflDaJkR;1W)`alyYQusnUo|A<%3 ztDdOt2Nt1+d-sCvmEJv1OxxZJq-9D4)nn}Y`o5nz%d#N4TBjU`vgt2+HKo%T&T^>p z>&rVLv-hcT$X$t?wwXtWkpnV{b(j=;>pWcdBW^}~N;lWQi?4q%Uzon`S@-G$%R1UP zRmt#+2(!WA6NSlcQvq`8Hqj__f?~jknjiXy4HvEeuo9j1jiyS!GS3~nw9Qb+mg3=` z-OzqY>J1)?TMe%_pe2{_#j91gW8J$nxwR2~Rpb^)8( zxs$dGWk{@hxXrb#>*|E9xx6+N9;un&bJR}zzoUQ6BX`Z-%^(~Qs8p%xNOED3L@$X z(Bxh&ctBT6)GfLkgLLO1n)wHFdMJ1Jn#_w;9QBDnT$x`ApR8|2B`1GxM7Lv0a4i^X zcT2Mhw- z^ci6qUk|D0e~FyKcd#NNGESKQF444uU@|H)Ujh?KZSG(ao`SyFnHmN|RV02|>O6s7aZ{$+wZDPx8TT37`Eg}OHH(N z;q4Hp!GNv`NpGujgO8j&gyT%i7A=CFG_@yDd88YDjswWzb#QrX>XsXxh5+zdLj87w z?z%{hk6}%;&RCZ9l{#%Or{~rv&oD8Mn_q2*j$V->3Iw>yY}Bk~_9cassmR0C03Tf1 z%t+K3X4>qdW?PxN`G6fmc@sNv>$ps>{Fig8$47Y7?&QYN#bfLY)oyen%$%0B6!I zPU8&Dkf_E#6PCd~uW-$I2)5n5i;Ae}N-Qj2oJAb$i;?xndyn!H2_w^L?Td$2*Nr<$ zxx3~-r&e{q?$iLR<<8AQvo5f#x_W9{J!)SxGDX^EDdTW_X@T9{TIN4B)n`TNdUdmLAq+pQi!1b7 z&-HuMJrx!XhL}7xVU~_KB%QTr5w#Z+q#K=YIj>)E3`fF{gju$4RS@S_mvDh~X`yv) zQ|7u6=ncQ(FJamSXFbda*lnU`JPO$dTCyjd=xKCs2!^?ZkxN{a>$j zZstx^G%}UoI1b_LZt^`nTa&FB{y4IRxG2%TLrYLZ<#iRQlh zyv-5FGxIlW69FGZXHeDF+i?oH=}Xlt_td3u%P2LJ4*HP<$H{YRR5@VOBaWF7(UaS z#pJj9Ar9$j#izb6d155|=J5*+VsWt}`G2jAtx(YP2Y>FRX6<>(}h=XpFRafxh_&K6x`rHsha7iCE6OFp+`RJ6qzn)8;_~y%R_I$F&HExpSnu zZxq)h=e?*V9nNzmo5qh=X9Tf;p%7dwM_`>~tl9u*GBz^F8!nm;?O}|IWiMzWhz9eeN|fS9mpCmB@#vJh`P5R_ zLv;tgCyyo@%w>;aDT8wB^zm`Ev!f1k+!_|+5k?;u4pzE@*iRc&8yS8_%w8a$s*9)E7Y~e4Fbj4WRG60${VVS1x$1=@ti6xhY}*A4wwtfOQ~9vRHmR+;qbLw zTNuY&qZ7#IKbJLU6cy~QL7@G^6>2{oftYQONO-lk37I5atbV#I29OC_;!e~q$RS|} zQ{6TWx9ud=L=tZ#x=snUl<7`?DjUTzYZ)C}@qfqsf-3w&Q;VPy96FHsrQo@wAgYpF z8JT1y*Q_Cvg_ie)7E7mZM1%DmeiF;*`742W)3aoiey6wG$mTnRON~=&+9BAQUoWEl zKiw&Dr7v8-V+?YsGG~?;`#N(TH9ft3v|I}RAT zSpGN|_PwBP3Y5LLQ%>_?*K$S~1~aF4 z{B&@rfz=tpOPOd1g0i=Dkl_DRa^-{FYZ0{-v4!w@1Lh#~jnJM36etPYqn&`cEA zUM6T=s~-dAQEfpZNd=x}*5hWZsj_3{?(9A;Kf7FEIyW$;1svdYpevaE{G*)+-Le%y z)nX>y+i9a%bhmDB?;_>x{W25!kd@2jClsKmJ6JndP?!I?K()@=Ue;O>UvConTbo^f zK;N8y5KGR!PDzvH!9vNCU)w^;j9YTP7d)5;*+u}aFNzqSt5@MKwxsF9SYxW|RgIZ# zm7v8TNtU_hfH9E6Lb6kfFtWSA205NELWxMtBRPK45jTRto2tR;otQ3_C5o>}jeF?g zLW#O_4ooZdfnlY6>|$mlwADKdK-oY|GQYDPdu_-wfzFz4gWJMRhQ!3$hdj7*B7d`R zDtszuzEI?I4!x$LR|-jseq2pUS|x*h4*#_j{%3Z}iY3C=&p6S2T3}yEN+VT4RA>rf zHwh_SLri1b#OG7%qa!Xifl%d(QxyRc*JJ2D0QgRj$?gfcp@Oi_8Z)-6 zuK%0!lg#Pxe&@AAzn&ca>6>5wr=#Hd(1nbSlS8LZJ^J$0qpv?5XmW?;S(x+HPvap^96~t@@f(+h)v^DSql`2y8}i^H5Q7 zWde5ji=>znjH}FIhVG@DfpG6b=&vG2E;86R^qxA@w{oeP+6UxG(;%iARMmPRknE{6 z5#K1|t{}$JwlLJAf*YW>Tk5EE4dyHQw|=Cd`{N~Sv3@Uw5yGo{ZgI76*H%WHJ}=w; zN@sn8F<~D8_Gd=dQAq`rr_7x@?EjndYWc7PQq<~tA^8ac^Iq*7p(mMik5f#;0Dp+1 zKl`b0;r52;5GLUl7T9`*>?p`p)6o-?E5KCTM?t|`eLH1octPj<3vRw=A002H5Ms&w z328y-L-lz@rr8Gb*_4aXd8k`P8Gd!6hVYyXOVMG<=SvA98-&d21Va zF&AeWCsk`7jn37|qjt1Y5hk`8~PpL&25s1DU_i zBuEa^BSG=%nJA0vg8XJM6icu`7=f8TMeHXPtn5z(I!~zee7V2E+(?OWW(o8g&%Rt5 zUe>+jBFOhs;Zc`xB=cL|)Qy__;0;y#Ji*W^bK%JGRBm!Ue|@P*5EQTB$H zC)*_ZU)3=gs5}~jm&+k%Gk#yyJ?`mPN%{inK2_+t%7yB53%*P9kr3!2EqCwbPJ6;T z^|eX3pBUy7=UB;D!pZpggF(o49$X{3$fEwLQLPhemw(V0ET`>rmR%%HYXA#MqU zz+>-lT^U0A(!EV;1aex*r^*h15X_Oo!@)Rk(zcp6BrRZ5=B9Qf#(jgOKa%X{EQM3E zBGRfz(M?L~i>sm~7ASCPvO}13EY@wRgt|0Ee>R;74-#t@(RIudq=AA&+05k4GwKA?M<6A3X_o{X&Q z#;()Td;m&|qym+rgedlM}p%U&!hHPIKH-QyS0?)cU0Xi;WdX7odg zwDE9wtqc)ko~AWq3p2TA*T zYHGrh*)?gmWQ2TLXB5Ua`CV!}>T*4_AM#FL9=svgtAn)uK#vsADMPzuIsGa9N2yp) z?z^e-6 zB^1=y&hBKgsqa1XN?_qpV|~Mf!g@>AIAs`lA(<%MJp%Ye{QVDLZoUXM|)ZAoEyu{aE z?@4m;%NU>k!c}iKZwKR`_OC`4Z)H?sX+oe-D3ch8dfkSNLZj}!GSm5s{Ag-H0MmuN z+9d%#X-b-%+AD#ZBgo$l@kkd~nEyJEgikw&$A3pup?RJ{+3R!U;M4+)XeLj-mk6!7 z<+Bmbh4~|`pBi@{4VKBPv=n8se^4-D^OmS{r|ta#TFXmLBhl9D+Ozs(x$3OH7|t3{ z>`jr*PbFI@p_aguA^ql%J4q|18RP-?pJ`)!?~|a_CyHX#`mncihY!;t0b-ctU$)$Y zC~wsMI6`c(Y||YqdIv4++>OCT?Z=ndnupdB>d5+yNYOh%sSRIh_)c3XY<9eA z*j9WGD)Q~?MNd3~x0?vJL_u4n{czIA(9ENh0^C!klv;vX+O6hG`wEZh;nhP4az>PQ z3B7~ge;=|u-G33O{|MVGIeacwjX_-m_Kv63u(viEsj|SsGN>Cr-}CINXiSvXbRTRP z_IeVhW^B&lu&LM8@aAxX6$D)2ZZ5`MK45mf<$6pk=!wwF0X@nU)pf_uomISizi~(Q z#)|t@okrr3Ot@#_wcpzA)05&V-Ikd__5;WnD}6^}R|BqyTc<+Go@MR7!*j*^U#%+H z73VdeUR*D-WoRRMZ1Dbfh_0|6sx7MM1DNBrbHtU}7Cmi)_Sz!UJ*RjlrK2vhZ!0Dv%rCDC(m6Fosi{asvLPwvqS780onfiN`#)H23 z%zm%%tbU5Sg!!p+Fnm0jzL6aY2@*Ea-*DbelG0XldbQQNn2wb#C&0KD#dhmNm0 zdQ`cbi4vbqJ=bfmh&A^&({R%p7`glemc?c|cf$%P5>`s;Num<$NT1m|s(q{!g})Q% z`)XpbbmF<8UJgC;g?92BD289-Z)R6wWM`8wp4gzkG=HQib!Mu2_^S1YaAaR6|NWpf zg97zV#L6sbdAJt7giS`~4y`(VX{ZM5gz|DFG5ODQA0fjrOC#m#`X&E-VFx8W&!A;hafU$MKu>Lra+4*F1X=#u1lOXUIEh-)s#tD?} zbfsS0nMyXh+eK>=iC*d`>9-(!CzB`&MOGb@d#t}7NWsLH(N8%m=Xbrd3)njz&EHoKsQCM2dw2?#YT=&~ z$*2f^e+1(%BFu8UadK*UaB=7KuEZ&wJjve!ygSwWYza$VS^A}VB`NWxr0>QZu=M&O zBPrm}_`8UAWwo}cX+%9uoy#A#Os$9Hg5TS=`@?^v<_dSBV)#-8FgocWVHOK8SRtBN zL@)F5W6QI-_dMbr{XGBL{CtBl43&Y6!c!duvKM`8dzPQ`q>BhLeVktTX>tj@P2>Hr zIx3mQthoa-B(KUv?@ErRLZua<;#rtvSD80odAV`^zqsp?O>+MXY=jqW+TW>&(v-9(v5ohz4N3}oP z@kwh%1pFGF&@9l4&?CQx($xsmYmsI9;ZULDrvX3;Ib-kT#yD$xgC_p0d)cO^xVc2r z*)pz)2f83r7l(&{%6WHE8Zv5NuWm=F64q*zm1`-V-GE(Ac~54t)0bBF1R(7)*#Xb< zGsCc0;ucV`nTp{&^R#gBz!jJ9xo;Ta9UlLat-*nu3vf+;E+6UC@#jZTBTMwZ9{x$* z+;CBOOjtgoE3>`llEP-DDkd;EJ*OaI3gie4Ul$o$0qW~FqElmLd{2y zyE=pO?j;dA<^(x~6(81<~|xY}{=E|Q2Z8R)|w3$uG@((nk& zK_90v;zWSWYL&`2tmTX9AHTEr30Ibk`iL36@5(k|NA zis3L#Uj`QyD5jq0L~86~aY?c5^&;xK&`*_ifbIjk*teyiwP=t`_>AKy@QE5Fkp&FQwYN!~>faY58BEd4jM>uMCB zXU()sJ$TFf{-evYja~kxlI4onqgV@sHg|8xznMLB6yin5DAK#I{w){L zslj^^R5Km$n}$mPgpQ0B#szYGcf9*ia~>!~z3R)JiqkK>XIc5LZtwm(6KCF8h}&5Y z)E0-O>I~J`tDkzxZv?kmN|=v5G%J5akNA5{q-m)`G?wlJrRF6%hzJm3Xr@QIn56xW zvRJN79j}-1nwW{l1mm+(<$`)|LUd2fzN?jK{uX&(C~kS=dS}ui)Au*OJz}U*&yL4l zE#p2)Df2!nwZjR_i~g-*jDh@J_ZlrMhsEkuJ&sg$EcEy0fd=QTY~(YCe52#loN1?K z?w9arC3Scs@V-mj9PJxAtVZcSN`AzFMDAz%?@|z7@JM&--^jIRfltdx6-V&X)Qj)K z)OK(I^M2a+_V%sT{1&K(DQonc`>-bQW>DTe9tHq|4%|1wz)K0I2T@W+x$O7g>%m70 zF!98ojpV2h-e_TJ8Bf|6Q^-_mZ@*PY#PxaAhYEtj@ww$6w$raP>TZ7-7qf#f_Qkf; zLLl?Zkz|}@+J6SicNqxJ8qXw)*;`Z>UDE?VMxrgRYw({AL{~(+ z>hpLbt!h`u0)>eC|7iNss3y<6@0qcc=~$tbQCuLIx@G!+AOi>?3p1k?El8&2X>kFf z(jfxMVu0+Sl`2vcMj1sQBvTPm%MvLfOE!@uQXmlmge?gnAprte$VN8u-t(OEe&L*a zWi+=qh5p3-EWfsShxAypLCs!4aVWdPPTkPce>SWU# zi;x>_DHn57=ocgjURQ{Xbmv0Zdf9=1maS$5>mcJ46FZ&q?3bpya@bH_`m^e`g2MWp zNv#rxdEu(9(iu@g4TleG!xI_7u6N>rrVd{eAJsLwLg#2+;v8cq9{0E>)_0{yMj70R z62%6MGYLbdhZKm;@Qy#N*PV<}n(uC(3hi!!-sC;Ue#r*CW$S-N#nAAm3d7pJWZ6hE zEbTiU5tN#4XqZ#nS3qvQtcb#$MT8>NM{5pkS607;;1fv8;AgR>HD$89#4yxELcj<_ z_@Z>aWYUEF_J}&3@0;9P2F+~iDE#(_E_n77yX-iK67nKf)v{yjGYvj9!P)om0hI3T zXI=}i__m>pJ$8?AZ`e%&kO%=;6v;`sDvf8BMsRxT_<-@G+ z4l%(wPY{x6ERQPpPtEK4aB%Kg!Zzo_%{BY=ar+w z+0x3+?SsI|aEi;^mqs-eHEqb<>>}G7dTY3d;Fjk~yanyUL$YpvTfLW`(b%|$K8+ya zZK{`wUwvVMB}p48To*5Ose0Y%@7A98l}1(oR_;wU@hVx{2A1h<&3qHd3_@Qaub;%A zES-ThX;kZ3-D-E?&ZEp7rw?t{`jY9^YHrF6zV4iSrCQ{3oms}CFwx;HlALDB68>QF zyaLR4S4@cv1YKenn=gehebourTGxq~G_Q7b)r$YM04_T%O zXnM@g6)bE?#k~r7*~nQHgOi6m9>Kf#q3+fZ>HJ1SyKAJxWL3AO@#Cw~wtF zbG`fZGC(952`!3j$bbGNv@_TI~c*;V)tdv zL+$&Ql3tr$CT)FW;5z}OAka8s^pjK9CDa?Cvn8kJE#!-0|h0wC0N>!A=n9TxRNv86OPp&2U;L zdeJ<)a!YYUKDthg!Z9(6;e)Z^O<8;0_quwQO8VK*Gt0^Aq*LB%w2Z}wH&fhr~{QkhWZ>vkqCTJPp} zm7=gu5&ig5hi_T^R-fDWE9@&xJDpqNs6V<%3+pJHBal^B5$TjQei41Vma@8lZB4yO zOpH4uTPfC?jZ0_e;5`P%yVvQI61hEskwmYlGy7T&R5~fgI+p2$CbWG_d01FyUXa}g zBOG1~xBdZD!6&c(>uCb^_3>T2xj216KE`Hya6!Tu)kJusXrYF$a{j^iJZyle{<8zI z41bwKOr}i;Vzinaz2*TsX-}MAFJbd;ZX3ey>x;DV3JTJJg4bL|;HDJ$XhhqBsegC{ z9OBFQ;E>JID{8@`<&noY zDYD20s6smV_DGL<4!pUoXkp`XkH@0qu{7BEf4rCow%x7W53v&)H6|aVPl_q`)~Fax ztrS%539+cQYkBaopql<G%}|oqaPHqFmApVv11Yxc`UVfF*g@gE+mp}6kPhp6EOm4I zwmR=UJa`^c)8Gd>r|s)It83~&660bIl#A)Ti{eyw$J0*Jk4u4f;sl+_wT@QA=(7P| zHiMHzyN0M8REY)n>{UZ)G&6bJPmvTB$MOw4aY9P66Bu7ouh8N*d^%+ewUv_A1?9M>oWY=M(-O`#C4|q?6@szB#?y7AH`;)4)Xqd@qYiG- z8J^5vh@ERMOoavQx5a^Twt%qgD2{ou)Z7(?YwN&4Z`hP_d}df*WhB$mOIR3ro3=5b zepetpFS1mhjX`qK=U0j&WZnCG!%oV}Qy@&OZ8pIX_40Y&7}`~Dh>*L~cjP@6P}!^2 zn%U*5qeBFPA655LRafCLG}%8oG^%`Wh3tLVyb3!7WYG0yo!g+vl;6QqJ2&&t3HtYZ z*Xb8|mO}u#7u-YN1+Jn>{#k$!nF)s(u^xA8IpXNbPXzxR$tl&T&c4OT%_GRlG8|Ge zp+J-FYg!^HJ>`dyoN@Nn@MnYXo%_R-+niblz?u``_i-#!ZlZErc(-!-Y2AG5%H`() zVV^}Mh{pN`stfQdy_1OyqToAYPRR5|G-I2*-zCp9C=a1>9NUL8L_)9>7eFznOqEwa zbu;jlN&G>IZK*UXodUv)#y&%28~V6RL1F@AHnKyiin@v&-JKV0y?&7#>Y~pPYc4Cq zfVG^~gJWv`7P#2tTg5m%0F6ENbmL2A5iXbT)4;N-v~@*7i%%>OkTQF`OSZ=pY#>vV z4RUnlrt3>wYmpyro_;{;I*TK9@J#B%dbg37a6IZp8XF`Fer0QwpYJlFYYy4yjWYYP zoG@KmNML+(KFcXn#bI@~=Vn#*_Yqs=VI;*%L87P2Ll_riNXsRAv$N)Q_~j(YjfB&O z_y_BMApR-LH>JI5e~wibj=-o_SB5UlTdrK~63LH%R?Rr<{zwSiFNkAZ>L>$VJ`Ff> z+r8;o>$z)Vkn;(tOHFq$dgZUoPN(b5dV7~9C@SS?vcB`=NYT9Awk4C3oY*3rXz8R! z!Nsz4$6#J_0X7N6)*|UK%w|mXu?ud}*CR|TpM~MHHL=wA4ds`|u@=Z4AKEGURV{M( z683xw57%QzQM{W24pxJF?OOR>k1A!(_#4S)6S8|pPyixz)fn2XgVB-^EUYZRVrN49 zir4X@lYZjivr=T8He}KG7m`73EE?eEYl>&{G^y#~30{eiR_%WC7I`hH2#;FdC!Ba9 zj=F~-u2;^peDS()BKZ`xR2?ibUatv3xnevT3ETBAlk45)iQiD<8+3V0Ik`(<+R|?= zU6@)rQu9eqgO7}PVpBCf@?;>0_iUaE3!YND}QlTjZ>1A!Aa9muC*9JpO{AovZzkdf>& zMPm~bYj}7gMpIA>>Z&OH&v(+BY>LVA`8W^}{j{&GWH!jT3|Tzv zd2x~}P!#+Z2z%XcsAOMc%v=5ulUnPW!s}?k8|sF>D_e(kjGo>4Ip@S^c~SG`X98ih z=Jl6z^-jERZ2_Khiuzp6@E6#g#B4gjTYW`%X9L>NV2S*#m>&k3*?4aI({kG2H%N&X zwGLVv(t8ydynxJ9ut%wNeyGcS^=VXQXxF~p8Ud?q=nFxbBYg1WJ)Q2|ky#+|DxNh# z+$5kB>jN-2@_2#CZbYGwq}*LqIihC+D;GhGWHZ?UtO*kP#JdwL=nz{yi9RIN_{sV+ zM!$^gG%e>vN7jdObOAe>$3bC>Kdf|Oayvk+gkCIBKVeWo+r1g-64Fmd#~UVuwJ;MNh1M~TPve>^&1>#dJK9iCDViez&+iA>q*Wtb|

$X2I5jKX^GHK8ezi)67NlFnFRNq| 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

h3Q`q` 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 K-=j|+egk4nGh9KgPua+TO{G@mks< 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%0DiQX%MDHpBl##P>ab zI(=4Oq@HT(!-8`sDDrt*YRVeuP+OsKo+Fuu@xT%L?KMkBQEe6VmT*4N27Bq1nO#Ffqt*&+9I7;?L z`yy`M>?73-MMYC25t<==I~unsCJ8UZf{H!xc>GFErI zh{rs^gL{a=@1dA5mdSeAg7d?(f?xUD5WDN{*dEL@AB%buv2RN=cx4p*d-8Ckqv=KM zWC6}7{~#*^m#j2y)BT*^Y*6@|#9O>1+)P+27N$d~2@8R1i0%om8&Cpc*F{PMnd=2p zJ@i|<K_HD&|{Bme*)=Br55ceN{ z_;DxP(Z68j!~GxtpUJJ*tNZbowhngJiEo~P7PJ3pjS63w@d4+!@9LO}1)AfKRt-hA5gc3K(3uJ}lP?ZH1EWr< zF`xwJ8srm#0t1d^Y52_VIT$~210!j&|1Q@Ld3zMuOWbSDp12zi*7pRe7tgA@y;>B4 zVL(oQuV*&MhPXOV;D4~` zT4JnDX;#WV=qRBgjZjEs8gn!@+KP_7{E8)pe;3GU;a#xZ?jw)f zSnjzLD>!ZyTF8Cg$AU7edU{$EwK&B)-Ns!H9J}MqGsI!-cmiW_@F&oqldRG2%BtrE zpY6o@CpcAll{p*5fA5w-xn;mn__wI&MX7%Nz_c_K;Kmy8W_1iE=9_WQ89|})mk~U? zED1-Cc+Kl{QRTa5_|@uue*(9j9uxd++sOrvHLVWVuA9%Q4drF^x&CoImN$5uZivqt$0wVp_QpVY6DY z@L-Sh+sc#s0f+}E#Cp{4aIz-FBSiPe7YE!)@mhD19#98y3r3w(-)p@=1Y}WT1V2gc z)}2P-{6dksZ~AV@VQugmM@C}bqS}-OTnH&&!YBnu}jQB%o+n6gU zqAon{DpvfEcvx%mO+|0g8ahF$3w9t`o(q0GKh|8-@+eNA**O;`aR}Mx*FfDGR_UV> z>918oz#bZ-MW@Z^*YK>|Im`I}M7EB-UVP)QP#i|*xihqYJDATS^vNMj|RXxSy1p_5lyP`L;%K1*F zxEHm$KViqQ?foPiKrQH+Q+?$A1MndH=RGL2#-l(UA9_`V*cr3%T@K|lsTut=bOv;L zLJhY94M`C8d7BYmCF{W77mgWQ>B|>%H}-fr6LpK$Z)#d8<%D`+DnwPb$#Izt zf~kk(dtbB=Bi2K%laaKn<3*Yq8=U%t)mD~+;02b$tA%=*C2Jd=EhRgC%#@IDL+wVaEujyXpXk~pASsCHxD&wcbCCLv z@uHV1lk+Dq?F-{hD}`h}7z|rZMpXCR;{@~V#=ShCt5z&L;}K{V35!2138Vly&M0Fw zx_R2tndM?maert){NOi7Ir2K_vdxSI=d0mVM7J5Noo)m=^`r2-H*j_mG-ZgM)-ejehG_VKpzeY&a~KytU+pq?La^kdZJuC>pKCkfC8^jzIf@k9l(znMK)H-N7zF>h?3*To2n1$8>G_NBurQ{{Z=b z7LV|U>Gg7L&YI5y?iTFzy4cuZ{#1-v^QuPz7yiT4`{GL zqr4yHq)vx+?g^({`3cAFucyCok!B=FDIg3Gn-RnxK>vf{nh~o!K?-XGNn4-pzLyI; z)TA5q7U*99Jcc;~iXX&epNWQGZ{<_7Ar7qTJ^hHu^cAsL1XQhrq+p<6QIAo?V%ZS6euqB8!#mFVB@& zo_O3mpgtaAdLAqONO}7}Krm2E8=^3iGK{Em1$N~8R&`+ehuf%HpcyMX$|Y-!m4wN_ zwu8uzF?r;BmgMCw+ktWm^}!Q?qSf{hFJD~BzOs5p)}c%0%fo*2Ro{h@P_?*cd3CWo zS(`NTK~>t$V$2iDF

wj?lTi(H{IOQ;^LB;lli!bjX;lf4JeC&CReR<{@~0B zqtNo!vJ;I*9k0us*OSHL2i=|JNN~70aKFvlz)T0YFg8xA$;aReByd2EQIOW3>n@a} z@>i#?&QM>(Bh7=y4_H1!?bslj%u#Z(v=lZ|PYq{zL(rBxy{k!bTrBx)^@*t#S-;8taoySW>0aNp z7;W9v!xwgk2H4Hd{osHMstpV*JIV}i;b$-67-qvZOgy!bv6Q@C=gJ3}D(&Msup&J4 z>4%r~+X(hL?Lj=VB;-w_WxsOM?&Gtaa$mt_;Of#`2&}+$f0uTFp7Ee46#}F0`U?ym zX<%u;m7wPix_Kz`SQD&8@+WV0qI9-Q)KVtqLwlzwgViJXi+@Qs^(-bSZh=rC;q-^0 zE%~pJ`Yzee8D?CDd8UCe*MPKt!0IzLwsGHnIubKwtCypWWhHza*Xu=0#^}Sfj-D5fz1Oc4`hGfain;G1ETrYfWuu(?bGztKM&~TOk8& zDX1&WOoNX%7Q+3ty?sgZv%BUV7O6e~phv`Kt4ki%OM07ouH*9pCd6Z<`-8H@(kn-y zS7E6Txl`m^f@E0L&J}is&i^Buo`2XV7p$0-z>l31saf`v(}%brWaLk(CNug!7Okn_ zqpWqG2XhorL}_U8guHYTjj#|e_GpGyCh>=5*Y@VaY3ir8q0HL$2vk*C6ynTMWudH^ zzZ^k3%h|DgyrU$&vlKEToCr2-Pf9*7#*e4&CEV*m?Dim5_4ygqD>0WJ`wqa|4DL`l2^A) zHRKhy1OA~Rs=Crfie1bBzB}WldLH|w<4*(l946ykFfzrjJ5X%x*~o56Z0pvnbZNxZ zFJ0u>gS?vZb2-KI2`@Nj6symL;UkPsv!(k`e+rFnsICfGD_^e^;GfMI;NxlyER zc!`)Qscv>kd)Ma_zGOqWHXNZ0f!3qbym9Y~7^d6ZSF59tmt{eL3l~7+G3UC7<)_ zYy( z6|#vkX+PXDdU=CD_75R-wn2ndCv=a3EWV6rTqK+orDE-OPGpUN5iXj$%kx(TO3Tw9 zpBOX$Lj+gruWHn*{%9P}8po;|VpbfE_FV^#yYwqME4@ME9jjW}143xnQ6H$}L*on zKE_P?erXFEKZ#~^VoaAz&0NgyJnE1Hg>{yu)@jatHX$-;_rRj)I%$Mou%ba)?&I~EKr89h2kQ2 z3?Vo}#}}BpRGXj|EyvO(4F6CiomwslSw6Dw`4%OMkUbLtpjUlpKzN?Df2kvoVRe@c zu<){v8zcZ-7K)|0bMOpf2?!4uza)K>{pxj)(tVpYR8#$%xNXv(!a8+{k0s83p59H_ zu{>EO_{2@RQeJ#$wJhBe#d(KLUjogYGp=&X62W zZo7ooZPO!;HYM-!^i;0x+#_U*S#?bU;_tz`H70~oC`}bg+ZBMEc`3X4df@(*W*I;w z!EJ;mXoBBQPd`?@asclXp>Ke_zw%|CTy7>r@W*>GG+v!no_e--W;;9pfsJ(!1?1+_ zuZ5?oSs41Gp5S(&afMs^~eD^)=d~#8W8qL){&U=X~Mzim;B%QITK%76*T`9;Mj44!% z60>RFEno{QJ5v(|uB2QZ?J!kh^~_yHiP+xl!71mpWqVK_8p~m^KHD#u>sUZf-emX# z`^tO9KBCHf2k!nSf4#Q#PYA6U)CS$Sa?XwSzCLEP$A#cGq1zLtvu6w^5ghkC$NxpD ze_>c@HJ{+NQa@&o&o;MaCod z)ldknQcLN@)i=P)9hEa!b11AZdzz{ zNoekaFSVqvjJl38H|R|Uuz7ODTL9@oY#xm4@|<5ZClaUOpbQWg<9e`RpG zrsJGyi{P%9n&=jsZ-1~#4Zo@1-18*~B1Z2~sY<&v3EhBf39Yn@)|4B+^T?s{)Fs;4 zTP{doy1luQ_qM^WN%F}>VjGE}@#U#38-Qoy%4Q4h%C&>^st2V9NvXx(_oF=xTxAKE6&S7d1*jm_p zy9Td&0kkb`wc2uu%9dUZ+Ul&Do8Df5-GgPd#eL*<&jD1-{2jKk!Ju7)*{>K%vqx^- z?vyD&vvbj^G6g@D-M0_M8TDU0oZ0RTk?nj2tJ+tWr>edbO`wH6JoSN~9HG7qR{ZN^ z#?QT2^Zj)8To^?oJE?0is9&9!gn0cO_mNp*9M(}6Nuu?W#A6Jb?t|72rA^S~*oH%c zC7y;gN)~fxQeSfW`}t8g-kdRpm;8xx!_ZzJAS<_TEpg(_2ROLxP{1HX1&%o-YPh|R z(NKx$C{M74Xy)n-2j2p-V_9raUiUZs6v^w}!MNPknE~w6N{)vg@DZz-RE@h_HhBv* zo?oY1a$tCIy(PX%MH_Olv>MAKks+Uf4LNTHuLJagyJ&5&Rdrkk=hnou{26$=h&@+J zoh!2twFzf!%|^!?hJ1BN4HQ8fJD!l2(wI$tTbY~(G_~JmHeHT%{vQ}9v}^shN!?AC z>88=mZSI*6Sm&kfsus%zqUTs&*bY=5SEi{MW~T1LAZ8p4E20XMZ=-}>zH zEK%5gakz)k#5?0!F>J`~q zc)5sl$xj7S7X$E0#EZpUS7V5mdEEy}LeJ$4X1r>MOARt~;hjBBq3%~_AY9JX2LTkK z=ff$6piDm6{N1&0%bKcQ9q~+T$B0>N*`~_Zp+sR=43MB6cZd6%MZxW)d3ag^jylI* z94Wssv5(XXjN3Y%dUS`T#cMxDu-_<#lmEdBXZ_B1ah?5k`fpLu4=)*O&X&Sq!D-&z@O+ z>z7h&qxd|ds#5e_N$4q8`Vu;2VO_s#&VA(aXE64;jOtu4L!v1@F&dRyNbRCLNCSZB zmH$?H!bL6|@t&nOd~NU$FT-C?0PV{6uy>rM_p83dwVhfVgSCHIq4wS#^)9Ab+vG?3 z0xuZltNJ?gE|KejWu2xAPRuPz5+6;blb=$OxzSW|q*^*zl0D=9cc(Ai*%rVDpgM^e zdf*VXH5zE1-C_)7Ttb6QH(AEj!*LG#-{xZT+Wx>y<1LTnN!^Jkmc?7u2s&^Cf7h5* z-%kQx#18u2Zl?DH$he~bK8o^3#22`&#@sNFuDb+jsafov1->a&k0X`dYJFyHp?pp~ zBVa>Vu>!>FvBt|tO&eVe8H^_B}Q_aA>s-@ZAs)r18k(lF%w9JTG12m8=bdNE%Vd1hq7ygH0(=tvk$- zNNvyi0bU|~Dfu^KJjgxJ4Kd?gaCugCiqQ`CLG0 zk@9Z5i{Je@=?fjKtwmNJJhRLSQ=YV4E%=yYO1;(>qOxj!R!jnK1zTwlJJWDvvGi^< znIP;+X<|r6+~(HIwx3LmZ|t(u8nX&vrxTx!5i;8FhReNyP<0!(YvN~8w4?$wOEh21 zmi@QIZ^x!Da&3R!YfC@$I*?_U;O+3i%(D< zOIL)+L&iT2ogg`%R1_ZMd)hu9z;@ZvN8+}rCGV^*rqaMonk}eCpFuBhG;gc{0!i48 z$qfkrPtKrQ79uk0pB-Y!{)dELIk20kzfyvDe)TA(Sf3-9ntE^V;Ttf>1{ld;=BuLm(L)!L)A>qmK6NV=k?^XF@WOmOWdGSn8{Uy$Nv-1AE3AKR z1qWcejN{$Rny!83D_i{u@s^_1%KBhaoA*T5o5oTBhPO2t6Ie0u{vR6jcJd3{_BkGi9q z2}&9d0=Z!fe37jvQXaU=jzk4@h`MdwvmJzD7wvso{X@ZDS?{0u#s%?l3V%D9JG!$s z%&n08os(-OC;}F`C!Gs%jyIS%`)o7{-)Z@eQxy46Hi)qposs5r`6s*&NG2?prrk>> zhG-Kw$|VMbR&-Zqc&TI7jq*(RT%I7kSC@fLU*B6|C127V^+yU`Tl0}Yph?QbtLD#k zLx?k(QJi>VGwV`xsFZ?{PQIdZrwVK^)v`J1F~#KfjOq^ctQ*Y$a&U$p@UxIJ+UnGm zuwo@b22#8fJnK6>Spx+OAyGaT0Jy416yQx33s;3W&olOWxly6`Q|A*-0nc-ZtiS(l zotQo`JX(0C9W0(9T`PFKxEGq1PKXlXck!N$5}sH(?YU|0{8`}$hcEuEXpFqKnAyQs z_-dqB3l%vJqn3UCU~XPe6{{XHf-w@$I*b~v1#D)ps(^U2b^2yoSrl*uFs+Q! zgI|UO8*X8UE#|am=H!TlEg+6ICgY_#JM4`40sEj9x!e~f6kExpoIK(|?RM>CgnvqP z;9L=VxviA!zLi0!S#3X2%Ju6;M%!?3I0=hXy>~$A&))}E;Btv)tK%D&16x*Lo{nrY zfdyt4M6=qe1Mt^{MOOE|ST_tR!u7=o{ZT_v{7Fu4X(6FjY@k>SM zA@5ITbCaWzty*Hu^2IMdtX7{VwZ5Gy$?BXQL-TGm5T`9Kyr>7FBQdnah>g@8 z$Sn=s)b*nJrkQH^(#BSkPc-hm0u2Y0DUo8^r}pxJAyu=IS7RA;{OjSmot!P$1>Ob^ z$0hu`VZ-L~ua?G&9>J=%%Z+V*PT%<>YR6HnrNBd>X;;)}5;0M_SH!S{dnwQB$d3-; z)6JQXnQ!Xq-Ib;9MK|m0Boxd1>+ag+r!DBR*Nd4aobYAnb}Z3wVzC&dnSqTJ)r%dI z^N=m-BM{oHC3j&;UPW!q*d|Kcb@U@8ASBy~4dv48ZTEBcTHdn6V_%G``NYuvP+gNY zEjdoTQ?V_Jv7?E1wN_Bh2!f*kx?pDQ_QMyufz9?PU9vsUxeFILZgQko#4Q>gXB>kV zo=qXW4G_eg{WTKZg~rsx&wqot9oU*8R{Qo zsz~3bQy~@`p4s|nj&VAC>2K!)3hYO}5yyY`dXpvMKq31e?wx0#vccVs9=|OcKbihA z7*g~;mNqOQFZ>KaE%k-JcpB~97|vQXn-@*HKP+*>M#GU=UK`6pwW6NV512%`5z;kN(AUAz)fb_%l?x0IROXn5!sy#grf9G! z8{tK}MW_o|Szdw}+TK0}koz8K4`nBma&h@coaI0sVc7BbJu#|IA2HHc`!oxUCK?jw zk7U+R`V1xTwwX=UzNB!EUCSnUd!;hpp-r(IVzHg}4<1*C*A=Hj=VUlz%hX@{tNhHx zdqPJhPE@cxBMIrtLo*+M6iE9Av#P^`Vf5fHctMOYx9Ggd?tkNTUuB^dw^LK`vWT*S zj9;}K*^KtOtQA^-|5>=XKGeBHtDL*o-@bO>M3V|g7mZoIjH`Vj}`j^H4T2lXWIh8o-UfC>T-HaJSFB-Vc3eA>V1 z&|QIk_Q>=mL)yr|Ab3o+*SuLNgHD%iV@bC8boaR*K;<*yxlejN2MBAhThhQvN;EfQ zdARv699vq__E9Ot?ar5%rkYR6x66PXy{J7XC zqm=<(ZdQ9^61t2hd-hKZSWWtyOjPoHR|#+)9Fn7*HwLcQ-k%LHB(+?*ONHZO~GbyC%O>76jV32~f1;^+ceK z#|4H4l%6~FDjE)twvQrL8}As~MbcOTpvVZT&<$!&bwQmaYUj|TOj1W5h~9xvqMj>! z_f5Em3|xyTq>cX(0S{|ABq+Y3%)bHNkx43V4c?Xdj zrygte!wdAs3CDt$K4a2^7Df;7fHUS=z%vn{ifo##KC!hBxYQPyhif|RxL z`Hy$Nfuq}8x5WO{5af-GB^Br|0->>R-NrcD<`d$!n`lI62Z3@0hMl1(wkZ|j>N-g2 z>C%Wj#<9>LVJsm&2`=P`%Psch*Bhu)dDbGtQ1m6%ZBX%7SF0O4$NUz4K*7|1sc&i# zf1A>``C`7nBNzKZ`oY>)zQGn3$<7qPRhy&n>|AUv%Hy|2)kdCP;3NBntkx7Tu-$*ju1TRU z1xcZRh0dEiU#sp#2WqKF>45fF^BELHHq955Mw7J)f{vX}rxUm-~p>khiS1}1$Ny1@dS!NlB6nG%lgQ`*=XWH=za@WfkfeacCzMEi+c9Y%au$!VJv$pW=1r+d zH}_Dx9L=aXo(EAQ<7(;9w6oR|?Nyd{!CXl;1JWvkWTj&W6?AY9x?%hgD9f|P*#FM= zvhxStyR}Z`u+#g+#nbZdtzl{hUk4}76x0<0i;J4^em}eqT|4)uB$nU#n~44x^Ma$U zV0MPC999*_X20() zGy<@8XmfY_2SGF7_LG>6 zfc7aFlI{%IVLNkqwsRVGqgOrYIKeMo#drnTUH1g&l^VZ0+>tpHz>d);V`b8|R|(^- zhjmYwE-9~GF+)en6Wa`9lp{TJuZ6bO)$>2Zp7WF2n#O%1ljh&lzbyRU2~pjtx!E8{ zTv`cDeFe2mQ#%zE9Lo5ij46yVpZ4zU;mHjJ#)TtRbFE@K@fhr+^(hSW{O9oDz`=>X zMa|?Wb`NZJju~>f7}4ckiI6g%>tMW}f5FTM&#_0luO}ey^GeYrg~3{#@#Qw&{lU=1 zNwhyumKllBh`iOkaUVryOa=A?DHT!LB#gL}5UtQ8e1PpyIx{)JCB13Xiadu6aDrQ$ z+W?hRVs_hKu}~5{fy+-rVLnw(aQ{la+hl434)sFf5tJinh}-+twt3CdATB z9CNo#4i9X4Nq+7!(FNgz;U3S>M+>H}$0a;H!#Xz&R9>m#6L~s*;Th$0&+55EwRqvq)v^orL%$ZF$Jqqpi9a)XT>0M$lFj%)LUg`qRj#N)NGFjHbw;u63BD$u{wX5F zPUHQqOuW;y{Pq72YMKejFovM)|BKxM;0i%{Q*S0rO0ubFU;U9az_7p#Q>{7@He#+@ISNM(h zE}F00?>~G^eIEx89=LsaX9bqH%z%YLK!$JeD-m(c+KI*d0dQZoShF774J$p3ldbXq z8NHHFR`WD%NcMw=HmDpCgO5P9bVFYj)<-c<^ph00ekA0n!LPFfp6@N`i&i)61uso( z6m4<~bf58Rxl?|))T}`g(~;iRUilWBC@oJl*6W!TkBUpIIlygK+V@JZZI(JI59rU( zB7Q*;^9bxPZk}q?%MA`-YnlD606BdC7QAmZ&*Z})bYt>5n`%}5b7P9#P3L3F>c@kT z@0&u;y{xH z1JY)IHGYXHM=azK+$+J%od{!DB`9k^S(#bhaxzOMC+m&-6--0g5l;P16fwpfV+~gY z6&9~!dX|C%5NZMdAUAUT)#Oim-$*=w1w4^CuH4S00uQ0lZ-i;;0x;^K4LXG)a$38s|Uf)gfa=to;}L7k~naG#H1^tsku>MkM>1(b z&FIJtS<7uFSL1K>q(!g}A}ODgSlhUqyDtsqhknJ9oN#NnabH6o3(>k+Bl5VW#ZZjL z6#eO#?k|efrHqG0LM&9m`;Bxd?y~k2%Ah|DIYr&;J+7rYfy4&!GU&IjZ?q&>p7bjc z*!m}9S1`o zIN*#~W8GhUF1bb)cL`JXjEGFhz3!C}6dr0S0!5ZCnJQl6Kf27^MqXs(X&dNwCZwS} zbE<~BSb$GB6-b;4HUI-esgLG8kt6;MZIW-&VqMC5JdhuFxERO=1KU8y_dRRR07w*0dTA@}6L z*ik^|XT7N{PrIa~gw{0O>wFTOGW=r>Jhi(V*J%i;`27E60S*qd*_j@Sq1d^Y3Ac_C z`XOtw@w7WcH}e{3v!!ej5r##eO3RyCM9+1H8i)Qs{tmmq!%ZEEF{6kgF!fv6BLUvFO=T3RK;iz#l4|vI-ivzw|7f1n?sRL=@}%4 zPiEb%0$InaUf#tHkH3!D8elegLUKoZ+u< zPj4I!f(~5Ent;45nUG_nl9Sn92oW%PlWe(Bqi&4@R&t8f1L$}Y(6os*L*CX^-bK>Q z`@zX`PsV<1@F$OVtoh!By)UJGn#A0fKX-6`4M-jg3n-oJTY8)qh)}f&y?ANvF02G~ zpY6h_Li-((&nXG14C!j0+~h`|%S_8<-9&-26Xh*;0s#hH0^@9c33W?d1rffvEJXL@ zrFc3226n0R*HqI?SQh45($~DITEw%%ApFFn7HUZ?D=mbTaY75CU$`sfW^`|8ah{4K zQGW+QA_zN(r=aZFQk4zOR|hwo4QyjDmx?Xl4gACMTAH#^`qr1^fBYD+^=gT7ad*F$ z?IX+w$VuMHNL?k63}$6qFyeKB?2wFYOTd)ZTKPc@KEm;jOPJb6**`41h)Q2>{y)x2 zf6vOjv6W*=JZ-{@?XU}+7B*udgfY>JxA)`e))A$B1d{=DSZkdJ;;Esi<{RC`R(Ir? zq6yCDfMEzazG|&<@m63;rorpCnGC4Z)|y3+B9#X9q-@N{;BW=_wW~u&e{&YzwnNuq z#IUf3GdJ%YMAZkRj&~$&EUkNul#rLQ*zc)Dro>~s^)9#Xoj9G1Cbo!H-it2Vz*8D( zhX(rshx3l)tCw)jc{Xq5*dJyq)}G<~WC1n}s9QbULQ>6Kz*${}5z3WdcEgk-hPXP< zs&Og28RuAe5gp1UYi;&M`uL`26f%aE?#y^qUNmEf=P!3f%RWXK{v|19PAYmI9d_mf z&a}Q&Y6GXeC8|cj-@`@AqxR(gGL$aVa$oS`=okDR`)H}J|B6pf+*q%|tNg69PlI~j z0~|iFg9)|=2D|mOJ%?RiMGqDuZ#LkTmmM3$j+*jY*;8T8T5=WzuIqR@@?8L;}A+iPy?=!|98uu z=TPRRc1_FQ)e+j};F$>ZX7EV`bY2+P{Lbtx^XDhi{wea^tV{aqzL{Kcj;)8XtKhnZ z;68)Jzvm;t=0S*TzfU!B_VjY#3&C=UV34!3E~aGrd?Luk&(isx%#7Y)+>B~|JDvrm z{hSGXc@MnwwHBp$xOj7BS$+E{-RCLZnl<_TdTW>Oamg*%cJ`H84{;e}R}%05z>c1B zu{>l?+i$q%Ovw?1ht$c~B;v7p%ceXEkNp&7kZuy5$s?NQZ{BER-x9C&-e}agt`!x3 z6~aay-vQ%=KM$|TNYJ0y1(p(cdT#^nBm_&l|NV@k=Jf!p48I z!7!mTBA9p14QaYrBz1)l&OWXv1Z`b5T>}MpZ;g#7aC6q^_8s@HIWzSwYF}#np0l2= zthF9Wid8rW`douMLqi+@h(W>?EUv1Gn!qD*gO+hxQ^90o|-!o zs5~y|sI#{g0bsAG>lr&J#-}qA0#tqaxQx!% zhIl{n4o`2(oryUlY^eXZiwKys*6OkEN3(l2b^>sVP|)r2yr!JM$_Z)?!{?{ z|Hb6U?ZA6-O{^KXcD(U5ZI ze}tLee}WbP7R>m$(OSV>0cA4JoCc1R^#|xS8Poo7s1q6sL{e4>+xjxqUxld6((60b zPcx7Ll29bmnJdvRLRhD}A08<9;8AXXlE?d2`xdiHo3xp2X`uPGL2(!*Gz)&sKfrRn z1=FV0xq{*h<1HtIqwS;@XGvTo zdO~ctg-W`PfHl}$m75~r6$me1H1l5i77Md>pTALm=?L52T2_<4Ow}=*qihjyi$r5j zaiOW^kLu<|-PbCm@ReRtGK0WTIDhbnIQv*xT4Tq-OI}ZynOm-N%~|KuavwAoHe2rO ztD>|Odp+}z9k~R-?BMn3vrYS&*|d{Q*IqQL$xwco@e)epLAl>}fzZUU-%iZ& zT9}2kgsAe$EEmM=P8v`%*uiD3SJcv*GhP9AaI%*WvcZkK<9PhBM*UNto)CX;>Z7wo zBroF%-^XneNcG2>${V_a%x&7SED*0!)dbxW3XBy9W!xlFwyAVtm;oA5HTlezUt@Zt zt((lI{Ho!S_hS$KPx}Li^#Lz(Wj0#SEV!!1-CDlbzAU<4-V+DtV*H&8{v=M{ za*tr_SB*r?>cKav9F$LOa>S*Y%j+wn6PA{8a)On%(|Ck$+T7@9gl2$&mQRm{NMu)0 zu|QzEx~>qQW%OA!b>0fgi6&QZKEJ=H z=Vo*tq&xM8lA3h%8<#dMo$T_`4bEgn$RZ`kt~&W)#7t&gGlUKVD{K!jkFt_c>J|`i zsJF;Zk42Kx<2p`i*68Yxa9w`sI$X=|!usOt81@?4_%D&V2VZZdpFX?EOG)3WpZtks zaf*G^7vff52q8hF#&jTysrPM1-6Ck}7G6Q+s$SoBA^~DX2rX6?_eHS_nCgz&8%=Gm zNm8@wu{iT96jvAw!dv^uepk!HFB0D%Do-*uy9I(5*U-QTr%4405cSHBc(#A^@7 z?Kfg)H5ZKh)Rvf#qt>FL#dco3Qn6RI=wRHpHB<+3OprKYmVZyr=ez4bxDEy44aGz# zz%}VuL}K!vvWBtb17V&u^{c8$j@i_z>4|SIXc<{sC9A;FdFpWd^T&m>W8NyrA|MTZ zyRSG2PN~VID&XhilcI>#rgZ;)Ki!)C<{IfBpdZ7&-AiiEooZ_LWtsGG%Mr0b+QG0; zM)#qM3^kQ#SnEGTe$1G(SiC}UwTPY!a`GP*<@TDvd^w{lW{yu4Lw#%y3I~p}md)!q z(M0`>r;jK2lnWEGlP(+e85I6&uQDwt8n+~gAHR~^>~?lkhl(jL3_VvqHiU25!m)gb ziu>gT@9IUrH_TIv>;d>&=<`l7xuVd$6vjy`n65Elkx*Is%3~x6_?@)h}2ruKxTpc{8Vr(k2fpPo}2N z7v6U$TF^_NSjktO-f%8dJ$BSR=CH;yd8?xf^$;ZRz}o6(DM1`uW0vB$F~OC?`8>Kq zcF6D>4)r{oN@7&t_QK~fr8w-Kt@1oA6z$4HA||@(6psEP|Iapen)b}{T{POXM3Y5f zUJF@iD_R|SftT_koGX1U<7H6)^@p|=#}8`wSTJ0RXc_&s)S`Hj9r}l1<@AZp(M&0( zBXgasmdcV+|JvPTg8nunk6qq0X^OV8G}|wZ zzrb5f>1(NtW!*+rxMli%)0)bx490O(Pit1w)8$O?i*Qq)PtiI5(1Mq>eFa;YBK{3r zkhh9xU*b4E0x9!)!L9mm;gRzqRkBz2nD(K_8}G!il|jTc$z7Oe__SPzHr< z%`?fRbrfv@=@&mTQ#E0~#N>L+jn~_fPus2vMVX$ZrJm2|SF8J_D~W&-1R^;s-hl)8 zj9t;KbT@{yj-_otar8F{mpLOdizQLk?1CDcf~F#d>juS$+rU||2z{+EloG++A_K04 z{%S(g<=OH?`wN}#Max@J0j=c(?7w!_bztBCzv`oLy|^RxdEcnmFy|TRPfcSs!}`#5 zQr3R+P2AGyf_}JK`kXyUzE4zzEJAZmumTM=@$Dk)NwT%A)KGo z0rdSW$tLWXUmm~IZKU(BLn5~>76c@i3@^o=u$7K%FFEz!=p(2%LtYE%Dst;}2s|V4 z@Ag8+zuHA0AL7F|x0?Y9=}<3>`WyOU9#L|=Wca>%HOL4+1Cp^5WMwF0b9M7n|2~oL z@q2TVs=eyNaes>@)e7lmd;yz2Yo^mSZWse=>U7D&<@Jh~Ly*Ua*V0$Lm8v;k(ewpv ziN$_H=djehx_#3x7)BiM4c#u%9xdNUx?Aaj0v2vM=MBpt#Nd+XcB%H-rGiXwk>OPfCdx_G@;cN3Za3Uq7wicV2FwYE7UC>h1S^U-8@x8Wm03dBq|{N4Rb}JUdSjY8b)AHBX#(vBaevn%c?i2CaHlELb z;uBX7M58Y+PxS@cy2MTy+ax5hh9tY|F2eynv`TlH2Z&;^1^t1eF&G7W0*GqeBVOuG z_4iD-W{>^yVE^~>5=#gJwFYfDHdlI#2)u6K2I{K*A%(6ZFpK_W4YycW?=IEUX(!)r zpu$8u|38}EJub=n|NmceWzCd1*U1#NtbA`)WM+bLcyC#(HRau0ndK>2YHA)r1q7tB zGAm`xm8l3zD{CIe)I0)tBugcact8*_5D$QYfFk<4`rLls|NPIJa$Q{4>-l^mX#?s>BS*I)#)blEVr6@tQ+hwobF@}-M8HN&okOL=;k(bY9~lf7>(P|9U>}d zTreLCR(>=+*YFn0;^uftAq};~0jqys=SP?nc!(2IP(>G#wIk3Z{k6C&?5U<%_Y1@T zY}VGG_(tWa;)vks(oGFXv2j#u{h{In#Lk+%a0JWu<>1p>5~QZ!9}ms#sJR!&2Eaee zIGQ5HnQHlq$7DANeBkgiN}EQ8i&z!%4<0s0x;~p3%2NSN>=fvfjr-zi<>Vdy=3Vwt za?e}%eozjo!hKvSm-Pv``fBW_c?f5%WqlL3h6@yk*RHlgS0|t-Q@tKc6^gQJ5@M|sS+xVyr zKIEp0Tbcdd8t=oQVqq%?#E9ItwARbNzJ-s^U1}bq#1al=so#rKy-vMqdj@PV?P3Mr z(xYS0!ud5nAQNKC>Ywz6VO+I{Y)0f|ia!yENF|W%4y=Su#{Z^3ygoiczlmP^ImX`0 z&{Vs}_=W|0_{IW$Ef8gTr#h)YB|YhlrS_p&*30wXrjI6RGAvm{uU>`Q262Vi z66dvFm zAan7=P{%$)Vcb5FI%kA(uqr6s>QJNYPVXQv7#*4&&$v@!}IuI6b4%ppF=z3f{O3?GYTRY=?6*>bR;0U4(wRN5oWJ z=g$%-J|8{T2aqMo%IB6ID;B?Nw_=rN)_9Pe@=l5qB>V~ZK_Rn)d?b(<2yq7jJ^lz| zD*(nNEt(q&Z^~e##g+2&SZlTul^;*B?$4Nl(^3Y#(j~UtUlwC;%wq@U0$;`9?ubM{8n;Sv;xagn2lU@1GR5ucI;Jv;g34j%JbBJnYl|p0(zxl;4S;8FXffk+?P)r z4E$KtUL67B=PNqwQ?d#GY{!}K`J2+i+r+25bC9vci^sx^G3WuN?W2O!gk`5=Y-B!7-zQ5Mi6 zb}Mea%bi!f2AU|Br#i>rk3_O3N2C9xUU!>$ERk2fId_zH2fNr$ZJV7D0rd5`b}`dY z4@QmJsMm1npyZ3AS^ti;#idyfJ^bqD+n@I?S&e^r-E&XyRsV^F&(}!n{)_kmboD>K zefHh%FD8EeZ^yUN-X8<^satkj{v$Ov~ zmWTqcV8YkqQ}fL!{j(R{ts2dK+BZ1?k=?tPQ+|p{^g~lsG#kN zq+Fv5Hh$Mgf94`bih|oh!en)YORQdE$Ya)9i@AWR*LBJz`xf`O=3Y=17sxU)rr;$j zj;bx7m9MF@WjD92+#>@Y31nVwLeOiLUl%hC|B|lUb5oSuQ4_JEO}IE9NRuITOz4wQ z!|EUE=9CDw8xPIV9Z{DSE!pv0)h@wC+b#k)Xtf%VB|s|l9^8cx>0qiaSfW?eQw7T! z`0)t~$=8B5^?Awipo|=CUi<+ZpD{n{a6o&z>m>4myaB?<+bBfJTM~BHl;dHoDr{11 z7wcej7eUO>!S))m7CJ!p0K}jvttG)){%9rgm>MHEIs@-kVr?b5bJ?E25n7)MWXsd( zaZwPEdGKj6lqAgFP!REmFwlY;9GclzlSM&;2;V)TUaue+oJCXwaC~TSYEJr90B8={ zhn#?(=W({Iwc5~%v0%gdm8^tu@G-$Cdw9$+?K+VOO5(G_*chgI*+Wvz`*L$PNr_)5 z93}=U=QpMf@WE5hh8lM&obr$gMFwei@#-htVUB5t-+Q2ER^rr84##&-JJF)07x&hg zN<=Fzp2pS(ahjEw`JJP<(GO{_^D3HcC%zK*%s#+sPSbakL^_6m^7B#TU;fy`GV11b z&PL7cAU=)*EzkD2+hdmfWl`eO=BOjwR>8a$>GqMy$+M#j;IK-(Pv?4q_t9VDQbpU9 z7vYCy+KJTFPv#3O;8NtxD@P@OwL^v(STpW;%iFbvq3JLt=p{wUvgdF3g393trr{ga zxZ(oBgx$A;IDr|+Y%r({;*yl-cMKoIFFJSr?R9uDZOK@6lU1vx-QAZ0^eu!Zy%Nl; z_dHC$_{3h8=?})elkpu4O(Q!UVhv4p`7=QAq&i~ST#=#oVt0RsBqxKjguxI7)(9j# zi=+Qb+foz_#gCZ|xlLpUs{}eCk&D;0|Fx6g8<&S+FEx?fos)27CpZ&_x&M-^b*oL} z<0c|jwMS4y?F#ug*8;xBuCmL@8e(knc*v-iO|F;lv&xtHmH8m<9V7fNtbGaq4e?L` zPhJ)zM3Rl-E2dMMWun5|mqkcK;<3*`3=ubU4@q<~v!VU{sw!Jidu8tu_XtJ*qvPri zYVq%u?_cq)>yY?V>0x#>kt||9qhFTqHr#=L1V_>vBZ`AB?LB}}d#lTk&MbM%d5Qyo zpk4+Dc)=g54^&ro7)<-~8`!Ee=V$!1yw$#SlRI*8*7)1HGr|hfAkrD>X6Tr6oV_LC z7Qf`l6TwVh#g5erC@Olovj`9oeqG5PwTYWr>jj%e#=gCC)WsC)+N*SJByo1t@J#Ut8*6=bSAFZixl8^l^2cpgE&d=`>`zv=r=t2Q zKVfm@$R3601U-DhL!K|-oQ_ok(vqpaWLCaUu+{|Ly(Cv@slJzJL`+p%CTYi=^NtqC zE?Fl*N;r)4xC8jkVZ~)EvE|1a1Gc*lg#n8js1r$5kF1LU^p383SwknrYo4^TaLO9T zWujk^S{BQk*^+~7YBRasCEsXA9%1Q$r!<4uG~{gF#)<}tzm_&TkMupl7XB+LB2S-(u#fKg_c-P-XrC*9-G%{U^QNAbb@H z(4Fs|v5wt%HS?O&r>*m4FHN1H7>X$dk$oRvg^D;*VZtOu2Wl%)lDZ~#a^3yIZ_=F= z^KYFT#KLl8CEH2WpRaeH7ccT_IA{2c6E%Rl)5f1FbBWXcRCNo;p}^n}|KAMN$FSZ< z=We4OvFqIBH!x~jc`VcX|FQrUu_Yvz7-tC!3?5B*xfhaxakU|tCrEDxNL~|932g$f z6rJ@W|Dvy{@WR#vo=^pjKi437CBl#AP`HJP|E-dBvhvP1=E)s-2@2h_I_Whp zb_M-PTdv$)e-M7+oG@v!2~01O1EAiMT4}*O>ZPLGm0xEAboKzX<}J6#qK4mHC*h4} zW$!g_$r_|8bawdJmCs+!cNYm-45#qVrDfq_BHTq_c*WgN_EbQbCb}EsYpZT3Z-;st z@V+$*)Y_K^O<($Efw|EKYdg=jZGmt&^Z%8JZ#2=`^LH&yN>csIx)g5C$EdWLaCaA& zy<$pP7cLk}%dRDlU7L)|lhxx*1TY#GiJT!BB!V!Owk+oN<9K6U|0;dNOBOAw{-|-^`AC`_3#Sh}s2%fQ0*R;&ivk|~ z#_Dalvn`}BVf9VCAo4(-w<-vhrHqIR-dV*CI(gxzkId6$n59X?KRLU}XC1RMq`Fik zIs&1VqVz>GFLx-ya5eWjH#OC*Zz8iWfrht0sb=MNw)hl}13>S>4E1Dv#bcj90HrqQ z>A}O7<7885fS2rYupw}5+!Ag4JLK^HVZ_Wcpepp8waSQZA#MQgZ&lv6W(FE*#n9Ix zc3=oCgSajzh|=n*ds?Z)teGn3i-=l^X&>WHI2kN-70Jf3sLxK?5)_ zbp00~;E<%VGl|NHgS#cKtJ!jbBW;c1Y7RvjGOGeh3if<{t}ToK5OrMCZxOxZ2WofD~N2@TKC8I2c1} zyt3IF&#@FFf>(dJyN#NdF*zko9t+ea$6A~w`&NU=kpKnJzIbo*$(ViahA)>|*J%~s zHWA~?9<67MR2DNy-7S~Z9nlj*e0xn1^&p`)08J8Ay+pO^Oo-;`V9lisD_QY%&s2T+ z2U9Y#kJ!TsWFD6cA)m#rJHG#)XY>ju2ZW#YYC3ac>Q<>8(&Dn=jaTzYL_NIgWbEn# zs~-G|`KPEmoeUTTsbzP!sBdHACVI6oS5m0l(R9yxAXo%F7-kHJ>>#{kjyES*4{V3q z7N~FPfbP4#!m`rlKn1xezzENyd$@YmP7({+#$?u1W5j#%wT50FqczzKxTO_@-h+JC zMz;gp!TUvvb;X2ldU9K!pRpVFW-dB-Jz6SZ!Y8}h;3I zj#zwl1IoU3Vuy1?NH&C_JF~Q9Eb4eXB_kVh7G?(k<%WG%gO5P9r2UPW?|&#X%wM&2 zI?>%CdPV+TS_9f0A13SfchZ(Gbj<*2_1A@_pnTdMmafl4BF5X*@!lY!n?-5_1<(rb zY-BHWk7mrtse!jzmI1D6-b0G4H% zgl}V`F4(>wlxVa~V=v^0<9T(g%Iamt5d{0}$NhhENL*3}Js7WqTLL>G_G#go6FyU$k6SEzRu{Y1d5}_eQ|nRu%{UI8{AWm}G0~gXJf?uP>>;okfvs|baJ##>-#gmN!|oxRI;}zQK0-ayYnk&_D{DKSwyDP~2T{*&}a9gH$^WXOXTcV>h=WyGY3_2OInN>5hEx$QDbsi&^Yszbm-&8FN`_Mgz@i)+&3=%tMRej&YKS)cM*31 zA#JGLD4RX}&a2*>;QYUQweUxQa-@E?>73#1`L!z{AMxpzX`JgH*Lj%bO_%1Y@28~X<0}i}E6qtd(Ii6Sbtj&q4qZZx@XVt;DvYUX zu0BB8+EcgW^@14c_eXbs{y}+B5wkYF*K6W&0gU)ni+My3*VOO;s{=GWS4e>mFI;-Rh~d z&ELGWt3OS)5qjT}n({(f*4P!KY;r7`!ToWD=tpZ_x^W|T*IiE16ZOW3n?6*0hZL?) z$g_f;T|kVpQ{?0B$8_GN4Hj|xiD8G!onx2d>uJBAmx=Nocu@G0rc@6LRKaI0ZibUM zz>33f;haFvmwqQ$nYBi_nkV;NSq}69e2_1)d4bTM?{w`*GEm>#Y$@HjnzH%c%MF`3 zMda?>3!R?JOp6Wb=ePP+m#*)ktrL#O9R^&+ZkX()o9NJIZ|tOKwGDyLoQe&&3vvBY zk^E-uHjcZtK2(N*v%SKN?r&BGR!0oC3H>d6#$;!)#MR+&NuD*M`)|Pru$lQN!6M z8Mu$$HR25}2E#u%Xu=Y#=Pv&M+g`0Gwp2OnbH!&pG&73kQA#$VkN2wcWcTK1St~-@ z^&Ly6bX02OX8}}G)?Vb{&U9>7jCQXh1t@_M!dT00Y%03t>IshvX^Ga0@(uFC7Wak@ zm6L(Wy$Y=xnf&Q8&q}xLj>601d*i>rn46B`pDZB0p3N75BfHjl-Hp60^};}6@=nn1 zlyyY^O{l%pKG}0N5i_DHR#CBMa4u%x{2b2y-a*|A%gq)91g5)P`j8wm_b+<>`p1MMaW{J% zad-Hs(LPQA-U$_s&HLZk!O@)5LU{X_Mfyo(f@nsR0+8$~uvd05PH(2C$8kafbRW|E zS`y5@V6;AV?1snIpyXUC)^sN%J|#Yl*D#Ae{a&QWHo=s({!AqsHr{Hc#899qp?=oK zHw#HZ<pGGP(=NG?2siaG;u>|eh zE%EuD(nKIxEksizOzV*NS@%n`9}%8f<(_c04sJ8esX#uyIZ70oJ-tEnNKu`Mxyf>0 z61cqRrUK0LJ1jA8vdkv}qlIz5&FTDp-gUqQzo&fg6x4p1_>rllGeP zJ#g@B+KBmk7Gka^PgUpJU6h1z&k5@tp)EW*EDgYj{T&=q$#s&-{23Io++$U~ea7UR zQZ?y4qrowOPLN$NuAf<%t-@xvYx8EzeJyEV*!|Q`fYE-8ZEP41R3zhGwPM~57tS;$ zY;J-J+h;3GqUv}NKOfAL|5>cKcmUNteq@8tt;M?giYi#9ah$iT+-nz@-U5JHO*jf( z>Tv8Z9JSz-n&MyQPhy%7CE5e!DaX4Y+uJkX8T0dB9!CSXBVZ%({jEN?=IFUh4>+QZ zSe<-k?8BCA?3WBbNxxvY-ybJio$VB!`$NL56=-9E_VwPrgH2E~YIj{b`H-XtPLQ78#S?K3THW53sI5fdN#X zWX&w0{a={foO6}FcXD}Qe9?2vLjMo;i7*KeXioIaJQ8-Pl4xB7TAszjpTUj*%z2AM z{zT9J!;mYb&xCeaF+=_r&th!%;jN}UjYGK8b)4Dt+-3kPSr?-D`3dGp&hq@w8zH^* zWfqPMu4Dzx47F5}{~9w`TR|z$mCp8f6__}Y2%b;FWMWu6`O^)6Ch3BpyXS~%B(*)e zuaXXss!ifK@Zv8l6gd8NHZ(9XVwFfeKpSZ}+=rjSRv6IA@ef6>AxK=uPISq6wf*H? zighs)K4*u?3LfknSoQv=effi!=z%R6wzwroMJi_Gw>^{KcGo%8wmeO{^f5MMbMxqz^mIuzM z?Vz}++f&l(>|HA_uyMvJuGH30oAA9%YNvYf%k zI5s{2i%=qHXkQ>@%!%#{p1p}|{t+8PIlc4KnG^b%+g(E_ENik87c!o~xSL@?2Q))S z0C;A#L85JPDErZ)K&Z)^8J;Bi5faz#gy=M-1r$!)6>S!!o^a$ncQW$!IKU;)Y8E$v zY-}&{D_8IE@_-sf2kt2-CwL~XQr)^m!kGI4IXS+Lf!=7?ja+V(|F6&ay7LCF<}ntL zI8>>fI%9ZasdD`9QJQ;xDqlk~)?>Lk@~!B`Ly9j|<~P_$#5iz4SiL!t9^C`_Bl;y|~ ztz%Fv+Smlrr&He|t@hb6roeDMa$qb?HY6@Ou6RFELK56AcNKI&Kl}6v6fKSW<8-+_ z@44MlpY5F1E`4G(CJIfNb#WvANw~K)=3^ghWdJ-?Qy$$tcLyS(5Bk+`qq(&)TvB&_ zjwe-rat)7bB(};NC6!b?vs}Z;87$_;H~7BVR%(!rEZv>@=f6j9jJO+rC^wF0bdRQk zi9lqKtr_3_SB>EJI9S^%=PMH===PKh;9JsT4r(nSgi^jKK5f&c}Cr&3u~~HXqQDO z6g-{h5YXuHY~hV2)-K8}yo2-Dj%2xF)hk#&l7^^Y-*oo_XD$MpLe;u7jL#S9snrJ4 ztK^SXivJWMfrGh-KG##d2%MeY(v29-6y8?=>&y+SQU~U^ti%u5xmFfn7pr)d56KC& z5Qup{Nhnct*CDg{1W!z-)9cvNqjA0VPMD*NMrpmr1>M-m?lj!oYGPLNIuF(kfaEc$ z3h5|2DJEBW1WruG(RBvllKlPjYIjc{F^iebj0D$_BQt<=46ma&RTC`DopCs@U4$yu ze9f_p*S+X)26MA*W`FsE)mdM-iN7)_1|cUV;fvROj88naW-1yCzNoGUbZbZ4w6u+D zJeM*tae}_Rk@}k~L$z-N1mKhx8+A+T$1mB49UzRUDO;uMXb(kuhD1*0^e#Hg)Ejzm z4d|M+d3Z@u=0|cAu+6Li3!#+gP7hxd=c;XykHiJ}axy+M9V8}^n<{}cC4FW5xS)lv z;L_J&<;`S|Lg$Hw1y@0!j9e}#_>DFt{A^i3zwL3o8sr;#cB)~=J&Z>FQaw=JbQiVkeGmqap|kU603nxOCfISYhdWpKZa#svBlDW`LOHMY zi-vDfO-4%7iQOJ(I1yv`FmAC;6o_xk$%rm6smF7L_@Ojpehz-;y<;{|TA&fVDnsj! zAZxR9x0MN!M;IIR?LJZDhaNm)8p|(NNg>8fXdEq44AyU;y;Z;aP>Rs8MN zpp8X>!9eMh1AvCGSqfNda)M`+L@VGOK{)sYrH}E3^yubv%*)yRYxqTgL&Bmgs|dV? zwXfq>tN($Nt%=?KL~or37}XIhfKi<~(`VqVnRBFlN!EjE5VWwYHbqjMHG(g|QV&kF zVnK|JJlryhTb@t*ogFSE4MAn`&Z}QyP?w%D>A9(4I^FXz0#NK+49-f?Q#}*~Vl9IY zb>9wOJWK~yz}ro$Sb;+G^C*X17#`=1K=&U$;2oU}aSR!KyhpsexHfAoL8p8~2T7Wo z4-6%4R_;iDuPaZ(Za4mmLA$<3C~8!5bqP@_8l{n@lQvtXsq+w`j&v^0R3H3tke4qz zQH3I_)aH5?!ZW(S!%+JAAtQ4Cb^y=rFK`W>$`~)1+JUh*lr{;eI6Gg~5FpVF!t}YL zB5a{t=ll3*_T_%=n{i;1R`98G!NWVw@1AgNiyyaj7H`>1-DO%|$z1JsQ}5&bo1XJ? zs+`)-LX?MLxGJAiC6LoB!>dl!dgK4Hl&q3Vx5PPbR?Ppo7SHKYB43!lyDaISLjS4$ zFRbijbn|stP47*&{VTWa_-Bbr_U`BqT^MTUzT^~pu?tWlCRG8Gt9;@`wtjH`;!8ld z7x|wP(7V)0a@5lL(5O=(y*htxSwU?m^w|%|^yR?6l2gcQHow-nCVJ~o$;Lj?y#rJT z6g;Kb+gqIcM3^f55G^T}jtG}*X#*C{S5jwB+N5tp9m6xy^XnB?7ppgRx8#NP9r9I0 zf@WH-MKl7tHqv3$DK{@XW%?ZZ#QjsCw!ilVON^tTIFIxu4osH6aOTj7k`N> z*Jgl@Gbnws3Qj|;VqxiAC7M+0P-I3}AQ0MI9EUppZ7=?bVZrLnSCPLt+sk@4$S$Y? zvi9Cj`8iMG$&)=<*U}J;nDTSppv3`$A+Wpl*@)Po#ynND z=e4u(6a~`~sDe_O$ZY6hL1$wYaZj%k;c~D-T97cNMwr&0e6sft6bVKh*GG#jMh^#c z(R2otR$QNhgXMJvx6Bv%>cGttR&(+epTt;Xo{oIYwhyZs$s3=WGe3?F7Irq3nEd9b z{}Ap8K{R6vDCGC5?!41bE$6wL6P&Iuqz}4-0V*}`>oT9!N0oDNqoTX(kZ(;ewzV7&S+bV1^&8^#N+7l+uzo@ekpThZTb?k`LGz z;Pr8qG%dY9g(4o*weLMZ<;#6irTK=&ow2?p(X9?uty{Qx)@vnqa$ABQotWF9yPgD~ z4lz~Eq!gf%g7OHSzvLSQ?z{{PPVi%750?B3uLjm5H>DCD{4t>N9hnv~NbU_mu8MJu z8Yf?d(p*?ESTHaKF^Ox?0d<_0L zJW84gnt2-9!H5%vd7Xl!KvSnJ6-+n&hW3IM*W*lM9sr~dA;OOHnfJ0~Cw&fc>scCW zAq8<;Re(P=R#=^Qj})hDz;vNr*a^;1&eSun<+#Ux4NNC`vAPO}OQnRYXGQQ1C0Tq2 ze@k{u2iKPBq*aQ4ZwU&RDH3gv=D8ZC1$%bgu!?ZEb3pNNSOD#{onKthZzpLKbksf5 zCuc?A`n`#*;|!~V6BnRQd`zdyE)7NrI%ky{JMDN#g)4YJHGbuGq!#Te`%%5`b#Zk0 zcffnLD*);ACc^+cj6CUbCOLv!ae!1cs4zu+%A=a!IHR@M>1jfyh}z>zC3;h4eb_ks zZ$+Q7tBd_WVYme~i2_$;jJt$rT<#+e+GQ&4=gX)7P-7iSfa|&15F4W&j(k5)5DD4} zEXBbWD|4hrB%TX{a^wx!Fx+Q*l>A_}3IC7ktCiE}TKI6^Nsi3!{ylF8IE-_Nzhs3BF7q|vyYBqTpi5rKYFY<^vWh3SUDd*Ss!9VEbL%F` z<5y}4&+UpTpkUN%&ECtJeTQqNan`X1@)$Y6O$+EB1)WRGPHrZ|`1!7EzitOP>id^N8e94cM5I`M9)LwiAa?MO>|{lp zTP!ORAsHC8+n-R)E{1dpiIe%kh9CvSN6~DjciK+r{El8@Mp)S-Oa};N_OC%(0pBBzJZ2uY3Z3>R2I>>bCC)of0oNVti1z_W!Z~ zgXCv~t@BPtXkJL!A=-~5hH(4r%7Xx(jUKk99E3X!bZUxx3dv|VAtXP&butFA zxEjS{@m_%BQ=IZ{x0U!VOK0%hentn+UAjYtJ12X=E)}ymWpPaME>Dt^EL?1p$?jt(|j2E zbR5MnV()FbUkOU=Z`}ksj_z^!q?z+fy=-#1%fr11FL78^=!!1-Wuwe)YlDw}%z1m_ zOJQxa=}q1Bo9|mviMzp$MG;l2Ki@_3k26+8M{|Z&bt7r^C|d^5`w(%Ih(`*CpfHm= zJ36{U`c+d#dp7XwO+gjwx(kugi3grgNzO7VLOsCDdZ~j6=VjM!P2mnYQy&^ElJ^`} zR12G@WRj$+Q2jar2&A3DgGJ{*vc0$!6KOd~?Pnac9sZ(mE_f+y7wz<0yr$NE9>9W} zSiu+tK2r+;DlGHuwvY5!;t~RxRI~w!|MZDCmE5R3? zFj7?4U1r6!pS=SLBnNjPUEta`FXjwz?QEvdUz%-}_POHUa63CYEYXHTC5k31RKdyR zRyXl|G}!N6c{MVcHnxwL?Ytc|hh-7_`4*~gdH`V|F5WSl6=Y>J*2Qwjc9479x$fO9 z!y}`sp|r;II7T&p+Wo?cay5?xopcP@!aiNAQU1>^4cjP|48+;I_Kyk)k$+7N>7Tv3 zkrfFh8GcKHt8wR*xnoqsSPf0lsU^L^-!ZZZw2c_z8MR`J1YHs7>Xy>0^M?Dk@nXf% zSxG%&X?!`cfb_x8=};IVk=C+2D|cEktDED-mf(3OYGnD|aUKw2cJe~lLOL_NI0xtD z$>mxiA;`+x%u6=LfL3Q$k-R|y7mZ{1HxCeq-GoGG1YEKXdATZQy%7K1uV+(S9L8wJ zX7R3b(jNv*mECnD)Md^#?O!$gQ$BH9<{Yyk&bL&v$N7gx)7I13ED3-1q$+ehf35HRzvsDGSQa0fwWGhs{8v`@k z!(;J=s{mQseunJLyE8w9;{*ILLLfgBOF4(@{=4WT9dW-J_l?2$m`1ytAMUFeb_C+Z=6~)k@M>tw$^1Q*KH4RdvjK2em`@<8wQ$CZWz_ELz29M~64= zoUc%AF2Z_y4TwhLZ^t_V+ZMzJ&u4@uZiEM9Q2d+cpKeh{FfmMBwlo%zMYZ?peKf;h zL66TMAK@P=X6gw#W{dDf$qu#L0;OdRPNMLN06Jx*%j{WhLo%RrE*X_dXQ+6Gu5iUIQy+NdM*3}hC-*IbSD;@2ry2CZMx z`{k7NmrL1pNn!XR#VVG0an+hs@FQ&iXJgJPLr#pW)ehy_Ba5S0*y@-&-5U>Ph}ea zm$KKVaq60#lC8G|kF;hOCX(!Czw%tJ8PrBjIsfIs2kc!%7vlWldYhf{+&)TOTc|Sy z=`$n1JyYVK`k@fu!jCRm@SMlg_N$)?u~)!Teptny+#(KO{Mn*9T$A*o>21%BxY>8i zQfEw#Jr?I@lkDDJqd2w`L0@%vE1E3N-4U~}9t3iptS>8U8Uz7og6_l_9{{g0RWAm(fC2K9)SfN$mO!+qh+` zNa#R~2b=Dh`dWD-^udxDorXYXYy`0f-#F!ARNKLz?qg9`YV~PY=>63nVsBXT>nA%? zkVmmwnb=8q+|6TnvO7Dltnp(6eo8I2G&mym{trTh?q~O1dR&m=5(CJH=Ip@2-JE{^ z>g;Vpij+yk-A}+bh)E;XqA?|F!BWAcA*+OHkVZo^23q3E7Ib52v~OAr40-UPmAbA)feKzp$5pPW z9?NDqPmZuwZ}c3+C*F&f;lz{CF%uXNe+jpt19|H%sJ?LaDOuC^nX~UXoU|I;+1M>T z8|_<;WM$lP+b`3f0N-@gMVwvUw=mzh_9?h_3k~)4?$0_BO&Qrt!2lWHxAYWgE!Ou5 z-9Jp9^7?~Uc~yKjzy=+}r(I=Fyb}xLL2ya@O-B?tJ*fP~SWo{i478Ef9 z7YxGEPXZeWpairp>xC9m@Q2Ko{Ofxwb^CAU1u^k6ugXOF_E`*SvFUbvF~G$ZnP>YG zTBz}fHfc}MWtI4t{edhf0^kuk>A_8o!wQ%zwNsxE%bL_JY^&!PIBM$h#9b&@ag9lG z;Usilb43`vABnp;?$-d>nx=RAodMAn@ZBQu!LW2LP~@X7>uY$NC|;&wd*!PfLXLn= zUoX(FH|!%Hlsv*OtB;d+3l_k$5#{rfgUwF8EJ|54Hp(>qU?^3ecUS{yoV&}rEW5Y# z)u_{rO{Q=6h4x-e(%n-%?Vf)HH(HT}u3zpFh_Tvr8Pr0?<%{URai= zYl)#MZ5vY)aB7sdR1Q!}?BluusK+4P)08TjX>M`uZhFP~NQh#Ll@kB8iRn2(5F{yx zaQ$E{~g+RfAXGhm5FD@=x5ZKhLs1!$;CTYf+@4gDRw zRnaQqR1m+UrSJ}oiL=!=j!9tdJr20`?8+-QN({4uMY+2~t)(uCm?Y-x7MsPxgyv3y zSfongOhD$(aM~MG0WYMx!xMZBVdO$A^_#kGJHYVEm^r9S3y846_eCthO7S)xJ+*lJ zTO=Jm2*bFwXL`Wa-hB>&X)#6!woiq3=uPv8LhRBh@@|#-V zG|*QW#QLbJtXZLVN!C^k2FUVt+ZMI@T94BNd~Qp3z{;T!w>ZOaNrj*bm=x0V^Hg^r z-W8Ej>Y$Dq#=YBFDR?Ke*LL&?JbMWc>_qHKq))KdYsX6Zh^J!y63E~MqE*L{b0g^E z!9a3J2+YnjF1_vs#63&_!+YNqVl&0S3Fdg*h*0U0zR*Ome(V_ND3+Qp*3GOTn8H3 zq%*9XO&H8Q8!$N3c&$ZS@#bdsRGUK~`P29IaYgX73;EUFm6bx_r$H~5qDlh=Hu`CS znqQOwxWHc>I4jiLj-U#D>g#bZ?Wk#YkQLw?o3z?CL?QB=KgS;otnC6rI(n$SRcqyv zazpYsIS>3^;jsiPFGg?Mz3x>LRdpsqUeDL`L@`dg*Loo1df%@Rk^=h#$UJ*zJ|W+WS4z)#Cn z`G}j&%J&MIExWxE7CyU+U09**Ax(yqzjK0Etu6qlk-m_%#Sq%^D3FIShnN_yPti|3n_Sq6@%0qe&+~MG~vbJv~AgE|fbUTFahSs($u4Wg5oXwK~^0_zqFX$Un z_kb^Dh5G`3giC6CR>$(`ERg!a`;_@}8ztf?FJH!{7N{$~soFv@^c#6`bOEUzS&J)c{UQE;!B95sJzLs>x9_At}7tZ8j_uio`+eUfvTIDC3wwz z{5%M?bja?&YL?4o*pzb|V#p$i@3a>G3Hn&+uN93_Yn-XiUv)Xf(J?aS_$KuRg$(be zun%IPDG>v91w{QU0^eQE?=y2^M&7@Z{+(|}q=nqEq^KP`-S&2-D7xnCLu8W}bO>cw z7T#QTb*qHnlv1cba1PDsQ*Ab|mZKPE_P;Fl=zkW19~hpmP%75ek9R8Dm|o3RO!rG^ zMJL74z1N%Cgs`(Py|eQ~k9)m0*-@%2+q&AiMZK{m`CX>e?Sfz2#I-%)9}!ojJv|~_ zw{c1uAb|^;Y8NLp&mD6uj{AIpZM;*xcd@7L4m-zSg1gDwl?dFs^KJt@Wm$VDXCM~! ztsO$9E`vC-_8~5MIp_sdbF#J1l*DoX6;^ljG|&eV1}xRvFTdOuKHH|(;ebi^mmaPs z*xFE+*p$-IPQ`j_@Yof%{5M=Ii=@>#4$pkk(jqZCF~BSR0p)-&X)Aveu!k=CInKTd z3$JyEm>K^-7&E<0p59R@_$4A0R(@W>DbgxP*--v3P+PP@zFrUp+=p*)^mtM6Hb<+N ziI#*Lar>5j0om{jn_}sc8WEuzrSU)$mSongh41D+d&WdKX9+GZPf0yT?7%&Z-=_;* zMWF#uK23_WVn=oqYac>?_&>tBU#czf93xG~zy{(>#+K9dQ%uaUj&0mk-)&liJZ9eCV=+ z5W*6QSkcGOR^ih<4cWZ&{R9qVl)VI}1?iE8EcYkjIono}?=w4X8;c`T&g5b0 z^~#i|>zxZ{>?wETsc&aMNTczsqYOfy3)@2qtc>q|7{N;LH+RT>*eY-l#lNzlD^pjz z=1(GgOikTLg^t~Nl7FS`Ijk>rZ|NW84(8ONc}pW_{2$liy8cdhW7d&I#Z*I5!~S5N z;?=}!{n+xIID9=by!pFZ+1eJ6w_kD2fTAm};2&oL{g*=6`Z)b3tJkl~i9h z;JngA-IB`EjvZCIPdS!ZNRrlWV*4BpPDC}TYvMV}MnPlg9)2aKmk-6!QGYbG;O}&v zfL7Mq#6p&Vp=ExGB(#9#$aWU|b1~*!=3^zWz$+0bz69ln@5XvzmiApU*srwY4))i? z9iH99@Z<~<9BoR-#;5cM{D)-kosRZl_~Miad%Sr0g~x?5ujO@Ayq}@Mhp{F3BD#zk zb;S~iR^K4JhAd+te+zdlznuSh2&}9pT;St zF=fnCmJ6JzDbI|RI%z>%xmS_xrx@*Yo*!%p6j=v7WX#w0H%N&;~X) zzv*asAH)o4@REpetu8))yDKdTNOAt~##6E_5jsX*gufT~&>9 z&R)nD40ulAFpM^jS1{&{aE6Dy@qca4WD7)ZaXJIqm(K}_kUt8P+iK;Wsn7FqqYEJ= z%1)z9{9|%#!m{l#;ZDLcIykDt-bg}%JH zuL;wNqWv}&oWT?0j3-+Z+xU++|Mr3R=gVqn&tCO5mB@kKIxijy<`qaF^7*2!i^d z&yIx0he`{ptL<3`@Lj25pf+spOK94;)HL*JPI09IR%c>5J2}K&PKh7zyJeUg12Zh} z?ylQw0jAIP2aKI9TiN?akP?FzY=)3PO}UpQn~}CNC;hesS@L^G$FI+Kx7A)QJN9 zyX*GcP~zx+Bq1nx#v}L;(vq9ktn6d+^cn_1H7+EkTkglj_D6YKYx%N)f!5SDq#nK9tfIVLD!;uQPzNf# zjH^|~Ua>%fIFa_xlt+HI?048a6i33Fc|7Qsmni`w5C7ZZMBer@r+TzOAb)%-Pwkw5 zBs`nY?Ojhi>k`B!bl6LVY;qD#1;scqpRu!PI_5Qcs&7KY{CJ%5L}irz61bk&(~f()k#KP?bJAh+n30~l&`uS?gW%-xGc&8Ta zXfyhmUmRhNo!sS-u75Odw9gI?kectNnLF}o4*@Fe0d@vX;EgotZ~r*P zYlT;E=UXKo?vl#KP2uIQ7Hg%Y@de{5KwX-UUN9O4K&U!x*JVinCBHKaDR`VmBR(yX zeeYNYAIOyvMp)Swn7}C10D=JSU?=!4aY}A(AZFp(9x$=hRdxBJVW37tHiSP$!B>YI ziea!cSi!x}y)6-X?=57nD=22_jo5jjWHw)n0vrc<<>o|O5nu5MBEovkAvt+@8xw4~ zQPdiL{xi}*TO57v&v)WK6hNda?7YsfQxLJnHL6~9n(mdmkefPP8&l>ts=!LM!u%*eKf_Jw#z$_KG_*%tMUu}_;;!d` z=$-Hr?uRTt$3ucFw|z)oVYa&gf&DYPc#()5-s8G&bG!Py8PTt5W@3mwlYB!J$>-eC zAkP!IkR(+z{S@-!#MZL|39P}NeR@^Zz@0j&Dj}6R`PQ=6>(Sw1f?1z7G3PQ=jsdv8 zH;3WrDesM+qOL4e{wBXRKFgGC%=>%=@CxV>hn#au?UD;%Y}kq1tNlyZ0fzPJL&@DD zFBmQ0B*@b*p5gx+d*=HatTBe+Ve@uJJk2_NMzX`dJM=pN_=5D;4thkV@xBtzNq!nF zvR|)qW05#T!hduM3fDf!nt9A9+r1oo^*Z1BkD;j;wA!<4z4c)u#P2A_pLcgP`~`4O zi2dc&7BQD_bUH6G*^Tg`-=}QfrR7*W{b|G8WG(|uxX|BVz^5XbBRs8PEvwQL)g1g% z+2o_HQxH~%q~SfNS=ZSTYM7%mQV05W|4mMGf}+FEpTltEtqM`Yc`iA4m>jT}8C9cm-_gkRGBFZsc(9?F&i^~TP7CGZ=*%z+-tM9KKR7YMo8ScuOWzV_i<=q1A)%UPED?4WB zqoRh=(H9usM$?ZdZK~)HUWikCm-VUt18E_+lQ>Od3-oTvGU)WcS2Ge@EkL&OQ68-B z5ZI*l@qe(wPy(@6whT}M#-w(xk1{@Z*rmS0^!tN?j{Zqbm$fZZu095+l+wuIzsNwB#*MGjL`?ERz%zpAP{eT)bkWsfHwuj4)M6f=` zU}rC&&GUzIX%iFklwzCn&>rMlOUDFa8ND(VMA_v(ZlAHs?UA3344!UAkj*3ErYUuZ z^#a<3XPd3L2zI6ld)9S`bxzbe2MkUji{|Kt>rSe_;eVq3ylCN5{_$N{xL`K8BkSV| z_w&Z5OHr&uv0aDP=uKYNwDX`{WB|m;k0QuqqPNEwH9sNp`M5We{v!M4DLf(U#SbD( zZT-8RqG7uZj^mS+Gby(NI&o>)CmW5kHvwysXvp{v5(YH%^TTSCZKff0-W^bU@Yl|b z)yAF{R3ZiE1VLc*=#4-zW8@jJBMIKbglB|rV(pA=K$s^J{!7#LOtuqB$94qziDpeZ zaQm7p0$6Kxm~Irvey@4yh*Lf19M%{P%OmZsl;7&BX968CWkAPdDquB47p6=OCHgrF zXhoZx&h3if>8!HcVR82m z{&^&mUbAZ3)T#ZtjP5E<`F-#e$Po@uR^mxVKy(ivXXz%P1pVE3on5n;<4OqtOoEShA%)^B!-sn(7@#nnMmtIk$CU}ZN$k}(^D4!#mrEgF_VhLXTsQhQ90ECbr#6s~xy8qU z?33KhoH_JZUB>u4FIY<1=MvPuuT{Kz2W6MrLT~C?;eQpp8LE~Mfsb@khs4NHY<&-) zsu|nuHzw?|OsUt9F2fi6p2wRn%o?;`n&tNK8*$X^=~<0nSBRkqh$KH-D+OxIJzU(A zi+d@T6M)dr=RO2QPw+u=K6&IvOH56-Ve@ybDXU;Nn`W zP(+6MV;`B)r`*OqrGlb_8EHT*liVY{jv8XjCVHv9I5eF4Do#p4<+-A0uAcbQfrLkG zvxLl?=N~WHdL0k$PoH1$GoY(1ud}VW50`Xyywv3sL>r}6b6#z3SeYbM3GdO3*uf4c zgyiL^bAf|Aq82tsaRY@=!8i|<;0i>}i1=B(2Q)eyU-9H58MN@mv~kO=M(-JkK{lyS=o08?;;(K zJPtZ+f;K-N;SWu3M40T+u!C@TK&Yk^#dN)UU-3l*7tMCW!g#H#lN;1L%mLezO)s}g z2|h)|U*~;84SyY*tJYF;o(K1g$E68P$IrE<+#XyCfnkgMA@qhh0WqtteEvX#(ea># z7?s_JSvo|bcPWTI`oFN`%Z4;SuF}ikJ>A6ZXq!IS2^q~By=SjWJM!yE-t5DoN=vuP z5&8}qq>H``Ce7YsPl-3Ao|m|z`ta*LGirP?6K|NaJ;^!j&ZOsBS8AP<&2t?IRO57K zIJ;U+Som;Rb*Du-fLzpF*a>@)#UCnk|Hx|??lKAdc-94HIQ^{d4pN8qj9dNB99gtR zzP8pIE!pHsM}8PjTZsIu!cq!ddM&q-9w{WVLCdpM@^gr|P{K)ETZUET~Cvc%kn( z&kk54onwR1u^kEzoT0eP1B_N(yEzOsZDXR{ic;lHrcHK?9umM_bh5^6rg&3Xk?BXpRxglRThin>Ng3qW-@UX+|G+u+qZkOzozGG*t&SMD4u0bjCOXcC%TAB z1SDm3`$|f8=zH~Rk@f8(q6T`Fpw)0Eo~>z~!{1h3jKhddt^XRKYPdQYUH=`uwD-P` zt@n9t;nIyz`!Gs&xUnZJ@2;TH$I7n-fyMTKP5`X0`W(R?h^lza{sH0vN?E8JJJ&jJ z6c(Bg0B^w(df6OLdf1g=w|L8w1f2eM(f8TB30(&RJMM^m^d#c^?eKx zWx&?#Gp4cHmiph47-l(=7%)r)mX>%`Xc#pvJ3>ghy&ax96Y$#vS>Yla+iCn=Eu;X| z?t%0QYv$lQx{zrd8MEYz`Gf5k`To2PwL0En_o<|CGaf;tO&O8KlXc{7TZr9mB-L;Q zeR&<$Z399y1Mrt~L{uMxH_XdEY^Tr}{UsQ2v|=FbCrMwkw`ErpeJxUkexBWhl>Z9?xy!3k(ZwY%i<;7EK8= zkZ6=@z{Iz>KhSuzQJ-HVIW+(t!0yjEx+})ydH#^2Plkol)&3(azA+IT=057J=B?(e zP-ta3Ni4z;x&;Z8lhm%Xtp6^#g&B^+Xb>D(`zdNr;0nx7qy0K}CucA22B!$phhdE; z1!9cNpEU~6(z6YleX=g^Qpk>W=z=p7c)j<4ZI`1# z);xf~pvJn?0NQ***(97mla@pX2x+x~-lk3H7u&LK%KTp??)5C$z4}J+Gd=758sHoL zev9)(BqN{)NEC20*v6zSz=mlrsEM*^)v0H9EuoJKmvJwmMzr;#Q2*->{f{t%Q|BNn z(_dBtG>NwU*p`Hap0AJ$&$q6j?n&mE&zHVEvQ8dH2%0cZ9!9vI9|~^`*W8D6hT|FK z4R6X(QN8PP6xZZkt0#@-(PX5GJCg9gtCk!Lw(L9Xt%ItKpjabtkC{d<#i{#% zmI^lAcyN`;g`D&G5@vnhi1>-HdbfG?<@FFsZINI4GeY01;p~7Z2l1J7%~I+O?)mw- zx=ZPaI_|3VQ{R;z@HZ->2DG00TT{&B$MW)9^4c^q+U)+?vdh++@+bQ|Oi~SJnWH^D zNY{zYI=wVVSoc%#Xl62hH-`fWG+r)5U8?JAr52vg8u6!#tX-`4Z|#6!DIwzuP04@i zQtFCGSyp90n6e+4=+k7)4?j7L6|R`Aw1kiGAcHpKY}bT5;aY5qFteLQU0kyd+k0S#HkZ1g^DVCYzBm|K4{uKfsA)2{MrM1)bpBk= zX_36g>zqCCFoD%|rK6oGPG2aG+hKrWm~*6!rA z$(|_e$-QQ@ZJ>3<8#@jn;A)3tSzNH{o?(r(vjZW^ewf)0%x1eYG(Jz=MXSU>Z`cWlLzzyn>=9*b zk9EgTCNQ3lZK`UOE|wej#n{R=J5T9)HXIb|(XU=d-cPR>P zhsBsKm4ou-_-p-og}+?5->y!(}*?qY7_@q?S1s*o$Jl*BbT`YI z#!jB-x8+A!N_+)JS@y_h6QmoH+ACQ26U+92h``BJw$5T4JcZ}!!31|@P5pEH zp{5g}d(Y(&(qyw#c4>n}6o_dEHWK<2Z@$R+=t(ge;ZuS_%(a$cs6olT8RVI}!q;Ag z2(9Fy9jhJaL7w8-Z7q70bJs{cZPt`b0?zed;UgO$*%b)w`st%*CFk&7=Z!T=^6dSK zl9r`=+4?q@YVnQOm8&&MnZGsUs}QgXm?bs=JZz529o5w?7;CVsnbQ|g_>ybektx67 zeRr96JBh+|uU-1f%X3omS;yYxzO6qg10f4*WtWq6Rqai+Y*u0et8cHse+%n=vGEt- zoyhfP1*ISHIGnKxer?aMmDPK%19ybSC2h)WG>n;ndr`Tg3trJeL-RD>HN@Sm$?~N4 z^MI>Ros;h>Lf&73Ka8poAhqWX7tEh@aYqf>#^C|^`rE2|)qwmPkW|e~hrXH{GXf%7 z|GB8(9YWwFDqV(dS!r$pdBe?9o!K5k<932@Qb}%Ay*O71i0?;%KLW3u1{YP;j}(s6 zVIEz=dWBIv1&Gs@a!yY^Yg6q(EGQ-n7D=!DZglCz`pr{`9f}?i`Ew7GmCO3l$Jy-{OM3Y6AOP*27}( z>D;{U&p`~!iJhec#BX9lW=BL3iucpneGe4gtALulPtn6yd7Hw?TYFCP{ukz`IyzrN7%_-Us$w z33z&zd9lFy!<8JYCQl|qYp-)7KnZYYSmNnmbpG(a)Zmy1UBP)FkudIR6~~+OAv`6P zV|~l9hVC8uI}-jPT#*=3mfPo^2axLb&2-ERWu=ST^?c+d>Ztw7;c79vxm@!0%yK@~qlVaLM*m`* zzH-c$FguvbI!aF*Ae!Zmi~q{m*2$s%=90Y%c_7cGKY@6Zu=saM>`4>Iv6u8%4ZTp~ zSA7Ni(b+z3*P~OOFc8{XlRtVd&+^JOZZYo6gX%oh+i>;A*I5fIUhC2^I^|k*GOO0h zDJ);BZW|bIby?jr{bAwk(?Tdh_jwCPDm0H=09YFF>Yje7isGPxhMd!!^s3&wiRaEo zSC9Qh?1$ERL+S=vqBX*-8Oq4oED@D{?`jyU!vGgaLTd-M*gHZSqO((Wksnb`d$dNR zz6W9t1&WY{>vao#LtifKTzq}ED}MRI%ktK%-`QoF?YvV{5TYYRtrA845!u=KFd9Er@VL*b32zP;w7xt96f+!sh_s8#dG?AsI2Nd} zW4)(o(h}HxMgh0~1{TrUL+D1_F(jh1SHJjHygJq-T!mrI=r#U7zieMWm7;;^zQZAK z&?-wtq)#^AOXNKS@U>`h@r0L=01~p|HYy;5G4&{C!;Uzb%TZh6Q_LYFeD9 zcKB_Wc>J!h{!M8?Mh@+aHvdmA5mB6&RJ!|`fe<6{79*`2#kM&I>UO4_8g%hq6 zrnx?8VYz-tRJ{XFUyEX1pmbfwIBR`>W1@7uhmFbV+w^MVrRQ3LRCv$wmWOi+7QSFd z<7L-^7#D0WAZ7MBk!h}^gX~_AwF8m0_J;&qtG&8E*w5zEvG~2J?ZUw9IbY-N685oN zANZw4>Tx{XY?@YEE;RXIUzc8l04{l;&{YwH`=j*OmOR+d3R+|t_A65d-I-=1T1_2l zC}#D3m%<-Z5wCul0a~(kHvSgxOAW*v)cPrtFL($pz`Eb9nip3`rztNz(hXV29HHp0 zUK`{}R@{-5i9%jL)--t*$dO}(h@mrS0J$z-i$TmzWkrEG&&dY@_8SIc1im>pxjmRu zG8Ah^#X5jVtgpi>`>Su?N<{j~#$|eFd@!_dkY2oE$gG1xC}>2EnksIZkR^`ZA>FE$ z2$P=7uSR37TPsl6X4Ou7vJ=r9;gPNReTd_tEeTMY$|9Ms1>{KU;?e}6B>y8mxVlwWfWDCHbZuqdoQ>o^Z(~x zEZznR&L5`A?(06V%KhvLR|qdtL5u&mMXzE%0&otYnQ_kB86i3b+CJ5Yux=$jSY0nAx$imFTsdY=0lhr_i|@Nb4}`N1eQte{uZ|SF zxzBzRnwc;<(6g9)G9#SON(xV~r3(t=$0J&&V}sU~Ne{h~+vjUC9aL1sz}M~cAo!(V z7Q@S0?V)Qu82^mTOgTLfYJD@w{+YRejeb$>b~6I z)PYKnL<}%nT*M&~2L<8lbBC@Tz~3%9NG9(EyBP_2pOwoW61OgO%;a%%i34(hYxFry zl9N#EA$TAZO#{)yB-Ps>#AbXDhl&L3wu?%bVoLc}&Dw_;(4x%xK-yMYm-U`GrnOQm zZ8==1>BmrJ*e1ll(ombydr~t-5YS0q4!+@bdOOv%F(qY&$fD0x%7;mp^eR=G{N&p+*drykH($ zI&1ol8^-tAPubP=v}Y@D59~zMkJ-VTw_J^A9WJPb!^Z7m|8fTusdF~8_Sf$BMIsSH zK;*SlSw7TImO{SJNKZ zUPrqb`(?vu07;ogd);*6{A5UWUv3+c=0(O2WUyd1Z@wz$zk^d+S+wJ5DCS56c0MX3 zo<9^^g`?qhjF!FZ`>M@Oyn0r-{(5X`XJyu(RZtDAE~n(We^N*B*(}}SaLj@{Whwu! z-W^r!U|^;j=HOFYchEu#axjPz6m6tA6HgvM5G^tz6Ft4>M*V{nnzW2ee- zF?NU6uC8@&{*1or;>iCa?_hnK{vEjG+VbrBobLLMf(==VQzFu@=TRz?$<4giw=<

YswuJ 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�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 z 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

B+4=(*?^X4Fu>TRv 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

mDv{gS;mlkYv;_|Fy3y~;$7a-8uaRP!!g zN|amsN7<7D1^jGm=e-WUW$U68A{MqhLJqF!6NUx;gT~tyl*H-?3aBMN0vE3j5Y?Qo z{G+mlQFD)71sMLBFtVa1pl>o!|Nq* zV3gx3vXY#@`Fc(#%mb{fwy&l&2$-(~GO{KNMW=iqil>04zW|XvqT3EG$w*!$FQ1!O z=XazKV;Y z6MvzH@Su8O!CsGI;>gASKGuFVLB7qv-13vZiYc<870a1_3^CUt@~rx4hn0sc|c$fn68Y)CK+)^DS7ja0Fv9o$B3MbsvyGd{QKjq1;kHEm$+AkC^3gKmUN0R zlDnv_ALi^%)ku^3(996^sK>W6dD9ghM=d-xk~eIMMm+vaNow00R4@?r^42lt~ivu?|!LxP2mN{Fyi?KkFODSq=VmgDOMVe;?X zfg<)xB`=ZqhR)M%*25C@&L&;@N@AQ>(YEpZbw1kwT*N(IFD-S z5iPsV;>H&j*I=HM&h|}4lz2^5$;_?qx%X)8R@Ge^f_Gv&&3@?0zMc90r`2u&_ni@+ zr#%aX9IWV1>RW@3+%ILg@;|YL(0SM)8k{?G75vP;`j7`GiP^3PWNf^!K;HvMGyj=s z($98ofGeOnO|Ai&#-QBb!~?OrrMj+7;I$ZP;rU$UxT2rrLzk!t=zlxqry@UbC(Aj04@~`4?EeFCf z@{>4ZZc$Ka@9y#xCSo;UymnGhE#$b(@4x3rG=1x86#K2P3OO}lhPFd)4oyBx; zx*;l#zT|(gk>FyyA5U1n0f7W!={Fedd)$BBcP7;1)^@xbgZ~<&)AE4mn9D!JS~CI! zJeFIfdqPZ6EJWZS{;wZ7GafgJ*nk!op+~#L<_~OC(R5z?!z&y`JFoM_%{xX%dS(}(JLP1(JMFM9tNkb{FP}6*e6kE zg-nv-wu!Yhoyn~TNnd2$YM!rR#OKi7Gp^72A#%DRwI8W((Q$fW7Y_(>2Og}2TO*Hc zJy6~|pF?<5v8jS%?EI4le}ZUIudm;&Y!XH>4eSA60BU5F?ltBvlk70n*b={pB5%mz z0r5;y_{IqjoA&3hYe$r0^)xjuuiyLEe#ZS_jBtpPf3Ne7<;^P%odoXdx;O(X0~cky zFSKo*%;-*ksg!&jqNcdS2{17VqsaDxv4M8O-KRvzWSgRyFT%(5lY}BP5{u9F$-EKM zC|?V~b_}>8@u&zjS<0^SwDRM(BEoWx<1=|J`4w`2lQoXb^%W4_rB?F036!MBIqB0s&L5PT+h%dVH03>>R_)wr~+kNrCJeN}V9D>6WHBfAZi z7*zSz*FR@U;?LMWbc%*q>_7YLVAKyK%AV7CWQvGeCrcLoBw%9{lv+utEJZu?Cd6az zTTn0hSGzN%$cu*zU+8?wo#|*Ed11rSCIoxeUIi5YVk?}feh=uu_bjjd!*kNtx=Yqh zxR|P;H>Xz>u$BuM)hEh25DP>zpSHoJ30ZxrXhNGYVJQ(2LiIOz@(%v=TD4vWYs3jV zg*BGQ>e)ihUi*$_{!$~merULOubqZj>u!&$op{TkW7VngE^yi zZxBAM&i~ffGns%~djWN(A?BMLz5;o0SX@ntHNtvWJ%M>^eP-q(#Zz2h!Ekuuf+UUi z7NLoaqz=OL1W?t3DS1xIDs$B;>(k@%NNSi2(UCr+a_+>{XM~Avsk*F1TmO7>I+n!$ zj<@7UFA(hab{Qci@qVZV{RnZWz!kk{H%=ylEz;h7aon2)v_KZ(1L0QcI^g*G`i!)cWq^mo1%@F-B4C?GkRp4L|zb)%9 zpR{sRv!;XA;*Qbbn6>RyO6Jh#^xJ!ip*md!v&*AXI z-J1f?4@H<-`f%NY!pqE(ori4v)NW<1bvy%FfN6joqA1w7KAmrb)O{dQyW(S2H+DDR z#P7OA$vj$1=-?;nl@u!_Xtv{pFQed&M;2c^zfb z=@-PCPoF}|0Wnc(uc}iW4&n6@o&4Gvkcs*7ffCQpG45-`J1EYl8%*!dt>yktyZZ?G zv*OiJcK2{%fAKf2yjvC@Y?>PQDI0e-@^Sm1*c$uOfUkA>deGj^m&*!Bu(GO_ktMI7 zI+)mje-x0Vcg4zI9FQ?dg*M4gU;KU=DIrWz)s>htx^_;)E~gCz>$}&?zPuEEP+Edr zqGCKs@N|Kr_z~}j_+*=ENDaQV^#51@MGb@7FG{pE<5%tvFD-%JJkE#O8Kf zPD+;SA6;%ww*J&JC|yi_*GQO~?juld*PKJ~dcEWRJv**>I}HEi1Ob+o)N0-h97XsA z>Q2j|;arkG$Dl7@gtb8VVrf$EiB_tl7`JcreIR54?Fbj7F=&Qzv>ORKI8U4DyVsDB z?D%l&d)|7(XeqsF-aY3HYZ#i|pDc|g<(TVO+N`f%=stRq`rWWLBlHkEf<|J7JyF6_WfFK>Ml zH~<55_>xgX?(Pz(SQ7@ae=1w$Ri~YC0)E*u*t)+mz9=0lH=!6ywo?xDjLxeH`_G6ohXZoKW*^0+Qgnyl6BS<^stkttTP z2*-Z|Yhkzpmea6!c=zfP(0U|rPE*mhIo-m$rw*VrvNc8ylB1g=`D2X8oZ~o|v;-`_ zoA7WH!}8x}Z0LIuA1-ZId?xU2`XAr3TS?Vw&Ym6^)n#K(&fkXFt_+F)Y>By`nErU} zE)4uXL*HV5G;o0>+|_2TUq?FS-7t?!Oh3RfC1@jaUSL|W80f&(v#%XA?s*Age9Ma| zJwamc1G1SG3-g?Y;&m}6p|H1=P@OX%XH1gU`IU|P3-+XbqzYwG&2vvenWT=o<*K9n z#mL2P(uh$OkWt$5lJX)cSDW3iOFY0HZWVPTw+i0mWl>)16(4Y6Ldr4a)6si_4eh5Yi}=wqz0toB2MOI)t?aT+)%8IXz%ajZwuDFWO_oH_ddnj zj0}Vsxj6UJX)o*0HBSD^bfoWP17{ef-w$0>Rj}a+Gl4kOd}R+n>)W; zYF}|EzgI=Z1Q3*RDkKUG#_@p@L}{pwC>VJYG7NxkifU}V`8bs&YQbj}wXVgW7JxAL z=1`W#U5+zs;8Cp_99mPCK2=?LpGDZ`<@6ohQ1SoK^sZq^=6m1%YBl9Frqt7#98IxV z&FDS%l$L0SY#gW3TBXdYwWg)HsnNi)+@b8j%Fv zxJX(~N;=!cSgRx_)C6qn1J{P4WAS7cBn;`}EJdbxFWd7u)#GsZFcM(o^wU1n&bkL- zvr&sKKi7f2)S+iRik8Z|=h6+;E5Af)d)8R1nJn=JMhs8PudNb_HH}ocj?76Y2jeSZ5VXoviNKFY0**w zZ}=V-%%>b@ZecnH7e^6jB&#h_-z`;R8!OCLrKbCs^ zyLWtl+-yCq!9Ebmjb4u-4N;-+G&k}MmI3hK0+ODemmCG>myWzL_bUm&Y}5+FS2K4( zT9s+#_6C5UqdlNHxEDd&J&_j|%5cfB$i-i`1o2Y(deN-``9VW(uB94ESpIWqZVCe8k5;q>mTbAHJ8kpz(stNYfSn9}}I1VsWpkw2imUM&sS_0bibj;!4NEd5T6Mi9HwYJ-l6Ee3J- z@Q1avZK!;0{J=(kS}1ER!DjmlVp`g=saZ>*UWHW<+!hQ@V6l@)};k*r9t zMjSJsN26+qqvf1Ld{`Dbl$OJuZ*JmE0dPF8#2dJ|(0OZz)mQ18|A&?rpVuu_Yt6;b zXU2tTDKFmrdNz8SW4eSJ~sk-bJO@eNDS#GK>!{LUNn?$2(bd zlFj}cWXoiP%lnI-*2RhJddsE$3Zxn-*pwLoN!U%6TLxd)RIoZf>GD5hadOIAfqHE} zlZ=VZoqP+`jxLvYmOh5l^4Q1RR`>=f(JdcCz~vQqjc%T1@S+9H1~uVevZlcl+`}nAM*29&hm*e9RfYGT`oQf&e!cnN%zBO}&?qmD>^btta8mBH` zSM`SeHyg9$$NYmTk-?fpEb(a*fcOWK`Icx32_#;W)uK(Dm_n{tJIL!1{F z^G~}i)ag0y@5l4$zfdm}Fx1Db($9`}+2Mbq?^yh`f2ZUhL5cG-|HXEScxCuc>gV6J zaN*}M6I2knedU;ko0Yz-Ku`@cU5+Eup~{a5l=@U?b#Ibqgyfh2plOE=H%jsWGBE}J zS-*wplVsBnyy2y!+!rFIcKNOE0T(^Wi`jgwchu^-N!Yx?62Hqb9;2_kar-Je^OO1v53MCz=YXX&5@(?b3H$LcIPpwL)-L)EULWbLaN8iOOyp->O#-V<8Tn_6f3wD&E%hIWG<_3_ zQhrSf9zTsnBx-NXz$P-YB*!&}ZWR`RziH_iM+#jhL|Ep|g-iNh+HX=3bSdAJt{LN(Ny00L)iswPR+Duy@*pZIq>u19|1 zg8XlUA$|Vh68>t?d&$)3zvZ69h5!Heq7+~*Xis|~mbZub?4UGW%qS_MO7yXFU_ZpF zWklMF{nQjlSg5*+l*T0_#p7%xToD_JQZB_hgMfU);-=E{i(U(qZ&f&C6r^RcyG@NPD}hc{P*c zWZjYUW3N8T3h6tew~yF7ZO2%Cv~E8+U5urFKp3l&<^XT=hgb=NAqDE0y}sQPbDEwy z_mE>bZuqA~MKC=9o!{L8kar>b4zEXmmk+sN(?Gu5dBq8!`E-^3p=uq;+B{wiJQ}84 zN*pUb$apuU5EtErnJqW=K!fcL2=GpUQG>)UM<*{)i;%U#>q1&b_q@UckEL|aRR~Lk z@J<5?yju37_`%G%(B2u^hnh`Un33qSl77=hPm$gL-}8~NV;hrwouFZ)z;&J{+Qf*x|6Q{SUlO)*=Fo_ti9B-HRvmPC*Jwsyk~F~fYEoS zN#ueV1mi>@DA8Oi{r;3ieZ85G^74P*w?CD%JindSCfgHZWM!utb|>%&_Wtc&el+KZ zKDV45k9`6JsR4pGurX&%7hLbJ!jDV5f52EyE{(8+h=U4mz~8;|APROj>{!?E91*)8 zSD(86nY?ROXKp-+Nn2_MtN~UYp%g4?%)kpAUB#(!nH`5HgAzaIzR3@ulpy|gT=oa` zr3vQuNNltaOvKi-fIW!NeZx!BCPY5xTN=?YJ+-E5ix|cxD7Z7GTUP*(nW#`!WsK-l z4kw33=f1oLJsMM4ZS>_ou?@GZEfJ!g3SJ8~f>U-x+^`=5REPfBx)?caDVyo-PtMi~ zGFSj_`8wFs!+Se!d4tJkrE)-F4tEa*IEWQ&@ATNS<`Ml#CDL1pEdn9?M083+src`K zzKFh!!HBUl^=%^49!H?*JDygd-MOWGs`evyXb31zXwjYN+(y+q*)4g(5`fT=QvQq! zR_yg9up`5+Dkr|5F{3p+Kh7tP9|cd>oD2+A(Pn3W%f&SB!n4hDuZ$Qe`OX;9oUN~4 z-}ShQee)gXTOSI~nrR_i^-qJQvzgf%g~Qeb3HS2ui85AGMKn+Ri7bU;0xVw|1iGpI zTCQ0!*sU1ujGUpBB@MP<#O6-66;l?_!E0>6Xb<%KRAk{+9Sc5MkS2!QHK`6jcFb1$ z`z~J2p3W^2$A2yK*Xg2W1^JOVfLve}y&c8bfrL`}lxiWktAMyEk~=>sbZ(!ihoHTs zAL+Dz{F5L2)Y)j9k$kZtxhBp>JqojOGh-!h1xduJrMNNGqG9Dfl_EOc`k%@%L>RGt zj?sc&weD|kts%@}e{hG+eO}3xYJZ80AKqAsWfk{2^O^xZW9Vv-AZPv4{smugmHojU z?O5_BQGM4E0_qhBF^j**@`x1ZXhkE$xp?Py-+(sG?F5`pQA!fVNJXpK!v09>J&Zhs zTPg&AuL%}uwvwGvT|3Eod9PIEokWPV_jm5IenxvyT&p1^IMg@@(Hrf(rI`NXY)?b~ z4;e>ji^YEcpx?9$OLg3W&ib2|crzKhev?wuNHcG_2_r3qbO+N)G0k|e9wSgF6O**8{ne2_SN z2I9Iyka1+g-dzR1+jr{Q#FD>cy^>%ny=@j>BI99TEmj#jhqS5}eai{|gyxoMhE;g{ji}anv0cCo+cXk9J z38*>fv_#<=xPgPAJ8D&dbnzh&IT!$dw~#g6vq_rv2dj;&|-bI($euB7-YDqX=;~_V=X;`-vXjE{dC0sNWc z&If0j9k=u8Ka1ylQide`yi6n#g&2f`Jia=wNo%d_zA4fuD*B;s*(37Awv`d!*#;6# z4dVbzb~8r>1Mpij%Rd);(QeSPE$Q2&G(pUDw$CdGRbCvEnl}d#R1~Xx!drW(*d;|~ zH&PK(<9AZSeG3!;@*dsn*#jdY(yOt`bR6sX@C>HqccdIsHe_VUtqk5KH39&bR8`v=gIbmjgeX$eeTrJ2W=#1eXRFoIlctE)Ged4nC>so*W+g}a&iX|ak8e#CnkdAgvHS8;;Bohp(8ZEYd zbvXm%JI1c?Vq)x`m)l+MT>0~^r?hvho8X{$XUj^lY5NeVh_k|u&9|t|PHF8C84&|- z{q2dv%`6b;Y7q8Yw;&%m5f7|$Dpw6jY07Hx!8`fJdhCFtCC+<#a_me%QtOJZ6_O?9 zAt30L%lfN;l5AMpPOTThfr4y9RoPkbC9BWlJ*)x+AChgF^FFJn7J%RkQYWe>2*7R|60 zQ!v}VFyY-CX!Ns{dJTH^+n8fm4NP3VZd^!t>6U!I_H#MOD3ZfPf!)J5Z`*&BIJfEj zSXwNV=B{c;=RlO&*5YMW_;DS%{9QUbTqAu9e`O~f@s=Iy*=cN#x}zOQTOie=OWl+V zBHq{eV0>_BZ**jmt}Y%YU4~T^2WnTIRdwI62Rhg{dE*zes*O(xi1-%(r*j_ev^JWw zxrXZ`SN}#TTG=hi#Xg=*S2sifd7#d*%2jmm(@P`Aw&ElKLAcyYi6e+@NZgLqY+ZmS z$j7GcfD7ZTjS}5A%$e$)k#1oC!>av)83^u$X-_N{>Q`j{bPEKu=#7V1=&L=6lp=7N z3@eW*u|&jV1Yi6jw@_vtJQXzXzXH|Z-+?q2+E>YDNX|ja%N~WztT3hbHlP8G*M=q= z0s)PmZi&R54c(5gr}w9c<0Sok&_^!Te-YHIIS2CYnm=D&joI^@KB)7dMgQ*}Nxz5z zaBdlHjJZGB#Ddh)SstuqgMb8L%o`fE5ysA_S|6F;PMy93_Dm~6jV9{U`k87-5)~yp z{y#Y>JG>|V3sb16Y)~otaizM2{t?XX4)E}O54JVsaH`Ey8;W}&<_b{c!DupHGbuGL z1F{>5y|2E#$Y=j7YOyQ^>oKMTU|#n1F`NO^r?4RrGXF-2(z_cr%ZfS=;ke5P#go!Ox2WVer1WqzdeZ4>sO^i}W(Vwqv;VRo8K&IZZ3%g)g&>;xAcU zy2;2~vE;kzGxSQx$AChr2F}def^`M?t3t7Nm?QK62^mDr7|W8hhj~x7qh|5ROD8j% z5jdRa2g{4qq%9uwP5uy@YGm4?-P|1w3)*P44*b&&w*WKz|<*3 z+%>Zj^cD&TcXfb3tvj8XZ)9XVg{6?s=B1I=d&SC^2xQ9rC!A4o^&mv?v6pjwg89)r z$k#sp^zfr7JBo81@n;l|`DG8`rrfTXGfsrn^mz#Bo4k?fsC?oL+nKWX9X{p;8tv=? zfoThEp{E#BZzK>ys0`gEd28myw*ul^+Ft5i8?aMP+p9%+bGy96)UyjB_@j*3`3f~H zdr5kU4c~&qVP5plvR07!vLxik=C1l{3fax}yw$%#!n0=<?=U-)TLWl$yp0yP2jXCIs8EraU|768baoasjqs*6daYio#Z~NeuXzgxyExG<;0aEcu zAWRM|mEL1*ifpm+IH78K#Z3fz$8SCV+w^bc&9RjQRCWb8MaLSrcDmZ~Y&u5<@7U^U>lxp#LIhKRpj{A+rlEfH*Ft*n z93!{f>sLXtu@w7NTg`zkH*b~f_Bz=1RpltHQTBh<#bl-JJ$=AS>BE;nB)oozsbzh+ z7BHCaabsl!Eo|`tMC*gz#O7?q zi5fYdWDiqRkId$S<#ibgRl{xsCS-`jfpjJ_mKEjx3dc6fFZTl}KuJ9<*7$!)A$=H3 zWM_0}uNBQr@2hn)eFhBj^;KxyPG{2&$ycRa*5`$6wb?NT+(h>0!S=MF?_ zTj9&%gFRDKrgK*8R`&Ico50^(r~k;Gd~mU)H(xVT51^n@KOu1n_c?&d+e5do1~fOLh=6wOuV5LH_( zLE1gM`L80z6Xa5thHv_C%8PVe?z>BsLe*_!$;a4jwy}H!I>q#X5R?e~E>cF%5S+hm z@RCdyLXJ*_VXQg5xQA^vj} z;8IDk+mX5q{AB^QEF%0&m1=P4!tkm>G&W)whXDVsz~n504!#8d)IOET-z4weAwO7| zWmYooty2?7x=XT-XPD#dZ16WJ1(KD`SN0xUvC>x0wg;#LmY*lx2r%E5B+dLDBY*Lc z?Y+V)f{NrUAF4@t^To$D*Sa7qVLdIIB;o9n!v~?- zG^qFVTQ@0jeWl;X>IRQuHjH7B5z8||tqY0MyB!{5<2?xo9EOM&m_=|{5W+&pqZ4W#B*iPX*tS2n-ck744N^B#p{lLB28mLd+}G3u<7@Ha0Y?YZlJJCRMD# z#GRjRN$+vk#tWX9rgnT^F(UdQx3O^i>jeCMH`}zy7d@1p@qWu-b6N35;68B{Q{d*H z5w<$sdrwcm&zooZuT?h6UKAn;uD3u5rI9!{-6-WfTX4`KBP&&!i5Zw%`rN-93`9Gp zvrRLV50n&=%8M1NL5upg8&xVr8F5K8Ur4+}t*3AQ<(}kY!Y%)gsckhP$MeOW;$n?4jn}B~)1 z29TWt`qH|n_D*hzbpXi z`&p@#J7*Iil$w_X6!ihs3TRcMxa(oaZH&@tXJK9DqmHj;NbS-5E!`njj(K{ImNlO} zbIg&e3d24NuKvaR?YS4Yy_h{04>U)+&PjW+E%+qNLVZOPKS(l z31q`l_W}oyiLJ^WzHpQ0Ib(A>{dfzdQcVhRI_cOESp`Ef`|%1xirv2_hw;LVJ9nyV zZG>okwH{p!C{( zTOON#E0opUz{h1kX0ff^T18+m6FKaeCu(e0Ij2vR6|)m}v_xkl##9nc>A4PGgtyAjHNe26 z5xOa;V@{E-bh=IGBTw@tWi=HN@Kjzm1RmTK#s;$gSspEm=+!A-f{&vvBA#A$Xss}r zoGqjP>W+d{TlH^K`E!leu&cWwc7#E-4>)-RPj`SrMx`(YMWaZU?!3&8!gln&O zwy80ok9bTge)oChM4;k}aM#it1-BPA98Zq+Z)Mwd4-SsX`IM(M?ke8Pdp2LOcZ2jZ zLN&{66^cSc;cIx0x`d13Ev5Mlq!f)Q*x=+iuIyWD2q(_IT)YhflvV$wo3!3Xv0Gc& ziNyH@&R-ESbl8L^T-eEeXk!cuM%y1%;vwG*OkGQ5dsk+Jr%Dv{t0r$hOn62GqZ_IG z*x9wzBmF}K#!GAnYRe z7BH)e5syCa5eC^rfB6tbf40K;+vEVe=jpZ#OeKv)#d8nJv`2`p=QVg#|4 z*~L_67GV~`gqesLE??lg2z_t2-YD;tbPZpLDfbuC&*skSiBB&LUr|9?qi03q^87rQ z*D@;ABI*p7Em&PK7PuZC*!cX+dau0FdZ`Zr6;8%j&<721!UYaagF)066I8rK&)8%f+hY7CB7An|88+%Y=QekwLWZC; zLZBZZAWhfn>t)r5j0VOS=;nB#x`6sAKndV9B5pTL9)u& zJISe%_k~5I9>F4S{%=V>w4V8GP3{~e=OL_hX(q6o)`Tr8_su&gX-bXWirtHj%h1(! z4Ud-#DdadHo1^&igCL$!sm@?H*Rs%>V9EFI+H7~t2!=&8H~J0;E@Uz>tm0x-^^Bc6 zjjUK}+~`~yT5kf580b;P;zt^9^p#M^f*AoT$tm@{e)uV{B0an)MH z7U9No9!ReAh5FQ1R6FHtYdSD!t8{H|O5HlwY+%;Y=U_cC%$qEwnyEw7oCVhPxc~rC znTpot;xmpK@q+elr2cD{7;8*Yz(=K2o9dH(ivMDUwrmuokGbs7E;;-o?e6P=?)hWq z#mbRYK-0+`9Y&FB+tdsaI$T+}n4KPFndwg)tF=+=Reo^l9^4&mL(?HeWn?}3VOF_g z1d%}@wD@K95T4f@R=~2Q?bgAjtiRq&`8r6!P>?*vE@wOew|?rF?B-7ASm*a6Nn zbgf0tPL`%sQS8bJF&&NK4D!t))oEI7OJo>rid?RBd?T-(h4;<>pt;|CEB?m0BK5Mk z5m~wVKL+~LA5(8RcIOd;MpvlMZ0?d__S%`I*tw0LCKtu!)dPH(eCg#)!g1S9S~HOb zx7FCcfVn0om~P()$C_bl6F34`1?YUpFnx6fDCdTP!N zUSF98Fv_{kIDi&^Rg8LCR(Oh={We(;{Dt_l-lvbQ4KTNPa#W_@%h&V-Homa6W{~1? zTBqB~ZKq?610t08f_Q}^>nf!2a1bnqf@Ns=X>ZXT9aA7wA&)6?g5i?n*6h2;1}>r) zf)RU^*V{z|U*l(4Sn0Of*K+4r>cVgR>mkXVHAb(^L;%h}Xql(QX<>!cFl0JA5fg$tge;-5T&Y3+12LnJf(>h*m&9_qQdmfxN`cJLjR>|89%8c}#f>}8E8>@40(P^t^`m9(l8xU4R+VmX-GhZJDDT%OQyjy_j(%fOQj3?8 zYixgQxsraVD+}swvSBptX+rAx zvnnY$&Imb;T1+n;#!gY?rn%>A4utW)5je^WDcK2M zSjkKw{l0@1LzKH!snZ$oIy}FypVV1Z?}>l?A`P zvg|}n-H`5C+7P3kI$5Mf8j4-CR(Db zOFOfbg~EyE054Gb%4?SKBIkCx>$&F@*ZB z>uv4z=C|!$<%AE1QD7I2Yl}mAPq){Rtkl|!SlcmK>th<=cvKic<(nmcCamt_ers|E zIu@qbgImFWw5e&UhoCvrX)+uD60a{RmxsjzK`YT)!8&6uBgfNt5w{iIScBhPP<<0< z>4e>13qf}Qx7A(vtU{o}5T#;3T4cem!^q)??eV=ba=}^6eA<&on~@R5+#*tIsZ7tG zm)+VT)<#VM#&@D9#>n=`122lFVEMTb*W+vRmwsU1Rw}J~ApT<7*%0Z8)F$l+Lv`lo z)$g9+O~T;&iB=x!eB|@wqCfqth+a`s&Ux0XHSL+1CaB$G#a6_3z)K}M$mp<7o>JKJ z=9O*wHQLY)o@Kp2X++^1Z9^bflC$(BfQ+AWW}P*5E}(18FbR|ar1kN(_`X+y(aBOk zYz445s(LWR4r;yl-ZOvymhHHw0ODzN#Pr-7em!10x2(evJjs&&^}rF$8x96}i;v8K zJ^t@pC77x5hh=;H627VYw|`e-k7o=03(E-^XsioLw&p)0agY%bfSz7L&~P*IdWlpR z$PY)}gbL4@?-F!peG=n2)k+;pO@eAhOUnTSk%!xd83Zx!MYgVv+m_VcO|j_zqJA+y z0U(24)VuGBp!^mU8ZG%PYW6n{hGFI&9Up*$Wy6yprJiv+y0d74h1D{~M2Z|_X!(i6ki3KGS(b^FAc3xwQo12m}cP|>~Uu1!jYZvF|W>FF0J@6%wjP_{=gGxfS zyFTyij?ww_hoTiN7LgCKR&2iKZX5g(Ntjjl43@G9`Uvh!=_9GX=m70kHm~d|_*E5s zxwqXD8ILHmC(SjEsEE>aCg{`0B(la8D+;pOxi9mLIKDP35{G@cZggMlDtzG6aRrzk z%^QLmLSg$_bxn>~zaCCKgrS-U>&cBK=Fqgxds!q z9+x<^r?{LU?VO)ssc@lU-Le43yggf3jMxND`xON>Rz+}J@Gln~`Yg@A^E2Q3d9jhQ zHag7>bUvu(@d4k08yAh_BHUKLmXRKA_hL?wn7#mk*5M`QZ?-Ahv^@&dvdRi8kK7{8 zENh8l+F~V`%(rn2&Agky@yph-h>l0&DwKqEioGK0Kjm*r?&DP zzC(6q^LV*ZVya;+Md4$ST0;`ir~mU@W2jpCr!Cqy+>&-z&DZ^4nQ?GnY5&r?v~}XF z6Uy@r>1U&-J-cDV1#+e`3}r!@neju=d*B^+RnTOOW&84@`fzFY2zLzk zkKjMFfB*OH!19}<$QmuLvn8R@P7dA}=j=Ux=beEnyT1lG{!Y4JH+jyxHJFAA)hA*k zk{ey{6x12l#OPE6U7UexYhhd*7R4jrz}c7~d{Tz%O4I;a$p;#ZFA^OW2^~!@tnl}{ zilR~8ulcYBaC4qC8XB^0j>woy>uKf<5E-X;&6s{SJuj~xQHFrfKR8gP4E4G!(6P^ZoECZ=) z@p%tQH9AWL2r_gX{U^oa`kk}VxOD$8V=-9u=18sN(&%-1L9|6Q^{tm!m(<)e)0uBM zIa`lPm`#e|&?9UMEc17S1w7tCK5mm$oMwv8fbtPyd}*)F&kEk-e|+rFw#|GGH5Ef{ zJxQ53h8_b@muHPxw2TuRrEiyNUx=Wvxn6NN+$p8>9WKJoZ^w~u;D+2B|Lu*?bOj@P zuijzY>}(l^YJI61g9Z8M@$8qwof+9%+4afBJP2@V!d@=sg-DEtBoS-E&o?dO`aNGJ zEclD{#=1RwB^QT=T6Ei1SVjDv>-xWtHqZ`IZIBb|P3MkR$Z_m@b{WKFU$2rpGe3vk@(ki4%fk~+X$meL@#R^kWdCC$QONN{zQDj(*bM#tW!~TO;WKG z`P_ihldU9AdGTIACzTMcA#h?c{sfH2%*D$sQJGZ2)vUL>*Vg7dBVky>KAORL8@#2t zM=*EV_9_L2-8>kF1&|@tEia!Gw{&C$vHOdIR5OQCCD441x|zVvCr~jH){e}c#RgLO z9D^9j+T3lsyN=*$`~{^JL*|z604jxJD&+Ut|9bkrhlKWkVniTJd&vi!$M&vP> zc%SFhN_sIMmg%-G09jYf$kH}rx4Tk`T2^>cTBghu4rg=t^|6kp`)~M7|6|3{m<~jX zE7m+Sba@CJypTDihN)$Xe+YqK0gyA}Ug~Fslry?m?FK#PIktJDc)3ofIr_J;=+#a2`oF-e4Zux0f-=DrTk+h25IM)xH1> zqepQSXC7#PFnEHNFSBKe(R5AooN&A^lZdcPD`ti!pX^OE>v!K@!-_&Jr&p&IN%};i zJZ_k>q8iR?!lA0SN3?EVp4ljxKT+7T8J(J!&H#!+q`hZM7i7R;ls_zjHTN@tHVF2) zU_uwcs1>fMA#1L^;$xO{4Ej z^ZM=DHJsf3fB_Ugy(;$os`bXZgIf{Z4WP<#BWXc!Q5+Hj#*u-5zWS(RBYSk;pzmeX zz5Ir*@4*_8OvRTF1WaRLm((>6o&c7=4t^o|%^z%-gO@T^_^Qye1dy$U0QnMs<6prk zKxP+`QP&9*Z=$~ej7RgWMIw!9k5FPBE}Z)li%uhXg4|vf4)O|qhZW>CSNN6Hc*CQ# zf{RGNrT7MDirtFs84l62c{9nxeEs40o2Fc`Bo=$V)I4i6gJKyf|`g@+4( z)L%|nZ{#4?{A5S<2&q{!pJJ{gO0UDaf|pmiby3QAa*EQc+ucTmS~RMS1gkyVBF9F00D;-kV&xw8`|#smY7L0!eoYWmxV zV(#K}4jUlh?xYL};?3g`@nT1*zrVy(T1g`+pp}U5r^A#K3DA4oRQ?1fy_7!F6NO+_ zg0q&dO%;GI1f?gP4M7&VG1TWp%!d9hACB|7j#I zML(VFXKdQ_6$m94MTO2t7j6H;F9@F66EtW-s(*?66o-(`I0^He4k$Y;$9JN32gMcy6bMi?wR z%8>|}Wl86~9f8kBr!OdNgiqpBtXV&g^^0YnuAc*n9?sje={<1e-&;GNujA&CcB;#t zzwI5Z*)q6@-3o}f4>aFmYGx{pR805|E@=xZe{dS4#l5Zl)?pre**%nScGGFHaSz(# zgGU^+bMjYj_D1=ZN_$>>4c9^UV#6|oC#E8nS;eCU600I&IsLH<^nBB2U;hJrKJmfo zA3gcvUr+m8a$1jcb%{(Zf)&H*yE)2NB;l`F1sROjmAFYLs2yGpnX6r2Avk~`6LIrh zTbgj}vl?{OIqMT)qVv(??V&Fw5=TVpo)`UxJzJ)KGLJIMV1D*YO$z~<3Q9-+nbSYM zQ2Gew>bu_BkA%#n(sun}D6`ThzjTRGAU8{csP#06 zr;;88SblKc-`c(qms_b|TV!!KTvIu;{jq@&OAS}P_;pZ}EKdVs@jt*n-aY+{eMHi( ziTR5;jaw(-s#i9S9IlKMX8`$|#Q0*Huj_*7#J(bu{4#)6sE|z*8^7vk7fZH*lXlxO ze&&aJ~!5_CVFP@Vu zd8S2gT~v4jvL_$fl(2i5exzlI6NJB?8i@Q{5-)&rBKmNJX%}QK*O7`fzqPZ?$lWpi z6FCI!7zt0(3*6!mMo*9QUDYbX;h(iPc>`}8)*cG69Vw0lCKF{eoqC(}Ng>zXEcKmj zmw3l!=GJe-8AUe9q?W3D4R)CJ9F{N{u)HXfyC2(#nBNjn;Zs6?1ML~EZb#)eXV6iA9@psZOWsXQ0W?>g4MO+0 z>T9VnLrQ}wVR&L#WSm|&%B(6`4T|NScBI#;NQlFO&7ZyBR|=5)ruVJQ{ms&yVpO*o z|80~UUQel*Qi%FFnDoB8`< z-rnWZQVg(&8xtov>tb&(XIA0?v?$S-;ek!3e}aJ^{Q0PqV+A(86`&@lS({5$Ahvt$ z$mX~v6b_J|s;G%1N{}*KRvIM<&d+!Y7A_pJW za{DoBZh)_93R@D~JIw~8`f$4zoNEVP#rHh@$Ti<=Lud=EXUZb3YQ6*cDJ>PnNAiyK z0AtY*`1QmgZ;g|FzyG8CI>S}s*(6>3RXEYGMV<_NHHSx8*Zfl?2sGetYJE&`PLtWy zW-c3{i>Rj!IKKE{ISl{va(8ttz}{?EGIC$O05~1gPgy~;M^kL4*sCi==ETlZth5SsZMycJ%*NPKR6HOv2Qpn4zw=eq;w8(Ob|>D((*Meg?>)`6Cp^VSb% zGUaeV7*Jy*1vVh}xpsXBGlUSRc(t(__x}1`oh_Wy^sReZbe5=ubOR}Uej=-Tk*#Kg zh#m$M`xyN`Fz`w{9X`NTd}PeBP}IDphoFU3_53_i!#T!Q&80pYF1D3)!^Ee+Vyu|S zRy0A3Fo_Magl}EwEMshH_{h5HfcZ} z8C%_TI`(Pqi;Kb5!Qt9c&s|!}Mr6beaz{P(6o^c=-i!eO`wr11fFr4Gkw=7UA1af? z6K5uCKb}+1Kjm;2o23liBUWW6g#rOsipsfOY>8K-V&8q>zgVAHvX^N#6wVb%kU?{?~L$@`Uuwc)#cR3!ny5uv>zym3(s9DYoq{LtZdlt%N;MMIhx(({|CL5t3t>ta|m4*ICt1;U%`~))bHJkv! zRqN`C$CD5LPU$rBXGr1^QLR;veOq(rZ^=)aU4Pvj)wkjFKR1qSPoT`TWFCj7{yqn& zC`~^!F~|qTs*61FHi>QLgh@EWExu9ASsOp>qoA~_2+8Re1w3v<`#!V@vEsLxg5gX$j; zmKQTSb=^@|$ za`;<<0PwF|cEzS>N%9B#`-Iy@x*}=p)5S|Z@IV~)ryAo%Ow$!@;?nzTD5Byj5V&^# zW*CR5&p-Y005oZymAb1s>5kUgMt@5R#%(IV#&sbFj^Ag?m(DiTdgji?I2Q6QmUEie zuDSvv&82XUgjm;Ao-b$$oGOYdBqTLJJ$e7=5g5%%q+YI{c$2Gs*w3LWGDS8Gb zAUOKg^s#M72s;>gurBA#DY2+;=X=Q*<+l`~j)YRn0=>!d;JFubL7{B;4(CYEBJ4HF z)l~DnvPE*U8eHNieB2=-qMO=ANb}Rn6t#ETP1@kicYI0jxwn|D^v#wTFAyxO<025!hWji9=1i*x2v5Z`@khT8&rli_1Sy&H72%`H# zR3EQMkQa3?SmoT!yAo~cQNhm7i;erR3%`#;3J#CvSMzt|2j#}S)}li>`ic12&Ud_c zVu4;@zHHhr;N`7{Ol8uAxb+zUfZ49+9kte0rgJ#x?Kbp+>8l3Xo#t8-{7{cM3|(HV zLh3Kn+t}ImJLbguuT?0g8h3F-2QRn=jZ9{LU#_@Qd(o`S7E!W@3!S}Mm>mgsEDql) zcVwYCn|EldG=ur*qMHa@bA3r*`AWkHH0Fj68Ye15WMnkBKI=~ta?&ObMQe}vl51(i z=iS<+MuJ$e6O7F-_Zke15r|Q4wA2umd@)Gk6c+}(_c2^yv?U2^K$R422q?kjk>$|_ z`K?RRhU|teO}^eZCG6)Zvwzo8jjc=p}MnXdxr9(`K3ml zuHUG7EK#>=2=D@3vn{vs_ULq>(VGe!H_MH~ixYGlFh6k~!p!fG-_IaubVzo%q@mUf zmZx9RT}o^^E#oip;zO6Dh3b_jGH@uH5F5bfJYHcJw~M_AZ4wNNBu{@29lXCmQp`5T zvNdmOvGtp2J9v{O0E#J30Bq}dQ2_NECpK2^M5Isli=kDjtnBoF{ZmPr4~IZUhaJA` zUHeu}DuKXhXTT*Gg+QI1Xs^f4IL_&7T19;i3tU@Ck?_!IBB)z42|GUIuSp|Fn&HZ1 zIT07|={C-J7m6S33gv(^$FSmj%Fku%j-O9DE6$?-LHh~Vmj5mD0|RQXq-FP7^UJ&K z76QZ~oll+|yIzFIt_RKnmMHn$l=pw+*c!y(Lyke(Il_EM!ldojwkT$#w@yvi!;5X| z)b(-R*-eMgb>@WPf*&)=JIb$*TFzC)>L9ewz_AwljZw2DEu>cHrWzC3(|SFfItSId ze`@wj(cTE_P0*j=aQgM>uL$1K?1yzH7W0*&Cd%Rp;nLGS>X`%I4A@koMB>lGi8+se z_ftLe)&P5hXov51?(6f@ zuDwF+jzUqdh$D_!uPf>A8IINdILq{_#D&a4E)$Bh%{|gNd|sJjBn^sIX>rCe@+ZHi zIC8OQY@m7j@r=OIwuU)dNlW-zPd{DBh~-gq-q+@=r@wst=ok7t+z(}a>n5=K8v56o zKAthFelv}k-|AS;W7D&Y42v4i2HcJqrY(p9Ewp(8S8I&E$W87f(w&hh?&ZZ}$p9iY z^=z}QjxhfJ(eyTcN#Fbb|7RapoQ^5&<2gA^rPikBd{$bbDRSYQP1h;qoVia;(`?H` zrPM^_8df%~c~!ZkC>NC#b5pxOGek6_yhtu2P4Wsv6jTsY5CpvVz4yD_zW;#U^!Db> z>-Bs-9``%N;sM(7ka^(T549)b6PYEZ!Fd9CdeYuRecN(mV`hh<8btU`BKXadusOSh~&~PU=g3o^eDUbxq-synqX}Ec~9Dwu6Pk^b8FSWZX zY^{Yik@L4Ch_5B_S^@(Eb6s`4*qKFn^dI-%yp;dWC~9uv9=WG$Wb^%@J_VY1a3$@{ z7l3#9Xim^r?)rXd@>=M?fKPMgZmHt_Jkc>XR_e|s-%VvlzZz8oDvF-rnY*s{4#!Hw zow-X^=RXgHO+%k@KZ4i^bLESxWj-8;5UT!yV(DSaL8DdPs54oEM0TAjvuU2Ra#iC& zm0pt~l0%w@oIi|YNK$+`oP-t+g_i-yS@WhGetzL8SQ@et=&9#ZV=Rw+cRlbFzM12? z(#Bq2SfPs4x|AX{!;4Wx{iAfQojXT}C&-rhCCP<}(UL&jcP4Lexa8&XIDBNfHysO)KU-tJ; z1vo=g!#Ike0FvE)&)%WXvtpBFyAIAF z3YYKC$!ctziw;9s4`jvglM7(QRU3{kI;WFIs^q8;YklZg30HR<$D9pQRPqK)tPzGS zu~z3pK&Ensaps+njIDSD#g-NtQ(ei4JQE(Wlr{*G2fHel#r=IRTbv&yMGe_HBAH#PXjL-7bQ3s6?%XCO@%Y=lO1`F0C}X_`M*7@DzE zG}4~#PP!d|knu1AKUs*a5&yPmu>`E;QFkjkHY{uKO5z~Y+zjvK4T~E9TD|pz`AO0fjHN3~-YP@)iR-7J3%-6@57hb5=uZA{+J`A^?g!Ts*sIcK z9IE!WZl&2Aw&H}B2fQBzqGp|AqU>{7^riYss^oM+L-%!Az(d1j7$hEKzqMjR()I4ld7h(N>;8vxHvmoPj0RbJH z7_2gm1X zWrs9WV&6r*Q}b)^XcUf=ue!G}OaPW~fXlJ9rvOk+N)sEpCz(Flm~_K7IiVV}_Cmap zXv5uDXKhnN*oI>$-JMh3_0V44tY6=Cf6n!`;)v%?TGMDj45rz!@)b{TZ(v(|ySN7A zoLH0JkPGe7V}LWrHeM6_{z)|E8xU|N#^nG>9n6Ges+;hQS?vYYbus{2?~M(1_mdI| z5HnEjQVMDKOiuis1s-#`&t*q?Su3hOg9FBaaSZw;p$q#Vs?B8i+l9Ai>w(?fP zRp2UO+gXupeSNM8yHduc4`T-Ps3qV?!8MpS;2=l@SzeHCBb2l1I(b#myFPE7$O`F-g?Kv&ONDO){d4wglL)V9h&|Y-lT;uS1U=dy= zFgnDPyKYu-#6o}s<8azTB4-PLzJqSjYjZDeZ)k_JUj+XWlyv+g&I7U)sCm$3%v|jS zch=4004?&;w?=xBjx;+k0xj=(x;hU?*b$1(>E%1Vp4X2CEu7=phfyFNptWt;@9+f> z)uW44ycclXS}Gqx_{f3_uyX(i3E!pZ??;3}3N=^*#c?)}rg}@xZpO_&`glySp`p4p z|2OUBgeyS(RY_``GAQXWR0IfW$noHNSn-4@ePQ{KUJSrYdylIk@}lxB8eRUY1_wRXQwPbjAJNJ>|}XQuC|p&Tl&ew%cLVZ{Rg2_*L$7=NJ$MdNrP? z<)k-Vq!!Ndt?{;oNwg!g5bWTAl=rf?;321jF^gMob`ZAf zU;7qU(hq$5VxBksH-q(i8`Jx!OFSi<{-p7kqyyTh_o6;7NJ|=O4XuJu(>GGyOZwDj z=IeEy|INfH)=BQeQGp0c)Qb4v=9}x7mAhSacNveV1~r>_a&fjpZVDmveb@xH1$dH| zyO#cAJ()&dxArt;CW9QNj0u@pKB3-IPd=Y<4YKe6W*K@7TsIr+oiEYP^A))Ic>l3^ zB1!jc?||)t7AYAKhK_NrH1!{-UY$ckiwrx2RX)LU)!M&aiH`0hhMxmS^3J8aUKQ%Wo_M!zju8AOFf?dQ3`l#@fimcjLa61CbW>1IFoFgcOVF}$3=3nxN~xHk ztsS?v8`%|*qv)K}bfbLguyTGZ7Tk=?%x*@x3NB{GrNezYWWMgSch#K8{nCL6rTBRt z&?2V2{SLix-;5}*0dd!_3m>nt<8bw&%)n(E!^dbyU zjRTd=g8Ve~2gH+Ay92MW$AksLj4I!W6gjNan@(x&zwD~5Dy0JG-1$?IvtK;@;#1&? ziq(AGmqZX9Salz@$S@~Mjyj4(hd0%Pve;9Y-A z4+Ka#Hs5&tw@0vX&0Jg`Vk~=^GDEo8{6}yt`H zUJ|wIN>r876Zt2{vXayL%lFcPr}I&`lp!M&wdOLM6d4b|ksv8T6u`SwfO1jLpc!V}!>(y$uW8@*4b^|O#N-iBiMBxbKaJTjQ zi)0&0n&#%kx(){8cBSse?WYHcUROm>aE}=5!wn7G$_8!OJciZ>yJ4&ZX`0 zsYH4i|GMU9|B>tdO+wb_>EQKXDJ(lso&P85>_ET>HBcM0b0^ZUEYl*E=Ysh zc+;T!F&i+~epU*!fNe}FdM+6Y$8tqgFwDz=M!7j>!Kzx7*5!+%u>RS#vAx1zFlOtm zk4Sru6HdsJH!?M{GpTC%2`Fx)spH&VKuMf2`rEcz{m##E;hHzFkj}w)hI%ThgWbIi z5Q(Wq`ls!x^Jt8@A~U|3vmGN7`z>V9JMA`s0KT86I5WA&&LpmiD8s%FuVcUrC1e9E z`*jFGGgqnF1^j~HC`6Q$U7NVePl^PbmN#uP(V#+L{fH0sV%KR-4EeAQw*xn#MI~v0 z3v1s?jFReL-m=@emD;w-WE{|ue@C)45Z#x$x!AW;U1n5fu#L*={krF^^57qdn6wEW zL1f{D&A{K*Dhutun(pF{m^Rq_9(o~`5sf@6wf~t@!p(L>DMt(8vd_|y z^M3OrE-Mx0h7yf1o@R|5*w)LawRu4Sch=VSfXXiN5OYGjqGnnoiRcZtTfI13;AZYn z=(0yib>asKI!Okteun(Ohj zEUO`ZDMrEE=VK~DN_#|NKwZ_2Z^ksCAL8bVh5(#-GAVc>0mO0xhs~mWP`lhg!yPWBV;56o57`Gg z5WNj0<_gU}Qd0~&Rv0T0J1;I7feuVMywgUhk9N5w2h`@k1gDGGvKKuaUv%VJ1%(u% zvM^m`?xw=Wy75NkW%|psV$8@Hhk%$qb0=(i)h>!d5!QnwQ5{*roct(lGpo9`)RAp8 zPrEF0@e-d;yLg4b4F#@hZJmLFkCf0#tVu&1PQ%x-UU&oCl{TA9MoniFrhR^NChr`#@-GUe|ZlqS4ZsR%Iw-t^baW|DN~9@|8IfX!NXhh)s);KG;6` z6)>QU2F?#T%}{~OU1nTJp^@3rm&P1(Uo80LmPa20b{dl|6+7_-&LQ5pTE>3f&9Y;H zx=ZPZN8+K!(&5^Xw?%1<*EAq%Zgp!*Xm9TY9k{DSVd|OVN4TJ#Q$Q<%H@uWM<%%Df z`jdI%?!`FAhFiplKzh-4^*D|($EYeOky|&W0!-4bx`IID=%TYw zF(a!hK-r*+Kb}j)s<}vOPjCF1?=51O>_T;K;)wKk3980bGAg8Zt~vaE!o>J8*|EC% zoP!a0^F@dt9P33GO-90JsA`NN}Ey!MO4NA~9b{Hgju(=Ld~ zZL$p}Z>=u7V^*^yRi9wq-f$UHIYQyermc-(hh>8}>+@CmL;_hJ_q9K-9~+lt{m}VT zRgg~@=jr7De)|m%1T+gB^0cl5klnKKuF1AF!>PhZl0^0*D}fY^1wQfD@KuXC>d zkZh;4CQ%k3Wv8%gb*lfJI(bUgWsB1-JF_;1*mJ~6R=FpTT5*a;d5+>EXg#7-GuF;~vu>h(}pvy-mGHm!KFvs3g zSt#vqMGz9WIRaOhFh1mEk+)QM$tbm{SWkkofb={jcuH99s5g%lRDdnU^jN9$32~DaZt-P)p7^~u2eapLK;wy{C zOh{zTBOM|&xUrxdG$9EN81i1ov3-X|?$a&DhjX@7lo{(}6Etm%tRLI5S?5h}0R|?U zTt1RzThOy$<_DJs3!eR(Vct0Nj}%=-$ZcWig;IK*T^$FV_*~a!{e?{*C+O}k7E!L$e}dCBl1pL1APk-fQp=e?5X*?m>e;3wY1t7;RpQ`!R2UkuPF#)z7FPGj(IN1;wS$$9v0k zHA=W?g{&HDz+^qrTbGe%Z7gev?R~E@^EUYyo0kFw!OxwCL_UNzB}-1yaekQ7f-}vxr)~acq9N#ncefR&N$)M3* z+yCO&AB;)WVm0#k#ULoaSO8p^?kS|_m5yC&Dj&w|&WvTyB2=}SQ$Up|g#&->GH(pg zBEcAEXMmEaUz;l$o~VQsUN!sBs$Vlr-ojOQh510!SJ8{Syv|v;v~EC_{ZTJ?C2H*s zY(cOSA*^GU?e$^rJ*6Ef=2$X<@hmp>%@0S^3GTXU6%jBX*<_FgFRQdXPfKSCm3w~s zEj8Pl8KPZhP8F>cr3{_kx_HrK!BkAjXD(&a|DkgKgM+CaWS}a<|Ty(@Mc*fCwJ0Q1pzd*%u%>eX+JXh4bcqv;!n40fi0?YzX z8D{J{{!7YU+SBDhkh*O70idlqj|40$RwJ9ZDJg4YRhlT6QQ#*5H@Anj&0GQIXDQ11 zlfXPyBvsPr;xfaJdY`qNT{)PZJrx6?P|n{Yll5F5AXC|aEHQ1UyGEV!nDISA@M2&X z`r#H_&9d-5sk~0MrdQiD7~2>{X_Nalk7-7K5Bg75Ue%S#nH9I~M!VW=r8(fBvk`rStsUJn^JO%+Sa(JQ_z&vWh?S;(K@w~| z_GDhgMDhf9>_2J zlHQ4ao46FEtcEEFl7frn`jH1FqJ#20GI!B%MYd7zCq)#x93-W!lZxdvgp2S@j-n}<*MS{Q9;W2{nfR{**8*zckIWQ5;6OV(QU{dY&tl?XBV7oGQ=qf-f5O2#R`$2=@@p=jNDJZ-7zdkmM!IvsOI~3YQqk6otMB>>ywOAXC^&;h-tv3CA~=i zkHxYEh-(5wl2%-}sf5ihKJe%GiE%dAOZ1okIa2THXdHRG=cwz;FcN!=+5%JrKSFO^ zojI!W9o`E|kd>8XtPnRK|8;t>;3~Cy`QJMLcs+@T3Td;EDOE`a0wC-c;M;fxkvd#9V*+ zy90rrf`m7{cBflT~P+==b8Ge4O*Qcco>kJlo7))iYa}kf6Bl4oTA>EK{ zKQ8@`PDjxR=eu`;AF?VYmxf>u&##eU+!4r+QCq!TfMaIlt7yo?y!=kACmYN=8%U1V zZs2Nfipn+@9pt|gJ0_JPmwz=rNUX#~crYn+JaaQ-H_G`CC-W{6@#5AO>RCDJxtJV`sd-?l!F~J$-9|e9t=Wf0LsRc1Z#Ccc% z6pIu%kprD`Fqcv3gCo=XiZA1IfiDaC+c>x~@;TX5WfkEKh})e?Fb~cF zh;XMdU!UCc4NFcq6HXXBiA&+?SXXkTcb-AAOVF?h9yCFKwobc?J?0a&U3>$6(u;Aa zQ=C+%oEWZRjIJMfM22h8iZ{ox06Gnx}piD$BOlpGjui{)v?!Ro)He1z1k~sbU%T$J{j}=L|xT`|{p7zA9J&ZU1^q?>?^6bj*>_RvW0&LIAA>)jm@C1d6W|A5Mh zh<4gDz>WPLOMh?_i}n4l@<#Q%xBi;p>OitMJy7&k|Sz~FH*MT{p}ldx<6sPLXb!VRCL z441Q;9B*TK1-ZWELAtp1+zepF&A_IQf=#^e-qB$KGn(ba&o!#A487Ytc24S;PiAWX z)cRr2X;*MC*W^5p`W~?s%+*n+c7QQRb7Z&ld;HVqB|X-of=zL6m9})itAQWXD2^hW zOQ(nhRzxWI8vvx>+|BZm4VPeYvI4DF)UbD;Ha;3_3}#S^`ezzh93>Nr5rz4O`Pi55 z$HvCk=3YoMAhbcV^4sL@@)>1wYABrKHXf7U_s{5rIz z;Kq6*Qk&9NfvTlEbdE0*qBfcGusrueI7JgTR>SMQd6SKHiZ!mcKqWaZkGX`MC&nnB zth^@{vYkE+4E3Lj-dg_Q)<+}I@nr_4XX5LPUoHpEIq#W#XEwH1y#@gSoV_xyltTzb zya+LeAYfi39!D<5s=R>660l+F(1dx(Z^=h3Y(cu;P80OS-F}~-K7gWfC^0Gvn=&3< zp#!MH@~2#xbi$zxKYc^?OA)x7ys$$(t@%X6#5BNMYJFqIq3l>fUgJ5xz*G4d4Zsj& zCebsl`8rlvJIp3O+a4BaNb!0be7d9X>y`gw_^5*XrTuFD_u8Jv0Z&xyFuMM%tAlGY{Wj})@lm?iHPONZXVUyIyq)iEhsL&}u6Bx4r$Fa(L5!z{mn8^=$z%$m@Sr?Zt<`8lbdC>taekSAjRZ?F;I} zuI2sd0jkswrNu72TP{N9%UzjQ7*a*&8;)W zL7J&TiFr-un!Gjw2N>v9-OP6Udb|hH_LHKf7Hmf(P?n-_^VFNsD5ztK1rdIPzTqQF zsK1*|<5s5QZ(D(Sq;FLE+$~p3iX!7-*U<=os`EZmIwp?Xd>Sr|=@M)S8YfYR2@gze zWL97vi?=x~a=q2hmjEJ@`>wGSIJwm)&b(n#LyV;TY2>~&<2510+V>H6a)B1KEV>BoG6izACGXb@y_W7eF7Er_h(bI<@ z_aG70v91L@K+QQNcEW$*hhi&fgppPug8Q9(n_3Q-s3KDdlK%jOVBTq7k?eKH>OA9S zrVyr(!gkX;tD*_j$7$F;i(iX&&`x7utfUGDZk7*)x%8ElSqo%|OGBp>KD-_MjC4s; z7+I)-@btpsfFT){HNO(C6Akfayi5x$4)25j&pze~nqKrn)g*SM$^Y`+3rfN*QOe>5?gegrfTE3qy5_cB7B- za{BbG-igrU$Jo4@!)=kP#-Ej5P5ax34#j$3|LVd=e@i!(vY~*tlxUue)$Mes)=Vt| zFLL-FvO$cY6FNi}6;wD;Xd6mJ@*qMKs;+S#HwVS*r_-FbM9+w0XHY=WHigZtC`JOX z3T*ZY$yh5kJO#U%EzJxO8i1BAzK*;!5eZ~tmPsXBA;q@FRk62xm8~TfE+^DqN|!Y* z3!enpeuNzSm<=Y$9(qe_c1qu2-p{`ucPu4K-C{YBRk6IZAor@l#C!B#M)(znkdQLV z-U#hktqS1@019fvKxG79S6S^9I*0$LoNA0*8|pAtG50D;tRz1M47_-iyQKqeQ0BM1 zq4%W1yO;j|?!#_cZ8uV4XFnEo?tdTqT__HG`*(KfpFjWv9Q$7Wv73)0WxJULVmoax zW`F12&@+WKB`)KjNcAt8utSn6o`&nCQ+FuzNiUi6h_ zy`hfW0{4uPyfeJ1&vL=$`+P+s^EjQCHqSaK%kR6I9QbCeTtf<9iyFUCWgq{ zDmui}IE0UFC~=w2J4dBI;@ts%gO9hYn{FD8LJppKo;=moQ7|L&I@P>+Q82l`Dzy1C zuYrkwZ4%7^r%ZQ2Rr9sJx}kb_Xp=w>J?A%*_>ySK-c-^~%9p!kFd(;0QD>$`c8#8Q zJGoNS3Cv5jLpIv_{B}X8hiu+gOM627&gmJWv2OQ1kZ`qCFz7DX=Ou1k9`4?};HG$_suWW@t}u(A11$ef>xlI{z)6pD_o>~Re8U9y!P%_AVWjNT zEXSlDSa5=v4&CW8$5wq_o0dq9mnO@lLE#@PEa^OvXZW% zV8K8}kiDA?<6<2^OWMATY@{~Jt#kl@agxTaqI3m4&0VGpzT876EWm#ZdoSpV(saVo z%jFxx+NSt*o$c2~4$VKOOsiQp$+zxDjJVlCaj5^272$zxEZXJ{ibsW8U~=LC!Kdp z=c=QXpX>W<+qzbYy=>DyoY%CL8O(0?t6|f6DD!!zj~5uf86$6OWOrn@mBd!a4j z{4I6jf}ky{5{t2Tg=>ySKZ(jKVzoY*=yX|`E{KD;`&kaG<|hvLxL?ho)V8seKxNpp zOL*y2Kme5f=&gB~tp&cQU&4kquUE1sXD%--^9%iH&n-h=J=8TX9yYayPVnr*gew{C zo9fKzh5nWI$;J_6J79igY9)NtJIw8>NGxTlfzy>*n3Thgz+rzYqG^LR{?E`E>t*A8 z>iVgxMLMfsAnJQS#VSdk=FFU2R279ja?S5k(9X)X(D|)ZAgiqFx>m$LfMCct40P@F zx|PP`NZ-Ld&ew-|3UXgS_2_gZ{jn3WCT{%6Rl9P)i!wEjUUdRt>l>hWD()tl2xm>x zXR7`#PK1j##^xXY-qa-5cYGdg;uXx-Go&vKE|tajR%_~3sR#MqY?Aqp?@KV+!6QK0 z+UDa9E+C;sMsvU@t%XqkK$$tkO(r8vq_&a^=UUd5<@HW^YSGeS6qbfJN_(-WGnl&{ z)EAWFzXTlfYI;@J?2V}S!BAWNje6gMA`7i}CJY2&rmOkyKPbk>b&W3)7n0@o0$eLL zzm-PHf2{gn-lS0N5hV9hI+^+;vIiB|M+=D|3$dOU(Hbrc3fkQ7hhzWKAE#81s#5(eds*l*8=nz$5Po35~_bG7Ce|>#tSDYMj z5o;s?2uP%VI0C9i)@Rf8@@;%}$PhxgWZ?CL!pj(%ix+Ly2R-8m;RYo1N>K1^OSop} zR|=hLv@jnWW~*i%7co<|rXNvAyCOeUhPGc<%^SKs56Ute%_rE`MZkpb{jY53({b$quW!;^r(vphJl2p@c%(co= zO0YP=CZ;H)J-z%Sfu5TBXy^6O?$Jp>&mL)#)CJ=UZF2sjzvR<%z4b0lxJ4M|toywk z#nB1`)j6Tb$zDks!sSgxt)1<>DD6|o%!It4k??>}-l{}s^mT74&>Gi{#Rgt0_6vy= zx@vm}8_Nd@(iQZcW_gS27O@xLsagSPORtE@-uc+{ z9yW8yAJO$y-ZXB}$K230dA+bYbkPz>(E>qT=cO>4*jbB7SGLNgogC?pBQ*z5OY`G7 z0JrlFwVCUqJ&OsEG0lg|g-0-zV;{6;6rmh~~7i#wM`kGr8}p@2+-9%9dN=X}62 z0|$~EecBDp1?y$JEVm7?1$15(0Y2n&`nR};8H$P`y(?!`d;1hh_FKQfkM^c-^xjsu zMlRY0ucXzk24cs0vk7F_AD9LwGwsK;JKH4OY^rR&h^6*2XRP$U!yM%m_k!~+XHEQ} z*BW9LDmH2cEWzISVb(`gw5bBW#04G45g$hQK-dR`Cx!nCzA{u%{rG1VyWn3}!(%7u!ykh~z{pET zb38kfvNYE%7`?yj^^J!6uowP)NavhtZF9>x#a+o4769|^k{(1s`o`pr-e&kC=x^P> zE|dHpN6PJld;gMqR9NBZ-w?`DeKC`l3 z#%e{xok5Py>@QLwU4gH}26eYK{E;s0z~Zmnh-;XL1f0@#^ADf3G%~mqSfdUFKK&v; z3MDQB200jOS7#x-5TOI4XF%3``9o1XH$5J5R6jbYnkC@e*R92xvXnMI2yn8!QPO-f zIky&Gij1O96_&n`gJEx@|D7NRUz96hOSIaif--! zcS>LN`UD~R5CBiOw0BLB>M%XtuQ9%Hw<71mOIK0*5j6;{_Pwagk9s48y|^%QBXltn z;*9{ZP*b}f#!m27zbh#@J~vYru8SB-TAO!$t=||-)p@V>Hg0|K8jf7@mEpQY#!N`k zE?~-37s%P)8mY8Lhh6;&NCioY{r|N<_{Ql1nnrU5lvObP$lVl&CMYX4?Zah0yCs(} zzXuPC%m+o?Mhez*`O z+n9obVSNw;%&pS*BKoKV_mX19a%RkS_MADBP0X#;L|3!1wFR3j6pTFtoE&DJ7JHZV z6p(|@#V_KZgg&8LW~ZI0%TZhDdQHAP5~0zn$YE$nSAkenZxaOV7n z8Su>AWKsH8w4}J3d*+<>g5uCcE+@nT2#OF5k>3#O#nXE&kg|pVTRkHvnk)SRl=qdwnPyG=a3K$rd2jQN+{vbF^DeV z$eE>Ceux@I2e>S1Y#IB4=J(cms`PbMEmeOpDfju!k(m!jy^tlyy;3yl_r#DIXng(4T;QutXiOdF7+g}Hnj zmu1Uc%yBa>B{v5E{sqZvmq>d6VEC@}0m?aS!87f+H~mJ$8HJ^)*woV!M3S-Q8FuOS z=`Ef}oax+=?=2J(YPQWE3FnTsC1VUEPJ>?gD^b_dvk|XH&YgBHm`inI18{=G9fx_4 zIuUw&vs6I4-U@QF&-3rCh7zH%pl4j719(c>WE*KVTkSQkq{K4tomqA+s3XLV#Zal(i3p2$(?C zxy#1}^=Swr@hqu4X)^9XziYOrl4ndh9Gm@mdj#DUGaZs(c zW}6CaN&{3|T=Hf8PRH5Q0o)BcC-0HlT;enCL<+|DT(+q_=N{@lT>J}g?}Ub%>dj$j4&?J7+30^VYsYZ@$#93bia<>p8QyKSrUdocGB<))%t* z*KL&FQz!njaI%Pk99_J;A3!8Eo3{U-CqEm8-3@uwjnpGM^L=a^`;Sb* z7-q#m@+(xIpDAo}4>FI4Vs+RRs(A7@{}Sj!betb9@yr8EbLy44{}vu@m0h0vb9vBr z6i6hbq93vMIYQ|*cCWiR&Gvt8X-?E(04a$1(nv~q$fL=JX85Ws*4r3+OgJa!s4lZK7$4ZEyX=eDEr79L+ksBf4bB5w| zH-Ft}y4o8_Oe(VOFj*&v)a?otDXDrVn}yA{Z_Lv7tds%6Ya#q}y0{z#;+GSgJ~J&S zYI+(JKz@=cz!qk^>~9y-f!!Kshp*SjQ{2lDc@@6xk5CqRx9)^0w01`TQunHrvIh|drt3sV3kI{dR zpZvWNsvDahc}$zgL>^x>AI9b*fHj7?2pC?OV8Fx>6Aixg4vEqxsDPKU>hIF2M#9Q+ zBhIuwvYD_tNhE=E90E>0yWqUqW^K-0;jgnrdAt23C%@cXeBcx*{4tRv ztyWf3)vS3o{+#Jsyq}kWqm?di0^_9!!qc}rkL)k=#vqGr6Tgg41nPm+;BL(NGov}5 zgTOrH72v7PE_sg#KOlRFfN9rMZ@GX;`PFfuHTiq>L!rU3z3OJ^0dmI>Vs#$)*j`aa zEy6;bbEe0*r7P$&>t`*){71vIXJY1_z$E2<-fK+Z`5OG9>92^dw+jzL1M{`P$4wNi z#FR(aE-p`F)B`uC&51XxUjBMm@oI{by^Pw2seM{|d^c$!rBj$uS7hS{l;a-*#9D1L zX17Hekb~9WcW+L;>g_`GPHfffK&_mKn62M&Ytg%6CyBCTq;A))8I8Y|#dO5voz{1* zieEYtUxZDAP2NDu32Hi*o$sC`YhY~K05mwKU00$0`>SuZ+duo|HlH5Z3m2w#1j$yZ zv%ZHg_`$>_fGk5UEYKab-M!fDx$(J%^bCKy+PVvg49i1FxxPz#9XWCg1HmwNc8Gxf zTRjMGUdlK_xOI_e&;)3XT}a95DrFxAuZ+%WLL>G-%$DJe10tP^$p;}o(84J!7XB!(Dt2a%zItJue3?g z#q?7_(tW?P6nx9xXBOJ-&*`{k>%CTp8{eXgoy<5`a03{3G7>S_x@GcLsxj>(*GkoV zrGfd>PQ4248Vc_%&~ud-Ddp`Aembz*7%vTc4^v4S>*Gfzo99TWd45dz=<~E z%#mrCDXZ|s#^9M(EcZup*{2^d4%^(#;;8(Q{FCX1r?ODkSsep?l8h%&x--H{i0OMr z*O8e`(81B(QIfW-xqenNI_>^45y_2psnxNe^-`uE7zqt7lP_KF1rD9hGvjZs4)5(0 zbYiH*VyY=kc^A4|G;6)! zek=H?Yakl(siwaQ263`(DuBTqG>hXZ`5(W?rMFwVxgBX&O@;^WR1ARTdVf4~^e4r& zfEut0L;zk}MeraLa8C1G39R9XY8VC0`9If$|}Spsg;EXQSlL$7r@m(+kEgvY8j?9eQO;&g?Tfi65qMup zC$56foqynw{Ep)Fppt2mFUd- zfDlMREedTF(iS?%j>8fl$`&9yR1v8aNR=uEvQ$wbia`yC5CQ}gL?96Yfv_ZCAYsW$ z0ttlWeddSne~=@`b3e~@pVxVwpMbcH8yH5Fv8)Vt+;#!7YV8VYfr8pZKX?3n$O=H@ zR2uyPL|P({aqSW!I{KgLz^^OTr{TE?(p{7`VVMn`#yDdJ!*5hD3{U_<*(5Ef$i?qBf;W{N*0{6vk@U5g` z(FX=msfkqJ+MhryIXs$k0Tayd8?(f$qJH#_`Flf4KwU*QI#S`=U3glxCe9STZrEI= zKYd7tQf6h;1<# z5>xM54gvEsx2wT2GI0FLQajV=>?An7ZXf@i^#n)*^WKoEQEccMTiBAtsO^0S>TEmM5RFL8z-FCLX5sbaZW#r%O^(Z#&? znh-_;sw8YRSU#(JqbyIzqQ;jhWT`G zS}l4|f)0U4rp_#$(i4#sJ8(^}{_28mSawzrie_o#3s?A|s*3{Ub21nok33%FYWwd= zG_*nd%QTH$C$*zI?8PwOlvucMpCb*t zU(OC_AU~Z2ug)a}In7uCU?CXX(7 zVbM#@8suOAf-fL21f@`sIFC~)>sj%s+M`d^#W8a1kXE>LY*2)z-*&*Bn%*6M$C+oh?B zj}cU?-{bIq&A`2xrhR;jl1f8lydu7zNe?+h_gDhhH*q73A=7q0KfgXky*nP9<|8L{>nX&XUJL3PUVGEv#)f@d`o>HHvN z?dlL3PKY24&{^}+-#pRse+PE^$Kmkha+PcI=T=bCvlc^Ef@UvBvCqIaI>P-L!>o{2 zaVzidYV55bSW-Sz6h(H;bQ=6{+K^ z{ei1~127z8@@Z@O$Sefb)yff>>)gI)2zN3YrUBzZxjC$WT}czR6t);Ev&BPO=hEex%)>F}!W z6HRJP{a3q^`0&4jxVr58-)Ll8>yB(L=&D0$0sg>S8bg{Us=#@%k)ntpxUJ&4)(JL=o$`5m|m1yzzxVz38l!eT7u83z&=O zTXwHyq=mj((DpJA$}tv(JSabY>gta*iS3QOWM;s=qZ$8h$R?e^nYulwA|~df!m1Jk zn&&G@X>{m&+-!Mrv-wWYVf@M!VMgu?7R)rk7NW^839pZLAHll`D|UCr8&_mDA7hy^?26wDt(81b*i0vGH~~lUyrswARc~ ze1U{l_YfG<^ZGQ0+&6=K_&10kakUrI6Bk2y+R_dZ+P(c$=Kuo)iH5CS@}ksY?sWflO-$Uz zJO~#%cLf$~8PzN-sChoNF|uu1M}tIYmQ&CTkQMbNMVEm{p$jd!AgjB?F?F@#sEtd; z2U;(?XmU}Uc<~ZmTG_;^iI(gF;9&{5BMF4TFw43j49LY$YTuXd(&49GH+@SY%Vo5u2(DG*I{vlY-F8+@j8P!&8$#nJaT`r=IOKrtKZx!yC=odoB9yUWj3 zT|A~8jTih0biorh>!XWKjz3S=gfHF^iG$Mx}syG)u+Peicf;KKUlQJWcJmM5E(!YA2`|o+W3E z{of20CIrTLn=e3PYV%mS=ZDyRwh|XZf8oH!iZu~CObBLR-u-J==5gCNQ`W%Gilyx& z1RdRZnHKC4!*HtvI-tF|9{A(nF_Gsogrt=fOx8PtDE3dcH~<@a&9g(_yj?9(B=_=- zWiP#xsx+;dIt54H2{?l3H<2_*BgQoAbd@1(KlNkyif>>L>t^UwD2fay9)H}lLyrN| zy%DX3v<58$z}9xiCSBzvl3yIk?r|k^pQ@ZySBIi@9yjO>)KV?gd#XRe8xNG<#7en` zZlKu%Q}$EyqrG1Y8jZ#4Uf zY<^04UoZe{50mlN1TD%>z&BXlz>wlGF!O5s6!-0N335;v+nv7vA3%S-RrZw>c4f9n-n1KG3TcWaX{B@oD_znn+dTv^{@ui-|6xP9LX12N zA&+&gN|4IR^^(-L$EDtpU+8I=-rg}gOr+@6o?FGz)H2+de;ICR^XnQp;rj!`jgbP- z^kk8B;h~8=L!oSW)FjC;>r39kw2_iR?f5nM?s0;citDc9jMSC#71SqyhU?8vU@dH1 zIkanPaZ(B^_ydP$jR;-QTc5?Od~KPj7(yIGu#8_z9*-&C*CUS-pR8=c3xgZl&fX~3 z-`WE@$!Lc(o|1o|2oy^Eoxp7~hI4m!a}Rk-e@UVCwQa>#Sl$W*P55N1Y65gyu@kty zj%wr4t!ATmy<>Hj@dx@c&~(U{bc74KLtt%4+HE>y!O3mchc3~vGCEj46Oae#&r={p z`e5}9;Bz-ec;2r9ASv?!*Z42*#40a%*vk#lFF5xv1%R`LpVfG)G4|L*VoSppE`nG> zhV%lluO4^vh^OYpQN8>yXkvgaPb~{;N7q6MmIo*RL=ZE*S+z(>;u{B|#<1ATMfANr zD-c&b!mySfB5>!+Pv_X{{#qqIjvnJs5T=ctU0EP@s-Ksi^|zTx7AbP5eqcfnxKQ{g zGML-`?=f88_IQc*TU6Ykoe15j`|E{`w7s`v@17?OKHz>gNpu_A2fZHXj6d_qql`T% z^}lK3|NV`Ksc{f@7S4~ldxd?~yS>mk9S_UQ)!jVP6F&5&@&?68g{yXcrfk+;7meK;dj3|uUgV2u&TE*C3OdVnR?D+!;$ zfNai%I#N<8HPed@%}jKa?C1=~Po<^&r{jbyZ#7O<{oC$fWPInEr@y82^*xmO-L4WJ z?{PzV2t&HbLdGwRCQC?!t`MRuwUdGd8Ag=nxxShv_0u#^{Xcs3-i$&3)5BJ z!&_BrB#dljHx?b z{RM^eGU3jn4bCX?KJz7+UAxlO(5Ny_!I42opoPtA+3`%H?Nhe{C=65pEGB>?*uvps zMGWU}6ho^vK zNWO+*epY^Q$*CmcvGOy8^V8=Bs-dJJ$sXfGJ#e4YaHKOix9Sq;rZF>hBQ;1iw+1O7|2Q zHKg1+=%L(LY1HQlSK1|L#c;6yI(2Bv24)}Na{LHq$UvW-+8*F*m2{G6aHs+Ae)0~y zVY&&~UdV4^oI66)RGU(Z%o3FX6GPC&;%I>#Px>zO<{mKDU!qd#2Mj7Ookn3O*UCly z6%xF0u)F2(j!W+jLIS|nI-8HvfQY($niLX63^y0eejFT3(^AE7)MA}!$kL~0D;j}l z8auC*x4&3*log?aHVQgsV+jbfd|HzW1l}q39;C;N{a6LzrHiA>{xZhpmNivM&WG5B zUEj^KC)y>KL9t^P5yio|zG*<4#Dup*k;zM?J^4ll1j=DA`EZle##h7G0KB_4dw0Ct z4j9}b3T@)+v0=(Di=gVVf#y?IaZpXEexE$qJk(AKxGUgNa?~v8B2P?t$Gvul{8^7u z06HI$|082%AyzinkG$$?TMmJ?t6_Rf(6bnn;0Z}k%C|ThD}CO({-1coYj)0R3pFdz z?Wh>(t`F~{ze?cj%i5&tyyZ@_*n13#C4q&{znQEm2WN22slK+aNb1=zRZa6r7@N?> zUxIJIE4=5)hyphEyvB`)bnq$ZzzKu}rmP64U&Qis^EF6S z3}ylv(O3bWitULCkN0CE`^C@KT;gk`0XL$hXFXh<3q!@Tgl|ivP3AP~d`xmMqgzi4 zXcP1Sqjkyv44L(n<-V=h1Ff#!k#j>}nXzrT#=8Xbct}SS>OYV$#<-?uDo{5>CSg zO@K9b&%Ze%bp{p+1ggts^$!2q*})rvBTeff;!Dz+9hz*k-s^IVGt{t7JSm^5nNI#S zS|N!vgcFM9=LI%?kI_uYwtNSwXT%J0l8)9KZP5|3PA=(E(Q-gB|*B^j;C<^m=x z6HPqKPw#-N{TSU(?5#O_W_bd0k;TnQ3XvjJI^@3iBXNl|0AQnS^ILwS?)XssPk(iv zGhrGD5`bTMq#TI}@5zU4jHK2V?d<`3A`oW~Z!8hT8hdA}(W(TY86d#&?;+-sVVhSe zX9fD-4rD|yp+s86zMT3!C)4_RN_y<(8ZD@$PjK(p4P50XikJax&1AOdL9=y61UJB* z&)A1=8&IXuDfU~V6zUj3R~r{QSh2_zy~40ai@Ny5Azwu^j3A2!`kkDw+D8BL9z?!p zuL3n}2x;uuHeiS-`hrTlh{3jTP%EFx>?TVNNTxFJIUgu5@(=oMhi^RDN{umZcj@5F z;IkP5n{qNWH6QNFACh)q;G1>A(E@q+hN-roYkU?RWx3NBDoJR2+ox3Qk>tHY4SH#a zLdb{Asd4ukTy1z8E5i6LV>5iEFj}QiN|R=rTn{oXJvN>}m2u_vjFg-iJjmA@>cO`N zE;cIZ#_O@+sD-d@*@^AycJK=KZQ+9)Yh)VNd%C8nQZms46*4#Ccol5?_I|v@&dks+ zUtxyXAoo!`kcc^wF!C!<1pUfG)vs-j&@VhnN>T5%THS9R4%t|%(I7uk|A27!_O(5q z?n$ZE;8X#c2H4Z&P!)`#6M_+VWDB_jnN#fVFugy&m&c5Q1z_`QR~CQucVT|@#AsbH zlYl|ziXIp*N(94IhACz?|C=D+xGa$n^M>)x?)~wKvHh`G8{v4FAt^}a3}5xB#Jm{; zALP_tgpSY-+ld}vSS?@IoG^@Nlde1*Zf2~PGjfBK{$ty&=GwLd{;6Hn$Z`rTMf?x?oi7_t<|)?mCvy%QyeqHspwhf>(6!dzF!SLa>N_s8);Y*IKFs z>H*R<(PX0fdzS{xD>CCEW4GYJ8G)KkyPop60u=kosql?zlXKKiS7A|_&Lv=v;Nsc& z^#Xo2S-3j?b(zyp(;Wtic7s1kGSJtL`XYNR8Ssu7)7z?)M$tLHH7}$~Rl-8)u}zaF z%#DBZo!iEf8%`ssY!C2g43dH-^T)|%-~6mImgEw1d@AGJnJ zRh-ScCfHA>iOwAastwaDW2D9hRu&R*U*B#7>7F#6mPjKYNt}R+)y+oCTJZW}msxp% z+C5c;=n4)@RWFF@wdUTz>Cue1M46YrzEgxHEmA-n`Kgl!Of~RoV(ZdwRn6NL+-ulXtf+Nh6;b8kd449AG)r zZ5d=$ZmEPNKDKwh^bukszcv*Q)|n@p=XL&W~Vc16Q>&*@(0l!E^}vuVfN z2ZfS*50cQr(mPAj5LVYC@=)4QgM}Kn%_$Ts|O6wk~GVScE

n_aI8PuaRX#X85JqC%!BJetA@c$w|J?t1K@_ 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�acuS)6=3I`&%yGWUKdWq1ZM<+Xn4%*$ovpg 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 z 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

UGy^@3aCRE` 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 B)9L^K literal 0 HcmV?d00001 diff --git a/docs/img/ntp.jpg b/docs/img/ntp.jpg deleted file mode 100644 index 0f6d333691c878029a5e138883e0c725fe628a60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166411 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%0D)wQ# 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

2(=4YWse7Cpm1{J)?}<95`!(BXn3_kypN@ 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%0D4J5&$)_?^f8 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 UnDUi&FKyq?|G%s!OuzK~KVsKZ5dZ)H From 2830b2adb04dc8aced114b5454e2c5cd4d771dbe Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 9 Aug 2024 22:37:27 -0500 Subject: [PATCH 212/286] docs: add disclaimer to README --- docs/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/README.md b/docs/README.md index 8aebeeb..f13fff2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -46,3 +46,13 @@ When submitting an issue, please include * Steps to reproduce the issue or a description of what you were trying to accomplish. Providing a test blend file is especially helpful Got suggestions? Please create an [issue](https://github.com/BrendanParmer/NodeToPython/issues)! I'm happy to hear what features people want + + +## Legal Disclaimer +**Important Notice:** + +This tool is provided under the MIT license and is intended for lawful use only. It is your responsibility to ensure that any use of this tool complies with all applicable laws, including but not limited to copyright and intellectual property laws. The authors of this tool are not liable for any illegal use of this tool or any legal consequences that may arise from such use. + +In particular, this tool generates code that requires the Blender Python API, which is licensed under the GNU General Public License (GPL). Code generated by this tool that incorporates or uses the Blender Python API must comply with the GPL requirements. For more details on the GPL, please see https://www.gnu.org/licenses/gpl-3.0.html. For more details on Blender's licensing, please see https://www.blender.org/about/license/ + +**Disclaimer**: The authors of this tool are not legal professionals. This notice is provided for informational purposes only and should not be construed as legal advice. For specific legal advice related to the use of this tool and compliance with the GPL or other legal matters, please consult a qualified attorney. \ No newline at end of file From b6775c6449c4efeb690448b0225a71e9d4137223 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Fri, 9 Aug 2024 22:39:17 -0500 Subject: [PATCH 213/286] docs: add disclaimer to README --- docs/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/README.md b/docs/README.md index 3837b0b..136ee82 100644 --- a/docs/README.md +++ b/docs/README.md @@ -43,3 +43,13 @@ When submitting an issue, please include * Steps to reproduce the issue or a description of what you were trying to accomplish. Providing a test blend file is especially helpful Got suggestions? Please create an [issue](https://github.com/BrendanParmer/NodeToPython/issues)! I'm happy to hear what features people want + +## Legal Disclaimer + +**Important Notice:** + +This tool is provided under the MIT license and is intended for lawful use only. It is your responsibility to ensure that any use of this tool complies with all applicable laws, including but not limited to copyright and intellectual property laws. The authors of this tool are not liable for any illegal use of this tool or any legal consequences that may arise from such use. + +In particular, this tool generates code that requires the Blender Python API, which is licensed under the GNU General Public License (GPL). Code generated by this tool that incorporates or uses the Blender Python API must comply with the GPL requirements. For more details on the GPL, please see https://www.gnu.org/licenses/gpl-3.0.html. For more details on Blender's licensing, please see https://www.blender.org/about/license/ + +**Disclaimer:** The authors of this tool are not legal professionals. This notice is provided for informational purposes only and should not be construed as legal advice. For specific legal advice related to the use of this tool and compliance with the GPL or other legal matters, please consult a qualified attorney. \ No newline at end of file From 94387b7b16ed407b9fff4bc08f49b4adf4823f88 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 10 Aug 2024 17:16:38 -0500 Subject: [PATCH 214/286] feat: if no description is specified, use the name --- ntp_operator.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ntp_operator.py b/ntp_operator.py index 106f796..d0735f7 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -140,7 +140,7 @@ def _setup_options(self, options: NTPOptions) -> bool: else: self.report({'ERROR'}, f"{options.menu_id} is not a valid menu") return False - return True + return True def _setup_addon_directories(self, context: Context, nt_var: str) -> bool: """ @@ -1387,6 +1387,8 @@ def _create_manifest(self) -> None: manifest.write(f"version = {version_to_manifest_str(self._version)}\n") manifest.write(f"name = {str_to_py_str(self._name)}\n") + if self._description == "": + self._description = self._name manifest.write(f"tagline = {str_to_py_str(self._description)}\n") manifest.write(f"maintainer = {str_to_py_str(self._author_name)}\n") manifest.write("type = \"add-on\"\n") From 1ae5be0f5a194d21c1a7eca14e1e730edb5e610a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 10 Aug 2024 17:16:56 -0500 Subject: [PATCH 215/286] fix: issues with color balance node --- compositor/operator.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/compositor/operator.py b/compositor/operator.py index 92ba873..02aca7e 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -102,17 +102,26 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance """ if node.correction_method == 'LIFT_GAMMA_GAIN': lst = [NTPNodeSetting("correction_method", ST.ENUM), - NTPNodeSetting("gain", ST.COLOR), - NTPNodeSetting("gamma", ST.COLOR), - NTPNodeSetting("lift", ST.COLOR)] + NTPNodeSetting("gain", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("gain", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("gamma", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("lift", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0))] else: lst = [NTPNodeSetting("correction_method", ST.ENUM), - NTPNodeSetting("offset", ST.COLOR), - NTPNodeSetting("offset_basis", ST.FLOAT), - NTPNodeSetting("power", ST.COLOR), - NTPNodeSetting("slope", ST.COLOR)] - - self._node_infos['CompositorNodeColorBalance'].attributes_ = lst + NTPNodeSetting("offset", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("offset_basis", ST.FLOAT), + NTPNodeSetting("power", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("slope", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("slope", ST.COLOR, min_version_=(3, 5, 0))] + + color_balance_info = self._node_infos['CompositorNodeColorBalance'] + self._node_infos['CompositorNodeColorBalance'] = color_balance_info._replace(attributes_ = lst) + for setting in self._node_infos['CompositorNodeColorBalance'].attributes_: + print(setting.name_) def _process_node(self, node: Node, ntp_nt: NTP_NodeTree): """ From ddd07a58a2e260f416268e446da11bbf26bb519a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 10 Aug 2024 17:36:10 -0500 Subject: [PATCH 216/286] fix: warn when encountering invalid node tree in dfs --- ntp_operator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ntp_operator.py b/ntp_operator.py index d0735f7..5051384 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -241,6 +241,10 @@ def dfs(nt: NodeTree) -> None: Parameters: nt (NodeTree): current node tree in the dependency graph """ + if nt is None: + self.report({'ERROR'}, "NodeToPython: Found an invalid node tree. " + "Are all data blocks valid?") + return if nt not in visited: visited.add(nt) for group_node in [node for node in nt.nodes From e7b17bac57c2e050d0101cb44e85cf1a955f3d72 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 10 Aug 2024 17:41:30 -0500 Subject: [PATCH 217/286] docs: update README --- docs/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index ac56d53..be4eb77 100644 --- a/docs/README.md +++ b/docs/README.md @@ -32,7 +32,8 @@ In the tab, there are panels to create add-ons for Geometry Nodes, Materials, an In the options panel, select either **Script** or **Add-on**. * **Script** mode creates a function that generates the node tree and copies it to your Blender clipboard. -* **Add-on** mode generates a zip file for you in the save directory specified in the NodeToPython menu. From here, you can install it like a regular add-on. The generated add-on comes complete with operator registration and creating a modifier/material for the node tree to be used in. +* **Add-on** mode generates a zip file for you in the save directory specified in the NodeToPython menu. From here, you can install it like a regular add-on. The generated add-on comes complete with operator registration and creating a modifier/material/scene for the node tree to be used in. + * When exporting to an add-on in Blender 4.2 or higher, you'll need to select a GPL-compliant liscense for Blender to be able to register the extension. ## Bug Reports and Suggestions From 8ddfa08d70430db95f724500f1fad722f4fa3517 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 10 Aug 2024 18:32:19 -0500 Subject: [PATCH 218/286] fix: wrong quotation marks in some license texts --- options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/options.py b/options.py index 2df6a81..15cd0db 100644 --- a/options.py +++ b/options.py @@ -85,7 +85,7 @@ class NTPOptions(bpy.types.PropertyGroup): ('SPDX:LGPL-3.0-or-later', "GNU Lesser General Public License v3.0 or later", ""), ('SPDX:BSD-1-Clause', "BSD 1-Clause \"Simplified\" License", ""), ('SPDX:BSD-2-Clause', "BSD 2-Clause \"Simplified\" License", ""), - ('SPDX:BSD-3-Clause', "BSD 3-Clause “New” or “Revised” License", ""), + ('SPDX:BSD-3-Clause', "BSD 3-Clause \"New\" or \"Revised\" License", ""), ('SPDX:BSL-1.0', "Boost Software License 1.0", ""), ('SPDX:MIT', "MIT License", ""), ('SPDX:MIT-0', "MIT No Attribution", ""), From 7cecbb7a7ec8abffeea91f2f4ed37016f0e88f4a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:28:52 -0500 Subject: [PATCH 219/286] feat: include license with packaged addon --- compositor/operator.py | 1 + geometry/operator.py | 1 + license_templates.py | 2446 ++++++++++++++++++++++++++++++++++++++++ ntp_operator.py | 13 +- shader/operator.py | 1 + 5 files changed, 2461 insertions(+), 1 deletion(-) create mode 100644 license_templates.py diff --git a/compositor/operator.py b/compositor/operator.py index 02aca7e..d16ebbc 100644 --- a/compositor/operator.py +++ b/compositor/operator.py @@ -250,6 +250,7 @@ def execute(self, context): self._create_register_func() self._create_unregister_func() self._create_main_func() + self._create_license() if bpy.app.version >= (4, 2, 0): self._create_manifest() else: diff --git a/geometry/operator.py b/geometry/operator.py index a19c098..4cb8a8b 100644 --- a/geometry/operator.py +++ b/geometry/operator.py @@ -211,6 +211,7 @@ def execute(self, context): self._create_register_func() self._create_unregister_func() self._create_main_func() + self._create_license() if bpy.app.version >= (4, 2, 0): self._create_manifest() else: diff --git a/license_templates.py b/license_templates.py new file mode 100644 index 0000000..d17417d --- /dev/null +++ b/license_templates.py @@ -0,0 +1,2446 @@ +""" +NodeToPython is licensed under the MIT license, as +specified in the LICENSE file in the root of this project + +This file contains licensing text meant for +licensing generated add-ons created with NodeToPython, +which do not apply to NodeToPython itself. + +All licenses are copyrighted by their respective authors. +""" + +def gpl_2_0(year: int, author: str) -> str: + return """ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. +""" + +def gpl_3_0(year: int, author: str) -> str: + return """ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. +""" + +def lgpl_2_1(year: int, author: str) -> str: + return """ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random + Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! +""" + +def lgpl_3_0(year: int, author: str) -> str: + return """ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. +""" + +def bsd_1(year: int, author: str) -> str: + return f""" +Copyright (c) {year} {author} All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +THIS SOFTWARE IS PROVIDED BY {author.upper()} “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL {author.upper()} BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" + +def bsd_2(year: int, author: str) -> str: + return f""" +BSD 2-Clause License + +Copyright (c) {year}, {author} + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" + +def bsd_3(year: int, author: str) -> str: + return f""" +BSD 3-Clause License + +Copyright (c) {year}, {author} + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" + +def bsl_1_0(year: int, author: str) -> str: + return """ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +""" + +def mit(year: int, author: str) -> str: + return f""" +MIT License + +Copyright (c) {year} {author} + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +""" + +def mit_0(year: int, author: str) -> str: + return f""" +MIT No Attribution + +Copyright {year} {author} + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" + +def mpl_2_0(year: int, author: str) -> str: + return """ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. +""" + +def pixar(year: int, author: str) -> str: + return """ + + Modified Apache 2.0 License + + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor + and its affiliates, except as required to comply with Section 4(c) of + the License and to reproduce the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. +""" + +def zlib(year: int, author: str) -> str: + return f""" +Copyright (c) {year} {author} + +This software is provided \'as-is\', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +""" + +license_templates = { + 'SPDX:GPL-2.0-or-later': gpl_2_0, + 'SPDX:GPL-3.0-or-later': gpl_3_0, + 'SPDX:LGPL-2.1-or-later': lgpl_2_1, + 'SPDX:LGPL-3.0-or-later': lgpl_3_0, + 'SPDX:BSD-1-Clause': bsd_1, + 'SPDX:BSD-2-Clause': bsd_2, + 'SPDX:BSD-3-Clause': bsd_3, + 'SPDX:BSL-1.0': bsl_1_0, + 'SPDX:MIT': mit, + 'SPDX:MIT-0': mit_0, + 'SPDX:MPL-2.0': mpl_2_0, + 'SPDX:Pixar': pixar, + 'SPDX:Zlib': zlib +} \ No newline at end of file diff --git a/ntp_operator.py b/ntp_operator.py index 5051384..6a55471 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -9,10 +9,12 @@ from bpy.types import NodeTreeInterfacePanel, NodeTreeInterfaceSocket from bpy.types import NodeTreeInterfaceItem +import datetime import os -from typing import TextIO import shutil +from typing import TextIO +from .license_templates import license_templates from .ntp_node_tree import NTP_NodeTree from .options import NTPOptions from .node_settings import NodeInfo, ST @@ -1383,6 +1385,15 @@ def _create_main_func(self) -> None: self._write("if __name__ == \"__main__\":", "") self._write("register()", "\t") + def _create_license(self) -> None: + if self._license == 'OTHER': + return + license_file = open(f"{self._addon_dir}/LICENSE", "w") + year = datetime.date.today().year + license_txt = license_templates[self._license](year, self._name) + license_file.write(license_txt) + license_file.close() + if bpy.app.version >= (4, 2, 0): def _create_manifest(self) -> None: manifest = open(f"{self._addon_dir}/blender_manifest.toml", "w") diff --git a/shader/operator.py b/shader/operator.py index 2825fe8..b614f38 100644 --- a/shader/operator.py +++ b/shader/operator.py @@ -176,6 +176,7 @@ def execute(self, context): self._create_register_func() self._create_unregister_func() self._create_main_func() + self._create_license() if bpy.app.version >= (4, 2, 0): self._create_manifest() else: From 926ac54f60e072fa70dbf29cbfb66450ced98a78 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:33:00 -0500 Subject: [PATCH 220/286] fix: use author and not addon name in licenses --- ntp_operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ntp_operator.py b/ntp_operator.py index 6a55471..cb568f4 100644 --- a/ntp_operator.py +++ b/ntp_operator.py @@ -1390,7 +1390,7 @@ def _create_license(self) -> None: return license_file = open(f"{self._addon_dir}/LICENSE", "w") year = datetime.date.today().year - license_txt = license_templates[self._license](year, self._name) + license_txt = license_templates[self._license](year, self._author_name) license_file.write(license_txt) license_file.close() From 88e52052534f68e44becb88e2cb979934d194c11 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 17 Aug 2024 16:27:56 -0500 Subject: [PATCH 221/286] refactor: put src in nodetopython, add tools to this repo --- __init__.py => nodetopython/__init__.py | 0 .../blender_manifest.toml | 0 .../compositor}/__init__.py | 0 .../compositor}/operator.py | 0 {compositor => nodetopython/compositor}/ui.py | 0 .../geometry}/__init__.py | 0 .../geometry}/node_tree.py | 0 .../geometry}/operator.py | 0 {geometry => nodetopython/geometry}/ui.py | 0 .../license_templates.py | 0 .../node_settings.py | 0 .../ntp_node_tree.py | 0 .../ntp_operator.py | 0 options.py => nodetopython/options.py | 0 {shader => nodetopython/shader}/__init__.py | 0 {shader => nodetopython/shader}/operator.py | 0 {shader => nodetopython/shader}/ui.py | 0 utils.py => nodetopython/utils.py | 0 tools/node_settings_generator/README.md | 8 + tools/node_settings_generator/parse_nodes.py | 341 ++++++++++++++++++ tools/node_settings_generator/types_utils.py | 140 +++++++ 21 files changed, 489 insertions(+) rename __init__.py => nodetopython/__init__.py (100%) rename blender_manifest.toml => nodetopython/blender_manifest.toml (100%) rename {compositor => nodetopython/compositor}/__init__.py (100%) rename {compositor => nodetopython/compositor}/operator.py (100%) rename {compositor => nodetopython/compositor}/ui.py (100%) rename {geometry => nodetopython/geometry}/__init__.py (100%) rename {geometry => nodetopython/geometry}/node_tree.py (100%) rename {geometry => nodetopython/geometry}/operator.py (100%) rename {geometry => nodetopython/geometry}/ui.py (100%) rename license_templates.py => nodetopython/license_templates.py (100%) rename node_settings.py => nodetopython/node_settings.py (100%) rename ntp_node_tree.py => nodetopython/ntp_node_tree.py (100%) rename ntp_operator.py => nodetopython/ntp_operator.py (100%) rename options.py => nodetopython/options.py (100%) rename {shader => nodetopython/shader}/__init__.py (100%) rename {shader => nodetopython/shader}/operator.py (100%) rename {shader => nodetopython/shader}/ui.py (100%) rename utils.py => nodetopython/utils.py (100%) create mode 100644 tools/node_settings_generator/README.md create mode 100644 tools/node_settings_generator/parse_nodes.py create mode 100644 tools/node_settings_generator/types_utils.py diff --git a/__init__.py b/nodetopython/__init__.py similarity index 100% rename from __init__.py rename to nodetopython/__init__.py diff --git a/blender_manifest.toml b/nodetopython/blender_manifest.toml similarity index 100% rename from blender_manifest.toml rename to nodetopython/blender_manifest.toml diff --git a/compositor/__init__.py b/nodetopython/compositor/__init__.py similarity index 100% rename from compositor/__init__.py rename to nodetopython/compositor/__init__.py diff --git a/compositor/operator.py b/nodetopython/compositor/operator.py similarity index 100% rename from compositor/operator.py rename to nodetopython/compositor/operator.py diff --git a/compositor/ui.py b/nodetopython/compositor/ui.py similarity index 100% rename from compositor/ui.py rename to nodetopython/compositor/ui.py diff --git a/geometry/__init__.py b/nodetopython/geometry/__init__.py similarity index 100% rename from geometry/__init__.py rename to nodetopython/geometry/__init__.py diff --git a/geometry/node_tree.py b/nodetopython/geometry/node_tree.py similarity index 100% rename from geometry/node_tree.py rename to nodetopython/geometry/node_tree.py diff --git a/geometry/operator.py b/nodetopython/geometry/operator.py similarity index 100% rename from geometry/operator.py rename to nodetopython/geometry/operator.py diff --git a/geometry/ui.py b/nodetopython/geometry/ui.py similarity index 100% rename from geometry/ui.py rename to nodetopython/geometry/ui.py diff --git a/license_templates.py b/nodetopython/license_templates.py similarity index 100% rename from license_templates.py rename to nodetopython/license_templates.py diff --git a/node_settings.py b/nodetopython/node_settings.py similarity index 100% rename from node_settings.py rename to nodetopython/node_settings.py diff --git a/ntp_node_tree.py b/nodetopython/ntp_node_tree.py similarity index 100% rename from ntp_node_tree.py rename to nodetopython/ntp_node_tree.py diff --git a/ntp_operator.py b/nodetopython/ntp_operator.py similarity index 100% rename from ntp_operator.py rename to nodetopython/ntp_operator.py diff --git a/options.py b/nodetopython/options.py similarity index 100% rename from options.py rename to nodetopython/options.py diff --git a/shader/__init__.py b/nodetopython/shader/__init__.py similarity index 100% rename from shader/__init__.py rename to nodetopython/shader/__init__.py diff --git a/shader/operator.py b/nodetopython/shader/operator.py similarity index 100% rename from shader/operator.py rename to nodetopython/shader/operator.py diff --git a/shader/ui.py b/nodetopython/shader/ui.py similarity index 100% rename from shader/ui.py rename to nodetopython/shader/ui.py diff --git a/utils.py b/nodetopython/utils.py similarity index 100% rename from utils.py rename to nodetopython/utils.py diff --git a/tools/node_settings_generator/README.md b/tools/node_settings_generator/README.md new file mode 100644 index 0000000..939e971 --- /dev/null +++ b/tools/node_settings_generator/README.md @@ -0,0 +1,8 @@ +# Node Settings Generator +(Instructions may need adjusted depending on your operating system, especially Windows) +1. To create a node settings file, run + ``` + python3 node_settings_generator/parse_nodes.py x y + ``` + where `x.y` is the Blender version you want to generate settings up to. + * Note that the minimum version is hard-coded to 3.0, as there aren't currently plans to extend NodeToPython compatibility to before that version. \ No newline at end of file diff --git a/tools/node_settings_generator/parse_nodes.py b/tools/node_settings_generator/parse_nodes.py new file mode 100644 index 0000000..ab42e73 --- /dev/null +++ b/tools/node_settings_generator/parse_nodes.py @@ -0,0 +1,341 @@ +import argparse +from bs4 import BeautifulSoup +from threading import Thread, Lock +from io import TextIOWrapper +import os +import re +import time +from typing import NamedTuple +import urllib.request + +import types_utils + +class NTPNodeSetting(NamedTuple): + name_: str + type_: types_utils.ST + + def __lt__(self, other): + return self.name_ < other.name_ + +class Version(NamedTuple): + major_: int + minor_: int + + def tuple_str(self) -> str: + return f"({self.major_}, {self.minor_})" + + def point_str(self) -> str: + return f"{self.major_}.{self.minor_}" + +class NodeInfo(NamedTuple): + versions_: list[Version] + attributes_: dict[NTPNodeSetting, list[Version]] + +mutex = Lock() +log_mutex = Lock() +nodes_dict : dict[str, NodeInfo] = {} +types_dict : dict[str, set[str]] = {} +log_file = None + +NTP_MIN_VERSION = (3, 0) + +def process_attr(attr, section, node: str, version: Version) -> None: + name_section = attr.find(["code", "span"], class_="sig-name descname") + + if not name_section: + raise ValueError(f"{version.tuple_str()} {node}: Couldn't find name section in\n\t{section}") + name = name_section.text + + type_section = attr.find("dd", class_="field-odd") + if not type_section: + raise ValueError(f"{version.tuple_str()} {node}.{name}: Couldn't find type section in\n\t{section}") + type_text = type_section.text + + with mutex: + first_word = type_text.split()[0] + if first_word not in types_dict: + types_dict[first_word] = {type_text} + else: + types_dict[first_word].add(type_text) + + ntp_type = types_utils.get_NTP_type(type_text) + if ntp_type is None: + # Read-only attribute, don't add to attribute list + with log_mutex: + log_file.write(f"WARNING: {version.tuple_str()} {node}.{name}'s type is being ignored:\n\t{type_text.strip()}\n") + return + + ntp_setting = NTPNodeSetting(name, ntp_type) + with mutex: + if ntp_setting not in nodes_dict[node].attributes_: + nodes_dict[node].attributes_[ntp_setting] = [] + nodes_dict[node].attributes_[ntp_setting].append(version) + +def process_node(node: str, section, version: Version): + global nodes_dict + with mutex: + if node not in nodes_dict: + nodes_dict[node] = NodeInfo([], {}) + nodes_dict[node].versions_.append(version) + + attrs = section.find_all("dl", class_="py attribute") + + for attr in attrs: + process_attr(attr, section, node, version) + + datas = section.find_all("dl", class_="py data") + for data in datas: + process_attr(data, section, node, version) + +def download_file(filepath: str, version: Version, local_path: str) -> bool: + file_url = f"https://docs.blender.org/api/{version.point_str()}/{filepath}" + + headers_ = {'User-Agent': 'Mozilla/5.0'} + + req = urllib.request.Request(file_url, headers=headers_) + + if not os.path.exists(os.path.dirname(local_path)): + os.makedirs(os.path.dirname(local_path)) + + while True: + try: + with urllib.request.urlopen(req) as response: + with open(local_path, 'wb') as file: + file.write(response.read()) + break + except urllib.error.HTTPError as e: + if e.code == 429: + time.sleep(1.0) + else: + raise + + print(f"Downloaded {file_url} to {local_path}") + return True + + +def get_subclasses(current: str, parent: str, root_path: str, + version: Version) -> list[str]: + relative_path = f"bpy.types.{current}.html" + current_path = os.path.join(root_path, relative_path) + + if not os.path.exists(current_path): + download_file(relative_path, version, current_path) + + with open(current_path, "r") as current_file: + current_html = current_file.read() + + soup = BeautifulSoup(current_html, "html.parser") + + sections = soup.find_all(id=f"{current.lower()}-{parent.lower()}") + if not sections: + raise ValueError(f"{version.tuple_str()} {current}: Couldn't find main section") + + section = sections[0] + paragraphs = section.find_all("p") + if len(paragraphs) < 2: + raise ValueError(f"{version.tuple_str()} {current}: Couldn't find subclass section") + + subclasses_paragraph = paragraphs[1] + if not subclasses_paragraph.text.strip().startswith("subclasses —"): + # No subclasses for this type + process_node(current, section, version) + return + + subclass_anchors = subclasses_paragraph.find_all("a") + if not subclass_anchors: + raise ValueError(f"{version.tuple_str()} {current} No anchors in subclasses paragraph") + + subclass_types = [anchor.get("title") for anchor in subclass_anchors] + threads: list[Thread] = [] + for type in subclass_types: + if not type: + raise ValueError(f"{version.tuple_str()} {current} Type was invalid") + is_matching = re.match(r"bpy\.types\.(.*)", type) + if not is_matching: + raise ValueError(f"{version.tuple_str()} {current}: Type {type} was not of the form \"bpy.types.x\"") + pure_type = is_matching.group(1) + if (pure_type == "TextureNode"): + # unsupported + continue + + thread = Thread(target=get_subclasses, args=(pure_type, current, root_path, version)) + threads.append(thread) + thread.start() + + for thread in threads: + thread.join() + +def process_bpy_version(version: Version) -> None: + print(f"Processing version {version.point_str()}") + + current = "NodeInternal" + parent = "Node" + + root_path = os.path.join(bpy_docs_path, f"{version.point_str()}/") + + get_subclasses(current, parent, root_path, version) + +def generate_versions(max_version_inc: Version) -> list[Version]: + BLENDER_3_MAX_VERSION = 6 + + versions = [Version(3, i) for i in range(0, BLENDER_3_MAX_VERSION + 1)] + versions += [Version(4, i) for i in range(0, max_version_inc[1] + 1)] + + #lazy max version check + for version in versions[::-1]: + if version > max_version_inc: + versions.remove(version) + + return versions + +def subminor(version: Version) -> tuple: + return (version[0], version[1], 0) + +def get_min_version(versions: list[Version]) -> Version: + min_version = min(versions) + + if min_version != NTP_MIN_VERSION: + return min_version + else: + return None + +def get_max_version(versions: list[Version], blender_versions: list[Version] + ) -> Version: + max_v_inclusive = max(versions) + max_v_inclusive_index = blender_versions.index(max_v_inclusive) + max_v_exclusive = blender_versions[max_v_inclusive_index + 1] + + if max_v_exclusive != blender_versions[-1]: + return max_v_exclusive + else: + return None + +def write_imports(file: TextIOWrapper): + file.write("from enum import Enum, auto\n") + file.write("from typing import NamedTuple\n") + file.write("\n") + +def write_st_enum(file: TextIOWrapper): + file.write("class ST(Enum):\n") + file.write("\t\"\"\"\n\tSettings Types\n\t\"\"\"\n") + + for setting_type in types_utils.ST: + file.write(f"\t{setting_type.name} = auto()\n") + + file.write("\n") + +def write_ntp_node_setting_class(file: TextIOWrapper): + file.write("class NTPNodeSetting(NamedTuple):\n") + file.write("\tname_: str\n") + file.write("\tst_: ST\n") + file.write(f"\tmin_version_: tuple = {subminor(NTP_MIN_VERSION)}\n") + file.write(f"\tmax_version_: tuple = {subminor(NTP_MAX_VERSION_EXC)}\n") + file.write("\n") + +def write_node_info_class(file: TextIOWrapper): + file.write("class NodeInfo(NamedTuple):\n") + file.write("\tattributes_: list[NTPNodeSetting]\n") + file.write(f"\tmin_version_: tuple = {subminor(NTP_MIN_VERSION)}\n") + file.write(f"\tmax_version_: tuple = {subminor(NTP_MAX_VERSION_EXC)}\n") + file.write("\n") + +def write_ntp_node_settings(node_info: NodeInfo, file: TextIOWrapper, + node_min_v: Version, node_max_v: Version): + attr_dict = node_info.attributes_ + file.write("\n\t\t[") + attrs_exist = len(attr_dict.items()) > 0 + if attrs_exist: + file.write("\n") + sorted_attrs = dict(sorted(attr_dict.items())) + for attr, attr_versions in sorted_attrs.items(): + min_version_str = "" + attr_min_version = get_min_version(attr_versions) + if attr_min_version != None and attr_min_version != node_min_v: + min_version_str = f", min_version_={subminor(attr_min_version)}" + + max_version_str = "" + attr_max_version = get_max_version(attr_versions, versions) + if attr_max_version != None and attr_max_version != node_max_v: + max_version_str = f", max_version_={subminor(attr_max_version)}" + + file.write(f"\t\t\tNTPNodeSetting(\"{attr.name_}\", ST.{attr.type_.name}" + f"{min_version_str}{max_version_str}),\n") + + if attrs_exist: + file.write("\t\t") + file.write("]") + +def write_node(name: str, node_info: NodeInfo, file: TextIOWrapper): + file.write(f"\t\'{name}\' : NodeInfo(") + + node_min_v = get_min_version(node_info.versions_) + node_max_v = get_max_version(node_info.versions_, versions) + + write_ntp_node_settings(node_info, file, node_min_v, node_max_v) + + if node_min_v != None: + file.write(f",\n\t\tmin_version_ = {subminor(node_min_v)}") + if node_max_v != None: + file.write(f",\n\t\tmax_version_ = {subminor(node_max_v)}") + + file.write("\n\t),\n\n") + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('max_major_version', type=int, + help="Max major version (inclusive) of Blender to generate node settings for") + parser.add_argument('max_minor_version', type=int, + help="Max minor version (inclusive) of Blender to generate node settings for") + args = parser.parse_args() + + current_path = os.path.dirname(os.path.realpath(__file__)) + bpy_docs_path = os.path.join(current_path, "bpy_docs") + + NTP_MAX_VERSION_INC = Version(args.max_major_version, args.max_minor_version) + max_version_path = os.path.join(bpy_docs_path, f"{NTP_MAX_VERSION_INC.point_str()}") + + versions = generate_versions(NTP_MAX_VERSION_INC) + + output_dir_path = os.path.join(current_path, "output") + if not os.path.exists(output_dir_path): + os.makedirs(output_dir_path) + + log_filepath = os.path.join(output_dir_path, "log.txt") + log_file = open(log_filepath, 'w') + + for version in versions: + process_bpy_version(version) + + NTP_MAX_VERSION_EXC = (NTP_MAX_VERSION_INC[0], NTP_MAX_VERSION_INC[1] + 1) + versions.append(NTP_MAX_VERSION_EXC) + + sorted_nodes = dict(sorted(nodes_dict.items())) + + output_filepath = os.path.join(output_dir_path, "node_settings.py") + + with open(output_filepath, 'w') as file: + print(f"Writing settings to {output_filepath}") + + write_imports(file) + + write_st_enum(file) + + write_ntp_node_setting_class(file) + + write_node_info_class(file) + + file.write("node_settings : dict[str, NodeInfo] = {\n") + + for name, node_info in sorted_nodes.items(): + write_node(name, node_info, file) + + file.write("}") + + print("Successfully finished") + + sorted_types = dict(sorted(types_dict.items())) + log_file.write("\nTypes encountered:\n") + for key, value in types_dict.items(): + log_file.write(f"{key}\n") + for string in value: + log_file.write(f"\t{string}\n") \ No newline at end of file diff --git a/tools/node_settings_generator/types_utils.py b/tools/node_settings_generator/types_utils.py new file mode 100644 index 0000000..5bf5201 --- /dev/null +++ b/tools/node_settings_generator/types_utils.py @@ -0,0 +1,140 @@ +from enum import Enum, auto + +class ST(Enum): + """ + Settings Types + """ + # Primitives + BOOL = auto() + COLOR = auto() + ENUM = auto() + ENUM_SET = auto() + FLOAT = auto() + INT = auto() + STRING = auto() + VEC1 = auto() + VEC2 = auto() + VEC3 = auto() + VEC4 = auto() + + # Special settings + BAKE_ITEMS = auto() + COLOR_RAMP = auto() + CURVE_MAPPING = auto() + ENUM_DEFINITION = auto() + INDEX_SWITCH_ITEMS = auto() + NODE_TREE = auto() + REPEAT_OUTPUT_ITEMS = auto() + SIM_OUTPUT_ITEMS = auto() + + # Image + IMAGE = auto() #needs refactor + IMAGE_USER = auto() #needs refactor + + # Currently unimplemented + CAPTURE_ATTRIBUTE_ITEMS = auto() #TODO NTP v3.2 + CRYPTOMATTE_ENTRIES = auto() + ENUM_ITEM = auto() #TODO NTP v3.2 + EULER = auto() #TODO NTP v3.2 + FILE_SLOTS = auto() + FONT = auto() + IMAGE_FORMAT_SETTINGS = auto() + LAYER_SLOTS = auto() + MASK = auto() + MATERIAL = auto() #TODO asset library + MENU_SWITCH_ITEMS = auto() #TODO NTP v3.2 + MOVIE_CLIP = auto() + OBJECT = auto() #TODO asset library + PARTICLE_SYSTEM = auto() + SCENE = auto() + TEXT = auto() + TEXTURE = auto() + +#types expected to be marked as read-only +READ_ONLY_TYPES : set[ST] = { + ST.BAKE_ITEMS, + ST.CAPTURE_ATTRIBUTE_ITEMS, + ST.COLOR_RAMP, + ST.CRYPTOMATTE_ENTRIES, + ST.CURVE_MAPPING, + ST.ENUM_DEFINITION, + ST.FILE_SLOTS, + ST.IMAGE_FORMAT_SETTINGS, + ST.IMAGE_USER, + ST.INDEX_SWITCH_ITEMS, + ST.LAYER_SLOTS, + ST.MENU_SWITCH_ITEMS, + ST.REPEAT_OUTPUT_ITEMS, + ST.SIM_OUTPUT_ITEMS, +} + +doc_to_NTP_type_dict : dict[str, ST] = { + "" : "", + "bpy_prop_collection of CryptomatteEntry": ST.CRYPTOMATTE_ENTRIES, + "boolean" : ST.BOOL, + "ColorMapping" : None, # Always read-only + "ColorRamp" : ST.COLOR_RAMP, + "CompositorNodeOutputFileFileSlots" : ST.FILE_SLOTS, + "CompositorNodeOutputFileLayerSlots" : ST.LAYER_SLOTS, + "CurveMapping" : ST.CURVE_MAPPING, + "enum" : ST.ENUM, + "enum set" : ST.ENUM_SET, + "float" : ST.FLOAT, + "float array of 1" : ST.VEC1, + "float array of 2" : ST.VEC2, + "float array of 3" : ST.VEC3, + "float array of 4" : ST.VEC4, + "Image" : ST.IMAGE, + "ImageFormatSettings" : ST.IMAGE_FORMAT_SETTINGS, + "ImageUser" : ST.IMAGE_USER, + "int" : ST.INT, + "Mask" : ST.MASK, + "Material" : ST.MATERIAL, + "mathutils.Color" : ST.COLOR, + "mathutils.Euler" : ST.EULER, #TODO + "mathutils.Vector of 3" : ST.VEC3, + "MovieClip" : ST.MOVIE_CLIP, + "Node" : None, # (<4.2) Always used with zone inputs, need to make sure + # output nodes exist. Handled separately from NTP attr system + "NodeEnumDefinition" : ST.ENUM_DEFINITION, + "NodeEnumItem" : ST.ENUM_ITEM, + "NodeGeometryBakeItems" : ST.BAKE_ITEMS, + "NodeGeometryCaptureAttributeItems" : ST.CAPTURE_ATTRIBUTE_ITEMS, + "NodeGeometryRepeatOutputItems" : ST.REPEAT_OUTPUT_ITEMS, + "NodeGeometrySimulationOutputItems" : ST.SIM_OUTPUT_ITEMS, + "NodeIndexSwitchItems" : ST.INDEX_SWITCH_ITEMS, + "NodeMenuSwitchItems" : ST.MENU_SWITCH_ITEMS, + "NodeTree" : ST.NODE_TREE, + "Object" : ST.OBJECT, + "ParticleSystem" : ST.PARTICLE_SYSTEM, + "PropertyGroup" : None, #Always read-only + "RepeatItem" : None, #Always set with index + "Scene" : ST.SCENE, + "SimulationStateItem" : None, #Always set with index + "string" : ST.STRING, + "TexMapping" : None, #Always read-only + "Text" : ST.TEXT, + "Texture" : ST.TEXTURE, + "VectorFont" : ST.FONT +} + +def get_NTP_type(type_str: str) -> str: + """ + Time complexity isn't great, might be able to optimize with + a trie or similar data structure + """ + longest_prefix = "" + for key in doc_to_NTP_type_dict.keys(): + if type_str.startswith(key) and len(key) > len(longest_prefix): + longest_prefix = key + + if longest_prefix == "": + print(f"Couldn't find prefix of {type_str.strip()} in dictionary") + + result = doc_to_NTP_type_dict[longest_prefix] + + is_readonly = "read" in type_str + if is_readonly and result not in READ_ONLY_TYPES: + return None + else: + return result \ No newline at end of file From ca1cd6ea54f0df088d24d1b71415f2b3456e81d1 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 17 Aug 2024 16:32:32 -0500 Subject: [PATCH 222/286] feat: license creation now optional --- nodetopython/ntp_operator.py | 3 +++ nodetopython/options.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/nodetopython/ntp_operator.py b/nodetopython/ntp_operator.py index cb568f4..9abc1b9 100644 --- a/nodetopython/ntp_operator.py +++ b/nodetopython/ntp_operator.py @@ -135,6 +135,7 @@ def _setup_options(self, options: NTPOptions) -> bool: self._version = options.version self._location = options.location self._license = options.license + self._should_create_license = options.should_create_license self._category = options.category self._custom_category = options.custom_category if options.menu_id in dir(bpy.types): @@ -1386,6 +1387,8 @@ def _create_main_func(self) -> None: self._write("register()", "\t") def _create_license(self) -> None: + if not self._should_create_license: + return if self._license == 'OTHER': return license_file = open(f"{self._addon_dir}/LICENSE", "w") diff --git a/nodetopython/options.py b/nodetopython/options.py index 15cd0db..3ea4bff 100644 --- a/nodetopython/options.py +++ b/nodetopython/options.py @@ -96,6 +96,11 @@ class NTPOptions(bpy.types.PropertyGroup): ], default = 'OTHER' ) + should_create_license: bpy.props.BoolProperty( + name="Create License", + description="Should NodeToPython include a license file", + default=True + ) category: bpy.props.EnumProperty( name = "Category", items = [ @@ -178,6 +183,7 @@ def draw(self, context): "location", "menu_id", "license", + "should_create_license", "category" ] option_list += addon_options From 05100ca34031ac00bea20aa51ab490ebd52d1df8 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 19 Aug 2024 20:51:56 -0500 Subject: [PATCH 223/286] fix: string input sanitization --- NodeToPython/LICENSE | 21 ++++++++++ {nodetopython => NodeToPython}/__init__.py | 37 +++++++++--------- .../blender_manifest.toml | 2 +- .../compositor/__init__.py | 0 .../compositor/operator.py | 0 .../compositor/ui.py | 0 .../geometry/__init__.py | 0 .../geometry/node_tree.py | 0 .../geometry/operator.py | 0 {nodetopython => NodeToPython}/geometry/ui.py | 0 .../license_templates.py | 0 .../node_settings.py | 0 .../ntp_node_tree.py | 0 .../ntp_operator.py | 0 {nodetopython => NodeToPython}/options.py | 0 .../shader/__init__.py | 0 .../shader/operator.py | 0 {nodetopython => NodeToPython}/shader/ui.py | 0 {nodetopython => NodeToPython}/utils.py | 5 ++- docs/img/logo_256x256.png | Bin 0 -> 43987 bytes 20 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 NodeToPython/LICENSE rename {nodetopython => NodeToPython}/__init__.py (64%) rename {nodetopython => NodeToPython}/blender_manifest.toml (83%) rename {nodetopython => NodeToPython}/compositor/__init__.py (100%) rename {nodetopython => NodeToPython}/compositor/operator.py (100%) rename {nodetopython => NodeToPython}/compositor/ui.py (100%) rename {nodetopython => NodeToPython}/geometry/__init__.py (100%) rename {nodetopython => NodeToPython}/geometry/node_tree.py (100%) rename {nodetopython => NodeToPython}/geometry/operator.py (100%) rename {nodetopython => NodeToPython}/geometry/ui.py (100%) rename {nodetopython => NodeToPython}/license_templates.py (100%) rename {nodetopython => NodeToPython}/node_settings.py (100%) rename {nodetopython => NodeToPython}/ntp_node_tree.py (100%) rename {nodetopython => NodeToPython}/ntp_operator.py (100%) rename {nodetopython => NodeToPython}/options.py (100%) rename {nodetopython => NodeToPython}/shader/__init__.py (100%) rename {nodetopython => NodeToPython}/shader/operator.py (100%) rename {nodetopython => NodeToPython}/shader/ui.py (100%) rename {nodetopython => NodeToPython}/utils.py (94%) create mode 100644 docs/img/logo_256x256.png diff --git a/NodeToPython/LICENSE b/NodeToPython/LICENSE new file mode 100644 index 0000000..403ede7 --- /dev/null +++ b/NodeToPython/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022-2024 Brendan Parmer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/nodetopython/__init__.py b/NodeToPython/__init__.py similarity index 64% rename from nodetopython/__init__.py rename to NodeToPython/__init__.py index 5a2fd62..a24f2f8 100644 --- a/nodetopython/__init__.py +++ b/NodeToPython/__init__.py @@ -36,24 +36,25 @@ def draw(self, context): layout.operator_context = 'INVOKE_DEFAULT' -classes = [NodeToPythonMenu, - #options - options.NTPOptions, - options.NTPOptionsPanel, - #compositor - compositor.operator.NTPCompositorOperator, - compositor.ui.NTPCompositorScenesMenu, - compositor.ui.NTPCompositorGroupsMenu, - compositor.ui.NTPCompositorPanel, - #geometry - geometry.operator.NTPGeoNodesOperator, - geometry.ui.NTPGeoNodesMenu, - geometry.ui.NTPGeoNodesPanel, - #material - shader.operator.NTPShaderOperator, - shader.ui.NTPShaderMenu, - shader.ui.NTPShaderPanel, - ] +classes = [ + NodeToPythonMenu, + #options + options.NTPOptions, + options.NTPOptionsPanel, + #compositor + compositor.operator.NTPCompositorOperator, + compositor.ui.NTPCompositorScenesMenu, + compositor.ui.NTPCompositorGroupsMenu, + compositor.ui.NTPCompositorPanel, + #geometry + geometry.operator.NTPGeoNodesOperator, + geometry.ui.NTPGeoNodesMenu, + geometry.ui.NTPGeoNodesPanel, + #material + shader.operator.NTPShaderOperator, + shader.ui.NTPShaderMenu, + shader.ui.NTPShaderPanel, +] def register(): for cls in classes: diff --git a/nodetopython/blender_manifest.toml b/NodeToPython/blender_manifest.toml similarity index 83% rename from nodetopython/blender_manifest.toml rename to NodeToPython/blender_manifest.toml index 7443d4c..41cc9b5 100644 --- a/nodetopython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -19,4 +19,4 @@ license = [ ] [permissions] -files = "In add-on mode, NodeToPython will create and write to files in a specified directory" \ No newline at end of file +files = "Creates and writes to files in a specified directory" \ No newline at end of file diff --git a/nodetopython/compositor/__init__.py b/NodeToPython/compositor/__init__.py similarity index 100% rename from nodetopython/compositor/__init__.py rename to NodeToPython/compositor/__init__.py diff --git a/nodetopython/compositor/operator.py b/NodeToPython/compositor/operator.py similarity index 100% rename from nodetopython/compositor/operator.py rename to NodeToPython/compositor/operator.py diff --git a/nodetopython/compositor/ui.py b/NodeToPython/compositor/ui.py similarity index 100% rename from nodetopython/compositor/ui.py rename to NodeToPython/compositor/ui.py diff --git a/nodetopython/geometry/__init__.py b/NodeToPython/geometry/__init__.py similarity index 100% rename from nodetopython/geometry/__init__.py rename to NodeToPython/geometry/__init__.py diff --git a/nodetopython/geometry/node_tree.py b/NodeToPython/geometry/node_tree.py similarity index 100% rename from nodetopython/geometry/node_tree.py rename to NodeToPython/geometry/node_tree.py diff --git a/nodetopython/geometry/operator.py b/NodeToPython/geometry/operator.py similarity index 100% rename from nodetopython/geometry/operator.py rename to NodeToPython/geometry/operator.py diff --git a/nodetopython/geometry/ui.py b/NodeToPython/geometry/ui.py similarity index 100% rename from nodetopython/geometry/ui.py rename to NodeToPython/geometry/ui.py diff --git a/nodetopython/license_templates.py b/NodeToPython/license_templates.py similarity index 100% rename from nodetopython/license_templates.py rename to NodeToPython/license_templates.py diff --git a/nodetopython/node_settings.py b/NodeToPython/node_settings.py similarity index 100% rename from nodetopython/node_settings.py rename to NodeToPython/node_settings.py diff --git a/nodetopython/ntp_node_tree.py b/NodeToPython/ntp_node_tree.py similarity index 100% rename from nodetopython/ntp_node_tree.py rename to NodeToPython/ntp_node_tree.py diff --git a/nodetopython/ntp_operator.py b/NodeToPython/ntp_operator.py similarity index 100% rename from nodetopython/ntp_operator.py rename to NodeToPython/ntp_operator.py diff --git a/nodetopython/options.py b/NodeToPython/options.py similarity index 100% rename from nodetopython/options.py rename to NodeToPython/options.py diff --git a/nodetopython/shader/__init__.py b/NodeToPython/shader/__init__.py similarity index 100% rename from nodetopython/shader/__init__.py rename to NodeToPython/shader/__init__.py diff --git a/nodetopython/shader/operator.py b/NodeToPython/shader/operator.py similarity index 100% rename from nodetopython/shader/operator.py rename to NodeToPython/shader/operator.py diff --git a/nodetopython/shader/ui.py b/NodeToPython/shader/ui.py similarity index 100% rename from nodetopython/shader/ui.py rename to NodeToPython/shader/ui.py diff --git a/nodetopython/utils.py b/NodeToPython/utils.py similarity index 94% rename from nodetopython/utils.py rename to NodeToPython/utils.py index b7ddcae..134bb09 100644 --- a/nodetopython/utils.py +++ b/NodeToPython/utils.py @@ -50,7 +50,10 @@ def str_to_py_str(string: str) -> str: Returns: (str): converted string """ - return f"\"{string}\"" + repr_str = repr(string).replace('\"', '\\"') + if repr_str.startswith("'") and repr_str.endswith("'"): + repr_str = f"\"{repr_str[1:-1]}\"" + return repr_str def vec1_to_py_str(vec1) -> str: """ diff --git a/docs/img/logo_256x256.png b/docs/img/logo_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd8f8cd651ccd28f17af0d8dc527d4f871da4ea GIT binary patch literal 43987 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℘YdG5u8kC~a- z$sa?%yAl{^_IKd54eJKHze{om_Pf%nXQNt$okc>eB8kYCL= Hm+t%z8EZ}7 literal 0 HcmV?d00001 From bb4c03155c57723aa228648a566f9e2aafb75425 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 19 Aug 2024 21:01:24 -0500 Subject: [PATCH 224/286] fix: case where only single quotes used in string --- NodeToPython/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeToPython/utils.py b/NodeToPython/utils.py index 134bb09..d411290 100644 --- a/NodeToPython/utils.py +++ b/NodeToPython/utils.py @@ -50,9 +50,9 @@ def str_to_py_str(string: str) -> str: Returns: (str): converted string """ - repr_str = repr(string).replace('\"', '\\"') + repr_str = repr(string) if repr_str.startswith("'") and repr_str.endswith("'"): - repr_str = f"\"{repr_str[1:-1]}\"" + repr_str = "\"" + repr_str[1:-1].replace('\"', '\\"') + "\"" return repr_str def vec1_to_py_str(vec1) -> str: From 1946984fc090378ad065e5e691c2d7bc443a5fe4 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 19 Aug 2024 21:13:28 -0500 Subject: [PATCH 225/286] fix: null socket subtype no longer causes issues --- NodeToPython/ntp_operator.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 9abc1b9..babd60d 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -605,12 +605,13 @@ def _create_socket(self, socket: NodeTreeInterfaceSocket, f"socket_type = {socket_type}" f"{optional_parent_str})") + self._set_tree_socket_defaults(socket, socket_var) + # subtype if hasattr(socket, "subtype"): - subtype = enum_to_py_str(socket.subtype) - self._write(f"{socket_var}.subtype = {subtype}") - - self._set_tree_socket_defaults(socket, socket_var) + if socket.subtype != '': + subtype = enum_to_py_str(socket.subtype) + self._write(f"{socket_var}.subtype = {subtype}") # default attribute name if socket.default_attribute_name != "": From 0e0ad5725d032186a537a1ae2fab6325ce326525 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 19 Aug 2024 21:54:47 -0500 Subject: [PATCH 226/286] other: version bump --- NodeToPython/__init__.py | 2 +- NodeToPython/blender_manifest.toml | 2 +- docs/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NodeToPython/__init__.py b/NodeToPython/__init__.py index a24f2f8..6782b87 100644 --- a/NodeToPython/__init__.py +++ b/NodeToPython/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 2, 0), + "version": (3, 2, 1), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 41cc9b5..0d6cd63 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.2.0" +version = "3.2.1" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " diff --git a/docs/README.md b/docs/README.md index be4eb77..938568f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.2 is supported for Blender 3.0 - 4.2 on Windows, macOS, and Linux. +NodeToPython v3.2.1 is supported for Blender 3.0 - 4.2 on Windows, macOS, and Linux. ## Installation 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) From 9e53bc92db43fe5e7e74bc373a18bb1e89cfcdc4 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:11:09 -0500 Subject: [PATCH 227/286] cleanup: remove old debug prints --- NodeToPython/compositor/operator.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index d16ebbc..0dc755d 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -120,8 +120,6 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance color_balance_info = self._node_infos['CompositorNodeColorBalance'] self._node_infos['CompositorNodeColorBalance'] = color_balance_info._replace(attributes_ = lst) - for setting in self._node_infos['CompositorNodeColorBalance'].attributes_: - print(setting.name_) def _process_node(self, node: Node, ntp_nt: NTP_NodeTree): """ From 432a9bfe06f450823f5a77da6df0c1bdba3ce89f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:13:57 -0500 Subject: [PATCH 228/286] feat: more info on licensing --- NodeToPython/options.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/NodeToPython/options.py b/NodeToPython/options.py index 3ea4bff..e141e81 100644 --- a/NodeToPython/options.py +++ b/NodeToPython/options.py @@ -92,7 +92,12 @@ class NTPOptions(bpy.types.PropertyGroup): ('SPDX:MPL-2.0', "Mozilla Public License 2.0", ""), ('SPDX:Pixar', "Pixar License", ""), ('SPDX:Zlib', "Zlib License", ""), - ('OTHER', "Other", "") + ('OTHER', "Other", "User is responsible for including the license " + "and adding it to the manifest.\n" + "Please note that by using the Blender Python " + "API your add-on must comply with the GNU GPL. " + "See https://www.blender.org/about/license/ for " + "more details") ], default = 'OTHER' ) From 0c9859337d2a1ea092db9073747e19b46070845c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:14:46 -0500 Subject: [PATCH 229/286] change default to GPL 3.0, official extensions platform recommendation --- NodeToPython/options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NodeToPython/options.py b/NodeToPython/options.py index e141e81..313cc31 100644 --- a/NodeToPython/options.py +++ b/NodeToPython/options.py @@ -99,7 +99,7 @@ class NTPOptions(bpy.types.PropertyGroup): "See https://www.blender.org/about/license/ for " "more details") ], - default = 'OTHER' + default = 'SPDX:GPL-3.0-or-later' ) should_create_license: bpy.props.BoolProperty( name="Create License", From 147467c25a20d15d710c0c1fbf11c6ac53302a73 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:15:58 -0500 Subject: [PATCH 230/286] feat: control over indentation blocks, default to four spaces --- NodeToPython/compositor/operator.py | 53 ++++++------ NodeToPython/geometry/operator.py | 26 +++--- NodeToPython/ntp_operator.py | 124 ++++++++++++++++------------ NodeToPython/options.py | 16 +++- NodeToPython/shader/operator.py | 28 +++---- 5 files changed, 137 insertions(+), 110 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index 0dc755d..682517d 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -31,45 +31,44 @@ def __init__(self): self._used_vars[name] = 0 - def _create_scene(self, indent: str): + def _create_scene(self, indent_level: int): #TODO: wrap in more general unique name util function - self._write(f"# Generate unique scene name", indent) + self._write(f"# Generate unique scene name", indent_level) self._write(f"{BASE_NAME} = {str_to_py_str(self.compositor_name)}", - indent) - self._write(f"{END_NAME} = {BASE_NAME}", indent) - self._write(f"if bpy.data.scenes.get({END_NAME}) != None:", indent) + indent_level) + self._write(f"{END_NAME} = {BASE_NAME}", indent_level) + self._write(f"if bpy.data.scenes.get({END_NAME}) != None:", indent_level) - indent2 = f"{indent}\t" - self._write(f"{INDEX} = 1", indent2) + self._write(f"{INDEX} = 1", indent_level + 1) self._write(f"{END_NAME} = {BASE_NAME} + f\".{{i:03d}}\"", - indent2) + indent_level + 1) self._write(f"while bpy.data.scenes.get({END_NAME}) != None:", - indent2) + indent_level + 1) - indent3 = f"{indent}\t\t" - self._write(f"{END_NAME} = {BASE_NAME} + f\".{{{INDEX}:03d}}\"", indent3) - self._write(f"{INDEX} += 1\n", indent3) + self._write(f"{END_NAME} = {BASE_NAME} + f\".{{{INDEX}:03d}}\"", + indent_level + 2) + self._write(f"{INDEX} += 1\n", indent_level + 2) - self._write(f"{SCENE} = bpy.context.window.scene.copy()\n", indent) - self._write(f"{SCENE}.name = {END_NAME}", indent) - self._write(f"{SCENE}.use_fake_user = True", indent) - self._write(f"bpy.context.window.scene = {SCENE}", indent) + self._write(f"{SCENE} = bpy.context.window.scene.copy()\n", indent_level) + self._write(f"{SCENE}.name = {END_NAME}", indent_level) + self._write(f"{SCENE}.use_fake_user = True", indent_level) + self._write(f"bpy.context.window.scene = {SCENE}", indent_level) def _initialize_compositor_node_tree(self, ntp_nt, nt_name): #initialize node group - self._write(f"#initialize {nt_name} node group", self._outer) - self._write(f"def {ntp_nt.var}_node_group():", self._outer) + self._write(f"#initialize {nt_name} node group", self._outer_indent_level) + self._write(f"def {ntp_nt.var}_node_group():", self._outer_indent_level) if ntp_nt.node_tree == self._base_node_tree: self._write(f"{ntp_nt.var} = {SCENE}.node_tree") self._write(f"#start with a clean node tree") self._write(f"for {NODE} in {ntp_nt.var}.nodes:") - self._write(f"\t{ntp_nt.var}.nodes.remove({NODE})") + self._write(f"{ntp_nt.var}.nodes.remove({NODE})", self._inner_indent_level + 1) else: self._write((f"{ntp_nt.var} = bpy.data.node_groups.new(" f"type = \'CompositorNodeTree\', " f"name = {str_to_py_str(nt_name)})")) - self._write("") + self._write("", 0) # Compositor node tree settings #TODO: might be good to make this optional @@ -189,7 +188,7 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): self._write(f"return {nt_var}\n") #create node group - self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) + self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer_indent_level) def execute(self, context): if not self._setup_options(context.scene.ntp_options): @@ -212,8 +211,8 @@ def execute(self, context): comp_var = clean_string(self.compositor_name) if self._mode == 'ADDON': - self._outer = "\t\t" - self._inner = "\t\t\t" + self._outer_indent_level = 2 + self._inner_indent_level = 3 if not self._setup_addon_directories(context, comp_var): return {'CANCELLED'} @@ -224,7 +223,7 @@ def execute(self, context): self._class_name = clean_string(self.compositor_name, lower=False) self._init_operator(comp_var, self.compositor_name) - self._write("def execute(self, context):", "\t") + self._write("def execute(self, context):", 1) else: self._file = StringIO("") if self._include_imports: @@ -232,9 +231,9 @@ def execute(self, context): if self.is_scene: if self._mode == 'ADDON': - self._create_scene("\t\t") + self._create_scene(2) elif self._mode == 'SCRIPT': - self._create_scene("") + self._create_scene(0) node_trees_to_process = self._topological_sort(self._base_node_tree) @@ -242,7 +241,7 @@ def execute(self, context): self._process_node_tree(node_tree) if self._mode == 'ADDON': - self._write("return {'FINISHED'}\n", self._outer) + self._write("return {'FINISHED'}\n", self._outer_indent_level) self._create_menu_func() self._create_register_func() diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index 4cb8a8b..5e1a7b7 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -81,7 +81,7 @@ def _process_zones(self, zone_inputs: list[GeometryNode]) -> None: #must set defaults after paired with output self._set_socket_defaults(zone_input) self._set_socket_defaults(zone_output) - self._write("") + self._write("", 0) if bpy.app.version >= (4, 0, 0): def _set_geo_tree_properties(self, node_tree: GeometryNodeTree) -> None: @@ -105,7 +105,7 @@ def _set_geo_tree_properties(self, node_tree: GeometryNodeTree) -> None: for flag in tool_flags: if hasattr(node_tree, flag) is True: self._write(f"{nt_var}.{flag} = {getattr(node_tree, flag)}") - self._write("") + self._write("", 0) def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: """ @@ -119,8 +119,8 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: self._node_tree_vars[node_tree] = nt_var #initialize node group - self._write(f"#initialize {nt_var} node group", self._outer) - self._write(f"def {nt_var}_node_group():", self._outer) + self._write(f"#initialize {nt_var} node group", self._outer_indent_level) + self._write(f"def {nt_var}_node_group():", self._outer_indent_level) self._write(f"{nt_var} = bpy.data.node_groups.new(" f"type = \'GeometryNodeTree\', " f"name = {str_to_py_str(node_tree.name)})\n") @@ -155,19 +155,19 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: self._write(f"return {nt_var}\n") #create node group - self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) + self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer_indent_level) def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str): #get object - self._write(f"{OBJECT_NAME} = bpy.context.object.name", self._outer) - self._write(f"{OBJECT} = bpy.data.objects[{OBJECT_NAME}]", self._outer) + self._write(f"{OBJECT_NAME} = bpy.context.object.name", self._outer_indent_level) + self._write(f"{OBJECT} = bpy.data.objects[{OBJECT_NAME}]", self._outer_indent_level) #set modifier to the one we just created mod_name = str_to_py_str(nt.name) self._write(f"{MODIFIER} = obj.modifiers.new(name = {mod_name}, " - f"type = 'NODES')", self._outer) - self._write(f"{MODIFIER}.node_group = {nt_var}", self._outer) + f"type = 'NODES')", self._outer_indent_level) + self._write(f"{MODIFIER}.node_group = {nt_var}", self._outer_indent_level) def execute(self, context): @@ -181,8 +181,8 @@ def execute(self, context): nt_var = clean_string(nt.name) if self._mode == 'ADDON': - self._outer = "\t\t" - self._inner = "\t\t\t" + self._outer_indent_level = 2 + self._inner_indent_level = 3 if not self._setup_addon_directories(context, nt_var): return {'CANCELLED'} @@ -192,7 +192,7 @@ def execute(self, context): self._create_header(nt.name) self._class_name = clean_string(nt.name, lower = False) self._init_operator(nt_var, nt.name) - self._write("def execute(self, context):", "\t") + self._write("def execute(self, context):", 1) else: self._file = StringIO("") if self._include_imports: @@ -206,7 +206,7 @@ def execute(self, context): if self._mode == 'ADDON': self._apply_modifier(nt, nt_var) - self._write("return {'FINISHED'}\n", self._outer) + self._write("return {'FINISHED'}\n", self._outer_indent_level) self._create_menu_func() self._create_register_func() self._create_unregister_func() diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index babd60d..1b28435 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -79,8 +79,8 @@ def __init__(self): self._class_name: str = None # Indentation to use for the default write function - self._outer: str = "" - self._inner: str = "\t" + self._outer_indent_level: int = 0 + self._inner_indent_level: int = 1 # Base node tree we're converting self._base_node_tree: NodeTree = None @@ -106,20 +106,34 @@ def __init__(self): # Set dimensions of generated nodes self._should_set_dimensions = True + # Indentation string (default four spaces) + self._indentation = " " + if bpy.app.version >= (3, 4, 0): # Set default values for hidden sockets self._set_unavailable_defaults = False - def _write(self, string: str, indent: str = None): - if indent is None: - indent = self._inner - self._file.write(f"{indent}{string}\n") + def _write(self, string: str, indent_level: int = None): + if indent_level is None: + indent_level = self._inner_indent_level + indent_str = indent_level * self._indentation + self._file.write(f"{indent_str}{string}\n") def _setup_options(self, options: NTPOptions) -> bool: # General self._mode = options.mode self._include_group_socket_values = options.include_group_socket_values self._should_set_dimensions = options.set_dimensions + + if options.indentation_type == 'SPACES_2': + self._indentation = " " + elif options.indentation_type == 'SPACES_4': + self._indentation = " " + elif options.indentation_type == 'SPACES_8': + self._indentation = " " + elif options.indentation_type == 'TABS': + self._indentation = "\t" + if bpy.app.version >= (3, 4, 0): self._set_unavailable_defaults = options.set_unavailable_defaults @@ -179,25 +193,25 @@ def _create_header(self, name: str) -> None: name (str): name of the add-on """ - self._write("bl_info = {", "") + self._write("bl_info = {", 0) self._name = name if self._name_override and self._name_override != "": self._name = self._name_override - self._write(f"\t\"name\" : {str_to_py_str(self._name)},", "") + self._write(f"\"name\" : {str_to_py_str(self._name)},", 1) if self._description and self._description != "": - self._write(f"\t\"description\" : {str_to_py_str(self._description)}," "") - self._write(f"\t\"author\" : {str_to_py_str(self._author_name)},", "") - self._write(f"\t\"version\" : {vec3_to_py_str(self._version)},", "") - self._write(f"\t\"blender\" : {bpy.app.version},", "") - self._write(f"\t\"location\" : {str_to_py_str(self._location)},", "") + self._write(f"\"description\" : {str_to_py_str(self._description)},", 1) + self._write(f"\"author\" : {str_to_py_str(self._author_name)},", 1) + self._write(f"\"version\" : {vec3_to_py_str(self._version)},", 1) + self._write(f"\"blender\" : {bpy.app.version},", 1) + self._write(f"\"location\" : {str_to_py_str(self._location)},", 1) category = self._category if category == "Custom": category = self._custom_category - self._write(f"\t\"category\" : {str_to_py_str(category)},", "") - self._write("}\n", "") - self._write("import bpy", "") - self._write("import mathutils", "") - self._write("import os\n", "") + self._write(f"\"category\" : {str_to_py_str(category)},", 1) + self._write("}\n", 0) + self._write("import bpy", 0) + self._write("import mathutils", 0) + self._write("import os\n", 0) def _init_operator(self, idname: str, label: str) -> None: """ @@ -210,11 +224,10 @@ def _init_operator(self, idname: str, label: str) -> None: label (str): appearence inside Blender """ self._idname = idname - self._write(f"class {self._class_name}(bpy.types.Operator):", "") - self._write(f"\tbl_idname = \"node.{idname}\"", "") - self._write(f"\tbl_label = {str_to_py_str(label)}", "") - self._write("\tbl_options = {\'REGISTER\', \'UNDO\'}", "") - self._write("") + self._write(f"class {self._class_name}(bpy.types.Operator):", 0) + self._write(f"bl_idname = \"node.{idname}\"", 1) + self._write(f"bl_label = {str_to_py_str(label)}", 1) + self._write("bl_options = {\'REGISTER\', \'UNDO\'}\n", 1) def _topological_sort(self, node_tree: NodeTree) -> list[NodeTree]: """ @@ -386,12 +399,14 @@ def _set_settings_defaults(self, node: Node) -> None: self._write(f"{setting_str} = {color_to_py_str(attr)}") elif st == ST.MATERIAL: name = str_to_py_str(attr.name) - self._write((f"if {name} in bpy.data.materials:")) - self._write((f"\t{setting_str} = bpy.data.materials[{name}]")) + self._write(f"if {name} in bpy.data.materials:") + self._write(f"{setting_str} = bpy.data.materials[{name}]", + self._inner_indent_level + 1) elif st == ST.OBJECT: name = str_to_py_str(attr.name) - self._write((f"if {name} in bpy.data.objects:")) - self._write((f"\t{setting_str} = bpy.data.objects[{name}]")) + self._write(f"if {name} in bpy.data.objects:") + self._write(f"{setting_str} = bpy.data.objects[{name}]", + self._inner_indent_level + 1) elif st == ST.COLOR_RAMP: self._color_ramp_settings(node, attr_name) elif st == ST.CURVE_MAPPING: @@ -515,8 +530,8 @@ def _group_io_settings(self, node: Node, if socket_interface.hide_in_modifier is True: self._write(f"{socket_var}.hide_in_modifier = True") - self._write("") - self._write("") + self._write("", 0) + self._write("", 0) elif bpy.app.version >= (4, 0, 0): def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, @@ -640,7 +655,7 @@ def _create_socket(self, socket: NodeTreeInterfaceSocket, description = str_to_py_str(socket.description) self._write(f"{socket_var}.description = {description}") - self._write("") + self._write("", 0) def _create_panel(self, panel: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel], @@ -689,7 +704,7 @@ def _create_panel(self, panel: NodeTreeInterfacePanel, if len(panel.interface_items) > 0: self._process_items(panel, panel_dict, items_processed, ntp_nt) - self._write("") + self._write("", 0) def _process_items(self, parent: NodeTreeInterfacePanel, panel_dict: dict[NodeTreeInterfacePanel], @@ -743,7 +758,7 @@ def _tree_interface_settings(self, ntp_nt: NTP_NodeTree) -> None: self._process_items(None, panel_dict, items_processed, ntp_nt) - self._write("") + self._write("", 0) def _set_input_defaults(self, node: Node) -> None: """ @@ -819,7 +834,7 @@ def _set_input_defaults(self, node: Node) -> None: if default_val is not None: self._write(f"#{input.identifier}") self._write(f"{socket_var}.default_value = {default_val}") - self._write("") + self._write("", 0) def _set_output_defaults(self, node: Node) -> None: """ @@ -863,7 +878,8 @@ def _in_file_inputs(self, input: bpy.types.NodeSocket, socket_var: str, return name = str_to_py_str(input.default_value.name) self._write(f"if {name} in bpy.data.{type}:") - self._write(f"\t{socket_var}.default_value = bpy.data.{type}[{name}]") + self._write(f"{socket_var}.default_value = bpy.data.{type}[{name}]", + self._inner_indent_level + 1) def _set_socket_defaults(self, node: Node): """ @@ -901,7 +917,7 @@ def _color_ramp_settings(self, node: Node, color_ramp_name: str) -> None: #interpolation interpolation = enum_to_py_str(color_ramp.interpolation) self._write(f"{ramp_str}.interpolation = {interpolation}") - self._write("") + self._write("", 0) # key points self._write(f"#initialize color ramp elements") @@ -1000,8 +1016,9 @@ def _create_curve_map(self, node: Node, i: int, curve: bpy.types.CurveMap, if (node.bl_idname == 'CompositorNodeHueCorrect'): self._write(f"for {INDEX} in range" f"(len({curve_i_var}.points.values()) - 1, 1, -1):") - self._write(f"\t{curve_i_var}.points.remove(" - f"{curve_i_var}.points[{INDEX}])") + self._write(f"{curve_i_var}.points.remove(" + f"{curve_i_var}.points[{INDEX}])", + self._inner_indent_level + 1) for j, point in enumerate(curve.points): self._create_curve_map_point(j, point, curve_i_var) @@ -1096,8 +1113,8 @@ def _load_image(self, img: bpy.types.Image, img_var: str) -> None: self._write(f"{BASE_DIR} = " f"os.path.dirname(os.path.abspath(__file__))") self._write(f"{IMAGE_PATH} = " - f"os.path.join({BASE_DIR}, \"{IMAGE_DIR_NAME}\", " - f"\"{img_str}\")") + f"os.path.join({BASE_DIR}, {str_to_py_str(IMAGE_DIR_NAME)}, " + f"{str_to_py_str(img_str)})") self._write(f"{img_var} = bpy.data.images.load" f"({IMAGE_PATH}, check_existing = True)") @@ -1248,7 +1265,7 @@ def _set_parents(self, node_tree: NodeTree) -> None: node_var = self._node_vars[node] parent_var = self._node_vars[node.parent] self._write(f"{node_var}.parent = {parent_var}") - self._write("") + self._write("", 0) def _set_locations(self, node_tree: NodeTree) -> None: """ @@ -1263,7 +1280,7 @@ def _set_locations(self, node_tree: NodeTree) -> None: node_var = self._node_vars[node] self._write(f"{node_var}.location " f"= ({node.location.x}, {node.location.y})") - self._write("") + self._write("", 0) def _set_dimensions(self, node_tree: NodeTree) -> None: """ @@ -1280,7 +1297,7 @@ def _set_dimensions(self, node_tree: NodeTree) -> None: node_var = self._node_vars[node] self._write(f"{node_var}.width, {node_var}.height " f"= {node.width}, {node.height}") - self._write("") + self._write("", 0) def _init_links(self, node_tree: NodeTree) -> None: """ @@ -1358,34 +1375,31 @@ def _create_menu_func(self) -> None: """ Creates the menu function """ - self._write("def menu_func(self, context):", "") - self._write(f"self.layout.operator({self._class_name}.bl_idname)", "\t") - self._write("") + self._write("def menu_func(self, context):", 0) + self._write(f"self.layout.operator({self._class_name}.bl_idname)\n", 1) def _create_register_func(self) -> None: """ Creates the register function """ - self._write("def register():", "") - self._write(f"bpy.utils.register_class({self._class_name})", "\t") - self._write(f"bpy.types.{self._menu_id}.append(menu_func)", "\t") - self._write("") + self._write("def register():", 0) + self._write(f"bpy.utils.register_class({self._class_name})", 1) + self._write(f"bpy.types.{self._menu_id}.append(menu_func)\n", 1) def _create_unregister_func(self) -> None: """ Creates the unregister function """ - self._write("def unregister():", "") - self._write(f"bpy.utils.unregister_class({self._class_name})", "\t") - self._write(f"bpy.types.{self._menu_id}.remove(menu_func)", "\t") - self._write("") + self._write("def unregister():", 0) + self._write(f"bpy.utils.unregister_class({self._class_name})", 1) + self._write(f"bpy.types.{self._menu_id}.remove(menu_func)\n", 1) def _create_main_func(self) -> None: """ Creates the main function """ - self._write("if __name__ == \"__main__\":", "") - self._write("register()", "\t") + self._write("if __name__ == \"__main__\":", 0) + self._write("register()", 1) def _create_license(self) -> None: if not self._should_create_license: diff --git a/NodeToPython/options.py b/NodeToPython/options.py index 313cc31..a5df210 100644 --- a/NodeToPython/options.py +++ b/NodeToPython/options.py @@ -22,6 +22,19 @@ class NTPOptions(bpy.types.PropertyGroup): description = "Set dimensions of generated nodes", default = True ) + + indentation_type: bpy.props.EnumProperty( + name="Indentation Type", + description="Whitespace to use for each indentation block", + items = [ + ('SPACES_2', "2 Spaces", ""), + ('SPACES_4', "4 Spaces", ""), + ('SPACES_8', "8 Spaces", ""), + ('TABS', "Tabs", "") + ], + default = 'SPACES_4' + ) + if bpy.app.version >= (3, 4, 0): set_unavailable_defaults : bpy.props.BoolProperty( name = "Set unavailable defaults", @@ -168,7 +181,8 @@ def draw(self, context): option_list = [ "mode", "include_group_socket_values", - "set_dimensions" + "set_dimensions", + "indentation_type" ] if bpy.app.version >= (3, 4, 0): option_list.append("set_unavailable_defaults") diff --git a/NodeToPython/shader/operator.py b/NodeToPython/shader/operator.py index b614f38..5d5ff6f 100644 --- a/NodeToPython/shader/operator.py +++ b/NodeToPython/shader/operator.py @@ -27,10 +27,10 @@ def __init__(self): for name in SHADER_OP_RESERVED_NAMES: self._used_vars[name] = 0 - def _create_material(self, indent: str): + def _create_material(self, indent_level: int): self._write(f"{MAT_VAR} = bpy.data.materials.new(" - f"name = {str_to_py_str(self.material_name)})", indent) - self._write(f"{MAT_VAR}.use_nodes = True", indent) + f"name = {str_to_py_str(self.material_name)})", indent_level) + self._write(f"{MAT_VAR}.use_nodes = True", indent_level) def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, nt_name: str) -> None: @@ -42,19 +42,19 @@ def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, variable to use nt_name (str): name to use for the node tree """ - self._write(f"#initialize {nt_name} node group", self._outer) - self._write(f"def {ntp_node_tree.var}_node_group():\n", self._outer) + self._write(f"#initialize {nt_name} node group", self._outer_indent_level) + self._write(f"def {ntp_node_tree.var}_node_group():\n", self._outer_indent_level) if ntp_node_tree.node_tree == self._base_node_tree: self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree") self._write(f"#start with a clean node tree") self._write(f"for {NODE} in {ntp_node_tree.var}.nodes:") - self._write(f"\t{ntp_node_tree.var}.nodes.remove({NODE})") + self._write(f"{ntp_node_tree.var}.nodes.remove({NODE})", self._inner_indent_level + 1) else: self._write((f"{ntp_node_tree.var} = bpy.data.node_groups.new(" f"type = \'ShaderNodeTree\', " f"name = {str_to_py_str(nt_name)})")) - self._write("") + self._write("", 0) def _process_node(self, node: Node, ntp_nt: NTP_NodeTree) -> None: """ @@ -124,7 +124,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: self._write(f"return {nt_var}\n") #create node group - self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer) + self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer_indent_level) def execute(self, context): @@ -142,8 +142,8 @@ def execute(self, context): mat_var = clean_string(self.material_name) if self._mode == 'ADDON': - self._outer = "\t\t" - self._inner = "\t\t\t" + self._outer_indent_level = 2 + self._inner_indent_level = 3 if not self._setup_addon_directories(context, mat_var): return {'CANCELLED'} @@ -154,16 +154,16 @@ def execute(self, context): self._class_name = clean_string(self.material_name, lower=False) self._init_operator(mat_var, self.material_name) - self._write("def execute(self, context):", "\t") + self._write("def execute(self, context):", 1) else: self._file = StringIO("") if self._include_imports: self._file.write("import bpy, mathutils\n\n") if self._mode == 'ADDON': - self._create_material("\t\t") + self._create_material(2) elif self._mode == 'SCRIPT': - self._create_material("") + self._create_material(0) node_trees_to_process = self._topological_sort(self._base_node_tree) @@ -171,7 +171,7 @@ def execute(self, context): self._process_node_tree(node_tree) if self._mode == 'ADDON': - self._write("return {'FINISHED'}", self._outer) + self._write("return {'FINISHED'}", self._outer_indent_level) self._create_menu_func() self._create_register_func() self._create_unregister_func() From 0b74b8b05d7588b7960a13b45a8d828afa51eb63 Mon Sep 17 00:00:00 2001 From: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:30:03 -0500 Subject: [PATCH 231/286] docs: added info about extensions platform to installation instructions Signed-off-by: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> --- docs/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 938568f..8e8106d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,6 +18,10 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to NodeToPython v3.2.1 is supported for Blender 3.0 - 4.2 on Windows, macOS, and Linux. ## Installation +### Blender Extensions Platform +NodeToPython is now on the official [Blender Extensions Platform](https://extensions.blender.org/add-ons/node-to-python/)! See https://extensions.blender.org/about/ for installation instructions and more info. + +### GitHub 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) * If you download other options, you'll need to rename the zip and the first folder to "NodeToPython" so Blender can properly import the add-on 2. In Blender, navigate to `Edit > Preferences > Add-ons` @@ -53,4 +57,4 @@ This tool is provided under the MIT license and is intended for lawful use only. In particular, this tool generates code that requires the Blender Python API, which is licensed under the GNU General Public License (GPL). Code generated by this tool that incorporates or uses the Blender Python API must comply with the GPL requirements. For more details on the GPL, please see https://www.gnu.org/licenses/gpl-3.0.html. For more details on Blender's licensing, please see https://www.blender.org/about/license/ -**Disclaimer**: The authors of this tool are not legal professionals. This notice is provided for informational purposes only and should not be construed as legal advice. For specific legal advice related to the use of this tool and compliance with the GPL or other legal matters, please consult a qualified attorney. \ No newline at end of file +**Disclaimer**: The authors of this tool are not legal professionals. This notice is provided for informational purposes only and should not be construed as legal advice. For specific legal advice related to the use of this tool and compliance with the GPL or other legal matters, please consult a qualified attorney. From 623c7c29431843e44fbef51c98ddec58b9b4ed16 Mon Sep 17 00:00:00 2001 From: "1029920178@qq.com" <1029910278@qq.com> Date: Tue, 5 Nov 2024 03:37:45 +0800 Subject: [PATCH 232/286] fix: node socket interface menu is now correctly handle --- NodeToPython/ntp_operator.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index babd60d..88fa913 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -12,7 +12,7 @@ import datetime import os import shutil -from typing import TextIO +from typing import TextIO, Callable from .license_templates import license_templates from .ntp_node_tree import NTP_NodeTree @@ -66,6 +66,9 @@ class NTP_Operator(Operator): def __init__(self): super().__init__() + # Call function after all the writes, such as the menu switch node and the menu socket + self._write_after_link: list[Callable] | None = None + # File (TextIO) or string (StringIO) the add-on/script is generated into self._file: TextIO = None @@ -538,6 +541,15 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, dv = socket_interface.default_value + # notice that the Node Socket Menu should be assign value after link to a menu switch node + if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu: + if not self._write_after_link: + self._write_after_link = [] + + self._write_after_link.append( + lambda _var=socket_var, _dv=dv: self._write(f"{_var}.default_value = '{_dv}'")) + return + if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: dv = vec4_to_py_str(dv) elif type(dv) in {mathutils.Vector, mathutils.Euler}: @@ -1329,6 +1341,10 @@ def _init_links(self, node_tree: NodeTree) -> None: f".outputs[{input_idx}], " f"{out_node_var}.inputs[{output_idx}])") + if self._write_after_link: + for _func in self._write_after_link: + _func() + def _set_node_tree_properties(self, node_tree: NodeTree) -> None: nt_var = self._node_tree_vars[node_tree] From 4f443dbb8b3248b75229a86e65a01f70d83de91d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 20:37:45 -0600 Subject: [PATCH 233/286] fix: no menu linked cases, functions only executed per tree, minor cleanup --- NodeToPython/ntp_operator.py | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 88fa913..767d6c3 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -66,8 +66,8 @@ class NTP_Operator(Operator): def __init__(self): super().__init__() - # Call function after all the writes, such as the menu switch node and the menu socket - self._write_after_link: list[Callable] | None = None + # Write functions after nodes are mostly initialized and linked up + self._write_after_links: list[Callable] = [] # File (TextIO) or string (StringIO) the add-on/script is generated into self._file: TextIO = None @@ -541,16 +541,21 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, dv = socket_interface.default_value - # notice that the Node Socket Menu should be assign value after link to a menu switch node if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu: - if not self._write_after_link: - self._write_after_link = [] - - self._write_after_link.append( - lambda _var=socket_var, _dv=dv: self._write(f"{_var}.default_value = '{_dv}'")) + if dv == "": + self.report({'WARNING'}, + "NodeToPython: No menu found for socket " + f"{socket_interface.name}" + ) + return + + self._write_after_links.append( + lambda _socket_var=socket_var, _dv=enum_to_py_str(dv): ( + self._write(f"{_socket_var}.default_value = {_dv}") + ) + ) return - - if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: + elif type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: dv = vec4_to_py_str(dv) elif type(dv) in {mathutils.Vector, mathutils.Euler}: dv = vec3_to_py_str(dv) @@ -796,6 +801,8 @@ def _set_input_defaults(self, node: Node) -> None: #menu elif input.bl_idname == 'NodeSocketMenu': + if input.default_value == '': + continue default_val = enum_to_py_str(input.default_value) # images @@ -1341,9 +1348,10 @@ def _init_links(self, node_tree: NodeTree) -> None: f".outputs[{input_idx}], " f"{out_node_var}.inputs[{output_idx}])") - if self._write_after_link: - for _func in self._write_after_link: - _func() + for _func in self._write_after_links: + _func() + self._write_after_links = [] + def _set_node_tree_properties(self, node_tree: NodeTree) -> None: nt_var = self._node_tree_vars[node_tree] From 511447fe7b958de3345ad62dc098e86cc7264020 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 20:45:32 -0600 Subject: [PATCH 234/286] docs: add contributors file --- CONTRIBUTORS.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CONTRIBUTORS.md diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..94b05c4 --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +* [Brendan Parmer](https://github.com/BrendanParmer) +* [Carlsu](https://github.com/carls3d) +* [atticus-lv](https://github.com/atticus-lv) \ No newline at end of file From a3a26038de01646edd9e1f6c6ea52a4ee823ad5b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 20:52:32 -0600 Subject: [PATCH 235/286] feat: bump NTP version --- NodeToPython/__init__.py | 2 +- NodeToPython/blender_manifest.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeToPython/__init__.py b/NodeToPython/__init__.py index 6782b87..e37c738 100644 --- a/NodeToPython/__init__.py +++ b/NodeToPython/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 2, 1), + "version": (3, 2, 2), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 0d6cd63..8c63634 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.2.1" +version = "3.2.2" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " From 1a520d16defcca739817a77780372f14f8ee5858 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:53:58 -0600 Subject: [PATCH 236/286] other: version bumps --- NodeToPython/__init__.py | 2 +- NodeToPython/blender_manifest.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NodeToPython/__init__.py b/NodeToPython/__init__.py index e37c738..efe61f0 100644 --- a/NodeToPython/__init__.py +++ b/NodeToPython/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 2, 2), + "version": (3, 3, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 8c63634..332fccb 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.2.2" +version = "3.3.0" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " @@ -12,7 +12,7 @@ website = "https://github.com/BrendanParmer/NodeToPython" tags = ["Development", "Compositing", "Geometry Nodes", "Material", "Node"] blender_version_min = "4.2.0" -blender_version_max = "4.3.0" +blender_version_max = "4.4.0" license = [ "SPDX:MIT", From 4269432f7bbaca022ecf2d605069b672f3c6e86d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:17:58 -0600 Subject: [PATCH 237/286] fix: bpy_prop_array import location change --- NodeToPython/ntp_operator.py | 8 ++++++-- NodeToPython/utils.py | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index d925aac..0fc8607 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -1,7 +1,6 @@ import bpy from bpy.types import Context, Operator from bpy.types import Node, NodeTree -from bpy_types import bpy_types if bpy.app.version < (4, 0, 0): from bpy.types import NodeSocketInterface @@ -9,6 +8,11 @@ from bpy.types import NodeTreeInterfacePanel, NodeTreeInterfaceSocket from bpy.types import NodeTreeInterfaceItem +if bpy.app.version >= (4, 3, 0): + from bpy.types import bpy_prop_array +else: + from bpy_types.bpy_types import bpy_prop_array + import datetime import os import shutil @@ -574,7 +578,7 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, dv = vec4_to_py_str(dv) elif type(dv) in {mathutils.Vector, mathutils.Euler}: dv = vec3_to_py_str(dv) - elif type(dv) == bpy_types.bpy_prop_array: + elif type(dv) == bpy_prop_array: dv = array_to_py_str(dv) elif type(dv) == str: dv = str_to_py_str(dv) diff --git a/NodeToPython/utils.py b/NodeToPython/utils.py index d411290..bc01c88 100644 --- a/NodeToPython/utils.py +++ b/NodeToPython/utils.py @@ -1,7 +1,11 @@ import bpy -from bpy_types import bpy_types import mathutils +if bpy.app.version >= (4, 3, 0): + from bpy.types import bpy_prop_array +else: + from bpy_types.bpy_types import bpy_prop_array + import keyword import re @@ -106,7 +110,7 @@ def vec4_to_py_str(vec4) -> str: """ return f"({vec4[0]}, {vec4[1]}, {vec4[2]}, {vec4[3]})" -def array_to_py_str(array: bpy_types.bpy_prop_array) -> str: +def array_to_py_str(array: bpy_prop_array) -> str: """ Converts a bpy_prop_array into a string From abb7b47e4114b6538ceaf23addceaec3d58c3345 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:27:48 -0600 Subject: [PATCH 238/286] feat: default group node width --- NodeToPython/ntp_operator.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 0fc8607..9ee85d6 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -1381,7 +1381,11 @@ def _set_node_tree_properties(self, node_tree: NodeTree) -> None: color_tag_str = enum_to_py_str(node_tree.color_tag) self._write(f"{nt_var}.color_tag = {color_tag_str}") desc_str = str_to_py_str(node_tree.description) - self._write(f"{nt_var}.description = {desc_str}\n") + self._write(f"{nt_var}.description = {desc_str}") + if bpy.app.version >= (4, 3, 0): + default_width = node_tree.default_group_node_width + self._write(f"{nt_var}.default_group_node_width = {default_width}") + self._write("\n") def _hide_hidden_sockets(self, node: Node) -> None: """ From 380d60cd0fa26f4b68b97ae29e64cdc2c9355125 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:28:11 -0600 Subject: [PATCH 239/286] feat: warning propagation --- NodeToPython/ntp_operator.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 9ee85d6..f3d5178 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -339,6 +339,11 @@ def _create_node(self, node: Node, node_tree_var: str) -> str: # hide if node.hide: self._write(f"{node_var}.hide = True") + + # Warning propagation + if bpy.app.version >= (4, 3, 0): + self._write(f"{node_var}.warning_propagation = " + f"{enum_to_py_str(node.warning_propagation)}") return node_var def _set_settings_defaults(self, node: Node) -> None: From 30c473688f071b89e7e34ca33091348df2d5c20e Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:39:44 -0600 Subject: [PATCH 240/286] feat: auto-generated 4.3 node_settings --- NodeToPython/node_settings.py | 148 ++++++++++++++++++++++++++++++++-- 1 file changed, 143 insertions(+), 5 deletions(-) diff --git a/NodeToPython/node_settings.py b/NodeToPython/node_settings.py index b771df0..2a332ea 100644 --- a/NodeToPython/node_settings.py +++ b/NodeToPython/node_settings.py @@ -48,12 +48,12 @@ class NTPNodeSetting(NamedTuple): name_: str st_: ST min_version_: tuple = (3, 0, 0) - max_version_: tuple = (4, 3, 0) + max_version_: tuple = (4, 4, 0) class NodeInfo(NamedTuple): attributes_: list[NTPNodeSetting] min_version_: tuple = (3, 0, 0) - max_version_: tuple = (4, 3, 0) + max_version_: tuple = (4, 4, 0) node_settings : dict[str, NodeInfo] = { 'CompositorNodeAlphaOver' : NodeInfo( @@ -161,11 +161,17 @@ class NodeInfo(NamedTuple): NTPNodeSetting("gain", ST.COLOR, min_version_=(3, 5, 0)), NTPNodeSetting("gamma", ST.VEC3, max_version_=(3, 5, 0)), NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("input_temperature", ST.FLOAT, min_version_=(4, 3, 0)), + NTPNodeSetting("input_tint", ST.FLOAT, min_version_=(4, 3, 0)), + NTPNodeSetting("input_whitepoint", ST.COLOR, min_version_=(4, 3, 0)), NTPNodeSetting("lift", ST.VEC3, max_version_=(3, 5, 0)), NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0)), NTPNodeSetting("offset", ST.VEC3, max_version_=(3, 5, 0)), NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0)), NTPNodeSetting("offset_basis", ST.FLOAT), + NTPNodeSetting("output_temperature", ST.FLOAT, min_version_=(4, 3, 0)), + NTPNodeSetting("output_tint", ST.FLOAT, min_version_=(4, 3, 0)), + NTPNodeSetting("output_whitepoint", ST.COLOR, min_version_=(4, 3, 0)), NTPNodeSetting("power", ST.VEC3, max_version_=(3, 5, 0)), NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0)), NTPNodeSetting("slope", ST.VEC3, max_version_=(3, 5, 0)), @@ -652,6 +658,7 @@ class NodeInfo(NamedTuple): NTPNodeSetting("file_slots", ST.FILE_SLOTS), NTPNodeSetting("format", ST.IMAGE_FORMAT_SETTINGS), NTPNodeSetting("layer_slots", ST.LAYER_SLOTS), + NTPNodeSetting("save_as_render", ST.BOOL, min_version_=(4, 3, 0)), ] ), @@ -961,6 +968,13 @@ class NodeInfo(NamedTuple): ] ), + 'FunctionNodeHashValue' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + 'FunctionNodeInputBool' : NodeInfo( [ NTPNodeSetting("boolean", ST.BOOL), @@ -1003,6 +1017,13 @@ class NodeInfo(NamedTuple): ] ), + 'FunctionNodeIntegerMath' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + 'FunctionNodeInvertMatrix' : NodeInfo( [], min_version_ = (4, 2, 0) @@ -1018,6 +1039,11 @@ class NodeInfo(NamedTuple): max_version_ = (3, 2, 0) ), + 'FunctionNodeMatrixDeterminant' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + 'FunctionNodeMatrixMultiply' : NodeInfo( [], min_version_ = (4, 2, 0) @@ -1119,7 +1145,9 @@ class NodeInfo(NamedTuple): ), 'FunctionNodeValueToString' : NodeInfo( - [] + [ + NTPNodeSetting("data_type", ST.ENUM, min_version_=(4, 3, 0)), + ] ), 'GeometryNodeAccumulateField' : NodeInfo( @@ -1302,6 +1330,11 @@ class NodeInfo(NamedTuple): ] ), + 'GeometryNodeCurvesToGreasePencil' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + 'GeometryNodeCustomGroup' : NodeInfo( [ NTPNodeSetting("node_tree", ST.NODE_TREE), @@ -1423,6 +1456,22 @@ class NodeInfo(NamedTuple): min_version_ = (3, 1, 0) ), + 'GeometryNodeForeachGeometryElementInput' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + + 'GeometryNodeForeachGeometryElementOutput' : NodeInfo( + [ + NTPNodeSetting("active_generation_index", ST.INT), + NTPNodeSetting("active_input_index", ST.INT), + NTPNodeSetting("active_main_index", ST.INT), + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("inspection_index", ST.INT), + ], + min_version_ = (4, 3, 0) + ), + 'GeometryNodeGeometryToInstance' : NodeInfo( [], min_version_ = (3, 1, 0) @@ -1435,6 +1484,41 @@ class NodeInfo(NamedTuple): min_version_ = (4, 1, 0) ), + 'GeometryNodeGizmoDial' : NodeInfo( + [ + NTPNodeSetting("color_id", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + + 'GeometryNodeGizmoLinear' : NodeInfo( + [ + NTPNodeSetting("color_id", ST.ENUM), + NTPNodeSetting("draw_style", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + + 'GeometryNodeGizmoTransform' : NodeInfo( + [ + NTPNodeSetting("use_rotation_x", ST.BOOL), + NTPNodeSetting("use_rotation_y", ST.BOOL), + NTPNodeSetting("use_rotation_z", ST.BOOL), + NTPNodeSetting("use_scale_x", ST.BOOL), + NTPNodeSetting("use_scale_y", ST.BOOL), + NTPNodeSetting("use_scale_z", ST.BOOL), + NTPNodeSetting("use_translation_x", ST.BOOL), + NTPNodeSetting("use_translation_y", ST.BOOL), + NTPNodeSetting("use_translation_z", ST.BOOL), + ], + min_version_ = (4, 3, 0) + ), + + 'GeometryNodeGreasePencilToCurves' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + 'GeometryNodeGridToMesh' : NodeInfo( [], min_version_ = (4, 2, 0) @@ -1458,6 +1542,21 @@ class NodeInfo(NamedTuple): ] ), + 'GeometryNodeImportOBJ' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + + 'GeometryNodeImportPLY' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + + 'GeometryNodeImportSTL' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + 'GeometryNodeIndexOfNearest' : NodeInfo( [], min_version_ = (3, 6, 0) @@ -1976,6 +2075,13 @@ class NodeInfo(NamedTuple): min_version_ = (3, 1, 0) ), + 'GeometryNodeMergeLayers' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + 'GeometryNodeMeshBoolean' : NodeInfo( [ NTPNodeSetting("operation", ST.ENUM), @@ -2305,6 +2411,11 @@ class NodeInfo(NamedTuple): [] ), + 'GeometryNodeSetGeometryName' : NodeInfo( + [], + min_version_ = (4, 3, 0) + ), + 'GeometryNodeSetID' : NodeInfo( [] ), @@ -2469,6 +2580,7 @@ class NodeInfo(NamedTuple): 'GeometryNodeToolSetSelection' : NodeInfo( [ NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("selection_type", ST.ENUM, min_version_=(4, 3, 0)), ], min_version_ = (4, 0, 0) ), @@ -2536,6 +2648,13 @@ class NodeInfo(NamedTuple): ] ), + 'GeometryNodeWarning' : NodeInfo( + [ + NTPNodeSetting("warning_type", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + 'NodeFrame' : NodeInfo( [ NTPNodeSetting("label_size", ST.INT), @@ -2561,7 +2680,9 @@ class NodeInfo(NamedTuple): ), 'NodeReroute' : NodeInfo( - [] + [ + NTPNodeSetting("socket_idname", ST.STRING, min_version_=(4, 3, 0)), + ] ), 'ShaderNodeAddShader' : NodeInfo( @@ -2637,6 +2758,14 @@ class NodeInfo(NamedTuple): ] ), + 'ShaderNodeBsdfMetallic' : NodeInfo( + [ + NTPNodeSetting("distribution", ST.ENUM), + NTPNodeSetting("fresnel_type", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + 'ShaderNodeBsdfPrincipled' : NodeInfo( [ NTPNodeSetting("distribution", ST.ENUM), @@ -2989,6 +3118,13 @@ class NodeInfo(NamedTuple): ] ), + 'ShaderNodeTexGabor' : NodeInfo( + [ + NTPNodeSetting("gabor_type", ST.ENUM), + ], + min_version_ = (4, 3, 0) + ), + 'ShaderNodeTexGradient' : NodeInfo( [ NTPNodeSetting("gradient_type", ST.ENUM), @@ -3168,7 +3304,9 @@ class NodeInfo(NamedTuple): ), 'ShaderNodeVolumeScatter' : NodeInfo( - [] + [ + NTPNodeSetting("phase", ST.ENUM, min_version_=(4, 3, 0)), + ] ), 'ShaderNodeWavelength' : NodeInfo( From 3de5cf53ca451be3bbe6adf2ffe4350866ac8e4c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:58:06 -0600 Subject: [PATCH 241/286] feat: whitepoint color balance correction method --- NodeToPython/compositor/operator.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index 682517d..eb798fc 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -107,7 +107,7 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0)), NTPNodeSetting("lift", ST.VEC3, max_version_=(3, 5, 0)), NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0))] - else: + elif node.correction_method == 'OFFSET_POWER_SLOPE': lst = [NTPNodeSetting("correction_method", ST.ENUM), NTPNodeSetting("offset", ST.VEC3, max_version_=(3, 5, 0)), NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0)), @@ -116,6 +116,17 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0)), NTPNodeSetting("slope", ST.VEC3, max_version_=(3, 5, 0)), NTPNodeSetting("slope", ST.COLOR, min_version_=(3, 5, 0))] + elif node.correction_method == 'WHITEPOINT': + lst = [NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("input_temperature", ST.FLOAT), + NTPNodeSetting("input_tint", ST.FLOAT), + NTPNodeSetting("output_temperature", ST.FLOAT), + NTPNodeSetting("output_tint", ST.FLOAT)] + else: + self.report({'ERROR'}, + f"Unknown color balance correction method " + f"{enum_to_py_str(node.correction_method)}") + return color_balance_info = self._node_infos['CompositorNodeColorBalance'] self._node_infos['CompositorNodeColorBalance'] = color_balance_info._replace(attributes_ = lst) From 3feabb6413e192224ffa7caff3bfc3c5e0bd47b8 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 17 Nov 2024 17:38:29 -0600 Subject: [PATCH 242/286] tools: bpy docs download stability --- tools/node_settings_generator/parse_nodes.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/tools/node_settings_generator/parse_nodes.py b/tools/node_settings_generator/parse_nodes.py index ab42e73..9465f59 100644 --- a/tools/node_settings_generator/parse_nodes.py +++ b/tools/node_settings_generator/parse_nodes.py @@ -97,17 +97,17 @@ def download_file(filepath: str, version: Version, local_path: str) -> bool: if not os.path.exists(os.path.dirname(local_path)): os.makedirs(os.path.dirname(local_path)) - while True: + NUM_TRIES = 10 + for i in range(NUM_TRIES): try: with urllib.request.urlopen(req) as response: with open(local_path, 'wb') as file: file.write(response.read()) break - except urllib.error.HTTPError as e: - if e.code == 429: - time.sleep(1.0) - else: - raise + except Exception as e: + if i == NUM_TRIES - 1: + raise e + time.sleep(1.0) print(f"Downloaded {file_url} to {local_path}") return True @@ -121,14 +121,18 @@ def get_subclasses(current: str, parent: str, root_path: str, if not os.path.exists(current_path): download_file(relative_path, version, current_path) + if os.path.getsize(current_path) == 0: + download_file(relative_path, version, current_path) + with open(current_path, "r") as current_file: current_html = current_file.read() soup = BeautifulSoup(current_html, "html.parser") - sections = soup.find_all(id=f"{current.lower()}-{parent.lower()}") + main_id = f"{current.lower()}-{parent.lower()}" + sections = soup.find_all(id=main_id) if not sections: - raise ValueError(f"{version.tuple_str()} {current}: Couldn't find main section") + raise ValueError(f"{version.tuple_str()} {current}: Couldn't find main section with id {main_id}") section = sections[0] paragraphs = section.find_all("p") From 2352763bcdcc139d7f3965c6a326adbb2a32b218 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 17 Nov 2024 17:39:03 -0600 Subject: [PATCH 243/286] tools: add foreach item types, organization --- tools/node_settings_generator/types_utils.py | 33 +++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/tools/node_settings_generator/types_utils.py b/tools/node_settings_generator/types_utils.py index 5bf5201..1d385c9 100644 --- a/tools/node_settings_generator/types_utils.py +++ b/tools/node_settings_generator/types_utils.py @@ -9,6 +9,7 @@ class ST(Enum): COLOR = auto() ENUM = auto() ENUM_SET = auto() + EULER = auto() FLOAT = auto() INT = auto() STRING = auto() @@ -18,31 +19,33 @@ class ST(Enum): VEC4 = auto() # Special settings - BAKE_ITEMS = auto() - COLOR_RAMP = auto() - CURVE_MAPPING = auto() - ENUM_DEFINITION = auto() - INDEX_SWITCH_ITEMS = auto() - NODE_TREE = auto() - REPEAT_OUTPUT_ITEMS = auto() - SIM_OUTPUT_ITEMS = auto() + BAKE_ITEMS = auto() + CAPTURE_ATTRIBUTE_ITEMS = auto() + COLOR_RAMP = auto() + CURVE_MAPPING = auto() + ENUM_DEFINITION = auto() + ENUM_ITEM = auto() + FOREACH_GEO_ELEMENT_GENERATION_ITEMS = auto() + FOREACH_GEO_ELEMENT_INPUT_ITEMS = auto() + FOREACH_GEO_ELEMENT_MAIN_ITEMS = auto() + INDEX_SWITCH_ITEMS = auto() + MENU_SWITCH_ITEMS = auto() + NODE_TREE = auto() + REPEAT_OUTPUT_ITEMS = auto() + SIM_OUTPUT_ITEMS = auto() # Image IMAGE = auto() #needs refactor IMAGE_USER = auto() #needs refactor # Currently unimplemented - CAPTURE_ATTRIBUTE_ITEMS = auto() #TODO NTP v3.2 CRYPTOMATTE_ENTRIES = auto() - ENUM_ITEM = auto() #TODO NTP v3.2 - EULER = auto() #TODO NTP v3.2 FILE_SLOTS = auto() FONT = auto() IMAGE_FORMAT_SETTINGS = auto() LAYER_SLOTS = auto() MASK = auto() MATERIAL = auto() #TODO asset library - MENU_SWITCH_ITEMS = auto() #TODO NTP v3.2 MOVIE_CLIP = auto() OBJECT = auto() #TODO asset library PARTICLE_SYSTEM = auto() @@ -59,6 +62,9 @@ class ST(Enum): ST.CURVE_MAPPING, ST.ENUM_DEFINITION, ST.FILE_SLOTS, + ST.FOREACH_GEO_ELEMENT_GENERATION_ITEMS, + ST.FOREACH_GEO_ELEMENT_INPUT_ITEMS, + ST.FOREACH_GEO_ELEMENT_MAIN_ITEMS, ST.IMAGE_FORMAT_SETTINGS, ST.IMAGE_USER, ST.INDEX_SWITCH_ITEMS, @@ -100,6 +106,9 @@ class ST(Enum): "NodeEnumItem" : ST.ENUM_ITEM, "NodeGeometryBakeItems" : ST.BAKE_ITEMS, "NodeGeometryCaptureAttributeItems" : ST.CAPTURE_ATTRIBUTE_ITEMS, + "NodeGeometryForeachGeometryElementGenerationItems": ST.FOREACH_GEO_ELEMENT_GENERATION_ITEMS, + "NodeGeometryForeachGeometryElementInputItems" : ST.FOREACH_GEO_ELEMENT_INPUT_ITEMS, + "NodeGeometryForeachGeometryElementMainItems": ST.FOREACH_GEO_ELEMENT_MAIN_ITEMS, "NodeGeometryRepeatOutputItems" : ST.REPEAT_OUTPUT_ITEMS, "NodeGeometrySimulationOutputItems" : ST.SIM_OUTPUT_ITEMS, "NodeIndexSwitchItems" : ST.INDEX_SWITCH_ITEMS, From 10f936b9a9f16bcd872751375cdd5351cd2a895d Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 17 Nov 2024 17:39:36 -0600 Subject: [PATCH 244/286] feat: foreach element zones --- NodeToPython/geometry/node_tree.py | 7 ++++- NodeToPython/geometry/operator.py | 8 ++++-- NodeToPython/node_settings.py | 14 +++++++--- NodeToPython/ntp_operator.py | 43 ++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 7 deletions(-) diff --git a/NodeToPython/geometry/node_tree.py b/NodeToPython/geometry/node_tree.py index 73b3565..7ebca4f 100644 --- a/NodeToPython/geometry/node_tree.py +++ b/NodeToPython/geometry/node_tree.py @@ -4,9 +4,12 @@ if bpy.app.version >= (3, 6, 0): from bpy.types import GeometryNodeSimulationInput -if bpy.app.version > (4, 0, 0): +if bpy.app.version >= (4, 0, 0): from bpy.types import GeometryNodeRepeatInput +if bpy.app.version >= (4, 3, 0): + from bpy.types import GeometryNodeForeachGeometryElementInput + from ..ntp_node_tree import NTP_NodeTree class NTP_GeoNodeTree(NTP_NodeTree): @@ -16,3 +19,5 @@ def __init__(self, node_tree: GeometryNodeTree, var: str): self.sim_inputs: list[GeometryNodeSimulationInput] = [] if bpy.app.version >= (4, 0, 0): self.repeat_inputs: list[GeometryNodeRepeatInput] = [] + if bpy.app.version >= (4, 3, 0): + self.foreach_element_inputs: list[GeometryNodeForeachGeometryElementInput] = [] diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index 5e1a7b7..4cd5cfd 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -51,14 +51,16 @@ def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: if node.bl_idname == 'GeometryNodeSimulationInput': ntp_nt.sim_inputs.append(node) - elif node.bl_idname == 'GeometryNodeRepeatInput': ntp_nt.repeat_inputs.append(node) + elif node.bl_idname == 'GeometryNodeForeachGeometryElementInput': + ntp_nt.foreach_element_inputs.append(node) self._hide_hidden_sockets(node) if node.bl_idname not in {'GeometryNodeSimulationInput', - 'GeometryNodeRepeatInput'}: + 'GeometryNodeRepeatInput', + 'GeometryNodeForeachGeometryElementInput'}: self._set_socket_defaults(node) if bpy.app.version >= (3, 6, 0): @@ -143,6 +145,8 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: self._process_zones(ntp_nt.sim_inputs) if bpy.app.version >= (4, 0, 0): self._process_zones(ntp_nt.repeat_inputs) + if bpy.app.version >= (4, 3, 0): + self._process_zones(ntp_nt.foreach_element_inputs) #set look of nodes self._set_parents(node_tree) diff --git a/NodeToPython/node_settings.py b/NodeToPython/node_settings.py index 2a332ea..20e8e4e 100644 --- a/NodeToPython/node_settings.py +++ b/NodeToPython/node_settings.py @@ -9,6 +9,7 @@ class ST(Enum): COLOR = auto() ENUM = auto() ENUM_SET = auto() + EULER = auto() FLOAT = auto() INT = auto() STRING = auto() @@ -17,26 +18,28 @@ class ST(Enum): VEC3 = auto() VEC4 = auto() BAKE_ITEMS = auto() + CAPTURE_ATTRIBUTE_ITEMS = auto() COLOR_RAMP = auto() CURVE_MAPPING = auto() ENUM_DEFINITION = auto() + ENUM_ITEM = auto() + FOREACH_GEO_ELEMENT_GENERATION_ITEMS = auto() + FOREACH_GEO_ELEMENT_INPUT_ITEMS = auto() + FOREACH_GEO_ELEMENT_MAIN_ITEMS = auto() INDEX_SWITCH_ITEMS = auto() + MENU_SWITCH_ITEMS = auto() NODE_TREE = auto() REPEAT_OUTPUT_ITEMS = auto() SIM_OUTPUT_ITEMS = auto() IMAGE = auto() IMAGE_USER = auto() - CAPTURE_ATTRIBUTE_ITEMS = auto() CRYPTOMATTE_ENTRIES = auto() - ENUM_ITEM = auto() - EULER = auto() FILE_SLOTS = auto() FONT = auto() IMAGE_FORMAT_SETTINGS = auto() LAYER_SLOTS = auto() MASK = auto() MATERIAL = auto() - MENU_SWITCH_ITEMS = auto() MOVIE_CLIP = auto() OBJECT = auto() PARTICLE_SYSTEM = auto() @@ -1467,7 +1470,10 @@ class NodeInfo(NamedTuple): NTPNodeSetting("active_input_index", ST.INT), NTPNodeSetting("active_main_index", ST.INT), NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("generation_items", ST.FOREACH_GEO_ELEMENT_GENERATION_ITEMS), + NTPNodeSetting("input_items", ST.FOREACH_GEO_ELEMENT_INPUT_ITEMS), NTPNodeSetting("inspection_index", ST.INT), + NTPNodeSetting("main_items", ST.FOREACH_GEO_ELEMENT_MAIN_ITEMS), ], min_version_ = (4, 3, 0) ), diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index f3d5178..febfaf4 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -446,6 +446,12 @@ def _set_settings_defaults(self, node: Node) -> None: self._capture_attribute_items(attr, f"{node_var}.{attr_name}") elif st == ST.MENU_SWITCH_ITEMS: self._menu_switch_items(attr, f"{node_var}.{attr_name}") + elif st == ST.FOREACH_GEO_ELEMENT_GENERATION_ITEMS: + self._foreach_geo_element_generation_items(attr, f"{node_var}.{attr_name}") + elif st == ST.FOREACH_GEO_ELEMENT_INPUT_ITEMS: + self._foreach_geo_element_input_items(attr, f"{node_var}.{attr_name}") + elif st == ST.FOREACH_GEO_ELEMENT_MAIN_ITEMS: + self._foreach_geo_element_main_items(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, @@ -1277,6 +1283,43 @@ def _menu_switch_items(self, menu_switch_items: bpy.types.NodeMenuSwitchItems, m desc_str = str_to_py_str(item.description) self._write(f"{menu_switch_items_str}[{i}].description = {desc_str}") + if bpy.app.version >= (4, 3, 0): + def _foreach_geo_element_generation_items(self, + generation_items: bpy.types.NodeGeometryForeachGeometryElementGenerationItems, + generation_items_str: str + ) -> None: + self._write(f"{generation_items_str}.clear()") + for i, item in enumerate(generation_items): + socket_type = enum_to_py_str(item.socket_type) + name_str = str_to_py_str(item.name) + self._write(f"{generation_items_str}.new({socket_type}, {name_str})") + + item_str = f"{generation_items_str}[{i}]" + + ad = enum_to_py_str(item.domain) + self._write(f"{item_str}.domain = {ad}") + + def _foreach_geo_element_input_items(self, + input_items: bpy.types.NodeGeometryForeachGeometryElementInputItems, + input_items_str: str + ) -> None: + self._write(f"{input_items_str}.clear()") + for i, item in enumerate(input_items): + socket_type = enum_to_py_str(item.socket_type) + name_str = str_to_py_str(item.name) + self._write(f"{input_items_str}.new({socket_type}, {name_str})") + + def _foreach_geo_element_main_items(self, + main_items: bpy.types.NodeGeometryForeachGeometryElementMainItems, + main_items_str: str + ) -> None: + self._write(f"{main_items_str}.clear()") + for i, item in enumerate(main_items): + socket_type = enum_to_py_str(item.socket_type) + name_str = str_to_py_str(item.name) + self._write(f"{main_items_str}.new({socket_type}, {name_str})") + + def _set_parents(self, node_tree: NodeTree) -> None: """ Sets parents for all nodes, mostly used to put nodes in frames From c93efdd3225b532c4d893a8c76faa5672111f76a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 23 Nov 2024 16:59:29 -0600 Subject: [PATCH 245/286] feat: clean up zone processing --- NodeToPython/geometry/node_tree.py | 9 +++++---- NodeToPython/geometry/operator.py | 16 ++++------------ 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/NodeToPython/geometry/node_tree.py b/NodeToPython/geometry/node_tree.py index 7ebca4f..5c875c5 100644 --- a/NodeToPython/geometry/node_tree.py +++ b/NodeToPython/geometry/node_tree.py @@ -1,5 +1,5 @@ import bpy -from bpy.types import GeometryNodeTree +from bpy.types import GeometryNodeTree, GeometryNode if bpy.app.version >= (3, 6, 0): from bpy.types import GeometryNodeSimulationInput @@ -15,9 +15,10 @@ class NTP_GeoNodeTree(NTP_NodeTree): def __init__(self, node_tree: GeometryNodeTree, var: str): super().__init__(node_tree, var) + self.zone_inputs_: dict[list[GeometryNode]] = {} if bpy.app.version >= (3, 6, 0): - self.sim_inputs: list[GeometryNodeSimulationInput] = [] + self.zone_inputs_["GeometryNodeSimulationInput"] = [] if bpy.app.version >= (4, 0, 0): - self.repeat_inputs: list[GeometryNodeRepeatInput] = [] + self.zone_inputs_["GeometryNodeRepeatInput"] = [] if bpy.app.version >= (4, 3, 0): - self.foreach_element_inputs: list[GeometryNodeForeachGeometryElementInput] = [] + self.zone_inputs_["GeometryNodeForeachGeometryElementInput"] = [] diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index 4cd5cfd..cf2485c 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -49,12 +49,8 @@ def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: self._group_io_settings(node, "output", ntp_nt) ntp_nt.outputs_set = True - if node.bl_idname == 'GeometryNodeSimulationInput': - ntp_nt.sim_inputs.append(node) - elif node.bl_idname == 'GeometryNodeRepeatInput': - ntp_nt.repeat_inputs.append(node) - elif node.bl_idname == 'GeometryNodeForeachGeometryElementInput': - ntp_nt.foreach_element_inputs.append(node) + if node.bl_idname in ntp_nt.zone_inputs_: + ntp_nt.zone_inputs_[node.bl_idname].append(node) self._hide_hidden_sockets(node) @@ -141,12 +137,8 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: for node in node_tree.nodes: self._process_node(node, ntp_nt) - if bpy.app.version >= (3, 6, 0): - self._process_zones(ntp_nt.sim_inputs) - if bpy.app.version >= (4, 0, 0): - self._process_zones(ntp_nt.repeat_inputs) - if bpy.app.version >= (4, 3, 0): - self._process_zones(ntp_nt.foreach_element_inputs) + for zone_list in ntp_nt.zone_inputs_.values(): + self._process_zones(zone_list) #set look of nodes self._set_parents(node_tree) From 5f70ad8690981017a03a571a15c8a0011cdba26e Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 23 Nov 2024 17:01:59 -0600 Subject: [PATCH 246/286] fix: import bpy_prop_array weirdness --- NodeToPython/ntp_operator.py | 5 +---- NodeToPython/utils.py | 6 ++---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index febfaf4..34b025f 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -8,10 +8,7 @@ from bpy.types import NodeTreeInterfacePanel, NodeTreeInterfaceSocket from bpy.types import NodeTreeInterfaceItem -if bpy.app.version >= (4, 3, 0): - from bpy.types import bpy_prop_array -else: - from bpy_types.bpy_types import bpy_prop_array +from bpy.types import bpy_prop_array import datetime import os diff --git a/NodeToPython/utils.py b/NodeToPython/utils.py index bc01c88..5f84414 100644 --- a/NodeToPython/utils.py +++ b/NodeToPython/utils.py @@ -1,10 +1,8 @@ import bpy import mathutils -if bpy.app.version >= (4, 3, 0): - from bpy.types import bpy_prop_array -else: - from bpy_types.bpy_types import bpy_prop_array + +from bpy.types import bpy_prop_array import keyword import re From 4b8608820f4bc9534fd8b08f6d2c91298935ef5b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 23 Nov 2024 17:07:56 -0600 Subject: [PATCH 247/286] feat: don't explicitly set warning propagation if default --- NodeToPython/ntp_operator.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 34b025f..5442a56 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -339,8 +339,9 @@ def _create_node(self, node: Node, node_tree_var: str) -> str: # Warning propagation if bpy.app.version >= (4, 3, 0): - self._write(f"{node_var}.warning_propagation = " - f"{enum_to_py_str(node.warning_propagation)}") + if node.warning_propagation != 'ALL': + self._write(f"{node_var}.warning_propagation = " + f"{enum_to_py_str(node.warning_propagation)}") return node_var def _set_settings_defaults(self, node: Node) -> None: From c128afa80cfa1c8972ab9bd79fa53e2a3f17d1c9 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 23 Nov 2024 17:16:50 -0600 Subject: [PATCH 248/286] refactor: more zone cleanup --- NodeToPython/geometry/node_tree.py | 8 ++++---- NodeToPython/geometry/operator.py | 10 ++++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/NodeToPython/geometry/node_tree.py b/NodeToPython/geometry/node_tree.py index 5c875c5..8129276 100644 --- a/NodeToPython/geometry/node_tree.py +++ b/NodeToPython/geometry/node_tree.py @@ -15,10 +15,10 @@ class NTP_GeoNodeTree(NTP_NodeTree): def __init__(self, node_tree: GeometryNodeTree, var: str): super().__init__(node_tree, var) - self.zone_inputs_: dict[list[GeometryNode]] = {} + self.zone_inputs: dict[list[GeometryNode]] = {} if bpy.app.version >= (3, 6, 0): - self.zone_inputs_["GeometryNodeSimulationInput"] = [] + self.zone_inputs["GeometryNodeSimulationInput"] = [] if bpy.app.version >= (4, 0, 0): - self.zone_inputs_["GeometryNodeRepeatInput"] = [] + self.zone_inputs["GeometryNodeRepeatInput"] = [] if bpy.app.version >= (4, 3, 0): - self.zone_inputs_["GeometryNodeForeachGeometryElementInput"] = [] + self.zone_inputs["GeometryNodeForeachGeometryElementInput"] = [] diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index cf2485c..114f509 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -49,14 +49,12 @@ def _process_node(self, node: Node, ntp_nt: NTP_GeoNodeTree) -> None: self._group_io_settings(node, "output", ntp_nt) ntp_nt.outputs_set = True - if node.bl_idname in ntp_nt.zone_inputs_: - ntp_nt.zone_inputs_[node.bl_idname].append(node) + if node.bl_idname in ntp_nt.zone_inputs: + ntp_nt.zone_inputs[node.bl_idname].append(node) self._hide_hidden_sockets(node) - if node.bl_idname not in {'GeometryNodeSimulationInput', - 'GeometryNodeRepeatInput', - 'GeometryNodeForeachGeometryElementInput'}: + if node.bl_idname not in ntp_nt.zone_inputs: self._set_socket_defaults(node) if bpy.app.version >= (3, 6, 0): @@ -137,7 +135,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: for node in node_tree.nodes: self._process_node(node, ntp_nt) - for zone_list in ntp_nt.zone_inputs_.values(): + for zone_list in ntp_nt.zone_inputs.values(): self._process_zones(zone_list) #set look of nodes From e57bd61762b61a755dad34b50646e6a048825d05 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 23 Nov 2024 18:02:43 -0600 Subject: [PATCH 249/286] docs: update readme for NTPv3.3 --- CONTRIBUTORS.md => docs/CONTRIBUTORS.md | 0 docs/README.md | 8 ++++++-- 2 files changed, 6 insertions(+), 2 deletions(-) rename CONTRIBUTORS.md => docs/CONTRIBUTORS.md (100%) diff --git a/CONTRIBUTORS.md b/docs/CONTRIBUTORS.md similarity index 100% rename from CONTRIBUTORS.md rename to docs/CONTRIBUTORS.md diff --git a/docs/README.md b/docs/README.md index 8e8106d..37f798a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.2.1 is supported for Blender 3.0 - 4.2 on Windows, macOS, and Linux. +NodeToPython v3.3.0 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. ## Installation ### Blender Extensions Platform @@ -43,7 +43,8 @@ In the options panel, select either **Script** or **Add-on**. When submitting an issue, please include -* Your version of Blender (3.0 - 4.2) +* Your version of Blender (3.0 - 4.3) + * Higher versions of Blender are expected to break NodeToPython. In general, work doesn't start on new versions until after the Beta stage of the release cycle * Your operating system * Steps to reproduce the issue or a description of what you were trying to accomplish. Providing a test blend file is especially helpful @@ -58,3 +59,6 @@ This tool is provided under the MIT license and is intended for lawful use only. In particular, this tool generates code that requires the Blender Python API, which is licensed under the GNU General Public License (GPL). Code generated by this tool that incorporates or uses the Blender Python API must comply with the GPL requirements. For more details on the GPL, please see https://www.gnu.org/licenses/gpl-3.0.html. For more details on Blender's licensing, please see https://www.blender.org/about/license/ **Disclaimer**: The authors of this tool are not legal professionals. This notice is provided for informational purposes only and should not be construed as legal advice. For specific legal advice related to the use of this tool and compliance with the GPL or other legal matters, please consult a qualified attorney. + +# Credits +See [CONTRIBUTORS.md](./CONTRIBUTORS.md) for all the people who've made this project possible \ No newline at end of file From c98b798d1be1ea61f9f67d593d215111b1ddfb3c Mon Sep 17 00:00:00 2001 From: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 23 Nov 2024 18:09:40 -0600 Subject: [PATCH 250/286] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..ebb7307 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Create a report to help us improve NodeToPython +title: "[BUG] " +labels: bug +assignees: '' + +--- + +**System Information** +* OS (Windows, MacOS, Linux) +* Blender version (3.0 - 4.3) + * Lower versions will not receive support + * Higher Blender versions are expected to break NodeToPython. Development to add the required new nodes, data types, and breaking API changes tends to start after the Beta phase in the [release cycle](https://developer.blender.org/docs/handbook/release_process/release_cycle/) + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. From 585e3a29e573fb1ad768a86141f3e5c273c11d7b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:21:53 -0600 Subject: [PATCH 251/286] fix: only try to set menu socket default after Blender 4.1 --- NodeToPython/ntp_operator.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 5442a56..f8c837b 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -569,21 +569,22 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket, dv = socket_interface.default_value - if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu: - if dv == "": - self.report({'WARNING'}, - "NodeToPython: No menu found for socket " - f"{socket_interface.name}" + if bpy.app.version >= (4, 1, 0): + if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu: + if dv == "": + self.report({'WARNING'}, + "NodeToPython: No menu found for socket " + f"{socket_interface.name}" + ) + return + + self._write_after_links.append( + lambda _socket_var=socket_var, _dv=enum_to_py_str(dv): ( + self._write(f"{_socket_var}.default_value = {_dv}") + ) ) return - - self._write_after_links.append( - lambda _socket_var=socket_var, _dv=enum_to_py_str(dv): ( - self._write(f"{_socket_var}.default_value = {_dv}") - ) - ) - return - elif type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: + if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: dv = vec4_to_py_str(dv) elif type(dv) in {mathutils.Vector, mathutils.Euler}: dv = vec3_to_py_str(dv) From 0f2027d2b9a139ca1ed4ed5837e32c4a7844f6a4 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:37:04 -0600 Subject: [PATCH 252/286] other: version bump --- NodeToPython/__init__.py | 2 +- NodeToPython/blender_manifest.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeToPython/__init__.py b/NodeToPython/__init__.py index efe61f0..a954791 100644 --- a/NodeToPython/__init__.py +++ b/NodeToPython/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 3, 0), + "version": (3, 3, 1), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 332fccb..7d60a0c 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.3.0" +version = "3.3.1" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " From 16b8b924f955ee1b4a0decd9707904dec7e12854 Mon Sep 17 00:00:00 2001 From: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 23 Dec 2024 12:00:26 -0600 Subject: [PATCH 253/286] docs: bump README version Signed-off-by: Brendan Parmer <51296046+BrendanParmer@users.noreply.github.com> --- docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 37f798a..f62866d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.3.0 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. +NodeToPython v3.3.1 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. ## Installation ### Blender Extensions Platform @@ -61,4 +61,4 @@ In particular, this tool generates code that requires the Blender Python API, wh **Disclaimer**: The authors of this tool are not legal professionals. This notice is provided for informational purposes only and should not be construed as legal advice. For specific legal advice related to the use of this tool and compliance with the GPL or other legal matters, please consult a qualified attorney. # Credits -See [CONTRIBUTORS.md](./CONTRIBUTORS.md) for all the people who've made this project possible \ No newline at end of file +See [CONTRIBUTORS.md](./CONTRIBUTORS.md) for all the people who've made this project possible From c7a7f02b2ab67571aa13671e3f678fe258c784ea Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 15 Feb 2025 12:58:28 -0600 Subject: [PATCH 254/286] other: version bumps --- NodeToPython/__init__.py | 2 +- NodeToPython/blender_manifest.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NodeToPython/__init__.py b/NodeToPython/__init__.py index a954791..8d70c10 100644 --- a/NodeToPython/__init__.py +++ b/NodeToPython/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 3, 1), + "version": (3, 4, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 7d60a0c..e45c93a 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.3.1" +version = "3.4.0" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " @@ -12,7 +12,7 @@ website = "https://github.com/BrendanParmer/NodeToPython" tags = ["Development", "Compositing", "Geometry Nodes", "Material", "Node"] blender_version_min = "4.2.0" -blender_version_max = "4.4.0" +blender_version_max = "4.5.0" license = [ "SPDX:MIT", From b21299c11b90cfdaebe215571d4406d694a4b71a Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 15 Feb 2025 14:17:45 -0600 Subject: [PATCH 255/286] feat: add collection to setting types --- tools/node_settings_generator/types_utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/node_settings_generator/types_utils.py b/tools/node_settings_generator/types_utils.py index 1d385c9..27458c0 100644 --- a/tools/node_settings_generator/types_utils.py +++ b/tools/node_settings_generator/types_utils.py @@ -39,6 +39,7 @@ class ST(Enum): IMAGE_USER = auto() #needs refactor # Currently unimplemented + COLLECTION = auto() CRYPTOMATTE_ENTRIES = auto() FILE_SLOTS = auto() FONT = auto() @@ -78,6 +79,7 @@ class ST(Enum): "" : "", "bpy_prop_collection of CryptomatteEntry": ST.CRYPTOMATTE_ENTRIES, "boolean" : ST.BOOL, + "Collection" : ST.COLLECTION, "ColorMapping" : None, # Always read-only "ColorRamp" : ST.COLOR_RAMP, "CompositorNodeOutputFileFileSlots" : ST.FILE_SLOTS, From 537997e273ea0633072b43140c1b06d1c2d24841 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 15 Feb 2025 14:18:41 -0600 Subject: [PATCH 256/286] feat: update node settings for Blender 4.4 --- NodeToPython/node_settings.py | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/NodeToPython/node_settings.py b/NodeToPython/node_settings.py index 20e8e4e..3045c27 100644 --- a/NodeToPython/node_settings.py +++ b/NodeToPython/node_settings.py @@ -33,6 +33,7 @@ class ST(Enum): SIM_OUTPUT_ITEMS = auto() IMAGE = auto() IMAGE_USER = auto() + COLLECTION = auto() CRYPTOMATTE_ENTRIES = auto() FILE_SLOTS = auto() FONT = auto() @@ -51,12 +52,12 @@ class NTPNodeSetting(NamedTuple): name_: str st_: ST min_version_: tuple = (3, 0, 0) - max_version_: tuple = (4, 4, 0) + max_version_: tuple = (4, 5, 0) class NodeInfo(NamedTuple): attributes_: list[NTPNodeSetting] min_version_: tuple = (3, 0, 0) - max_version_: tuple = (4, 4, 0) + max_version_: tuple = (4, 5, 0) node_settings : dict[str, NodeInfo] = { 'CompositorNodeAlphaOver' : NodeInfo( @@ -378,6 +379,7 @@ class NodeInfo(NamedTuple): 'CompositorNodeDenoise' : NodeInfo( [ NTPNodeSetting("prefilter", ST.ENUM), + NTPNodeSetting("quality", ST.ENUM, min_version_=(4, 4, 0)), NTPNodeSetting("use_hdr", ST.BOOL), ] ), @@ -882,6 +884,7 @@ class NodeInfo(NamedTuple): NTPNodeSetting("center_x", ST.FLOAT, max_version_=(4, 2, 0)), NTPNodeSetting("center_y", ST.FLOAT, max_version_=(4, 2, 0)), NTPNodeSetting("tile_order", ST.ENUM, max_version_=(4, 2, 0)), + NTPNodeSetting("ui_shortcut", ST.INT, min_version_=(4, 4, 0)), NTPNodeSetting("use_alpha", ST.BOOL), ] ), @@ -965,6 +968,11 @@ class NodeInfo(NamedTuple): min_version_ = (4, 0, 0) ), + 'FunctionNodeFindInString' : NodeInfo( + [], + min_version_ = (4, 4, 0) + ), + 'FunctionNodeFloatToInt' : NodeInfo( [ NTPNodeSetting("rounding_mode", ST.ENUM), @@ -1581,6 +1589,13 @@ class NodeInfo(NamedTuple): min_version_ = (4, 1, 0) ), + 'GeometryNodeInputCollection' : NodeInfo( + [ + NTPNodeSetting("collection", ST.COLLECTION), + ], + min_version_ = (4, 4, 0) + ), + 'GeometryNodeInputCurveHandlePositions' : NodeInfo( [] ), @@ -1682,7 +1697,16 @@ class NodeInfo(NamedTuple): ), 'GeometryNodeInputNormal' : NodeInfo( - [] + [ + NTPNodeSetting("legacy_corner_normals", ST.BOOL, min_version_=(4, 4, 0)), + ] + ), + + 'GeometryNodeInputObject' : NodeInfo( + [ + NTPNodeSetting("object", ST.OBJECT), + ], + min_version_ = (4, 4, 0) ), 'GeometryNodeInputPosition' : NodeInfo( @@ -2282,6 +2306,7 @@ class NodeInfo(NamedTuple): 'GeometryNodeResampleCurve' : NodeInfo( [ + NTPNodeSetting("keep_last_segment", ST.BOOL, min_version_=(4, 4, 0)), NTPNodeSetting("mode", ST.ENUM), ] ), From af79966ab89f00c4f0473a6aa4aa7f4040e11124 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 4 Mar 2025 07:23:56 -0600 Subject: [PATCH 257/286] fix: compositor groups now behave correctly --- NodeToPython/compositor/operator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index eb798fc..a9dbd28 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -22,7 +22,9 @@ class NTPCompositorOperator(NTP_Operator): bl_options = {'REGISTER', 'UNDO'} compositor_name: bpy.props.StringProperty(name="Node Group") - is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") + is_scene : bpy.props.BoolProperty( + name="Is Scene", + description="Blender stores compositing node trees differently for scenes and in groups") def __init__(self): super().__init__() @@ -59,7 +61,7 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): self._write(f"#initialize {nt_name} node group", self._outer_indent_level) self._write(f"def {ntp_nt.var}_node_group():", self._outer_indent_level) - if ntp_nt.node_tree == self._base_node_tree: + if ntp_nt.node_tree == self._base_node_tree and self.is_scene: self._write(f"{ntp_nt.var} = {SCENE}.node_tree") self._write(f"#start with a clean node tree") self._write(f"for {NODE} in {ntp_nt.var}.nodes:") From bcc53042788fc7e264ca64475371a4130769eaa3 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 4 Mar 2025 07:25:38 -0600 Subject: [PATCH 258/286] other: version bump --- NodeToPython/__init__.py | 2 +- NodeToPython/blender_manifest.toml | 2 +- docs/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NodeToPython/__init__.py b/NodeToPython/__init__.py index a954791..2f13b7e 100644 --- a/NodeToPython/__init__.py +++ b/NodeToPython/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 3, 1), + "version": (3, 3, 2), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 7d60a0c..26acab7 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.3.1" +version = "3.3.2" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " diff --git a/docs/README.md b/docs/README.md index f62866d..4652a6c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.3.1 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. +NodeToPython v3.3.2 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. ## Installation ### Blender Extensions Platform From 6ea7974d495139c4c1a4cdc15b4794cdd566a27c Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 4 Mar 2025 07:23:56 -0600 Subject: [PATCH 259/286] fix: compositor groups now behave correctly --- NodeToPython/compositor/operator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index eb798fc..a9dbd28 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -22,7 +22,9 @@ class NTPCompositorOperator(NTP_Operator): bl_options = {'REGISTER', 'UNDO'} compositor_name: bpy.props.StringProperty(name="Node Group") - is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") + is_scene : bpy.props.BoolProperty( + name="Is Scene", + description="Blender stores compositing node trees differently for scenes and in groups") def __init__(self): super().__init__() @@ -59,7 +61,7 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): self._write(f"#initialize {nt_name} node group", self._outer_indent_level) self._write(f"def {ntp_nt.var}_node_group():", self._outer_indent_level) - if ntp_nt.node_tree == self._base_node_tree: + if ntp_nt.node_tree == self._base_node_tree and self.is_scene: self._write(f"{ntp_nt.var} = {SCENE}.node_tree") self._write(f"#start with a clean node tree") self._write(f"for {NODE} in {ntp_nt.var}.nodes:") From d2374a6d115ae25ce49c377dd52b55aa42d859d7 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Tue, 4 Mar 2025 07:25:38 -0600 Subject: [PATCH 260/286] other: version bump --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index f62866d..4652a6c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.3.1 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. +NodeToPython v3.3.2 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. ## Installation ### Blender Extensions Platform From 7c02eb8a37e62acc79a69033cdb01f6d84b243e0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 9 Mar 2025 16:22:28 -0500 Subject: [PATCH 261/286] fix: explicitly call parent constructors --- NodeToPython/compositor/operator.py | 4 ++-- NodeToPython/compositor/ui.py | 3 +++ NodeToPython/geometry/operator.py | 5 +++-- NodeToPython/geometry/ui.py | 3 +++ NodeToPython/ntp_operator.py | 4 ++-- NodeToPython/options.py | 7 +++++++ NodeToPython/shader/operator.py | 4 ++-- NodeToPython/shader/ui.py | 3 +++ 8 files changed, 25 insertions(+), 8 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index eb798fc..73b91c2 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -24,8 +24,8 @@ class NTPCompositorOperator(NTP_Operator): compositor_name: bpy.props.StringProperty(name="Node Group") is_scene : bpy.props.BoolProperty(name="Is Scene", description="Blender stores compositing node trees differently for scenes and in groups") - def __init__(self): - super().__init__() + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) self._node_infos = node_settings for name in COMP_OP_RESERVED_NAMES: self._used_vars[name] = 0 diff --git a/NodeToPython/compositor/ui.py b/NodeToPython/compositor/ui.py index a1003ca..ca19247 100644 --- a/NodeToPython/compositor/ui.py +++ b/NodeToPython/compositor/ui.py @@ -11,6 +11,9 @@ class NTPCompositorPanel(Panel): bl_context = '' bl_category = "NodeToPython" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + @classmethod def poll(cls, context): return True diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index 114f509..df3e08d 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -23,8 +23,9 @@ class NTPGeoNodesOperator(NTP_Operator): geo_nodes_group_name: bpy.props.StringProperty(name="Node Group") - def __init__(self): - super().__init__() + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._node_infos = node_settings for name in GEO_OP_RESERVED_NAMES: self._used_vars[name] = 0 diff --git a/NodeToPython/geometry/ui.py b/NodeToPython/geometry/ui.py index b3a8283..dff6353 100644 --- a/NodeToPython/geometry/ui.py +++ b/NodeToPython/geometry/ui.py @@ -12,6 +12,9 @@ class NTPGeoNodesPanel(Panel): bl_context = '' bl_category = "NodeToPython" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + @classmethod def poll(cls, context): return True diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index f8c837b..bbfff08 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -64,8 +64,8 @@ class NTP_Operator(Operator): bpy.types.NodeTreeInterfaceSocketTexture } - def __init__(self): - super().__init__() + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) # Write functions after nodes are mostly initialized and linked up self._write_after_links: list[Callable] = [] diff --git a/NodeToPython/options.py b/NodeToPython/options.py index a5df210..1f60c76 100644 --- a/NodeToPython/options.py +++ b/NodeToPython/options.py @@ -4,6 +4,10 @@ class NTPOptions(bpy.types.PropertyGroup): """ Property group used during conversion of node group to python """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + # General properties mode: bpy.props.EnumProperty( name = "Mode", @@ -170,6 +174,9 @@ class NTPOptionsPanel(bpy.types.Panel): bl_context = '' bl_category = "NodeToPython" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + @classmethod def poll(cls, context): return True diff --git a/NodeToPython/shader/operator.py b/NodeToPython/shader/operator.py index 5d5ff6f..ca8262c 100644 --- a/NodeToPython/shader/operator.py +++ b/NodeToPython/shader/operator.py @@ -21,8 +21,8 @@ class NTPShaderOperator(NTP_Operator): #TODO: add option for general shader node groups material_name: bpy.props.StringProperty(name="Node Group") - def __init__(self): - super().__init__() + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) self._node_infos = node_settings for name in SHADER_OP_RESERVED_NAMES: self._used_vars[name] = 0 diff --git a/NodeToPython/shader/ui.py b/NodeToPython/shader/ui.py index 04b62df..06f84b1 100644 --- a/NodeToPython/shader/ui.py +++ b/NodeToPython/shader/ui.py @@ -11,6 +11,9 @@ class NTPShaderPanel(Panel): bl_context = '' bl_category = "NodeToPython" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + @classmethod def poll(cls, context): return True From 279cc6c2d3562cec475fcf80bad28b3fc4965173 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 9 Mar 2025 16:56:02 -0500 Subject: [PATCH 262/286] feat: add support for subpanels --- NodeToPython/ntp_operator.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index bbfff08..ebc4142 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -755,6 +755,7 @@ def _process_items(self, parent: NodeTreeInterfacePanel, processed items, so none are done twice ntp_nt (NTP_NodeTree): owner of the socket """ + if parent is None: items = ntp_nt.node_tree.interface.items_tree else: @@ -774,6 +775,14 @@ def _process_items(self, parent: NodeTreeInterfacePanel, elif item.item_type == 'PANEL': self._create_panel(item, panel_dict, items_processed, parent, ntp_nt) + if bpy.app.version >= (4, 4, 0) and parent is not None: + nt_var = self._node_tree_vars[ntp_nt.node_tree] + interface_var = f"{nt_var}.interface" + panel_var = panel_dict[item] + parent_var = panel_dict[parent] + self._write(f"{interface_var}.move_to_parent(" + f"{panel_var}, {parent_var}, {item.index})") + def _tree_interface_settings(self, ntp_nt: NTP_NodeTree) -> None: """ From 4fcab4b8879921a567baffe79315d2789dc709fb Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 9 Mar 2025 17:16:45 -0500 Subject: [PATCH 263/286] fix: addons now register operators in Blender 4.4 --- NodeToPython/ntp_operator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index ebc4142..12208af 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -229,6 +229,9 @@ def _init_operator(self, idname: str, label: str) -> None: """ self._idname = idname self._write(f"class {self._class_name}(bpy.types.Operator):", 0) + self._write("def __init__(self, *args, **kwargs):", 1) + self._write("super().__init__(*args, **kwargs)\n", 2) + self._write(f"bl_idname = \"node.{idname}\"", 1) self._write(f"bl_label = {str_to_py_str(label)}", 1) self._write("bl_options = {\'REGISTER\', \'UNDO\'}\n", 1) From ea5819f69a81cc0a85ac3695fed06461bce984dd Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 16 Mar 2025 15:51:27 -0500 Subject: [PATCH 264/286] feat: set collection if found in blend file --- NodeToPython/ntp_operator.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 12208af..086e316 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -411,15 +411,11 @@ def _set_settings_defaults(self, node: Node) -> None: elif st == ST.COLOR: self._write(f"{setting_str} = {color_to_py_str(attr)}") elif st == ST.MATERIAL: - name = str_to_py_str(attr.name) - self._write(f"if {name} in bpy.data.materials:") - self._write(f"{setting_str} = bpy.data.materials[{name}]", - self._inner_indent_level + 1) + self._set_if_in_blend_file(attr, setting_str, "materials") elif st == ST.OBJECT: - name = str_to_py_str(attr.name) - self._write(f"if {name} in bpy.data.objects:") - self._write(f"{setting_str} = bpy.data.objects[{name}]", - self._inner_indent_level + 1) + self._set_if_in_blend_file(attr, setting_str, "objects") + elif st == ST.COLLECTION: + self._set_if_in_blend_file(attr, setting_str, "collections") elif st == ST.COLOR_RAMP: self._color_ramp_settings(node, attr_name) elif st == ST.CURVE_MAPPING: @@ -933,6 +929,16 @@ def _set_socket_defaults(self, node: Node): self._set_input_defaults(node) self._set_output_defaults(node) + def _set_if_in_blend_file(self, attr, setting_str: str, data_type: str + ) -> None: + """ + Attempts to grab referenced thing from blend file + """ + name = str_to_py_str(attr.name) + self._write(f"if {name} in bpy.data.{data_type}:") + self._write(f"{setting_str} = bpy.data.{data_type}[{name}]", + self._inner_indent_level + 1) + def _color_ramp_settings(self, node: Node, color_ramp_name: str) -> None: """ Replicate a color ramp node From e18c01aba4e5f2388c1b3722b295777ee6b1f5f3 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 16 Mar 2025 16:11:50 -0500 Subject: [PATCH 265/286] feat: set image sockets in scripts when possible --- NodeToPython/ntp_operator.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 086e316..36b0f9e 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -423,10 +423,15 @@ def _set_settings_defaults(self, node: Node) -> None: elif st == ST.NODE_TREE: self._node_tree_settings(node, attr_name) elif st == ST.IMAGE: - if self._addon_dir is not None and attr is not None: + if attr is None: + continue + if self._addon_dir is not None: if attr.source in {'FILE', 'GENERATED', 'TILED'}: if self._save_image(attr): self._load_image(attr, f"{node_var}.{attr_name}") + else: + self._set_if_in_blend_file(attr, setting_str, "images") + elif st == ST.IMAGE_USER: self._image_user_settings(attr, f"{node_var}.{attr_name}") elif st == ST.SIM_OUTPUT_ITEMS: @@ -845,9 +850,12 @@ def _set_input_defaults(self, node: Node) -> None: # images elif input.bl_idname == 'NodeSocketImage': img = input.default_value - if img is not None and self._addon_dir != None: # write in a better way - if self._save_image(img): - self._load_image(img, f"{socket_var}.default_value") + if img is not None: + if self._addon_dir != None: # write in a better way + if self._save_image(img): + self._load_image(img, f"{socket_var}.default_value") + else: + self._in_file_inputs(input, socket_var, "images") default_val = None # materials From d4247f8aef33a0d24673de92e6837c46bdbdcd16 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 16 Mar 2025 16:32:46 -0500 Subject: [PATCH 266/286] docs: update versions in README --- docs/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 4652a6c..e9d340e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,8 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.3.2 is supported for Blender 3.0 - 4.3 on Windows, macOS, and Linux. +NodeToPython v3.4.0 is supported for Blender 3.0 - 4.4 on Windows, macOS, and Linux +* Some work is required to update NodeToPython for each Blender version, so experimental versions will not work properly ## Installation ### Blender Extensions Platform @@ -43,7 +44,7 @@ In the options panel, select either **Script** or **Add-on**. When submitting an issue, please include -* Your version of Blender (3.0 - 4.3) +* Your version of Blender (3.0 - 4.4) * Higher versions of Blender are expected to break NodeToPython. In general, work doesn't start on new versions until after the Beta stage of the release cycle * Your operating system * Steps to reproduce the issue or a description of what you were trying to accomplish. Providing a test blend file is especially helpful From 26e4e1d56d83668fe8e1f89d7c46c26a95cf0c15 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jun 2025 20:02:45 -0500 Subject: [PATCH 267/286] feat: introduce new socket types --- NodeToPython/ntp_operator.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 36b0f9e..562f2b8 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -831,14 +831,19 @@ def _set_input_defaults(self, node: Node) -> None: # vector types elif "Vector" in input.bl_idname: - default_val = vec3_to_py_str(input.default_value) + if "2D" in input.bl_idname: + default_val = vec2_to_py_str(input.default_value) + elif "4D" in input.bl_idname: + default_val = vec4_to_py_str(input.default_value) + else: + default_val = vec3_to_py_str(input.default_value) # rotation types elif input.bl_idname == 'NodeSocketRotation': default_val = vec3_to_py_str(input.default_value) # strings - elif input.bl_idname == 'NodeSocketString': + elif input.bl_idname in {'NodeSocketString', 'NodeSocketStringFilePath'}: default_val = str_to_py_str(input.default_value) #menu From db966142f83e17ee784def90f133bdca7b8bc646 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jun 2025 20:03:48 -0500 Subject: [PATCH 268/286] tools: adjust node settings generator for end of 4.x series --- tools/node_settings_generator/parse_nodes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/node_settings_generator/parse_nodes.py b/tools/node_settings_generator/parse_nodes.py index 9465f59..ca691b8 100644 --- a/tools/node_settings_generator/parse_nodes.py +++ b/tools/node_settings_generator/parse_nodes.py @@ -181,9 +181,11 @@ def process_bpy_version(version: Version) -> None: def generate_versions(max_version_inc: Version) -> list[Version]: BLENDER_3_MAX_VERSION = 6 + BLENDER_4_MAX_VERSION = 5 versions = [Version(3, i) for i in range(0, BLENDER_3_MAX_VERSION + 1)] - versions += [Version(4, i) for i in range(0, max_version_inc[1] + 1)] + versions += [Version(4, i) for i in range(0, BLENDER_4_MAX_VERSION + 1)] + versions += [Version(5, i) for i in range(0, max_version_inc.minor_ + 1)] #lazy max version check for version in versions[::-1]: From 57d20c4484ff48739ea1443d43c046842effc763 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jun 2025 20:04:27 -0500 Subject: [PATCH 269/286] feat: autogen node changes for 4.5 --- NodeToPython/node_settings.py | 563 ++++++++++++++++++++++------------ 1 file changed, 369 insertions(+), 194 deletions(-) diff --git a/NodeToPython/node_settings.py b/NodeToPython/node_settings.py index 3045c27..da4fc12 100644 --- a/NodeToPython/node_settings.py +++ b/NodeToPython/node_settings.py @@ -52,88 +52,88 @@ class NTPNodeSetting(NamedTuple): name_: str st_: ST min_version_: tuple = (3, 0, 0) - max_version_: tuple = (4, 5, 0) + max_version_: tuple = (5, 0, 0) class NodeInfo(NamedTuple): attributes_: list[NTPNodeSetting] min_version_: tuple = (3, 0, 0) - max_version_: tuple = (4, 5, 0) + max_version_: tuple = (5, 0, 0) node_settings : dict[str, NodeInfo] = { 'CompositorNodeAlphaOver' : NodeInfo( [ - NTPNodeSetting("premul", ST.FLOAT), - NTPNodeSetting("use_premultiply", ST.BOOL), + NTPNodeSetting("premul", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_premultiply", ST.BOOL, max_version_=(4, 5, 0)), ] ), 'CompositorNodeAntiAliasing' : NodeInfo( [ - NTPNodeSetting("contrast_limit", ST.FLOAT), - NTPNodeSetting("corner_rounding", ST.FLOAT), - NTPNodeSetting("threshold", ST.FLOAT), + NTPNodeSetting("contrast_limit", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("corner_rounding", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("threshold", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeBilateralblur' : NodeInfo( [ - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("sigma_color", ST.FLOAT), - NTPNodeSetting("sigma_space", ST.FLOAT), + NTPNodeSetting("iterations", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("sigma_color", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("sigma_space", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeBlur' : NodeInfo( [ - NTPNodeSetting("aspect_correction", ST.ENUM), - NTPNodeSetting("factor", ST.FLOAT), - NTPNodeSetting("factor_x", ST.FLOAT), - NTPNodeSetting("factor_y", ST.FLOAT), + NTPNodeSetting("aspect_correction", ST.ENUM, max_version_=(4, 5, 0)), + NTPNodeSetting("factor", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("factor_x", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("factor_y", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("filter_type", ST.ENUM), - NTPNodeSetting("size_x", ST.INT), - NTPNodeSetting("size_y", ST.INT), - NTPNodeSetting("use_bokeh", ST.BOOL), - NTPNodeSetting("use_extended_bounds", ST.BOOL), - NTPNodeSetting("use_gamma_correction", ST.BOOL), - NTPNodeSetting("use_relative", ST.BOOL), - NTPNodeSetting("use_variable_size", ST.BOOL), + NTPNodeSetting("size_x", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("size_y", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_bokeh", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_extended_bounds", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_gamma_correction", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_relative", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_variable_size", ST.BOOL, max_version_=(4, 5, 0)), ] ), 'CompositorNodeBokehBlur' : NodeInfo( [ - NTPNodeSetting("blur_max", ST.FLOAT), - NTPNodeSetting("use_extended_bounds", ST.BOOL), - NTPNodeSetting("use_variable_size", ST.BOOL), + NTPNodeSetting("blur_max", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_extended_bounds", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_variable_size", ST.BOOL, max_version_=(4, 5, 0)), ] ), 'CompositorNodeBokehImage' : NodeInfo( [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("catadioptric", ST.FLOAT), - NTPNodeSetting("flaps", ST.INT), - NTPNodeSetting("rounding", ST.FLOAT), - NTPNodeSetting("shift", ST.FLOAT), + NTPNodeSetting("angle", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("catadioptric", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("flaps", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("rounding", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("shift", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeBoxMask' : NodeInfo( [ NTPNodeSetting("height", ST.FLOAT, max_version_=(4, 2, 0)), - NTPNodeSetting("mask_height", ST.FLOAT, min_version_=(4, 2, 0)), + NTPNodeSetting("mask_height", ST.FLOAT, min_version_=(4, 2, 0), max_version_=(4, 5, 0)), NTPNodeSetting("mask_type", ST.ENUM), - NTPNodeSetting("mask_width", ST.FLOAT, min_version_=(4, 2, 0)), - NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("mask_width", ST.FLOAT, min_version_=(4, 2, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("rotation", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("width", ST.FLOAT, max_version_=(4, 2, 0)), - NTPNodeSetting("x", ST.FLOAT), - NTPNodeSetting("y", ST.FLOAT), + NTPNodeSetting("x", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("y", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeBrightContrast' : NodeInfo( [ - NTPNodeSetting("use_premultiply", ST.BOOL), + NTPNodeSetting("use_premultiply", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -141,20 +141,20 @@ class NodeInfo(NamedTuple): [ NTPNodeSetting("color_space", ST.ENUM), NTPNodeSetting("limit_channel", ST.ENUM), - NTPNodeSetting("limit_max", ST.FLOAT), + NTPNodeSetting("limit_max", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("limit_method", ST.ENUM), - NTPNodeSetting("limit_min", ST.FLOAT), + NTPNodeSetting("limit_min", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("matte_channel", ST.ENUM), ] ), 'CompositorNodeChromaMatte' : NodeInfo( [ - NTPNodeSetting("gain", ST.FLOAT), - NTPNodeSetting("lift", ST.FLOAT), - NTPNodeSetting("shadow_adjust", ST.FLOAT), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT), + NTPNodeSetting("gain", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("lift", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("shadow_adjust", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("threshold", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("tolerance", ST.FLOAT, max_version_=(4, 5, 0)), ] ), @@ -162,62 +162,62 @@ class NodeInfo(NamedTuple): [ NTPNodeSetting("correction_method", ST.ENUM), NTPNodeSetting("gain", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("gain", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("gain", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), NTPNodeSetting("gamma", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0)), - NTPNodeSetting("input_temperature", ST.FLOAT, min_version_=(4, 3, 0)), - NTPNodeSetting("input_tint", ST.FLOAT, min_version_=(4, 3, 0)), + NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("input_temperature", ST.FLOAT, min_version_=(4, 3, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("input_tint", ST.FLOAT, min_version_=(4, 3, 0), max_version_=(4, 5, 0)), NTPNodeSetting("input_whitepoint", ST.COLOR, min_version_=(4, 3, 0)), NTPNodeSetting("lift", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), NTPNodeSetting("offset", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0)), - NTPNodeSetting("offset_basis", ST.FLOAT), - NTPNodeSetting("output_temperature", ST.FLOAT, min_version_=(4, 3, 0)), - NTPNodeSetting("output_tint", ST.FLOAT, min_version_=(4, 3, 0)), + NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("offset_basis", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("output_temperature", ST.FLOAT, min_version_=(4, 3, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("output_tint", ST.FLOAT, min_version_=(4, 3, 0), max_version_=(4, 5, 0)), NTPNodeSetting("output_whitepoint", ST.COLOR, min_version_=(4, 3, 0)), NTPNodeSetting("power", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), NTPNodeSetting("slope", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("slope", ST.COLOR, min_version_=(3, 5, 0)), + NTPNodeSetting("slope", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), ] ), 'CompositorNodeColorCorrection' : NodeInfo( [ - NTPNodeSetting("blue", ST.BOOL), - NTPNodeSetting("green", ST.BOOL), - NTPNodeSetting("highlights_contrast", ST.FLOAT), - NTPNodeSetting("highlights_gain", ST.FLOAT), - NTPNodeSetting("highlights_gamma", ST.FLOAT), - NTPNodeSetting("highlights_lift", ST.FLOAT), - NTPNodeSetting("highlights_saturation", ST.FLOAT), - NTPNodeSetting("master_contrast", ST.FLOAT), - NTPNodeSetting("master_gain", ST.FLOAT), - NTPNodeSetting("master_gamma", ST.FLOAT), - NTPNodeSetting("master_lift", ST.FLOAT), - NTPNodeSetting("master_saturation", ST.FLOAT), - NTPNodeSetting("midtones_contrast", ST.FLOAT), - NTPNodeSetting("midtones_end", ST.FLOAT), - NTPNodeSetting("midtones_gain", ST.FLOAT), - NTPNodeSetting("midtones_gamma", ST.FLOAT), - NTPNodeSetting("midtones_lift", ST.FLOAT), - NTPNodeSetting("midtones_saturation", ST.FLOAT), - NTPNodeSetting("midtones_start", ST.FLOAT), - NTPNodeSetting("red", ST.BOOL), - NTPNodeSetting("shadows_contrast", ST.FLOAT), - NTPNodeSetting("shadows_gain", ST.FLOAT), - NTPNodeSetting("shadows_gamma", ST.FLOAT), - NTPNodeSetting("shadows_lift", ST.FLOAT), - NTPNodeSetting("shadows_saturation", ST.FLOAT), + NTPNodeSetting("blue", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("green", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("highlights_contrast", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("highlights_gain", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("highlights_gamma", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("highlights_lift", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("highlights_saturation", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("master_contrast", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("master_gain", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("master_gamma", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("master_lift", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("master_saturation", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("midtones_contrast", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("midtones_end", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("midtones_gain", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("midtones_gamma", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("midtones_lift", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("midtones_saturation", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("midtones_start", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("red", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("shadows_contrast", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("shadows_gain", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("shadows_gamma", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("shadows_lift", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("shadows_saturation", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeColorMatte' : NodeInfo( [ - NTPNodeSetting("color_hue", ST.FLOAT), - NTPNodeSetting("color_saturation", ST.FLOAT), - NTPNodeSetting("color_value", ST.FLOAT), + NTPNodeSetting("color_hue", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("color_saturation", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("color_value", ST.FLOAT, max_version_=(4, 5, 0)), ] ), @@ -226,11 +226,11 @@ class NodeInfo(NamedTuple): NTPNodeSetting("channel", ST.ENUM), NTPNodeSetting("limit_channel", ST.ENUM), NTPNodeSetting("limit_method", ST.ENUM), - NTPNodeSetting("ratio", ST.FLOAT), - NTPNodeSetting("unspill_blue", ST.FLOAT), - NTPNodeSetting("unspill_green", ST.FLOAT), - NTPNodeSetting("unspill_red", ST.FLOAT), - NTPNodeSetting("use_unspill", ST.BOOL), + NTPNodeSetting("ratio", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("unspill_blue", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("unspill_green", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("unspill_red", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_unspill", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -267,7 +267,7 @@ class NodeInfo(NamedTuple): 'CompositorNodeComposite' : NodeInfo( [ - NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_alpha", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -280,21 +280,23 @@ class NodeInfo(NamedTuple): ), 'CompositorNodeCornerPin' : NodeInfo( - [] + [ + NTPNodeSetting("interpolation", ST.ENUM, min_version_=(4, 5, 0)), + ] ), 'CompositorNodeCrop' : NodeInfo( [ - NTPNodeSetting("max_x", ST.INT), - NTPNodeSetting("max_y", ST.INT), - NTPNodeSetting("min_x", ST.INT), - NTPNodeSetting("min_y", ST.INT), - NTPNodeSetting("rel_max_x", ST.FLOAT), - NTPNodeSetting("rel_max_y", ST.FLOAT), - NTPNodeSetting("rel_min_x", ST.FLOAT), - NTPNodeSetting("rel_min_y", ST.FLOAT), - NTPNodeSetting("relative", ST.BOOL), - NTPNodeSetting("use_crop_size", ST.BOOL), + NTPNodeSetting("max_x", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("max_y", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("min_x", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("min_y", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("rel_max_x", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("rel_max_y", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("rel_min_x", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("rel_min_y", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("relative", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_crop_size", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -350,14 +352,14 @@ class NodeInfo(NamedTuple): 'CompositorNodeDBlur' : NodeInfo( [ - NTPNodeSetting("angle", ST.FLOAT), - NTPNodeSetting("center_x", ST.FLOAT), - NTPNodeSetting("center_y", ST.FLOAT), - NTPNodeSetting("distance", ST.FLOAT), - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("spin", ST.FLOAT), + NTPNodeSetting("angle", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("center_x", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("center_y", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("distance", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("iterations", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("spin", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("use_wrap", ST.BOOL, max_version_=(3, 5, 0)), - NTPNodeSetting("zoom", ST.FLOAT), + NTPNodeSetting("zoom", ST.FLOAT, max_version_=(4, 5, 0)), ] ), @@ -368,9 +370,9 @@ class NodeInfo(NamedTuple): NTPNodeSetting("bokeh", ST.ENUM), NTPNodeSetting("f_stop", ST.FLOAT), NTPNodeSetting("scene", ST.SCENE), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("use_gamma_correction", ST.BOOL), - NTPNodeSetting("use_preview", ST.BOOL), + NTPNodeSetting("threshold", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_gamma_correction", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_preview", ST.BOOL, max_version_=(4, 5, 0)), NTPNodeSetting("use_zbuffer", ST.BOOL), NTPNodeSetting("z_scale", ST.FLOAT), ] @@ -380,42 +382,44 @@ class NodeInfo(NamedTuple): [ NTPNodeSetting("prefilter", ST.ENUM), NTPNodeSetting("quality", ST.ENUM, min_version_=(4, 4, 0)), - NTPNodeSetting("use_hdr", ST.BOOL), + NTPNodeSetting("use_hdr", ST.BOOL, max_version_=(4, 5, 0)), ] ), 'CompositorNodeDespeckle' : NodeInfo( [ - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("threshold_neighbor", ST.FLOAT), + NTPNodeSetting("threshold", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("threshold_neighbor", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeDiffMatte' : NodeInfo( [ - NTPNodeSetting("falloff", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT), + NTPNodeSetting("falloff", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("tolerance", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeDilateErode' : NodeInfo( [ - NTPNodeSetting("distance", ST.INT), - NTPNodeSetting("edge", ST.FLOAT), + NTPNodeSetting("distance", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("edge", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("falloff", ST.ENUM), NTPNodeSetting("mode", ST.ENUM), ] ), 'CompositorNodeDisplace' : NodeInfo( - [] + [ + NTPNodeSetting("interpolation", ST.ENUM, min_version_=(5, 0, 0)), + ] ), 'CompositorNodeDistanceMatte' : NodeInfo( [ NTPNodeSetting("channel", ST.ENUM), - NTPNodeSetting("falloff", ST.FLOAT), - NTPNodeSetting("tolerance", ST.FLOAT), + NTPNodeSetting("falloff", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("tolerance", ST.FLOAT, max_version_=(4, 5, 0)), ] ), @@ -429,13 +433,13 @@ class NodeInfo(NamedTuple): 'CompositorNodeEllipseMask' : NodeInfo( [ NTPNodeSetting("height", ST.FLOAT, max_version_=(4, 2, 0)), - NTPNodeSetting("mask_height", ST.FLOAT, min_version_=(4, 2, 0)), + NTPNodeSetting("mask_height", ST.FLOAT, min_version_=(4, 2, 0), max_version_=(4, 5, 0)), NTPNodeSetting("mask_type", ST.ENUM), - NTPNodeSetting("mask_width", ST.FLOAT, min_version_=(4, 2, 0)), - NTPNodeSetting("rotation", ST.FLOAT), + NTPNodeSetting("mask_width", ST.FLOAT, min_version_=(4, 2, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("rotation", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("width", ST.FLOAT, max_version_=(4, 2, 0)), - NTPNodeSetting("x", ST.FLOAT), - NTPNodeSetting("y", ST.FLOAT), + NTPNodeSetting("x", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("y", ST.FLOAT, max_version_=(4, 5, 0)), ] ), @@ -451,7 +455,7 @@ class NodeInfo(NamedTuple): 'CompositorNodeFlip' : NodeInfo( [ - NTPNodeSetting("axis", ST.ENUM), + NTPNodeSetting("axis", ST.ENUM, max_version_=(4, 5, 0)), ] ), @@ -461,17 +465,17 @@ class NodeInfo(NamedTuple): 'CompositorNodeGlare' : NodeInfo( [ - NTPNodeSetting("angle_offset", ST.FLOAT), - NTPNodeSetting("color_modulation", ST.FLOAT), - NTPNodeSetting("fade", ST.FLOAT), + NTPNodeSetting("angle_offset", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("color_modulation", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("fade", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("glare_type", ST.ENUM), - NTPNodeSetting("iterations", ST.INT), - NTPNodeSetting("mix", ST.FLOAT), + NTPNodeSetting("iterations", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("mix", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("quality", ST.ENUM), - NTPNodeSetting("size", ST.INT), - NTPNodeSetting("streaks", ST.INT), - NTPNodeSetting("threshold", ST.FLOAT), - NTPNodeSetting("use_rotate_45", ST.BOOL), + NTPNodeSetting("size", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("streaks", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("threshold", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_rotate_45", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -493,8 +497,8 @@ class NodeInfo(NamedTuple): 'CompositorNodeIDMask' : NodeInfo( [ - NTPNodeSetting("index", ST.INT), - NTPNodeSetting("use_antialiasing", ST.BOOL), + NTPNodeSetting("index", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_antialiasing", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -507,56 +511,66 @@ class NodeInfo(NamedTuple): NTPNodeSetting("layer", ST.ENUM), NTPNodeSetting("use_auto_refresh", ST.BOOL), NTPNodeSetting("use_cyclic", ST.BOOL), - NTPNodeSetting("use_straight_alpha_output", ST.BOOL), + NTPNodeSetting("use_straight_alpha_output", ST.BOOL, max_version_=(4, 5, 0)), NTPNodeSetting("view", ST.ENUM), ] ), + 'CompositorNodeImageCoordinates' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + + 'CompositorNodeImageInfo' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + 'CompositorNodeInpaint' : NodeInfo( [ - NTPNodeSetting("distance", ST.INT), + NTPNodeSetting("distance", ST.INT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeInvert' : NodeInfo( [ - NTPNodeSetting("invert_alpha", ST.BOOL), - NTPNodeSetting("invert_rgb", ST.BOOL), + NTPNodeSetting("invert_alpha", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("invert_rgb", ST.BOOL, max_version_=(4, 5, 0)), ] ), 'CompositorNodeKeying' : NodeInfo( [ - NTPNodeSetting("blur_post", ST.INT), - NTPNodeSetting("blur_pre", ST.INT), - NTPNodeSetting("clip_black", ST.FLOAT), - NTPNodeSetting("clip_white", ST.FLOAT), - NTPNodeSetting("despill_balance", ST.FLOAT), - NTPNodeSetting("despill_factor", ST.FLOAT), - NTPNodeSetting("dilate_distance", ST.INT), - NTPNodeSetting("edge_kernel_radius", ST.INT), - NTPNodeSetting("edge_kernel_tolerance", ST.FLOAT), - NTPNodeSetting("feather_distance", ST.INT), + NTPNodeSetting("blur_post", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("blur_pre", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("clip_black", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("clip_white", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("despill_balance", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("despill_factor", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("dilate_distance", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("edge_kernel_radius", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("edge_kernel_tolerance", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("feather_distance", ST.INT, max_version_=(4, 5, 0)), NTPNodeSetting("feather_falloff", ST.ENUM), - NTPNodeSetting("screen_balance", ST.FLOAT), + NTPNodeSetting("screen_balance", ST.FLOAT, max_version_=(4, 5, 0)), ] ), 'CompositorNodeKeyingScreen' : NodeInfo( [ NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("smoothness", ST.FLOAT, min_version_=(4, 1, 0)), + NTPNodeSetting("smoothness", ST.FLOAT, min_version_=(4, 1, 0), max_version_=(4, 5, 0)), NTPNodeSetting("tracking_object", ST.STRING), ] ), 'CompositorNodeKuwahara' : NodeInfo( [ - NTPNodeSetting("eccentricity", ST.FLOAT), - NTPNodeSetting("sharpness", ST.FLOAT), + NTPNodeSetting("eccentricity", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("sharpness", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("size", ST.INT, max_version_=(4, 1, 0)), - NTPNodeSetting("uniformity", ST.INT), - NTPNodeSetting("use_high_precision", ST.BOOL, min_version_=(4, 1, 0)), + NTPNodeSetting("uniformity", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_high_precision", ST.BOOL, min_version_=(4, 1, 0), max_version_=(4, 5, 0)), NTPNodeSetting("variation", ST.ENUM), ], min_version_ = (4, 0, 0) @@ -564,9 +578,10 @@ class NodeInfo(NamedTuple): 'CompositorNodeLensdist' : NodeInfo( [ - NTPNodeSetting("use_fit", ST.BOOL), - NTPNodeSetting("use_jitter", ST.BOOL), - NTPNodeSetting("use_projector", ST.BOOL), + NTPNodeSetting("distortion_type", ST.ENUM, min_version_=(4, 5, 0)), + NTPNodeSetting("use_fit", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_jitter", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_projector", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -578,8 +593,8 @@ class NodeInfo(NamedTuple): 'CompositorNodeLumaMatte' : NodeInfo( [ - NTPNodeSetting("limit_max", ST.FLOAT), - NTPNodeSetting("limit_min", ST.FLOAT), + NTPNodeSetting("limit_max", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("limit_min", ST.FLOAT, max_version_=(4, 5, 0)), ] ), @@ -591,7 +606,7 @@ class NodeInfo(NamedTuple): 'CompositorNodeMapUV' : NodeInfo( [ - NTPNodeSetting("alpha", ST.INT), + NTPNodeSetting("alpha", ST.INT, max_version_=(4, 5, 0)), NTPNodeSetting("filter_type", ST.ENUM, min_version_=(4, 1, 0)), ] ), @@ -610,13 +625,13 @@ class NodeInfo(NamedTuple): 'CompositorNodeMask' : NodeInfo( [ NTPNodeSetting("mask", ST.MASK), - NTPNodeSetting("motion_blur_samples", ST.INT), - NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("motion_blur_samples", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("size_source", ST.ENUM), - NTPNodeSetting("size_x", ST.INT), - NTPNodeSetting("size_y", ST.INT), - NTPNodeSetting("use_feather", ST.BOOL), - NTPNodeSetting("use_motion_blur", ST.BOOL), + NTPNodeSetting("size_x", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("size_y", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_feather", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_motion_blur", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -669,18 +684,18 @@ class NodeInfo(NamedTuple): 'CompositorNodePixelate' : NodeInfo( [ - NTPNodeSetting("pixel_size", ST.INT, min_version_=(4, 1, 0)), + NTPNodeSetting("pixel_size", ST.INT, min_version_=(4, 1, 0), max_version_=(4, 5, 0)), ] ), 'CompositorNodePlaneTrackDeform' : NodeInfo( [ NTPNodeSetting("clip", ST.MOVIE_CLIP), - NTPNodeSetting("motion_blur_samples", ST.INT), - NTPNodeSetting("motion_blur_shutter", ST.FLOAT), + NTPNodeSetting("motion_blur_samples", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("motion_blur_shutter", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("plane_track_name", ST.STRING), NTPNodeSetting("tracking_object", ST.STRING), - NTPNodeSetting("use_motion_blur", ST.BOOL), + NTPNodeSetting("use_motion_blur", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -709,6 +724,14 @@ class NodeInfo(NamedTuple): ] ), + 'CompositorNodeRelativeToPixel' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("reference_dimension", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'CompositorNodeRotate' : NodeInfo( [ NTPNodeSetting("filter_type", ST.ENUM), @@ -718,8 +741,9 @@ class NodeInfo(NamedTuple): 'CompositorNodeScale' : NodeInfo( [ NTPNodeSetting("frame_method", ST.ENUM), - NTPNodeSetting("offset_x", ST.FLOAT), - NTPNodeSetting("offset_y", ST.FLOAT), + NTPNodeSetting("interpolation", ST.ENUM, min_version_=(4, 5, 0)), + NTPNodeSetting("offset_x", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("offset_y", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("space", ST.ENUM), ] ), @@ -769,7 +793,7 @@ class NodeInfo(NamedTuple): 'CompositorNodeSplit' : NodeInfo( [ NTPNodeSetting("axis", ST.ENUM), - NTPNodeSetting("factor", ST.INT), + NTPNodeSetting("factor", ST.INT, max_version_=(4, 5, 0)), ], min_version_ = (4, 1, 0) ), @@ -786,20 +810,20 @@ class NodeInfo(NamedTuple): [ NTPNodeSetting("clip", ST.MOVIE_CLIP), NTPNodeSetting("filter_type", ST.ENUM), - NTPNodeSetting("invert", ST.BOOL), + NTPNodeSetting("invert", ST.BOOL, max_version_=(4, 5, 0)), ] ), 'CompositorNodeSunBeams' : NodeInfo( [ - NTPNodeSetting("ray_length", ST.FLOAT), - NTPNodeSetting("source", ST.VEC2), + NTPNodeSetting("ray_length", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("source", ST.VEC2, max_version_=(4, 5, 0)), ] ), 'CompositorNodeSwitch' : NodeInfo( [ - NTPNodeSetting("check", ST.BOOL), + NTPNodeSetting("check", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -817,8 +841,8 @@ class NodeInfo(NamedTuple): 'CompositorNodeTime' : NodeInfo( [ NTPNodeSetting("curve", ST.CURVE_MAPPING), - NTPNodeSetting("frame_end", ST.INT), - NTPNodeSetting("frame_start", ST.INT), + NTPNodeSetting("frame_end", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("frame_start", ST.INT, max_version_=(4, 5, 0)), ] ), @@ -854,7 +878,7 @@ class NodeInfo(NamedTuple): 'CompositorNodeTranslate' : NodeInfo( [ NTPNodeSetting("interpolation", ST.ENUM, min_version_=(4, 2, 0)), - NTPNodeSetting("use_relative", ST.BOOL), + NTPNodeSetting("use_relative", ST.BOOL, max_version_=(4, 5, 0)), NTPNodeSetting("wrap_axis", ST.ENUM), ] ), @@ -871,11 +895,11 @@ class NodeInfo(NamedTuple): 'CompositorNodeVecBlur' : NodeInfo( [ - NTPNodeSetting("factor", ST.FLOAT), - NTPNodeSetting("samples", ST.INT), - NTPNodeSetting("speed_max", ST.INT), - NTPNodeSetting("speed_min", ST.INT), - NTPNodeSetting("use_curved", ST.BOOL), + NTPNodeSetting("factor", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("samples", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("speed_max", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("speed_min", ST.INT, max_version_=(4, 5, 0)), + NTPNodeSetting("use_curved", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -885,14 +909,14 @@ class NodeInfo(NamedTuple): NTPNodeSetting("center_y", ST.FLOAT, max_version_=(4, 2, 0)), NTPNodeSetting("tile_order", ST.ENUM, max_version_=(4, 2, 0)), NTPNodeSetting("ui_shortcut", ST.INT, min_version_=(4, 4, 0)), - NTPNodeSetting("use_alpha", ST.BOOL), + NTPNodeSetting("use_alpha", ST.BOOL, max_version_=(4, 5, 0)), ] ), 'CompositorNodeZcombine' : NodeInfo( [ - NTPNodeSetting("use_alpha", ST.BOOL), - NTPNodeSetting("use_antialias_z", ST.BOOL), + NTPNodeSetting("use_alpha", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("use_antialias_z", ST.BOOL, max_version_=(4, 5, 0)), ] ), @@ -924,6 +948,13 @@ class NodeInfo(NamedTuple): min_version_ = (4, 0, 0) ), + 'FunctionNodeBitMath' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'FunctionNodeBooleanMath' : NodeInfo( [ NTPNodeSetting("operation", ST.ENUM), @@ -979,6 +1010,13 @@ class NodeInfo(NamedTuple): ] ), + 'FunctionNodeFormatString' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT), + ], + min_version_ = (4, 5, 0) + ), + 'FunctionNodeHashValue' : NodeInfo( [ NTPNodeSetting("data_type", ST.ENUM), @@ -1050,6 +1088,13 @@ class NodeInfo(NamedTuple): max_version_ = (3, 2, 0) ), + 'FunctionNodeMatchString' : NodeInfo( + [ + NTPNodeSetting("operation", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'FunctionNodeMatrixDeterminant' : NodeInfo( [], min_version_ = (4, 3, 0) @@ -1216,6 +1261,11 @@ class NodeInfo(NamedTuple): [] ), + 'GeometryNodeCameraInfo' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeCaptureAttribute' : NodeInfo( [ NTPNodeSetting("active_index", ST.INT, min_version_=(4, 2, 0)), @@ -1225,12 +1275,32 @@ class NodeInfo(NamedTuple): ] ), + 'GeometryNodeClosureInput' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + + 'GeometryNodeClosureOutput' : NodeInfo( + [ + NTPNodeSetting("active_input_index", ST.INT), + NTPNodeSetting("active_output_index", ST.INT), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeCollectionInfo' : NodeInfo( [ NTPNodeSetting("transform_space", ST.ENUM), ] ), + 'GeometryNodeCombineBundle' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeConvexHull' : NodeInfo( [] ), @@ -1422,6 +1492,14 @@ class NodeInfo(NamedTuple): min_version_ = (3, 5, 0) ), + 'GeometryNodeEvaluateClosure' : NodeInfo( + [ + NTPNodeSetting("active_input_index", ST.INT), + NTPNodeSetting("active_output_index", ST.INT), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeExtrudeMesh' : NodeInfo( [ NTPNodeSetting("mode", ST.ENUM), @@ -1442,6 +1520,22 @@ class NodeInfo(NamedTuple): min_version_ = (3, 1, 0) ), + 'GeometryNodeFieldAverage' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + + 'GeometryNodeFieldMinAndMax' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeFieldOnDomain' : NodeInfo( [ NTPNodeSetting("data_type", ST.ENUM), @@ -1450,6 +1544,14 @@ class NodeInfo(NamedTuple): min_version_ = (3, 3, 0) ), + 'GeometryNodeFieldVariance' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + NTPNodeSetting("domain", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeFillCurve' : NodeInfo( [ NTPNodeSetting("mode", ST.ENUM), @@ -1533,6 +1635,13 @@ class NodeInfo(NamedTuple): min_version_ = (4, 3, 0) ), + 'GeometryNodeGridInfo' : NodeInfo( + [ + NTPNodeSetting("data_type", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeGridToMesh' : NodeInfo( [], min_version_ = (4, 2, 0) @@ -1556,6 +1665,11 @@ class NodeInfo(NamedTuple): ] ), + 'GeometryNodeImportCSV' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeImportOBJ' : NodeInfo( [], min_version_ = (4, 3, 0) @@ -1571,6 +1685,16 @@ class NodeInfo(NamedTuple): min_version_ = (4, 3, 0) ), + 'GeometryNodeImportText' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + + 'GeometryNodeImportVDB' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeIndexOfNearest' : NodeInfo( [], min_version_ = (3, 6, 0) @@ -1624,6 +1748,11 @@ class NodeInfo(NamedTuple): [] ), + 'GeometryNodeInputInstanceBounds' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeInputInstanceRotation' : NodeInfo( [], min_version_ = (3, 3, 0) @@ -2162,7 +2291,9 @@ class NodeInfo(NamedTuple): ), 'GeometryNodeMeshToCurve' : NodeInfo( - [] + [ + NTPNodeSetting("mode", ST.ENUM, min_version_=(4, 5, 0)), + ] ), 'GeometryNodeMeshToDensityGrid' : NodeInfo( @@ -2411,6 +2542,13 @@ class NodeInfo(NamedTuple): min_version_ = (3, 4, 0) ), + 'GeometryNodeSeparateBundle' : NodeInfo( + [ + NTPNodeSetting("active_index", ST.INT), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeSeparateComponents' : NodeInfo( [] ), @@ -2447,6 +2585,25 @@ class NodeInfo(NamedTuple): min_version_ = (4, 3, 0) ), + 'GeometryNodeSetGreasePencilColor' : NodeInfo( + [ + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + + 'GeometryNodeSetGreasePencilDepth' : NodeInfo( + [ + NTPNodeSetting("depth_order", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + + 'GeometryNodeSetGreasePencilSoftness' : NodeInfo( + [], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeSetID' : NodeInfo( [] ), @@ -2464,6 +2621,14 @@ class NodeInfo(NamedTuple): [] ), + 'GeometryNodeSetMeshNormal' : NodeInfo( + [ + NTPNodeSetting("domain", ST.ENUM), + NTPNodeSetting("mode", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'GeometryNodeSetPointRadius' : NodeInfo( [] ), @@ -2640,7 +2805,9 @@ class NodeInfo(NamedTuple): ), 'GeometryNodeUVPackIslands' : NodeInfo( - [], + [ + NTPNodeSetting("shape_method", ST.ENUM, min_version_=(5, 0, 0)), + ], min_version_ = (3, 3, 0) ), @@ -2660,6 +2827,7 @@ class NodeInfo(NamedTuple): [ NTPNodeSetting("data_type", ST.ENUM), NTPNodeSetting("domain", ST.ENUM, min_version_=(3, 4, 0)), + NTPNodeSetting("ui_shortcut", ST.INT, min_version_=(4, 5, 0)), ] ), @@ -3223,16 +3391,16 @@ class NodeInfo(NamedTuple): NTPNodeSetting("air_density", ST.FLOAT), NTPNodeSetting("altitude", ST.FLOAT), NTPNodeSetting("dust_density", ST.FLOAT), - NTPNodeSetting("ground_albedo", ST.FLOAT), + NTPNodeSetting("ground_albedo", ST.FLOAT, max_version_=(5, 0, 0)), NTPNodeSetting("ozone_density", ST.FLOAT), NTPNodeSetting("sky_type", ST.ENUM), - NTPNodeSetting("sun_direction", ST.VEC3), + NTPNodeSetting("sun_direction", ST.VEC3, max_version_=(5, 0, 0)), NTPNodeSetting("sun_disc", ST.BOOL), NTPNodeSetting("sun_elevation", ST.FLOAT), NTPNodeSetting("sun_intensity", ST.FLOAT), NTPNodeSetting("sun_rotation", ST.FLOAT), NTPNodeSetting("sun_size", ST.FLOAT), - NTPNodeSetting("turbidity", ST.FLOAT), + NTPNodeSetting("turbidity", ST.FLOAT, max_version_=(5, 0, 0)), ] ), @@ -3326,6 +3494,13 @@ class NodeInfo(NamedTuple): [] ), + 'ShaderNodeVolumeCoefficients' : NodeInfo( + [ + NTPNodeSetting("phase", ST.ENUM), + ], + min_version_ = (4, 5, 0) + ), + 'ShaderNodeVolumeInfo' : NodeInfo( [] ), From 9693f3319fcd156342ccc2c8fcf14b5ce6026827 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 21 Jun 2025 20:10:03 -0500 Subject: [PATCH 270/286] feat: adjust color balance node setting logic --- NodeToPython/compositor/operator.py | 84 +++++++++++++++-------------- 1 file changed, 43 insertions(+), 41 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index 36a2718..8c3808a 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -93,45 +93,46 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): self._write(f"{ntp_nt.var}.{bool_setting} = True") - def _set_color_balance_settings(self, node: CompositorNodeColorBalance - ) -> None: - """ - Sets the color balance settings so we only set the active variables, - preventing conflict - - node (CompositorNodeColorBalance): the color balance node - """ - if node.correction_method == 'LIFT_GAMMA_GAIN': - lst = [NTPNodeSetting("correction_method", ST.ENUM), - NTPNodeSetting("gain", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("gain", ST.COLOR, min_version_=(3, 5, 0)), - NTPNodeSetting("gamma", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0)), - NTPNodeSetting("lift", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0))] - elif node.correction_method == 'OFFSET_POWER_SLOPE': - lst = [NTPNodeSetting("correction_method", ST.ENUM), - NTPNodeSetting("offset", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0)), - NTPNodeSetting("offset_basis", ST.FLOAT), - NTPNodeSetting("power", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0)), - NTPNodeSetting("slope", ST.VEC3, max_version_=(3, 5, 0)), - NTPNodeSetting("slope", ST.COLOR, min_version_=(3, 5, 0))] - elif node.correction_method == 'WHITEPOINT': - lst = [NTPNodeSetting("correction_method", ST.ENUM), - NTPNodeSetting("input_temperature", ST.FLOAT), - NTPNodeSetting("input_tint", ST.FLOAT), - NTPNodeSetting("output_temperature", ST.FLOAT), - NTPNodeSetting("output_tint", ST.FLOAT)] - else: - self.report({'ERROR'}, - f"Unknown color balance correction method " - f"{enum_to_py_str(node.correction_method)}") - return - - color_balance_info = self._node_infos['CompositorNodeColorBalance'] - self._node_infos['CompositorNodeColorBalance'] = color_balance_info._replace(attributes_ = lst) + if bpy.app.version < (4, 5, 0): + def _set_color_balance_settings(self, node: CompositorNodeColorBalance + ) -> None: + """ + Sets the color balance settings so we only set the active variables, + preventing conflict + + node (CompositorNodeColorBalance): the color balance node + """ + if node.correction_method == 'LIFT_GAMMA_GAIN': + lst = [NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("gain", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("gain", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("gamma", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("gamma", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("lift", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("lift", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0))] + elif node.correction_method == 'OFFSET_POWER_SLOPE': + lst = [NTPNodeSetting("correction_method", ST.ENUM), + NTPNodeSetting("offset", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("offset", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("offset_basis", ST.FLOAT), + NTPNodeSetting("power", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("power", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0)), + NTPNodeSetting("slope", ST.VEC3, max_version_=(3, 5, 0)), + NTPNodeSetting("slope", ST.COLOR, min_version_=(3, 5, 0), max_version_=(4, 5, 0))] + elif node.correction_method == 'WHITEPOINT': + lst = [NTPNodeSetting("correction_method", ST.ENUM, max_version_=(4, 5, 0)), + NTPNodeSetting("input_temperature", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("input_tint", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("output_temperature", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("output_tint", ST.FLOAT, max_version_=(4, 5, 0))] + else: + self.report({'ERROR'}, + f"Unknown color balance correction method " + f"{enum_to_py_str(node.correction_method)}") + return + + color_balance_info = self._node_infos['CompositorNodeColorBalance'] + self._node_infos['CompositorNodeColorBalance'] = color_balance_info._replace(attributes_ = lst) def _process_node(self, node: Node, ntp_nt: NTP_NodeTree): """ @@ -143,8 +144,9 @@ def _process_node(self, node: Node, ntp_nt: NTP_NodeTree): """ node_var: str = self._create_node(node, ntp_nt.var) - if node.bl_idname == 'CompositorNodeColorBalance': - self._set_color_balance_settings(node) + if bpy.app.version < (4, 5, 0): + if node.bl_idname == 'CompositorNodeColorBalance': + self._set_color_balance_settings(node) self._set_settings_defaults(node) self._hide_hidden_sockets(node) From 6d1151d3c5dd9420811ea72715d422c358969e60 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 13 Jul 2025 18:18:22 -0500 Subject: [PATCH 271/286] tools: deprecation checks, format string items, set min version, better logs --- tools/node_settings_generator/parse_nodes.py | 84 ++++++++++++++------ tools/node_settings_generator/types_utils.py | 9 ++- 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/tools/node_settings_generator/parse_nodes.py b/tools/node_settings_generator/parse_nodes.py index ca691b8..e7289cd 100644 --- a/tools/node_settings_generator/parse_nodes.py +++ b/tools/node_settings_generator/parse_nodes.py @@ -37,18 +37,40 @@ class NodeInfo(NamedTuple): types_dict : dict[str, set[str]] = {} log_file = None -NTP_MIN_VERSION = (3, 0) +BLENDER_3_MAX_VERSION = 6 +BLENDER_4_MAX_VERSION = 5 +BLENDER_5_MAX_VERSION = 0 + +NTP_MIN_VERSION = Version(3, 0) + +BLENDER_VERSIONS = [Version(3, i) for i in range(0, BLENDER_3_MAX_VERSION + 1)] +BLENDER_VERSIONS += [Version(4, i) for i in range(0, BLENDER_4_MAX_VERSION + 1)] +BLENDER_VERSIONS += [Version(5, i) for i in range(0, BLENDER_5_MAX_VERSION + 1)] + +def log(message: str): + if log_file is None: + raise RuntimeError("Log file was null!") + with log_mutex: + log_file.write(message) def process_attr(attr, section, node: str, version: Version) -> None: + # Get name name_section = attr.find(["code", "span"], class_="sig-name descname") - if not name_section: raise ValueError(f"{version.tuple_str()} {node}: Couldn't find name section in\n\t{section}") name = name_section.text + + # Check for deprecation + if "Deprecated" in str(attr): + log(f"WARNING: {version.tuple_str()} Attribute {node}.{name} " + f"was marked deprecated, returning\n") + return + # Get type type_section = attr.find("dd", class_="field-odd") if not type_section: - raise ValueError(f"{version.tuple_str()} {node}.{name}: Couldn't find type section in\n\t{section}") + raise ValueError(f"{version.tuple_str()} {node}.{name}: " + f"Couldn't find type section in\n\t{section}") type_text = type_section.text with mutex: @@ -61,8 +83,8 @@ def process_attr(attr, section, node: str, version: Version) -> None: ntp_type = types_utils.get_NTP_type(type_text) if ntp_type is None: # Read-only attribute, don't add to attribute list - with log_mutex: - log_file.write(f"WARNING: {version.tuple_str()} {node}.{name}'s type is being ignored:\n\t{type_text.strip()}\n") + log(f"WARNING: {version.tuple_str()} {node}.{name}'s " + f"type is being ignored:\n\t{type_text.strip()}\n") return ntp_setting = NTPNodeSetting(name, ntp_type) @@ -114,7 +136,7 @@ def download_file(filepath: str, version: Version, local_path: str) -> bool: def get_subclasses(current: str, parent: str, root_path: str, - version: Version) -> list[str]: + version: Version) -> None: relative_path = f"bpy.types.{current}.html" current_path = os.path.join(root_path, relative_path) @@ -132,12 +154,14 @@ def get_subclasses(current: str, parent: str, root_path: str, main_id = f"{current.lower()}-{parent.lower()}" sections = soup.find_all(id=main_id) if not sections: - raise ValueError(f"{version.tuple_str()} {current}: Couldn't find main section with id {main_id}") + raise ValueError(f"{version.tuple_str()} {current}: " + f"Couldn't find main section with id {main_id}") section = sections[0] paragraphs = section.find_all("p") if len(paragraphs) < 2: - raise ValueError(f"{version.tuple_str()} {current}: Couldn't find subclass section") + raise ValueError(f"{version.tuple_str()} {current}: " + f"Couldn't find subclass section") subclasses_paragraph = paragraphs[1] if not subclasses_paragraph.text.strip().startswith("subclasses —"): @@ -147,7 +171,8 @@ def get_subclasses(current: str, parent: str, root_path: str, subclass_anchors = subclasses_paragraph.find_all("a") if not subclass_anchors: - raise ValueError(f"{version.tuple_str()} {current} No anchors in subclasses paragraph") + raise ValueError(f"{version.tuple_str()} {current} " + f"No anchors in subclasses paragraph") subclass_types = [anchor.get("title") for anchor in subclass_anchors] threads: list[Thread] = [] @@ -156,13 +181,15 @@ def get_subclasses(current: str, parent: str, root_path: str, raise ValueError(f"{version.tuple_str()} {current} Type was invalid") is_matching = re.match(r"bpy\.types\.(.*)", type) if not is_matching: - raise ValueError(f"{version.tuple_str()} {current}: Type {type} was not of the form \"bpy.types.x\"") + raise ValueError(f"{version.tuple_str()} {current}: " + f"Type {type} was not of the form \"bpy.types.x\"") pure_type = is_matching.group(1) if (pure_type == "TextureNode"): # unsupported continue - thread = Thread(target=get_subclasses, args=(pure_type, current, root_path, version)) + thread = Thread(target=get_subclasses, + args=(pure_type, current, root_path, version)) threads.append(thread) thread.start() @@ -180,24 +207,21 @@ def process_bpy_version(version: Version) -> None: get_subclasses(current, parent, root_path, version) def generate_versions(max_version_inc: Version) -> list[Version]: - BLENDER_3_MAX_VERSION = 6 - BLENDER_4_MAX_VERSION = 5 + versions = BLENDER_VERSIONS.copy() - versions = [Version(3, i) for i in range(0, BLENDER_3_MAX_VERSION + 1)] - versions += [Version(4, i) for i in range(0, BLENDER_4_MAX_VERSION + 1)] - versions += [Version(5, i) for i in range(0, max_version_inc.minor_ + 1)] - - #lazy max version check + # lazy version bounds check for version in versions[::-1]: if version > max_version_inc: versions.remove(version) + if version < NTP_MIN_VERSION: + versions.remove(version) return versions def subminor(version: Version) -> tuple: return (version[0], version[1], 0) -def get_min_version(versions: list[Version]) -> Version: +def get_min_version(versions: list[Version]) -> Version | None: min_version = min(versions) if min_version != NTP_MIN_VERSION: @@ -206,7 +230,7 @@ def get_min_version(versions: list[Version]) -> Version: return None def get_max_version(versions: list[Version], blender_versions: list[Version] - ) -> Version: + ) -> Version | None: max_v_inclusive = max(versions) max_v_inclusive_index = blender_versions.index(max_v_inclusive) max_v_exclusive = blender_versions[max_v_inclusive_index + 1] @@ -246,7 +270,8 @@ def write_node_info_class(file: TextIOWrapper): file.write("\n") def write_ntp_node_settings(node_info: NodeInfo, file: TextIOWrapper, - node_min_v: Version, node_max_v: Version): + node_min_v: Version | None, + node_max_v: Version | None) -> None: attr_dict = node_info.attributes_ file.write("\n\t\t[") attrs_exist = len(attr_dict.items()) > 0 @@ -286,6 +311,14 @@ def write_node(name: str, node_info: NodeInfo, file: TextIOWrapper): file.write("\n\t),\n\n") +def get_max_version_exc(max_version_inc : Version) -> Version: + idx = BLENDER_VERSIONS.index(max_version_inc) + exc_idx = idx + 1 + if exc_idx < len(BLENDER_VERSIONS): + return BLENDER_VERSIONS[exc_idx] + else: + return Version(max_version_inc.major_, max_version_inc.minor_ + 1) + if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('max_major_version', type=int, @@ -312,7 +345,8 @@ def write_node(name: str, node_info: NodeInfo, file: TextIOWrapper): for version in versions: process_bpy_version(version) - NTP_MAX_VERSION_EXC = (NTP_MAX_VERSION_INC[0], NTP_MAX_VERSION_INC[1] + 1) + NTP_MAX_VERSION_EXC = get_max_version_exc(NTP_MAX_VERSION_INC) + versions.append(NTP_MAX_VERSION_EXC) sorted_nodes = dict(sorted(nodes_dict.items())) @@ -340,8 +374,8 @@ def write_node(name: str, node_info: NodeInfo, file: TextIOWrapper): print("Successfully finished") sorted_types = dict(sorted(types_dict.items())) - log_file.write("\nTypes encountered:\n") + log("\nTypes encountered:\n") for key, value in types_dict.items(): - log_file.write(f"{key}\n") + log(f"{key}\n") for string in value: - log_file.write(f"\t{string}\n") \ No newline at end of file + log(f"\t{string}\n") \ No newline at end of file diff --git a/tools/node_settings_generator/types_utils.py b/tools/node_settings_generator/types_utils.py index 27458c0..e57ec70 100644 --- a/tools/node_settings_generator/types_utils.py +++ b/tools/node_settings_generator/types_utils.py @@ -28,6 +28,7 @@ class ST(Enum): FOREACH_GEO_ELEMENT_GENERATION_ITEMS = auto() FOREACH_GEO_ELEMENT_INPUT_ITEMS = auto() FOREACH_GEO_ELEMENT_MAIN_ITEMS = auto() + FORMAT_STRING_ITEMS = auto() INDEX_SWITCH_ITEMS = auto() MENU_SWITCH_ITEMS = auto() NODE_TREE = auto() @@ -66,6 +67,7 @@ class ST(Enum): ST.FOREACH_GEO_ELEMENT_GENERATION_ITEMS, ST.FOREACH_GEO_ELEMENT_INPUT_ITEMS, ST.FOREACH_GEO_ELEMENT_MAIN_ITEMS, + ST.FORMAT_STRING_ITEMS, ST.IMAGE_FORMAT_SETTINGS, ST.IMAGE_USER, ST.INDEX_SWITCH_ITEMS, @@ -75,8 +77,8 @@ class ST(Enum): ST.SIM_OUTPUT_ITEMS, } -doc_to_NTP_type_dict : dict[str, ST] = { - "" : "", +doc_to_NTP_type_dict : dict[str, ST | None] = { + "" : None, "bpy_prop_collection of CryptomatteEntry": ST.CRYPTOMATTE_ENTRIES, "boolean" : ST.BOOL, "Collection" : ST.COLLECTION, @@ -106,6 +108,7 @@ class ST(Enum): # output nodes exist. Handled separately from NTP attr system "NodeEnumDefinition" : ST.ENUM_DEFINITION, "NodeEnumItem" : ST.ENUM_ITEM, + "NodeFunctionFormatStringItems" : ST.FORMAT_STRING_ITEMS, "NodeGeometryBakeItems" : ST.BAKE_ITEMS, "NodeGeometryCaptureAttributeItems" : ST.CAPTURE_ATTRIBUTE_ITEMS, "NodeGeometryForeachGeometryElementGenerationItems": ST.FOREACH_GEO_ELEMENT_GENERATION_ITEMS, @@ -129,7 +132,7 @@ class ST(Enum): "VectorFont" : ST.FONT } -def get_NTP_type(type_str: str) -> str: +def get_NTP_type(type_str: str) -> ST | None: """ Time complexity isn't great, might be able to optimize with a trie or similar data structure From d476452baa6c2cec4499e3724426f554ae9f0e58 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 13 Jul 2025 18:18:55 -0500 Subject: [PATCH 272/286] feat: update node settings, handle format string items --- NodeToPython/node_settings.py | 48 +++++++++++++++++------------------ NodeToPython/ntp_operator.py | 12 +++++++++ 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/NodeToPython/node_settings.py b/NodeToPython/node_settings.py index da4fc12..fbbb943 100644 --- a/NodeToPython/node_settings.py +++ b/NodeToPython/node_settings.py @@ -26,6 +26,7 @@ class ST(Enum): FOREACH_GEO_ELEMENT_GENERATION_ITEMS = auto() FOREACH_GEO_ELEMENT_INPUT_ITEMS = auto() FOREACH_GEO_ELEMENT_MAIN_ITEMS = auto() + FORMAT_STRING_ITEMS = auto() INDEX_SWITCH_ITEMS = auto() MENU_SWITCH_ITEMS = auto() NODE_TREE = auto() @@ -410,9 +411,7 @@ class NodeInfo(NamedTuple): ), 'CompositorNodeDisplace' : NodeInfo( - [ - NTPNodeSetting("interpolation", ST.ENUM, min_version_=(5, 0, 0)), - ] + [] ), 'CompositorNodeDistanceMatte' : NodeInfo( @@ -465,17 +464,17 @@ class NodeInfo(NamedTuple): 'CompositorNodeGlare' : NodeInfo( [ - NTPNodeSetting("angle_offset", ST.FLOAT, max_version_=(4, 5, 0)), - NTPNodeSetting("color_modulation", ST.FLOAT, max_version_=(4, 5, 0)), - NTPNodeSetting("fade", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("angle_offset", ST.FLOAT, max_version_=(4, 4, 0)), + NTPNodeSetting("color_modulation", ST.FLOAT, max_version_=(4, 4, 0)), + NTPNodeSetting("fade", ST.FLOAT, max_version_=(4, 4, 0)), NTPNodeSetting("glare_type", ST.ENUM), - NTPNodeSetting("iterations", ST.INT, max_version_=(4, 5, 0)), - NTPNodeSetting("mix", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("iterations", ST.INT, max_version_=(4, 4, 0)), + NTPNodeSetting("mix", ST.FLOAT, max_version_=(4, 4, 0)), NTPNodeSetting("quality", ST.ENUM), - NTPNodeSetting("size", ST.INT, max_version_=(4, 5, 0)), - NTPNodeSetting("streaks", ST.INT, max_version_=(4, 5, 0)), - NTPNodeSetting("threshold", ST.FLOAT, max_version_=(4, 5, 0)), - NTPNodeSetting("use_rotate_45", ST.BOOL, max_version_=(4, 5, 0)), + NTPNodeSetting("size", ST.INT, max_version_=(4, 4, 0)), + NTPNodeSetting("streaks", ST.INT, max_version_=(4, 4, 0)), + NTPNodeSetting("threshold", ST.FLOAT, max_version_=(4, 4, 0)), + NTPNodeSetting("use_rotate_45", ST.BOOL, max_version_=(4, 4, 0)), ] ), @@ -848,13 +847,13 @@ class NodeInfo(NamedTuple): 'CompositorNodeTonemap' : NodeInfo( [ - NTPNodeSetting("adaptation", ST.FLOAT), - NTPNodeSetting("contrast", ST.FLOAT), - NTPNodeSetting("correction", ST.FLOAT), - NTPNodeSetting("gamma", ST.FLOAT), - NTPNodeSetting("intensity", ST.FLOAT), - NTPNodeSetting("key", ST.FLOAT), - NTPNodeSetting("offset", ST.FLOAT), + NTPNodeSetting("adaptation", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("contrast", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("correction", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("gamma", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("intensity", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("key", ST.FLOAT, max_version_=(4, 5, 0)), + NTPNodeSetting("offset", ST.FLOAT, max_version_=(4, 5, 0)), NTPNodeSetting("tonemap_type", ST.ENUM), ] ), @@ -1013,6 +1012,7 @@ class NodeInfo(NamedTuple): 'FunctionNodeFormatString' : NodeInfo( [ NTPNodeSetting("active_index", ST.INT), + NTPNodeSetting("format_items", ST.FORMAT_STRING_ITEMS), ], min_version_ = (4, 5, 0) ), @@ -2805,9 +2805,7 @@ class NodeInfo(NamedTuple): ), 'GeometryNodeUVPackIslands' : NodeInfo( - [ - NTPNodeSetting("shape_method", ST.ENUM, min_version_=(5, 0, 0)), - ], + [], min_version_ = (3, 3, 0) ), @@ -3391,16 +3389,16 @@ class NodeInfo(NamedTuple): NTPNodeSetting("air_density", ST.FLOAT), NTPNodeSetting("altitude", ST.FLOAT), NTPNodeSetting("dust_density", ST.FLOAT), - NTPNodeSetting("ground_albedo", ST.FLOAT, max_version_=(5, 0, 0)), + NTPNodeSetting("ground_albedo", ST.FLOAT), NTPNodeSetting("ozone_density", ST.FLOAT), NTPNodeSetting("sky_type", ST.ENUM), - NTPNodeSetting("sun_direction", ST.VEC3, max_version_=(5, 0, 0)), + NTPNodeSetting("sun_direction", ST.VEC3), NTPNodeSetting("sun_disc", ST.BOOL), NTPNodeSetting("sun_elevation", ST.FLOAT), NTPNodeSetting("sun_intensity", ST.FLOAT), NTPNodeSetting("sun_rotation", ST.FLOAT), NTPNodeSetting("sun_size", ST.FLOAT), - NTPNodeSetting("turbidity", ST.FLOAT, max_version_=(5, 0, 0)), + NTPNodeSetting("turbidity", ST.FLOAT), ] ), diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 562f2b8..7293b79 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -454,6 +454,8 @@ def _set_settings_defaults(self, node: Node) -> None: self._foreach_geo_element_input_items(attr, f"{node_var}.{attr_name}") elif st == ST.FOREACH_GEO_ELEMENT_MAIN_ITEMS: self._foreach_geo_element_main_items(attr, f"{node_var}.{attr_name}") + elif st == ST.FORMAT_STRING_ITEMS: + self._format_string_items(attr, f"{node_var}.{attr_name}") if bpy.app.version < (4, 0, 0): def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, @@ -1349,6 +1351,16 @@ def _foreach_geo_element_main_items(self, name_str = str_to_py_str(item.name) self._write(f"{main_items_str}.new({socket_type}, {name_str})") + if bpy.app.version >= (4, 5, 0): + def _format_string_items(self, + format_items : bpy.types.NodeFunctionFormatStringItems, + format_items_str: str) -> None: + self._write(f"{format_items_str}.clear()") + for i, item in enumerate(format_items): + socket_type = enum_to_py_str(item.socket_type) + name_str = str_to_py_str(item.name) + self._write(f"{format_items_str}.new({socket_type}, {name_str})") + def _set_parents(self, node_tree: NodeTree) -> None: """ From b2f1c2c01cebc2a578793ba186341baf41b3b6ee Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 13 Jul 2025 20:22:15 -0500 Subject: [PATCH 273/286] feat: update node socket attributes, support toggle panels --- NodeToPython/ntp_operator.py | 47 ++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 7293b79..83f30fc 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -372,14 +372,14 @@ def _set_settings_defaults(self, node: Node) -> None: version_lt_max = bpy.app.version < min(attr_info.max_version_, node_info.max_version_) is_version_valid = version_gte_min and version_lt_max - if not hasattr(node, attr_name): - if is_version_valid: - self.report({'WARNING'}, - f"NodeToPython: Couldn't find attribute " - f"\"{attr_name}\" for node {node.name} of type " - f"{node.bl_idname}") + if not is_version_valid: continue - elif not is_version_valid: + + if not hasattr(node, attr_name): + self.report({'WARNING'}, + f"NodeToPython: Couldn't find attribute " + f"\"{attr_name}\" for node {node.name} of type " + f"{node.bl_idname}") continue attr = getattr(node, attr_name, None) @@ -474,6 +474,11 @@ def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface, if socket_interface.type not in self.default_sockets_v3: return + + if not hasattr(socket_interface, "default_value"): + self.report({'WARNING'}, + f"Socket {socket_interface.type} had no default value") + return if socket_interface.type == 'RGBA': dv = vec4_to_py_str(socket_interface.default_value) @@ -692,6 +697,32 @@ def _create_socket(self, socket: NodeTreeInterfaceSocket, description = str_to_py_str(socket.description) self._write(f"{socket_var}.description = {description}") + # layer selection field + if socket.layer_selection_field: + self._write(f"{socket_var}.layer_selection_field = True") + + if bpy.app.version >= (4, 2, 0): + # is inspect output + if socket.is_inspect_output: + self._write(f"{socket_var}.is_inspect_output = True") + + if bpy.app.version >= (4, 5, 0): + # default input + default_input = enum_to_py_str(socket.default_input) + self._write(f"{socket_var}.default_input = {default_input}") + + # is panel toggle + if socket.is_panel_toggle: + self._write(f"{socket_var}.is_panel_toggle = True") + + # menu expanded + if socket.menu_expanded: + self._write(f"{socket_var}.menu_expanded = True") + + # structure type + structure_type = enum_to_py_str(socket.structure_type) + self._write(f"{socket_var}.structure_type = {structure_type}") + self._write("", 0) def _create_panel(self, panel: NodeTreeInterfacePanel, @@ -775,7 +806,7 @@ def _process_items(self, parent: NodeTreeInterfacePanel, items_processed.add(item) - if item.item_type == 'SOCKET': + if item.item_type in {'SOCKET', 'PANEL_TOGGLE'}: self._create_socket(item, parent, panel_dict, ntp_nt) elif item.item_type == 'PANEL': From 6d2fe13876ccd3a76d279cfffb9662d69054c1e1 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 13 Jul 2025 20:42:56 -0500 Subject: [PATCH 274/286] other: version bump, change license to GPL 3 --- NodeToPython/blender_manifest.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index e45c93a..223928d 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.4.0" +version = "3.5.0" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " @@ -12,10 +12,9 @@ website = "https://github.com/BrendanParmer/NodeToPython" tags = ["Development", "Compositing", "Geometry Nodes", "Material", "Node"] blender_version_min = "4.2.0" -blender_version_max = "4.5.0" license = [ - "SPDX:MIT", + "SPDX:GPL-3.0-or-later", ] [permissions] From ac02775baaf58f2c222727815f674a2f0bf9abb1 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sun, 13 Jul 2025 20:44:27 -0500 Subject: [PATCH 275/286] other: update license files --- LICENSE | 695 +++++++++++++++++++++++++++++++++++++-- NodeToPython/LICENSE | 695 +++++++++++++++++++++++++++++++++++++-- NodeToPython/OLD_LICENSE | 21 ++ OLD_LICENSE | 21 ++ 4 files changed, 1390 insertions(+), 42 deletions(-) create mode 100644 NodeToPython/OLD_LICENSE create mode 100644 OLD_LICENSE diff --git a/LICENSE b/LICENSE index 403ede7..f288702 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,674 @@ -MIT License - -Copyright (c) 2022-2024 Brendan Parmer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/NodeToPython/LICENSE b/NodeToPython/LICENSE index 403ede7..f288702 100644 --- a/NodeToPython/LICENSE +++ b/NodeToPython/LICENSE @@ -1,21 +1,674 @@ -MIT License - -Copyright (c) 2022-2024 Brendan Parmer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/NodeToPython/OLD_LICENSE b/NodeToPython/OLD_LICENSE new file mode 100644 index 0000000..403ede7 --- /dev/null +++ b/NodeToPython/OLD_LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022-2024 Brendan Parmer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/OLD_LICENSE b/OLD_LICENSE new file mode 100644 index 0000000..403ede7 --- /dev/null +++ b/OLD_LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022-2024 Brendan Parmer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 700d1747ebe27ce6bcad4d3f3bca47f37ca10e65 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 14 Jul 2025 22:56:04 -0500 Subject: [PATCH 276/286] deprecate: remove non-gpl-compliant licenses as options --- NodeToPython/license_templates.py | 1768 +---------------------------- NodeToPython/options.py | 12 - 2 files changed, 1 insertion(+), 1779 deletions(-) diff --git a/NodeToPython/license_templates.py b/NodeToPython/license_templates.py index d17417d..4487fa8 100644 --- a/NodeToPython/license_templates.py +++ b/NodeToPython/license_templates.py @@ -1,357 +1,3 @@ -""" -NodeToPython is licensed under the MIT license, as -specified in the LICENSE file in the root of this project - -This file contains licensing text meant for -licensing generated add-ons created with NodeToPython, -which do not apply to NodeToPython itself. - -All licenses are copyrighted by their respective authors. -""" - -def gpl_2_0(year: int, author: str) -> str: - return """ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. -""" - def gpl_3_0(year: int, author: str) -> str: return """ GNU GENERAL PUBLIC LICENSE @@ -1029,1418 +675,6 @@ def gpl_3_0(year: int, author: str) -> str: Public License instead of this License. But first, please read . """ - -def lgpl_2_1(year: int, author: str) -> str: - return """ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random - Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! -""" - -def lgpl_3_0(year: int, author: str) -> str: - return """ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. -""" - -def bsd_1(year: int, author: str) -> str: - return f""" -Copyright (c) {year} {author} All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -THIS SOFTWARE IS PROVIDED BY {author.upper()} “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL {author.upper()} BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -""" - -def bsd_2(year: int, author: str) -> str: - return f""" -BSD 2-Clause License - -Copyright (c) {year}, {author} - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -""" - -def bsd_3(year: int, author: str) -> str: - return f""" -BSD 3-Clause License - -Copyright (c) {year}, {author} - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -""" - -def bsl_1_0(year: int, author: str) -> str: - return """ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -""" - -def mit(year: int, author: str) -> str: - return f""" -MIT License - -Copyright (c) {year} {author} - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -""" - -def mit_0(year: int, author: str) -> str: - return f""" -MIT No Attribution - -Copyright {year} {author} - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -""" - -def mpl_2_0(year: int, author: str) -> str: - return """ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. -""" - -def pixar(year: int, author: str) -> str: - return """ - - Modified Apache 2.0 License - - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor - and its affiliates, except as required to comply with Section 4(c) of - the License and to reproduce the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. -""" - -def zlib(year: int, author: str) -> str: - return f""" -Copyright (c) {year} {author} - -This software is provided \'as-is\', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software -in a product, an acknowledgment in the product documentation would be -appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -""" - license_templates = { - 'SPDX:GPL-2.0-or-later': gpl_2_0, - 'SPDX:GPL-3.0-or-later': gpl_3_0, - 'SPDX:LGPL-2.1-or-later': lgpl_2_1, - 'SPDX:LGPL-3.0-or-later': lgpl_3_0, - 'SPDX:BSD-1-Clause': bsd_1, - 'SPDX:BSD-2-Clause': bsd_2, - 'SPDX:BSD-3-Clause': bsd_3, - 'SPDX:BSL-1.0': bsl_1_0, - 'SPDX:MIT': mit, - 'SPDX:MIT-0': mit_0, - 'SPDX:MPL-2.0': mpl_2_0, - 'SPDX:Pixar': pixar, - 'SPDX:Zlib': zlib + 'SPDX:GPL-3.0-or-later': gpl_3_0 } \ No newline at end of file diff --git a/NodeToPython/options.py b/NodeToPython/options.py index 1f60c76..da8c0f1 100644 --- a/NodeToPython/options.py +++ b/NodeToPython/options.py @@ -96,19 +96,7 @@ def __init__(self, *args, **kwargs): license: bpy.props.EnumProperty( name="License", items = [ - ('SPDX:GPL-2.0-or-later', "GNU General Public License v2.0 or later", ""), ('SPDX:GPL-3.0-or-later', "GNU General Public License v3.0 or later", ""), - ('SPDX:LGPL-2.1-or-later', "GNU Lesser General Public License v2.1 or later", ""), - ('SPDX:LGPL-3.0-or-later', "GNU Lesser General Public License v3.0 or later", ""), - ('SPDX:BSD-1-Clause', "BSD 1-Clause \"Simplified\" License", ""), - ('SPDX:BSD-2-Clause', "BSD 2-Clause \"Simplified\" License", ""), - ('SPDX:BSD-3-Clause', "BSD 3-Clause \"New\" or \"Revised\" License", ""), - ('SPDX:BSL-1.0', "Boost Software License 1.0", ""), - ('SPDX:MIT', "MIT License", ""), - ('SPDX:MIT-0', "MIT No Attribution", ""), - ('SPDX:MPL-2.0', "Mozilla Public License 2.0", ""), - ('SPDX:Pixar', "Pixar License", ""), - ('SPDX:Zlib', "Zlib License", ""), ('OTHER', "Other", "User is responsible for including the license " "and adding it to the manifest.\n" "Please note that by using the Blender Python " From 295affebe72fa97bdbec0fe553f61a2cba1dd500 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:21:59 -0500 Subject: [PATCH 277/286] feat: warn on unsupported Blender versions --- NodeToPython/ntp_operator.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 83f30fc..6299da7 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -41,6 +41,8 @@ 'NodeSocketMatrix', 'NodeSocketVirtual'} +MAX_BLENDER_VERSION = (5, 0, 0) + class NTP_Operator(Operator): """ "Abstract" base class for all NTP operators. Blender types and abstraction @@ -124,6 +126,15 @@ def _write(self, string: str, indent_level: int = None): self._file.write(f"{indent_str}{string}\n") def _setup_options(self, options: NTPOptions) -> bool: + if bpy.app.version >= MAX_BLENDER_VERSION: + self.report({'WARNING'}, + f"Blender version {bpy.app.version} is not supported yet!\n" + "NodeToPython is currently supported up to Blender 4.5.\n" + "Some nodes, settings, and features may not work yet. See:") + self.report({'WARNING'}, + "\t\thttps://github.com/BrendanParmer/NodeToPython/blob/main/docs/README.md#supported-versions ") + self.report({'WARNING'}, "for more details") + # General self._mode = options.mode self._include_group_socket_values = options.include_group_socket_values From 63aba4208bdc6ea23a64386d962444bbd09ab65b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:22:36 -0500 Subject: [PATCH 278/286] docs: update README and file permission usage --- NodeToPython/blender_manifest.toml | 2 +- docs/README.md | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 223928d..3acbbac 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -18,4 +18,4 @@ license = [ ] [permissions] -files = "Creates and writes to files in a specified directory" \ No newline at end of file +files = "Creates and writes to files in a user-specified directory" \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index e9d340e..6cd7874 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,12 +15,14 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.4.0 is supported for Blender 3.0 - 4.4 on Windows, macOS, and Linux -* Some work is required to update NodeToPython for each Blender version, so experimental versions will not work properly +NodeToPython v3.5.0 is supported for Blender 3.0 - 4.5 on Windows, macOS, and Linux +* Some work is required to update NodeToPython for each Blender version, so experimental versions may not work properly and may even crash. +* New nodes, updated settings, and new node tree features require development to support. +* NodeToPython updates for new Blender versions usually doesn't start until the Beta phase of the release cycle ## Installation ### Blender Extensions Platform -NodeToPython is now on the official [Blender Extensions Platform](https://extensions.blender.org/add-ons/node-to-python/)! See https://extensions.blender.org/about/ for installation instructions and more info. +NodeToPython is now on the official [Blender Extensions Platform](https://extensions.blender.org/add-ons/node-to-python/)! See https://extensions.blender.org/about/ for installation instructions and more info. This is the recommended way to install NodeToPython. ### GitHub 1. Download the `NodeToPython.zip` file from the [latest release](https://github.com/BrendanParmer/NodeToPython/releases) @@ -44,8 +46,7 @@ In the options panel, select either **Script** or **Add-on**. When submitting an issue, please include -* Your version of Blender (3.0 - 4.4) - * Higher versions of Blender are expected to break NodeToPython. In general, work doesn't start on new versions until after the Beta stage of the release cycle +* Your version of Blender (3.0 - 4.5) * Your operating system * Steps to reproduce the issue or a description of what you were trying to accomplish. Providing a test blend file is especially helpful @@ -55,7 +56,7 @@ Got suggestions? Please create an [issue](https://github.com/BrendanParmer/NodeT **Important Notice:** -This tool is provided under the MIT license and is intended for lawful use only. It is your responsibility to ensure that any use of this tool complies with all applicable laws, including but not limited to copyright and intellectual property laws. The authors of this tool are not liable for any illegal use of this tool or any legal consequences that may arise from such use. +This tool is provided under the GPLv3 license and is intended for lawful use only. It is your responsibility to ensure that any use of this tool complies with all applicable laws, including but not limited to copyright and intellectual property laws. The authors of this tool are not liable for any illegal use of this tool or any legal consequences that may arise from such use. In particular, this tool generates code that requires the Blender Python API, which is licensed under the GNU General Public License (GPL). Code generated by this tool that incorporates or uses the Blender Python API must comply with the GPL requirements. For more details on the GPL, please see https://www.gnu.org/licenses/gpl-3.0.html. For more details on Blender's licensing, please see https://www.blender.org/about/license/ From 3acdb723fcfa906c98de0e5fcca9f62d59e5f997 Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Sat, 16 Aug 2025 01:28:55 +0200 Subject: [PATCH 279/286] Write docstring instead of comment for initialization function --- NodeToPython/compositor/operator.py | 2 +- NodeToPython/geometry/operator.py | 2 +- NodeToPython/shader/operator.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index 8c3808a..ecce885 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -58,8 +58,8 @@ def _create_scene(self, indent_level: int): def _initialize_compositor_node_tree(self, ntp_nt, nt_name): #initialize node group - self._write(f"#initialize {nt_name} node group", self._outer_indent_level) self._write(f"def {ntp_nt.var}_node_group():", self._outer_indent_level) + self._write(f'"""Initialize {nt_name} node group"""') if ntp_nt.node_tree == self._base_node_tree and self.is_scene: self._write(f"{ntp_nt.var} = {SCENE}.node_tree") diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index df3e08d..3eb671a 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -116,8 +116,8 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: self._node_tree_vars[node_tree] = nt_var #initialize node group - self._write(f"#initialize {nt_var} node group", self._outer_indent_level) self._write(f"def {nt_var}_node_group():", self._outer_indent_level) + self._write(f'"""Initialize {nt_var} node group"""') self._write(f"{nt_var} = bpy.data.node_groups.new(" f"type = \'GeometryNodeTree\', " f"name = {str_to_py_str(node_tree.name)})\n") diff --git a/NodeToPython/shader/operator.py b/NodeToPython/shader/operator.py index ca8262c..01772f8 100644 --- a/NodeToPython/shader/operator.py +++ b/NodeToPython/shader/operator.py @@ -42,8 +42,8 @@ def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, variable to use nt_name (str): name to use for the node tree """ - self._write(f"#initialize {nt_name} node group", self._outer_indent_level) - self._write(f"def {ntp_node_tree.var}_node_group():\n", self._outer_indent_level) + self._write(f"def {ntp_node_tree.var}_node_group():", self._outer_indent_level) + self._write(f'"""Initialize {nt_name} node group"""') if ntp_node_tree.node_tree == self._base_node_tree: self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree") From 1db6d8b1f5780aea9985395ea496162ff51c15f3 Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Sat, 16 Aug 2025 01:29:55 +0200 Subject: [PATCH 280/286] Separate each import to its own line --- NodeToPython/compositor/operator.py | 2 +- NodeToPython/geometry/operator.py | 2 +- NodeToPython/shader/operator.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index ecce885..6b67061 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -242,7 +242,7 @@ def execute(self, context): else: self._file = StringIO("") if self._include_imports: - self._file.write("import bpy, mathutils\n\n") + self._file.write("import bpy\nimport mathutils\n\n\n") if self.is_scene: if self._mode == 'ADDON': diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index 3eb671a..f82c90b 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -191,7 +191,7 @@ def execute(self, context): else: self._file = StringIO("") if self._include_imports: - self._file.write("import bpy, mathutils\n\n") + self._file.write("import bpy\nimport mathutils\n\n\n") node_trees_to_process = self._topological_sort(nt) diff --git a/NodeToPython/shader/operator.py b/NodeToPython/shader/operator.py index 01772f8..3515830 100644 --- a/NodeToPython/shader/operator.py +++ b/NodeToPython/shader/operator.py @@ -158,7 +158,7 @@ def execute(self, context): else: self._file = StringIO("") if self._include_imports: - self._file.write("import bpy, mathutils\n\n") + self._file.write("import bpy\nimport mathutils\n\n\n") if self._mode == 'ADDON': self._create_material(2) From 2b17ab8ca2115b599e474421e775af5a3ce295c0 Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Sat, 16 Aug 2025 01:30:57 +0200 Subject: [PATCH 281/286] Comments: add whitespace at line beginning, capitalize first word --- NodeToPython/compositor/operator.py | 4 ++-- NodeToPython/geometry/operator.py | 4 ++-- NodeToPython/ntp_operator.py | 36 ++++++++++++++--------------- NodeToPython/shader/operator.py | 4 ++-- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index 6b67061..381144d 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -63,7 +63,7 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): if ntp_nt.node_tree == self._base_node_tree and self.is_scene: self._write(f"{ntp_nt.var} = {SCENE}.node_tree") - self._write(f"#start with a clean node tree") + self._write(f"# Start with a clean node tree") self._write(f"for {NODE} in {ntp_nt.var}.nodes:") self._write(f"{ntp_nt.var}.nodes.remove({NODE})", self._inner_indent_level + 1) else: @@ -187,7 +187,7 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): self._tree_interface_settings(ntp_nt) #initialize nodes - self._write(f"#initialize {nt_var} nodes") + self._write(f"# Initialize {nt_var} nodes") for node in node_tree.nodes: self._process_node(node, ntp_nt) diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index f82c90b..9f900fd 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -71,7 +71,7 @@ def _process_zones(self, zone_inputs: list[GeometryNode]) -> None: zone_input_var = self._node_vars[zone_input] zone_output_var = self._node_vars[zone_output] - self._write(f"#Process zone input {zone_input.name}") + self._write(f"# Process zone input {zone_input.name}") self._write(f"{zone_input_var}.pair_with_output" f"({zone_output_var})") @@ -132,7 +132,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: self._tree_interface_settings(ntp_nt) #initialize nodes - self._write(f"#initialize {nt_var} nodes") + self._write(f"# Initialize {nt_var} nodes\n") for node in node_tree.nodes: self._process_node(node, ntp_nt) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 6299da7..f18a1db 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -323,7 +323,7 @@ def _create_node(self, node: Node, node_tree_var: str) -> str: node_var (str): variable name for the node """ - self._write(f"#node {node.name}") + self._write(f"# Node {node.name}") node_var = self._create_var(node.name) self._node_vars[node] = node_var @@ -530,11 +530,11 @@ def _group_io_settings(self, node: Node, io_sockets = node.inputs io_socket_interfaces = node_tree.outputs - self._write(f"#{node_tree_var} {io}s") + self._write(f"# {node_tree_var} {io}s") for i, inout in enumerate(io_sockets): if inout.bl_idname == 'NodeSocketVirtual': continue - self._write(f"#{io} {inout.name}") + self._write(f"# {io.capitalize()} {inout.name}") idname = enum_to_py_str(inout.bl_idname) name = str_to_py_str(inout.name) self._write(f"{node_tree_var}.{io}s.new({idname}, {name})") @@ -642,7 +642,7 @@ def _create_socket(self, socket: NodeTreeInterfaceSocket, ntp_nt (NTP_NodeTree): owner of the socket """ - self._write(f"#Socket {socket.name}") + self._write(f"# Socket {socket.name}") # initialization socket_var = self._create_var(socket.name + "_socket") name = str_to_py_str(socket.name) @@ -755,7 +755,7 @@ def _create_panel(self, panel: NodeTreeInterfacePanel, ntp_nt (NTP_NodeTree): owner of the socket """ - self._write(f"#Panel {panel.name}") + self._write(f"# Panel {panel.name}") panel_var = self._create_var(panel.name + "_panel") panel_dict[panel] = panel_var @@ -840,7 +840,7 @@ def _tree_interface_settings(self, ntp_nt: NTP_NodeTree) -> None: ntp_nt (NTP_NodeTree): the node tree to set the interface for """ - self._write(f"#{ntp_nt.var} interface") + self._write(f"# {ntp_nt.var} interface\n") panel_dict: dict[NodeTreeInterfacePanel, str] = {} items_processed: set[NodeTreeInterfaceItem] = set() @@ -930,7 +930,7 @@ def _set_input_defaults(self, node: Node) -> None: else: default_val = input.default_value if default_val is not None: - self._write(f"#{input.identifier}") + self._write(f"# {input.identifier}") self._write(f"{socket_var}.default_value = {default_val}") self._write("", 0) @@ -1028,7 +1028,7 @@ def _color_ramp_settings(self, node: Node, color_ramp_name: str) -> None: self._write("", 0) # key points - self._write(f"#initialize color ramp elements") + self._write(f"# Initialize color ramp elements") self._write((f"{ramp_str}.elements.remove" f"({ramp_str}.elements[0])")) for i, element in enumerate(color_ramp.elements): @@ -1062,7 +1062,7 @@ def _curve_mapping_settings(self, node: Node, node_var = self._node_vars[node] # mapping settings - self._write(f"#mapping settings") + self._write(f"# Mapping settings") mapping_var = f"{node_var}.{curve_mapping_name}" # extend @@ -1098,7 +1098,7 @@ def _curve_mapping_settings(self, node: Node, self._create_curve_map(node, i, curve, curve_mapping_name) # update curve - self._write(f"#update curve after changes") + self._write(f"# Update curve after changes") self._write(f"{mapping_var}.update()") def _create_curve_map(self, node: Node, i: int, curve: bpy.types.CurveMap, @@ -1114,7 +1114,7 @@ def _create_curve_map(self, node: Node, i: int, curve: bpy.types.CurveMap, """ node_var = self._node_vars[node] - self._write(f"#curve {i}") + self._write(f"# Curve {i}") curve_i_var = self._create_var(f"{node_var}_curve_{i}") self._write(f"{curve_i_var} = " f"{node_var}.{curve_mapping_name}.curves[{i}]") @@ -1217,7 +1217,7 @@ def _load_image(self, img: bpy.types.Image, img_var: str) -> None: img_str = img_to_py_str(img) # TODO: convert to special variables - self._write(f"#load image {img_str}") + self._write(f"# Load image {img_str}") self._write(f"{BASE_DIR} = " f"os.path.dirname(os.path.abspath(__file__))") self._write(f"{IMAGE_PATH} = " @@ -1227,7 +1227,7 @@ def _load_image(self, img: bpy.types.Image, img_var: str) -> None: f"({IMAGE_PATH}, check_existing = True)") # copy image settings - self._write(f"#set image settings") + self._write(f"# Set image settings") # source source = enum_to_py_str(img.source) @@ -1415,7 +1415,7 @@ def _set_parents(self, node_tree: NodeTree) -> None: for node in node_tree.nodes: if node is not None and node.parent is not None: if not parent_comment: - self._write(f"#Set parents") + self._write(f"# Set parents") parent_comment = True node_var = self._node_vars[node] parent_var = self._node_vars[node.parent] @@ -1430,7 +1430,7 @@ def _set_locations(self, node_tree: NodeTree) -> None: node_tree (NodeTree): node tree we're obtaining nodes from """ - self._write(f"#Set locations") + self._write(f"# Set locations") for node in node_tree.nodes: node_var = self._node_vars[node] self._write(f"{node_var}.location " @@ -1447,7 +1447,7 @@ def _set_dimensions(self, node_tree: NodeTree) -> None: if not self._should_set_dimensions: return - self._write(f"#Set dimensions") + self._write(f"# Set dimensions") for node in node_tree.nodes: node_var = self._node_vars[node] self._write(f"{node_var}.width, {node_var}.height " @@ -1466,7 +1466,7 @@ def _init_links(self, node_tree: NodeTree) -> None: links = node_tree.links if links: - self._write(f"#initialize {nt_var} links") + self._write(f"# Initialize {nt_var} links\n") if hasattr(links[0], "multi_input_sort_id"): # generate links in the correct order for multi input sockets links = sorted(links, key=lambda link: link.multi_input_sort_id) @@ -1495,7 +1495,7 @@ def _init_links(self, node_tree: NodeTree) -> None: output_idx = i break - self._write(f"#{in_node_var}.{input_socket.name} " + self._write(f"# {in_node_var}.{input_socket.name} " f"-> {out_node_var}.{output_socket.name}") self._write(f"{nt_var}.links.new({in_node_var}" f".outputs[{input_idx}], " diff --git a/NodeToPython/shader/operator.py b/NodeToPython/shader/operator.py index 3515830..fa60b03 100644 --- a/NodeToPython/shader/operator.py +++ b/NodeToPython/shader/operator.py @@ -47,7 +47,7 @@ def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, if ntp_node_tree.node_tree == self._base_node_tree: self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree") - self._write(f"#start with a clean node tree") + self._write(f"# Start with a clean node tree") self._write(f"for {NODE} in {ntp_node_tree.var}.nodes:") self._write(f"{ntp_node_tree.var}.nodes.remove({NODE})", self._inner_indent_level + 1) else: @@ -108,7 +108,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: self._tree_interface_settings(ntp_nt) #initialize nodes - self._write(f"#initialize {nt_var} nodes") + self._write(f"# Initialize {nt_var} nodes") for node in node_tree.nodes: self._process_node(node, ntp_nt) From 35dac58a47d204cbc947bc509789f97748d08cd8 Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Sat, 16 Aug 2025 01:31:37 +0200 Subject: [PATCH 282/286] Improve newlines --- NodeToPython/compositor/operator.py | 7 ++++++- NodeToPython/geometry/operator.py | 10 ++++++---- NodeToPython/ntp_operator.py | 17 +++++++++-------- NodeToPython/shader/operator.py | 8 ++++---- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index 381144d..45dd05e 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -55,6 +55,7 @@ def _create_scene(self, indent_level: int): self._write(f"{SCENE}.name = {END_NAME}", indent_level) self._write(f"{SCENE}.use_fake_user = True", indent_level) self._write(f"bpy.context.window.scene = {SCENE}", indent_level) + self._write("", 0) def _initialize_compositor_node_tree(self, ntp_nt, nt_name): #initialize node group @@ -63,6 +64,7 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name): if ntp_nt.node_tree == self._base_node_tree and self.is_scene: self._write(f"{ntp_nt.var} = {SCENE}.node_tree") + self._write("", 0) self._write(f"# Start with a clean node tree") self._write(f"for {NODE} in {ntp_nt.var}.nodes:") self._write(f"{ntp_nt.var}.nodes.remove({NODE})", self._inner_indent_level + 1) @@ -187,7 +189,7 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): self._tree_interface_settings(ntp_nt) #initialize nodes - self._write(f"# Initialize {nt_var} nodes") + self._write(f"# Initialize {nt_var} nodes\n") for node in node_tree.nodes: self._process_node(node, ntp_nt) @@ -201,6 +203,8 @@ def _process_node_tree(self, node_tree: CompositorNodeTree): self._init_links(node_tree) self._write(f"return {nt_var}\n") + if self._mode == 'SCRIPT': + self._write("", 0) #create node group self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer_indent_level) @@ -249,6 +253,7 @@ def execute(self, context): self._create_scene(2) elif self._mode == 'SCRIPT': self._create_scene(0) + self._write("", 0) node_trees_to_process = self._topological_sort(self._base_node_tree) diff --git a/NodeToPython/geometry/operator.py b/NodeToPython/geometry/operator.py index 9f900fd..8fecd7e 100644 --- a/NodeToPython/geometry/operator.py +++ b/NodeToPython/geometry/operator.py @@ -78,7 +78,9 @@ def _process_zones(self, zone_inputs: list[GeometryNode]) -> None: #must set defaults after paired with output self._set_socket_defaults(zone_input) self._set_socket_defaults(zone_output) - self._write("", 0) + + if zone_inputs: + self._write("", 0) if bpy.app.version >= (4, 0, 0): def _set_geo_tree_properties(self, node_tree: GeometryNodeTree) -> None: @@ -119,8 +121,8 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: self._write(f"def {nt_var}_node_group():", self._outer_indent_level) self._write(f'"""Initialize {nt_var} node group"""') self._write(f"{nt_var} = bpy.data.node_groups.new(" - f"type = \'GeometryNodeTree\', " - f"name = {str_to_py_str(node_tree.name)})\n") + f"type=\'GeometryNodeTree\', " + f"name={str_to_py_str(node_tree.name)})\n") self._set_node_tree_properties(node_tree) if bpy.app.version >= (4, 0, 0): @@ -147,7 +149,7 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None: #create connections self._init_links(node_tree) - self._write(f"return {nt_var}\n") + self._write(f"return {nt_var}\n\n") #create node group self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer_indent_level) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index f18a1db..8f3d97d 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -669,8 +669,8 @@ def _create_socket(self, socket: NodeTreeInterfaceSocket, self._write(f"{socket_var} = " f"{ntp_nt.var}.interface.new_socket(" - f"name = {name}, in_out={in_out_enum}, " - f"socket_type = {socket_type}" + f"name={name}, in_out={in_out_enum}, " + f"socket_type={socket_type}" f"{optional_parent_str})") self._set_tree_socket_defaults(socket, socket_var) @@ -846,8 +846,6 @@ def _tree_interface_settings(self, ntp_nt: NTP_NodeTree) -> None: self._process_items(None, panel_dict, items_processed, ntp_nt) - self._write("", 0) - def _set_input_defaults(self, node: Node) -> None: """ Sets defaults for input sockets @@ -1420,7 +1418,8 @@ def _set_parents(self, node_tree: NodeTree) -> None: node_var = self._node_vars[node] parent_var = self._node_vars[node.parent] self._write(f"{node_var}.parent = {parent_var}") - self._write("", 0) + if parent_comment: + self._write("", 0) def _set_locations(self, node_tree: NodeTree) -> None: """ @@ -1435,7 +1434,8 @@ def _set_locations(self, node_tree: NodeTree) -> None: node_var = self._node_vars[node] self._write(f"{node_var}.location " f"= ({node.location.x}, {node.location.y})") - self._write("", 0) + if node_tree.nodes: + self._write("", 0) def _set_dimensions(self, node_tree: NodeTree) -> None: """ @@ -1452,7 +1452,8 @@ def _set_dimensions(self, node_tree: NodeTree) -> None: node_var = self._node_vars[node] self._write(f"{node_var}.width, {node_var}.height " f"= {node.width}, {node.height}") - self._write("", 0) + if node_tree.nodes: + self._write("", 0) def _init_links(self, node_tree: NodeTree) -> None: """ @@ -1504,6 +1505,7 @@ def _init_links(self, node_tree: NodeTree) -> None: for _func in self._write_after_links: _func() self._write_after_links = [] + self._write("", 0) def _set_node_tree_properties(self, node_tree: NodeTree) -> None: @@ -1517,7 +1519,6 @@ def _set_node_tree_properties(self, node_tree: NodeTree) -> None: if bpy.app.version >= (4, 3, 0): default_width = node_tree.default_group_node_width self._write(f"{nt_var}.default_group_node_width = {default_width}") - self._write("\n") def _hide_hidden_sockets(self, node: Node) -> None: """ diff --git a/NodeToPython/shader/operator.py b/NodeToPython/shader/operator.py index fa60b03..2a6342e 100644 --- a/NodeToPython/shader/operator.py +++ b/NodeToPython/shader/operator.py @@ -30,7 +30,7 @@ def __init__(self, *args, **kwargs): def _create_material(self, indent_level: int): self._write(f"{MAT_VAR} = bpy.data.materials.new(" f"name = {str_to_py_str(self.material_name)})", indent_level) - self._write(f"{MAT_VAR}.use_nodes = True", indent_level) + self._write(f"{MAT_VAR}.use_nodes = True\n\n", indent_level) def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, nt_name: str) -> None: @@ -46,7 +46,7 @@ def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree, self._write(f'"""Initialize {nt_name} node group"""') if ntp_node_tree.node_tree == self._base_node_tree: - self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree") + self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree\n") self._write(f"# Start with a clean node tree") self._write(f"for {NODE} in {ntp_node_tree.var}.nodes:") self._write(f"{ntp_node_tree.var}.nodes.remove({NODE})", self._inner_indent_level + 1) @@ -108,7 +108,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: self._tree_interface_settings(ntp_nt) #initialize nodes - self._write(f"# Initialize {nt_var} nodes") + self._write(f"# Initialize {nt_var} nodes\n") for node in node_tree.nodes: self._process_node(node, ntp_nt) @@ -121,7 +121,7 @@ def _process_node_tree(self, node_tree: ShaderNodeTree) -> None: #create connections self._init_links(node_tree) - self._write(f"return {nt_var}\n") + self._write(f"return {nt_var}\n\n") #create node group self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer_indent_level) From c10aecfb70ab9e1e35ac879082bad4a2f3e89144 Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Sat, 16 Aug 2025 01:51:36 +0200 Subject: [PATCH 283/286] Use "var is not None" instead of "var != None" --- NodeToPython/compositor/operator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeToPython/compositor/operator.py b/NodeToPython/compositor/operator.py index 45dd05e..e71ef13 100644 --- a/NodeToPython/compositor/operator.py +++ b/NodeToPython/compositor/operator.py @@ -39,12 +39,12 @@ def _create_scene(self, indent_level: int): self._write(f"{BASE_NAME} = {str_to_py_str(self.compositor_name)}", indent_level) self._write(f"{END_NAME} = {BASE_NAME}", indent_level) - self._write(f"if bpy.data.scenes.get({END_NAME}) != None:", indent_level) + self._write(f"if bpy.data.scenes.get({END_NAME}) is not None:", indent_level) self._write(f"{INDEX} = 1", indent_level + 1) self._write(f"{END_NAME} = {BASE_NAME} + f\".{{i:03d}}\"", indent_level + 1) - self._write(f"while bpy.data.scenes.get({END_NAME}) != None:", + self._write(f"while bpy.data.scenes.get({END_NAME}) is not None:", indent_level + 1) self._write(f"{END_NAME} = {BASE_NAME} + f\".{{{INDEX}:03d}}\"", From 0768e1db15dd3b374cd11bd7a6da08605cacf2cf Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Sat, 16 Aug 2025 03:11:52 +0200 Subject: [PATCH 284/286] Fix: Add dimensions value on interfaces Since Blender 4.5, Vectors can have a number of dimensions. The length of the default value array is affected by this, and the socket needs to be retrieved from the items tree again after changing dimensions, otherwise the length may no longer match. --- NodeToPython/ntp_operator.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/NodeToPython/ntp_operator.py b/NodeToPython/ntp_operator.py index 6299da7..827aca3 100644 --- a/NodeToPython/ntp_operator.py +++ b/NodeToPython/ntp_operator.py @@ -673,6 +673,14 @@ def _create_socket(self, socket: NodeTreeInterfaceSocket, f"socket_type = {socket_type}" f"{optional_parent_str})") + # vector dimensions + if hasattr(socket, "dimensions"): + dimensions = socket.dimensions + if socket.dimensions != 3: + self._write(f"{socket_var}.dimensions = {dimensions}") + self._write("# Get the socket again, as its default value could have been updated") + self._write(f"{socket_var} = {ntp_nt.var}.interface.items_tree[{socket_var}.index]") + self._set_tree_socket_defaults(socket, socket_var) # subtype From 10723659dc6cdc7c6c333a0acc88854bb932fe1b Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 Sep 2025 13:10:01 -0500 Subject: [PATCH 285/286] docs: add PiOverFour to contributors list --- docs/CONTRIBUTORS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/CONTRIBUTORS.md b/docs/CONTRIBUTORS.md index 94b05c4..dde6ac2 100644 --- a/docs/CONTRIBUTORS.md +++ b/docs/CONTRIBUTORS.md @@ -1,3 +1,4 @@ * [Brendan Parmer](https://github.com/BrendanParmer) * [Carlsu](https://github.com/carls3d) -* [atticus-lv](https://github.com/atticus-lv) \ No newline at end of file +* [atticus-lv](https://github.com/atticus-lv) +* [PiOverFour](https://github.com/PiOverFour) \ No newline at end of file From 2fbad123c4367648899b56e88b74aa41ea6c5035 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Sat, 20 Sep 2025 14:26:08 -0500 Subject: [PATCH 286/286] other: version bump to 3.5.1 --- NodeToPython/__init__.py | 2 +- NodeToPython/blender_manifest.toml | 2 +- docs/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NodeToPython/__init__.py b/NodeToPython/__init__.py index 8d70c10..04b301c 100644 --- a/NodeToPython/__init__.py +++ b/NodeToPython/__init__.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Blender node groups to a Python add-on!", "author": "Brendan Parmer", - "version": (3, 4, 0), + "version": (3, 5, 1), "blender": (3, 0, 0), "location": "Node", "category": "Node", diff --git a/NodeToPython/blender_manifest.toml b/NodeToPython/blender_manifest.toml index 3acbbac..5e2c82e 100644 --- a/NodeToPython/blender_manifest.toml +++ b/NodeToPython/blender_manifest.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "node_to_python" -version = "3.5.0" +version = "3.5.1" name = "Node To Python" tagline = "Turn node groups into Python code" maintainer = "Brendan Parmer " diff --git a/docs/README.md b/docs/README.md index 6cd7874..3248a1f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ Blender's node-based editors are powerful, yet accessible tools, and I wanted to * interfacing with other parts of the software or properties of an object ## Supported Versions -NodeToPython v3.5.0 is supported for Blender 3.0 - 4.5 on Windows, macOS, and Linux +NodeToPython v3.5.1 is supported for Blender 3.0 - 4.5 on Windows, macOS, and Linux * Some work is required to update NodeToPython for each Blender version, so experimental versions may not work properly and may even crash. * New nodes, updated settings, and new node tree features require development to support. * NodeToPython updates for new Blender versions usually doesn't start until the Beta phase of the release cycle

tiVN%?~{uM(wI4c?^JT(*f(?LX3h3*AG# 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%0Avc=fuqOMYd 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�h4DBEL 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

%0tdE_0a`n$Vz~V?teBoB`iLVoY?`u7$EchX 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

Xa(O&L2wL*|01Pkmun855YB5WBAQLn%l- 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%0AOZt7hKO&*TR_73Ov@35TGT%OjTILylJvnL) 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