summaryrefslogtreecommitdiff
path: root/cnn_v3
diff options
context:
space:
mode:
Diffstat (limited to 'cnn_v3')
-rw-r--r--cnn_v3/training/blender_export.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/cnn_v3/training/blender_export.py b/cnn_v3/training/blender_export.py
index 16fe28f..08f40ef 100644
--- a/cnn_v3/training/blender_export.py
+++ b/cnn_v3/training/blender_export.py
@@ -183,15 +183,23 @@ def configure_compositor(args):
for _, layer_name, _ in PASS_SOCKETS[1:]:
slots.new(layer_name)
+ # Socket name aliases across Blender versions.
+ SOCKET_ALIASES = {
+ "Shadow": ["Shadow Catcher", "ShadowCatcher"],
+ "Diffuse Color":["DiffCol", "Diffuse"],
+ "Depth": ["Z"],
+ "Object Index": ["IndexOB", "Object Index"],
+ "Alpha": ["Alpha"],
+ }
+
# Link each render-layer output to the file output slot by name.
for socket_name, layer_name, _ in PASS_SOCKETS:
- src = rl_node.outputs.get(socket_name)
+ candidates = [socket_name] + SOCKET_ALIASES.get(socket_name, [])
+ src = next((rl_node.outputs.get(n) for n in candidates if rl_node.outputs.get(n)), None)
dst = out_node.inputs.get(layer_name)
if src and dst:
tree.links.new(src, dst)
else:
- # TODO: socket names vary by Blender version / blend file (e.g. "Shadow" may be
- # "Shadow Catcher" or absent). Add a fallback name-matching step if needed.
print(f"[blender_export] WARNING: cannot link '{socket_name}' → '{layer_name}'. Skipping.")
print(f"[blender_export] Compositor configured. Output → {args.output}")