add env variable and prefs for tech passes split, and allow customization ofr tech passes split in popup
This commit is contained in:
@@ -282,8 +282,8 @@ class RT_OT_conform_collection_hierarchy(Operator):
|
||||
for _, v in affected_items_dict.items():
|
||||
for item, attr_list in v.items():
|
||||
line = f'{item.name} : {", ".join(attr_list)}'
|
||||
print(line)
|
||||
message.append(line)
|
||||
print(line)
|
||||
message.append(line)
|
||||
|
||||
fn.show_message_box(
|
||||
message=message,
|
||||
|
||||
@@ -7,9 +7,6 @@ from bpy.props import (StringProperty,
|
||||
EnumProperty,
|
||||
CollectionProperty)
|
||||
|
||||
from ..constant import TECH_PASS_KEYWORDS
|
||||
|
||||
|
||||
class RT_OT_outputs_search_and_replace(bpy.types.Operator):
|
||||
bl_idname = "rt.outputs_search_and_replace"
|
||||
bl_label = "Search And Replace Outputs Paths"
|
||||
|
||||
@@ -122,6 +122,7 @@ class RT_PG_selectable_prop(bpy.types.PropertyGroup):
|
||||
socket_name: StringProperty(name="Source socket Name") # Source socket name as reference
|
||||
select: BoolProperty(name="Selected", default=True)
|
||||
is_linked: BoolProperty(name="Linked", default=False)
|
||||
is_tech_pass: BoolProperty(name="Tech Pass", default=False)
|
||||
# is_valid: BoolProperty(name="Valid", default=True)
|
||||
|
||||
## Specific to render layer nodes
|
||||
@@ -337,6 +338,14 @@ class RT_OT_create_output_layers(bpy.types.Operator):
|
||||
# self.blend_name = Path(self.blend_name).stem
|
||||
# self.version = fn.get_rightmost_number_in_string(self.blend_name)
|
||||
|
||||
## tech_passes
|
||||
prefs = fn.get_addon_prefs()
|
||||
tech_passes_names = prefs.tech_passes_names
|
||||
if prefs.use_env_technical_passes:
|
||||
tech_passes_names = os.getenv('RENDERTOOLBOX_TECH_PASSES', prefs.tech_passes_names)
|
||||
|
||||
tech_passes_names = [tp.strip().lower() for tp in tech_passes_names.split(',') if tp.strip()]
|
||||
|
||||
selected = [n for n in context.scene.node_tree.nodes if n.select and n.type != 'OUTPUT_FILE']
|
||||
if not selected:
|
||||
self.report({'ERROR'}, 'No render layer nodes selected')
|
||||
@@ -381,6 +390,10 @@ class RT_OT_create_output_layers(bpy.types.Operator):
|
||||
if o.is_linked:
|
||||
item.is_linked = True
|
||||
item.select = False
|
||||
|
||||
if item.socket_name.lower() in tech_passes_names:
|
||||
item.is_tech_pass = True
|
||||
|
||||
|
||||
## Assign default template values (Disabled for now)
|
||||
## TRIGGER update to firstly fill template slot/names
|
||||
@@ -401,7 +414,7 @@ class RT_OT_create_output_layers(bpy.types.Operator):
|
||||
self.scene_name = ref.scene.name
|
||||
self.view_layer_name = ref.layer
|
||||
self.final_base_path_template = ''
|
||||
return context.window_manager.invoke_props_dialog(self, width=500)
|
||||
return context.window_manager.invoke_props_dialog(self, width=530)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -483,8 +496,12 @@ Possible variables:
|
||||
col.prop(self, 'exr_codec')
|
||||
col.row().prop(self, 'color_depth', expand=True)
|
||||
col.prop(self, 'split_tech_passes')
|
||||
if self.split_tech_passes:
|
||||
col.prop(self, 'tech_exr_codec', text='Tech Passes Codec')
|
||||
|
||||
row = col.row()
|
||||
row.prop(self, 'tech_exr_codec', text='Tech Passes Codec')
|
||||
row.active = self.split_tech_passes
|
||||
# if self.split_tech_passes:
|
||||
# col.prop(self, 'tech_exr_codec', text='Tech Passes Codec')
|
||||
|
||||
search_row = layout.row()
|
||||
op = search_row.operator("rt.colprop_search_and_replace", icon='BORDERMOVE')
|
||||
@@ -520,6 +537,7 @@ Possible variables:
|
||||
col.label(text=display_node_name, icon='NODE_SEL')
|
||||
|
||||
row = col.row()
|
||||
row.active = item.select
|
||||
if item.is_linked:
|
||||
row.label(text='', icon='LINKED') # NODETREE
|
||||
else:
|
||||
@@ -529,7 +547,7 @@ Possible variables:
|
||||
display_name = item.socket_name
|
||||
if 'crypto' in display_name.lower():
|
||||
display_name = f'{display_name} -> 32bit output node'
|
||||
elif self.split_tech_passes and display_name.lower() in TECH_PASS_KEYWORDS:
|
||||
elif self.split_tech_passes and item.is_tech_pass:
|
||||
display_name = f'{display_name} -> Tech pass'
|
||||
|
||||
row.label(text=display_name)
|
||||
@@ -546,6 +564,9 @@ Possible variables:
|
||||
elif self.name_type == 'template':
|
||||
row.prop(item, 'name_from_template', text='')
|
||||
|
||||
if self.split_tech_passes:
|
||||
row.prop(item, 'is_tech_pass', text='')
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
# Build exclude dict from selection
|
||||
@@ -560,6 +581,8 @@ Possible variables:
|
||||
# elif item.socket_name != item.name:
|
||||
# remap_names[item.socket_name] = item.name
|
||||
|
||||
tech_pass_names = []
|
||||
|
||||
if len(self.socket_collection):
|
||||
for item in self.socket_collection:
|
||||
final_name = item.name
|
||||
@@ -580,6 +603,9 @@ Possible variables:
|
||||
remap_names.setdefault(item.node_name, {})[item.socket_name] = final_name
|
||||
# remap_names[item.socket_name] = final_name
|
||||
|
||||
if self.split_tech_passes and item.is_tech_pass:
|
||||
tech_pass_names.append(item.socket_name.lower())
|
||||
|
||||
## Handle default file format
|
||||
file_ext = self.file_format
|
||||
if self.file_format == 'NONE':
|
||||
@@ -598,14 +624,14 @@ Possible variables:
|
||||
'exr_codec' : self.tech_exr_codec,
|
||||
'color_depth' : '32',
|
||||
}
|
||||
|
||||
|
||||
scn = context.scene
|
||||
nodes = scn.node_tree.nodes
|
||||
selected = [n for n in nodes if n.select]
|
||||
outfile = next((n for n in selected if n.type == 'OUTPUT_FILE'), None)
|
||||
# Exclude output file from
|
||||
selected = [n for n in selected if n.type != 'OUTPUT_FILE']
|
||||
|
||||
|
||||
# fn.connect_to_file_output(selected, outfile)
|
||||
for n in selected:
|
||||
fn.connect_to_file_output(
|
||||
@@ -615,7 +641,7 @@ Possible variables:
|
||||
excludes=excludes,
|
||||
remap_names=remap_names,
|
||||
file_format=file_format,
|
||||
split_tech_passes=self.split_tech_passes,
|
||||
tech_pass_names=tech_pass_names,
|
||||
tech_file_format=tech_file_format,
|
||||
template=self.final_base_path_template)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user