mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
connect custom write node script to the OP setting
This commit is contained in:
parent
65e5aa40cf
commit
4c4eeb29be
1 changed files with 78 additions and 21 deletions
|
|
@ -1,6 +1,11 @@
|
|||
""" OpenPype custom script for setting up write nodes for non-publish """
|
||||
import os
|
||||
import nuke
|
||||
from openpype.hosts.nuke.api.lib import set_node_knobs_from_settings
|
||||
import nukescripts
|
||||
from openpype.hosts.nuke.api.lib import (
|
||||
set_node_knobs_from_settings,
|
||||
get_nuke_imageio_settings
|
||||
)
|
||||
|
||||
|
||||
frame_padding = 5
|
||||
|
|
@ -53,24 +58,76 @@ knobs_setting = {
|
|||
}
|
||||
|
||||
|
||||
def main():
|
||||
write_selected_nodes = [
|
||||
s for s in nuke.selectedNodes() if s.Class() == "Write"]
|
||||
class WriteNodeKnobSettingPanel(nukescripts.PythonPanel):
|
||||
""" Write Node's Knobs Settings Panel """
|
||||
def __init__(self):
|
||||
nukescripts.PythonPanel.__init__(self, "Set Knobs Value(Write Node)")
|
||||
|
||||
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 for mapping the path
|
||||
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)
|
||||
knobs_value = self.get_node_knobs_override()
|
||||
# create knobs
|
||||
|
||||
self.typeKnob = nuke.Enumeration_Knob(
|
||||
'override_subsets', 'override subsets', knobs_value)
|
||||
# add knobs to panel
|
||||
self.addKnob(self.typeKnob)
|
||||
|
||||
def process(self):
|
||||
""" Process the panel values. """
|
||||
write_selected_nodes = [
|
||||
s for s in nuke.selectedNodes() if s.Class() == "Write"]
|
||||
|
||||
node_knobs = self.typeKnob.value()
|
||||
ext = None
|
||||
knobs = None
|
||||
if node_knobs:
|
||||
knobs = self.get_node_knobs_setting(node_knobs)
|
||||
if not knobs:
|
||||
nuke.message("No knobs value found in subset group..\nDefault setting will be used..") # noqa
|
||||
knobs = knobs_setting["knobs"]
|
||||
else:
|
||||
knobs = knobs_setting["knobs"]
|
||||
|
||||
for knob in knobs:
|
||||
if knob["name"] == "file_type":
|
||||
ext = knob["value"]
|
||||
for w in write_selected_nodes:
|
||||
# data for mapping the path
|
||||
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)
|
||||
|
||||
def get_node_knobs_setting(self, value):
|
||||
settings = [
|
||||
node for node in get_nuke_imageio_settings()["nodes"]["overrideNodes"]
|
||||
]
|
||||
if not settings:
|
||||
return
|
||||
for i, setting in enumerate(settings):
|
||||
if value in settings[i]["subsets"]:
|
||||
return settings[i]["knobs"]
|
||||
|
||||
def get_node_knobs_override(self):
|
||||
knobs_value = []
|
||||
settings = [
|
||||
node for node in get_nuke_imageio_settings()["nodes"]["overrideNodes"]
|
||||
]
|
||||
if not settings:
|
||||
return
|
||||
|
||||
for setting in settings:
|
||||
if setting["nukeNodeClass"] == "Write" and setting["subsets"]:
|
||||
for knob in setting["subsets"]:
|
||||
knobs_value.append(knob)
|
||||
return knobs_value
|
||||
|
||||
def main():
|
||||
p_ = WriteNodeKnobSettingPanel()
|
||||
if p_.showModalDialog():
|
||||
print(p_.process())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue