mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Added an option to disable composite output
This commit is contained in:
parent
a0b18c91cd
commit
66cb5336d3
2 changed files with 25 additions and 8 deletions
|
|
@ -55,6 +55,14 @@ def get_renderer(settings):
|
|||
["renderer"])
|
||||
|
||||
|
||||
def get_compositing(settings):
|
||||
"""Get compositing from blender settings."""
|
||||
|
||||
return (settings["blender"]
|
||||
["RenderSettings"]
|
||||
["compositing"])
|
||||
|
||||
|
||||
def get_render_product(output_path, name, aov_sep):
|
||||
"""
|
||||
Generate the path to the render product. Blender interprets the `#`
|
||||
|
|
@ -184,7 +192,9 @@ def _create_aov_slot(name, aov_sep, slots, rpass_name, multi_exr, output_path):
|
|||
return slot, filepath
|
||||
|
||||
|
||||
def set_node_tree(output_path, render_product, name, aov_sep, ext, multilayer):
|
||||
def set_node_tree(
|
||||
output_path, render_product, name, aov_sep, ext, multilayer, compositing
|
||||
):
|
||||
# Set the scene to use the compositor node tree to render
|
||||
bpy.context.scene.use_nodes = True
|
||||
|
||||
|
|
@ -250,11 +260,12 @@ def set_node_tree(output_path, render_product, name, aov_sep, ext, multilayer):
|
|||
name, aov_sep, slots, pass_name, multi_exr, output_path)
|
||||
tree.links.new(render_layer_node.outputs["Image"], slot)
|
||||
|
||||
# Create a new socket for the composite output
|
||||
pass_name = "composite"
|
||||
comp_socket, filepath = _create_aov_slot(
|
||||
name, aov_sep, slots, pass_name, multi_exr, output_path)
|
||||
aov_file_products.append(("Composite", filepath))
|
||||
if compositing:
|
||||
# Create a new socket for the composite output
|
||||
pass_name = "composite"
|
||||
comp_socket, filepath = _create_aov_slot(
|
||||
name, aov_sep, slots, pass_name, multi_exr, output_path)
|
||||
aov_file_products.append(("Composite", filepath))
|
||||
|
||||
# For each active render pass, we add a new socket to the output node
|
||||
# and link it
|
||||
|
|
@ -278,7 +289,7 @@ def set_node_tree(output_path, render_product, name, aov_sep, ext, multilayer):
|
|||
tree.links.remove(link)
|
||||
|
||||
# If there's a composite node, we connect its input with the new output
|
||||
if composite_node:
|
||||
if compositing and composite_node:
|
||||
for link in tree.links:
|
||||
if link.to_node == composite_node:
|
||||
tree.links.new(link.from_socket, comp_socket)
|
||||
|
|
@ -321,6 +332,7 @@ def prepare_rendering(asset_group):
|
|||
ext = get_image_format(settings)
|
||||
multilayer = get_multilayer(settings)
|
||||
renderer = get_renderer(settings)
|
||||
compositing = get_compositing(settings)
|
||||
|
||||
set_render_format(ext, multilayer)
|
||||
bpy.context.scene.render.engine = renderer
|
||||
|
|
@ -330,7 +342,8 @@ def prepare_rendering(asset_group):
|
|||
|
||||
render_product = get_render_product(output_path, name, aov_sep)
|
||||
aov_file_product = set_node_tree(
|
||||
output_path, render_product, name, aov_sep, ext, multilayer)
|
||||
output_path, render_product, name, aov_sep,
|
||||
ext, multilayer, compositing)
|
||||
|
||||
# Clear the render filepath, so that the output is handled only by the
|
||||
# output node in the compositor.
|
||||
|
|
|
|||
|
|
@ -127,6 +127,9 @@ class RenderSettingsModel(BaseSettingsModel):
|
|||
title="Renderer",
|
||||
enum_resolver=renderers_enum
|
||||
)
|
||||
compositing: bool = SettingsField(
|
||||
title="Enable Compositing"
|
||||
)
|
||||
aov_list: list[str] = SettingsField(
|
||||
default_factory=list,
|
||||
enum_resolver=aov_list_enum,
|
||||
|
|
@ -149,6 +152,7 @@ DEFAULT_RENDER_SETTINGS = {
|
|||
"image_format": "exr",
|
||||
"multilayer_exr": True,
|
||||
"renderer": "CYCLES",
|
||||
"compositing": True,
|
||||
"aov_list": ["combined"],
|
||||
"custom_passes": []
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue