summaryrefslogtreecommitdiff
path: root/cnn_v3/training
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-22 09:00:43 +0100
committerskal <pascal.massimino@gmail.com>2026-03-22 09:00:43 +0100
commit90b53dacb460855d1efef95dbc15a078bf5aa4da (patch)
treeb659c37dc55e7b435baf5790eb4c0364ffc73dde /cnn_v3/training
parent3ced9452ed0786426fa42148cac0961fbcebea0e (diff)
fix(cnn_v3): blender_export Blender 5 compositor activation + document RenderLayer sockets
- Activate compositor in Blender 5.0+ by relying on compositing_node_group assignment (no use_nodes needed, avoids deprecation warning) - Document full CompositorNodeRLayers output socket list for Blender 5.0.1 - Clean up SOCKET_ALIASES to match confirmed socket names
Diffstat (limited to 'cnn_v3/training')
-rw-r--r--cnn_v3/training/blender_export.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/cnn_v3/training/blender_export.py b/cnn_v3/training/blender_export.py
index f8ca9f6..290a35a 100644
--- a/cnn_v3/training/blender_export.py
+++ b/cnn_v3/training/blender_export.py
@@ -87,6 +87,7 @@ def _get_compositor_tree(scene):
scene.compositing_node_group = bpy.data.node_groups.new(
name="Compositor", type="CompositorNodeTree"
)
+ # In Blender 5.0+, assigning compositing_node_group activates compositing.
return scene.compositing_node_group
if hasattr(scene, "node_tree"): # Blender <= 4.x
scene.use_nodes = True
@@ -136,6 +137,23 @@ def configure_scene(args):
return _discard_dir
+# Full CompositorNodeRLayers output socket list (Blender 5.0.1, queried via console):
+# ng = bpy.data.node_groups.new("T", "CompositorNodeTree")
+# rl = ng.nodes.new("CompositorNodeRLayers")
+# print([s.name for s in rl.outputs])
+# bpy.data.node_groups.remove(ng)
+#
+# ['Image', 'Alpha', 'Depth', 'Normal', 'UV', 'Vector', 'Position',
+# 'Deprecated', 'Deprecated',
+# 'Shadow', 'Ambient Occlusion',
+# 'Deprecated', 'Deprecated', 'Deprecated',
+# 'Object Index', 'Material Index', 'Mist', 'Emission', 'Environment',
+# 'Diffuse Direct', 'Diffuse Indirect', 'Diffuse Color',
+# 'Glossy Direct', 'Glossy Indirect', 'Glossy Color',
+# 'Transmission Direct', 'Transmission Indirect', 'Transmission Color',
+# 'Subsurface Direct', 'Subsurface Indirect', 'Subsurface Color']
+#
+# Mapping used here (socket name → EXR layer name → Blender 5+ type):
# (render-layer socket name, EXR layer name, Blender 5+ socket type)
PASS_SOCKETS = [
("Image", "Combined", "RGBA"), # beauty / target
@@ -185,11 +203,11 @@ def configure_compositor(args):
# 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"],
+ "Shadow": ["Shadow Catcher", "ShadowCatcher"],
+ "Diffuse Color": ["DiffCol", "Diffuse"],
+ "Depth": ["Z"],
+ "Object Index": ["IndexOB"],
+ "Alpha": ["Alpha"],
}
# Link each render-layer output to the file output slot by name.