OP-3021 - refactor CreateWritePrerender

This commit is contained in:
Petr Kalis 2022-04-14 17:20:50 +02:00
parent 0b423fc6b5
commit 6bf92ef0f6
4 changed files with 6 additions and 92 deletions

View file

View file

@ -1,12 +1,10 @@
from collections import OrderedDict
import nuke
from openpype.hosts.nuke.api import plugin
from openpype.hosts.nuke.api.lib import create_write_node
from openpype.hosts.nuke.plugins.create import create_write_render
class CreateWritePrerender(plugin.OpenPypeCreator):
class CreateWritePrerender(create_write_render.CreateWriteRender):
# change this to template preset
name = "WritePrerender"
label = "Create Write Prerender"
@ -19,85 +17,7 @@ class CreateWritePrerender(plugin.OpenPypeCreator):
def __init__(self, *args, **kwargs):
super(CreateWritePrerender, self).__init__(*args, **kwargs)
data = OrderedDict()
data["family"] = self.family
data["families"] = self.n_class
for k, v in self.data.items():
if k not in data.keys():
data.update({k: v})
self.data = data
self.nodes = nuke.selectedNodes()
self.log.debug("_ self.data: '{}'".format(self.data))
def process(self):
inputs = []
outputs = []
instance = nuke.toNode(self.data["subset"])
selected_node = None
# use selection
if (self.options or {}).get("useSelection"):
nodes = self.nodes
if not (len(nodes) < 2):
msg = ("Select only one node. The node "
"you want to connect to, "
"or tick off `Use selection`")
self.log.error(msg)
nuke.message(msg)
if len(nodes) == 0:
msg = (
"No nodes selected. Please select a single node to connect"
" to or tick off `Use selection`"
)
self.log.error(msg)
nuke.message(msg)
selected_node = nodes[0]
inputs = [selected_node]
outputs = selected_node.dependent()
if instance:
if (instance.name() in selected_node.name()):
selected_node = instance.dependencies()[0]
# if node already exist
if instance:
# collect input / outputs
inputs = instance.dependencies()
outputs = instance.dependent()
selected_node = inputs[0]
# remove old one
nuke.delete(instance)
# recreate new
write_data = {
"nodeclass": self.n_class,
"families": [self.family],
"avalon": self.data
}
# add creator data
creator_data = {"creator": self.__class__.__name__}
self.data.update(creator_data)
write_data.update(creator_data)
if self.presets.get('fpath_template'):
self.log.info("Adding template path from preset")
write_data.update(
{"fpath_template": self.presets["fpath_template"]}
)
else:
self.log.info("Adding template path from plugin")
write_data.update({
"fpath_template": ("{work}/prerenders/nuke/{subset}"
"/{subset}.{frame}.{ext}")})
self.log.info("write_data: {}".format(write_data))
def _create_write_node(self, selected_node, inputs, outputs, write_data):
reviewable = self.presets.get("reviewable")
write_node = create_write_node(
self.data["subset"],
@ -107,15 +27,9 @@ class CreateWritePrerender(plugin.OpenPypeCreator):
review=reviewable,
linked_knobs=["channels", "___", "first", "last", "use_limit"])
# relinking to collected connections
for i, input in enumerate(inputs):
write_node.setInput(i, input)
write_node.autoplace()
for output in outputs:
output.setInput(0, write_node)
return write_node
def _modify_write_node(self, write_node):
# open group node
write_node.begin()
for n in nuke.allNodes():

View file

@ -17,7 +17,7 @@ class CreateWriteRender(plugin.OpenPypeCreator):
defaults = ["Main", "Mask"]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
super(CreateWriteRender, self).__init__(*args, **kwargs)
data = OrderedDict()