Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0b74b8b
docs: added info about extensions platform to installation instructions
BrendanParmer Sep 7, 2024
623c7c2
fix: node socket interface menu is now correctly handle
atticus-lv Nov 4, 2024
056aa52
Merge pull request #133 from atticus-lv/fix-node-socket-interface-menu
BrendanParmer Nov 17, 2024
4f443db
fix: no menu linked cases, functions only executed per tree, minor cl…
BrendanParmer Nov 17, 2024
511447f
docs: add contributors file
BrendanParmer Nov 17, 2024
c2b3a0d
Merge pull request #135 from BrendanParmer/MenuSocketFixes
BrendanParmer Nov 17, 2024
a3a2603
feat: bump NTP version
BrendanParmer Nov 17, 2024
49b4a82
Merge remote-tracking branch 'origin/main' into v3.3
BrendanParmer Nov 17, 2024
1a520d1
other: version bumps
BrendanParmer Nov 17, 2024
4269432
fix: bpy_prop_array import location change
BrendanParmer Nov 17, 2024
abb7b47
feat: default group node width
BrendanParmer Nov 17, 2024
380d60c
feat: warning propagation
BrendanParmer Nov 17, 2024
30c4736
feat: auto-generated 4.3 node_settings
BrendanParmer Nov 17, 2024
3de5cf5
feat: whitepoint color balance correction method
BrendanParmer Nov 17, 2024
3feabb6
tools: bpy docs download stability
BrendanParmer Nov 17, 2024
2352763
tools: add foreach item types, organization
BrendanParmer Nov 17, 2024
10f936b
feat: foreach element zones
BrendanParmer Nov 17, 2024
c93efdd
feat: clean up zone processing
BrendanParmer Nov 23, 2024
5f70ad8
fix: import bpy_prop_array weirdness
BrendanParmer Nov 23, 2024
4b86088
feat: don't explicitly set warning propagation if default
BrendanParmer Nov 23, 2024
c128afa
refactor: more zone cleanup
BrendanParmer Nov 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* [Brendan Parmer](https://github.com/BrendanParmer)
* [Carlsu](https://github.com/carls3d)
* [atticus-lv](https://github.com/atticus-lv)
2 changes: 1 addition & 1 deletion NodeToPython/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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, 3, 0),
"blender": (3, 0, 0),
"location": "Node",
"category": "Node",
Expand Down
4 changes: 2 additions & 2 deletions NodeToPython/blender_manifest.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
schema_version = "1.0.0"

id = "node_to_python"
version = "3.2.1"
version = "3.3.0"
name = "Node To Python"
tagline = "Turn node groups into Python code"
maintainer = "Brendan Parmer <brendanparmer+nodetopython@gmail.com>"
Expand All @@ -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",
Expand Down
13 changes: 12 additions & 1 deletion NodeToPython/compositor/operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)),
Expand All @@ -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)
Expand Down
14 changes: 10 additions & 4 deletions NodeToPython/geometry/node_tree.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
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

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):
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.zone_inputs["GeometryNodeForeachGeometryElementInput"] = []
16 changes: 5 additions & 11 deletions NodeToPython/geometry/operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +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 == 'GeometryNodeSimulationInput':
ntp_nt.sim_inputs.append(node)

elif node.bl_idname == 'GeometryNodeRepeatInput':
ntp_nt.repeat_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)

if node.bl_idname not in {'GeometryNodeSimulationInput',
'GeometryNodeRepeatInput'}:
if node.bl_idname not in ntp_nt.zone_inputs:
self._set_socket_defaults(node)

if bpy.app.version >= (3, 6, 0):
Expand Down Expand Up @@ -139,10 +135,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)
for zone_list in ntp_nt.zone_inputs.values():
self._process_zones(zone_list)

#set look of nodes
self._set_parents(node_tree)
Expand Down
Loading