summaryrefslogtreecommitdiff
path: root/cnn_v3/training
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-22 08:42:30 +0100
committerskal <pascal.massimino@gmail.com>2026-03-22 08:42:30 +0100
commita1c1aa4f9ec54525a9b37e211cc1512f8e1cb747 (patch)
treeed1409684a247696cc12168c08b539ff96ef5214 /cnn_v3/training
parente168fecfc2035f0158417c4bbe7fc49109d05a5d (diff)
fix(cnn_v3): blender_export fallback socket name aliases for Shadow etc.
Diffstat (limited to 'cnn_v3/training')
-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}")