mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
refactor custom write node script
This commit is contained in:
parent
11db326cc5
commit
27ae0d9f20
3 changed files with 82 additions and 63 deletions
81
openpype/hosts/nuke/startup/custom_write_node.py
Normal file
81
openpype/hosts/nuke/startup/custom_write_node.py
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
import os
|
||||
import nuke
|
||||
from pathlib import Path
|
||||
from openpype.hosts.nuke.api.lib import set_node_knobs_from_settings
|
||||
|
||||
|
||||
frame_padding = 5
|
||||
temp_rendering_path_template = (
|
||||
"{work}/renders/nuke/{subset}/{subset}.{frame}.{ext}")
|
||||
|
||||
knobs_setting = {
|
||||
"knobs": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "file_type",
|
||||
"value": "exr"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "datatype",
|
||||
"value": "16 bit half"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "compression",
|
||||
"value": "Zip (1 scanline)"
|
||||
},
|
||||
{
|
||||
"type": "bool",
|
||||
"name": "autocrop",
|
||||
"value": True
|
||||
},
|
||||
{
|
||||
"type": "color_gui",
|
||||
"name": "tile_color",
|
||||
"value": [
|
||||
186,
|
||||
35,
|
||||
35,
|
||||
255
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "channels",
|
||||
"value": "rgb"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "colorspace",
|
||||
"value": "linear"
|
||||
},
|
||||
{
|
||||
"type": "bool",
|
||||
"name": "create_directories",
|
||||
"value": True
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
def main():
|
||||
write_selected_nodes = [
|
||||
s for s in nuke.selectedNodes() if s.Class() == "Write"]
|
||||
|
||||
ext = None
|
||||
knobs = knobs_setting["knobs"]
|
||||
for knob in knobs:
|
||||
if knob["name"] == "file_type":
|
||||
ext = knob["value"]
|
||||
for w in write_selected_nodes:
|
||||
data = {
|
||||
"work": os.getenv("AVALON_WORKDIR"),
|
||||
"subset": w["name"].value(),
|
||||
"frame": "#" * frame_padding,
|
||||
"ext": ext
|
||||
}
|
||||
file_path = temp_rendering_path_template.format(**data)
|
||||
file_path = file_path.replace("\\", "/")
|
||||
w["file"].setValue(file_path)
|
||||
set_node_knobs_from_settings(w, knobs)
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
import os
|
||||
import nuke
|
||||
from openpype.client import get_asset_by_name, get_project
|
||||
from openpype.pipeline import Anatomy, legacy_io
|
||||
from openpype.pipeline.template_data import get_template_data
|
||||
from openpype.hosts.nuke.api.lib import (
|
||||
get_imageio_node_setting,
|
||||
set_node_knobs_from_settings)
|
||||
|
||||
|
||||
def main():
|
||||
project_name = legacy_io.Session["AVALON_PROJECT"]
|
||||
asset_name = legacy_io.Session["AVALON_ASSET"]
|
||||
task_name = legacy_io.Session["AVALON_TASK"]
|
||||
# fetch asset docs
|
||||
asset_doc = get_asset_by_name(project_name, asset_name)
|
||||
|
||||
# get task type to fill the timer tag
|
||||
# template = "{root[work]}/{project[name]}/{hierarchy}/{asset}"
|
||||
anatomy = Anatomy(project_name)
|
||||
project_doc = get_project(project_name)
|
||||
template_data = get_template_data(project_doc, asset_doc)
|
||||
template_data["root"] = anatomy.roots
|
||||
template_data["task"] = {"name": task_name}
|
||||
|
||||
padding = int(
|
||||
anatomy.templates["render"]["frame_padding"]
|
||||
)
|
||||
|
||||
node_settings = get_imageio_node_setting(
|
||||
"Write", "CreateWriteRender", subset=None)
|
||||
|
||||
ext = None
|
||||
for knob in node_settings["knobs"]:
|
||||
if knob["name"] == "file_type":
|
||||
ext = knob["value"]
|
||||
data = {
|
||||
"asset": asset_name,
|
||||
"task": task_name,
|
||||
"subset": "non_publish_render",
|
||||
"frame": "#" * padding,
|
||||
"ext": ext
|
||||
}
|
||||
|
||||
write_selected_nodes = [
|
||||
s for s in nuke.selectedNodes() if s.Class() == "Write"]
|
||||
|
||||
for i in range(len(write_selected_nodes)):
|
||||
data.update({"version": i})
|
||||
data.update(template_data)
|
||||
|
||||
anatomy_filled = anatomy.format(data)
|
||||
folder = anatomy_filled["work"]["folder"]
|
||||
render_folder = os.path.join(folder, "render_no_publish")
|
||||
filename = anatomy_filled["render"]["file"]
|
||||
file_path = os.path.join(render_folder, filename)
|
||||
file_path = file_path.replace("\\", "/")
|
||||
|
||||
knobs = node_settings["knobs"]
|
||||
for w in write_selected_nodes:
|
||||
w["file"].setValue(file_path)
|
||||
set_node_knobs_from_settings(w, knobs)
|
||||
|
|
@ -227,7 +227,7 @@
|
|||
"type": "action",
|
||||
"sourcetype": "python",
|
||||
"title": "Set non publish output for Write Node",
|
||||
"command": "from openpype.hosts.nuke.startup.ops_write_node_no_publish import main;main();",
|
||||
"command": "from openpype.hosts.nuke.startup.custom_write_node import main;main();",
|
||||
"tooltip": "Open the OpenPype Nuke user doc page"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue