Fix file output base path

1.7.1

- fix: file output base path depending on file format
- fix: problem when connecting render layers
This commit is contained in:
pullusb
2024-04-17 14:37:44 +02:00
parent 4627b50248
commit 16a4014da9
5 changed files with 59 additions and 29 deletions
+25 -15
View File
@@ -103,18 +103,19 @@ def connect_render_layer(rlayer, ng=None, out=None, frame=None):
ng.node_tree = ngroup
ng.name = ngroup.name
ng_in = fn.create_node('NodeGroupInput', tree=ngroup, location=(-600,0))
ng_out = fn.create_node('NodeGroupOutput', tree=ngroup, location=(600,0))
else:
ngroup = ng.node_tree
ng_in = ngroup.nodes.get('Group Input')
ng_out = ngroup.nodes.get('Group Output')
if not (ng_in := ngroup.nodes.get('Group Input')):
ng_in = fn.create_node('NodeGroupInput', tree=ngroup, location=(-600,0))
if not (ng_out := ngroup.nodes.get('Group Output')):
ng_out = fn.create_node('NodeGroupOutput', tree=ngroup, location=(600,0))
# Connect rlayer to nodegroup
if not rlayer.outputs['Image'].is_linked:
sockin = ng.inputs.get(vl_name)
if not sockin:
if not sockin:
if bpy.app.version < (4,0,0):
sockin = ng.node_tree.inputs.new('NodeSocketColor', vl_name)
else:
@@ -127,14 +128,19 @@ def connect_render_layer(rlayer, ng=None, out=None, frame=None):
# rl_nodes = [n for n in nodes if n.type == 'R_LAYERS' and n.layer != 'View Layer' and n.parent == frame]
# auto clean : if an input exists but is not linked and name not exists in rlayers of current frame
for s in reversed(ng.inputs):
if not s.is_linked: # and not any(x.layer == s.name for x in rl_nodes)
print(f'removing grp unlinked input {s.name}')
# ng.inputs.remove(s)
if bpy.app.version < (4,0,0):
ng.node_tree.inputs.remove(s)
else:
ng.node_tree.interface.items_tree.remove(s)
if bpy.app.version < (4,0,0):
for s in reversed(ng.inputs):
if not s.is_linked: # and not any(x.layer == s.name for x in rl_nodes)
print(f'Removing unlinked input {s.name}')
ng.inputs.remove(s)
else:
g_inputs = [s for s in ngroup.interface.items_tree if s.in_out == 'INPUT']
# g_outputs = [s for s in ngroup.interface.items_tree if s.in_out == 'OUTPUT']
for i in range(len(ng.inputs))[::-1]:
if not ng.inputs[i].is_linked:
print(f'Removing unlinked input {ng.inputs[i].name}')
ngroup.interface.remove(g_inputs[i])
## get nodes from linked NG inputs ??? maybe more clear...
# rl_nodes = [s.links[0].from_node for s in ng.inputs if s.links and s.links[0].from_node and s.links[0].from_node.type == 'R_LAYERS']
@@ -228,7 +234,11 @@ def connect_render_layer(rlayer, ng=None, out=None, frame=None):
fn.set_file_output_format(out)
out.name = out_name
out.parent = frame
out.base_path = f'//render/{bpy.path.clean_name(obname)}'
out_base = {bpy.path.clean_name(obname)}
if out.format.file_format == 'OPEN_EXR_MULTILAYER':
out.base_path = f'//render/{out_base}/{out_base}_'
else:
out.base_path = f'//render/{out_base}'
## out_input = out.inputs.get(slot_name) # ok for non-numbered outputs