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:
+25
-15
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user