|
129 | 129 | "GeometryNodeVolumeToMesh" : ["resolution_mode"] |
130 | 130 | } |
131 | 131 |
|
| 132 | +curve_nodes = {'ShaderNodeFloatCurve', |
| 133 | + 'ShaderNodeVectorCurve', |
| 134 | + 'ShaderNodeRGBCurve'} |
| 135 | + |
132 | 136 | class NodeToPython(bpy.types.Operator): |
133 | 137 | bl_idname = "object.node_to_python" |
134 | 138 | bl_label = "Node to Python" |
@@ -283,6 +287,47 @@ def process_node_group(node_group, level): |
283 | 287 | r, g, b, a = col[0], col[1], col[2], col[3] |
284 | 288 | file.write((f"{inner}{node_name}_cre_{i}.color = " |
285 | 289 | 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") |
286 | 331 |
|
287 | 332 | for i, input in enumerate(node.inputs): |
288 | 333 | if input.bl_idname not in dont_set_defaults: |
|
0 commit comments