From a1c1aa4f9ec54525a9b37e211cc1512f8e1cb747 Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 22 Mar 2026 08:42:30 +0100 Subject: fix(cnn_v3): blender_export fallback socket name aliases for Shadow etc. --- cnn_v3/training/blender_export.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'cnn_v3/training/blender_export.py') 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}") -- cgit v1.2.3