From a68f74a37b6b06f94ce754ca36abf0201744abda Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 7 Oct 2022 14:08:24 +0200 Subject: [PATCH] nuke: updating write creators --- .../plugins/create/create_write_prerender.py | 17 +++++++++-- .../plugins/create/create_write_render.py | 14 ++++++++- .../nuke/plugins/create/create_write_still.py | 29 +++++++++++++++---- 3 files changed, 51 insertions(+), 9 deletions(-) diff --git a/openpype/hosts/nuke/plugins/create/create_write_prerender.py b/openpype/hosts/nuke/plugins/create/create_write_prerender.py index 976b3261d9..1ce30379ad 100644 --- a/openpype/hosts/nuke/plugins/create/create_write_prerender.py +++ b/openpype/hosts/nuke/plugins/create/create_write_prerender.py @@ -22,7 +22,11 @@ class CreateWritePrerender(napi.NukeWriteCreator): def get_pre_create_attr_defs(self): attr_defs = [ - BoolDef("use_selection", label="Use selection"), + BoolDef( + "use_selection", + default=True, + label="Use selection" + ), self._get_render_target_enum() ] return attr_defs @@ -98,11 +102,20 @@ class CreateWritePrerender(napi.NukeWriteCreator): self._add_frame_range_limit(created_node) - self.integrate_links(created_node, outputs=False) + self.integrate_links(created_node, outputs=True) return created_node def create(self, subset_name, instance_data, pre_create_data): + # pass values from precreate to instance + self.pass_pre_attributes_to_instance( + instance_data, + pre_create_data, + [ + "render_target" + ] + ) + # make sure selected nodes are added self.set_selected_nodes(pre_create_data) diff --git a/openpype/hosts/nuke/plugins/create/create_write_render.py b/openpype/hosts/nuke/plugins/create/create_write_render.py index 560b9e0c36..89696f55e0 100644 --- a/openpype/hosts/nuke/plugins/create/create_write_render.py +++ b/openpype/hosts/nuke/plugins/create/create_write_render.py @@ -22,7 +22,11 @@ class CreateWriteRender(napi.NukeWriteCreator): def get_pre_create_attr_defs(self): attr_defs = [ - BoolDef("use_selection", label="Use selection"), + BoolDef( + "use_selection", + default=True, + label="Use selection" + ), self._get_render_target_enum() ] return attr_defs @@ -96,6 +100,14 @@ class CreateWriteRender(napi.NukeWriteCreator): return created_node def create(self, subset_name, instance_data, pre_create_data): + # pass values from precreate to instance + self.pass_pre_attributes_to_instance( + instance_data, + pre_create_data, + [ + "render_target" + ] + ) # make sure selected nodes are added self.set_selected_nodes(pre_create_data) diff --git a/openpype/hosts/nuke/plugins/create/create_write_still.py b/openpype/hosts/nuke/plugins/create/create_write_still.py index e77c51e9be..b3a096a5ba 100644 --- a/openpype/hosts/nuke/plugins/create/create_write_still.py +++ b/openpype/hosts/nuke/plugins/create/create_write_still.py @@ -22,7 +22,11 @@ class CreateWriteStill(napi.NukeWriteCreator): def get_pre_create_attr_defs(self): attr_defs = [ - BoolDef("use_selection", label="Use selection"), + BoolDef( + "use_selection", + default=True, + label="Use selection" + ), self._get_render_target_enum(), UISeparatorDef(), self._get_frame_source_number() @@ -80,15 +84,25 @@ class CreateWriteStill(napi.NukeWriteCreator): ) self.add_info_knob(created_node) - self._add_frame_range_limit(created_node) + self._add_frame_range_limit(created_node, instance_data) - self.integrate_links(created_node, outputs=False) + self.integrate_links(created_node, outputs=True) return created_node def create(self, subset_name, instance_data, pre_create_data): subset_name = subset_name.format(**pre_create_data) + # pass values from precreate to instance + self.pass_pre_attributes_to_instance( + instance_data, + pre_create_data, + [ + "active_frame", + "render_target" + ] + ) + # make sure selected nodes are added self.set_selected_nodes(pre_create_data) @@ -100,7 +114,7 @@ class CreateWriteStill(napi.NukeWriteCreator): instance_node = self.create_instance_node( subset_name, - instance_data + instance_data, ) try: @@ -130,10 +144,13 @@ class CreateWriteStill(napi.NukeWriteCreator): sys.exc_info()[2] ) - def _add_frame_range_limit(self, write_node): + def _add_frame_range_limit(self, write_node, instance_data): if "use_range_limit" not in self.instance_attributes: return + active_frame = ( + instance_data["creator_attributes"].get("active_frame")) + write_node.begin() for n in nuke.allNodes(): # get write node @@ -142,7 +159,7 @@ class CreateWriteStill(napi.NukeWriteCreator): write_node.end() w_node["use_limit"].setValue(True) - w_node["first"].setValue(nuke.frame()) + w_node["first"].setValue(active_frame or nuke.frame()) w_node["last"].setExpression("first") return write_node