Skip to content

Commit f62b268

Browse files
committed
feat: new logic for curve nodes
1 parent ccffe0a commit f62b268

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

node_to_python.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@
129129
"GeometryNodeVolumeToMesh" : ["resolution_mode"]
130130
}
131131

132+
curve_nodes = {'ShaderNodeFloatCurve',
133+
'ShaderNodeVectorCurve',
134+
'ShaderNodeRGBCurve'}
135+
132136
class NodeToPython(bpy.types.Operator):
133137
bl_idname = "object.node_to_python"
134138
bl_label = "Node to Python"
@@ -283,6 +287,47 @@ def process_node_group(node_group, level):
283287
r, g, b, a = col[0], col[1], col[2], col[3]
284288
file.write((f"{inner}{node_name}_cre_{i}.color = "
285289
f"({r}, {g}, {b}, {a})\n\n"))
290+
elif node.bl_idname in curve_nodes:
291+
mapping = f"{inner}{node_name}.mapping"
292+
293+
extend = f"\'{node.mapping.extend}\'"
294+
file.write(f"{mapping}.extend = {extend}\n")
295+
tone = f"\'{node.mapping.tone}\'"
296+
file.write(f"{mapping}.tone = {tone}\n")
297+
298+
b_lvl = node.mapping.black_level
299+
b_lvl_str = f"({b_lvl[0]}, {b_lvl[1]}, {b_lvl[2]})"
300+
file.write((f"{mapping}.black_level = {b_lvl_str}\n"))
301+
w_lvl = node.mapping.white_level
302+
w_lvl_str = f"({w_lvl[0]}, {w_lvl[1]}, {w_lvl[2]})"
303+
file.write((f"{mapping}.white_level = {w_lvl_str}\n"))
304+
305+
min_x = node.mapping.clip_min_x
306+
file.write(f"{mapping}.clip_min_x = {min_x}\n")
307+
min_y = node.mapping.clip_min_y
308+
file.write(f"{mapping}.clip_min_y = {min_y}\n")
309+
max_x = node.mapping.clip_max_x
310+
file.write(f"{mapping}.clip_max_x = {max_x}\n")
311+
max_y = node.mapping.clip_max_y
312+
file.write(f"{mapping}.clip_max_y = {max_y}\n")
313+
314+
use_clip = node.mapping.use_clip
315+
file.write(f"{mapping}.use_clip = {use_clip}\n")
316+
317+
for i, curve in enumerate(node.mapping.curves):
318+
curve_i = f"{node_name}_curve_{i}"
319+
file.write((f"{inner}{curve_i} = "
320+
f"{node_name}.mapping.curves[{i}]\n"))
321+
for j, point in enumerate(curve.points):
322+
point_j = f"{inner}{curve_i}_point_{j}"
323+
324+
loc = point.location
325+
file.write((f"{point_j} = "
326+
f"{curve_i}.points.new"
327+
f"({loc[0]}, {loc[1]})\n"))
328+
329+
handle = f"\'{point.handle_type}\'"
330+
file.write(f"{point_j}.handle_type = {handle}\n")
286331

287332
for i, input in enumerate(node.inputs):
288333
if input.bl_idname not in dont_set_defaults:

0 commit comments

Comments
 (0)