Nuke: fix none existing rendered files error

addressing the comment https://github.com/pypeclub/OpenPype/pull/3245#pullrequestreview-1004589515
This commit is contained in:
Jakub Jezek 2022-06-20 15:19:26 +02:00
parent 91f6564191
commit 8ac3ed77d5
No known key found for this signature in database
GPG key ID: 730D7C02726179A7

View file

@ -74,6 +74,30 @@ class ExtractSlateFrame(openpype.api.Extractor):
self.log.info( self.log.info(
"StagingDir `{0}`...".format(instance.data["stagingDir"])) "StagingDir `{0}`...".format(instance.data["stagingDir"]))
def _check_frames_exists(self, instance):
# rendering path from group write node
fpath = instance.data["path"]
# instance frame range with handles
first = instance.data["frameStartHandle"]
last = instance.data["frameEndHandle"]
padding = fpath.count('#')
test_path_template = fpath
if padding:
repl_string = "#" * padding
test_path_template = fpath.replace(
repl_string, "%0{}d".format(padding))
for frame in range(first, last + 1):
test_file = test_path_template % frame
if not os.path.exists(test_file):
self.log.debug("__ test_file: `{}`".format(test_file))
return None
return True
def render_slate( def render_slate(
self, self,
instance, instance,
@ -128,16 +152,21 @@ class ExtractSlateFrame(openpype.api.Extractor):
self.log.debug("__ first_frame: {}".format(first_frame)) self.log.debug("__ first_frame: {}".format(first_frame))
self.log.debug("__ slate_first_frame: {}".format(slate_first_frame)) self.log.debug("__ slate_first_frame: {}".format(slate_first_frame))
# Read node # fallback if files does not exists
r_node = nuke.createNode("Read") if self._check_frames_exists(instance):
r_node["file"].setValue(fpath) # Read node
r_node["first"].setValue(first_frame) r_node = nuke.createNode("Read")
r_node["origfirst"].setValue(first_frame) r_node["file"].setValue(fpath)
r_node["last"].setValue(last_frame) r_node["first"].setValue(first_frame)
r_node["origlast"].setValue(last_frame) r_node["origfirst"].setValue(first_frame)
r_node["colorspace"].setValue(instance.data["colorspace"]) r_node["last"].setValue(last_frame)
previous_node = r_node r_node["origlast"].setValue(last_frame)
temporary_nodes = [previous_node] r_node["colorspace"].setValue(instance.data["colorspace"])
previous_node = r_node
temporary_nodes = [previous_node]
else:
previous_node = slate_node.dependencies().pop()
temporary_nodes = []
# only create colorspace baking if toggled on # only create colorspace baking if toggled on
if bake_viewer_process: if bake_viewer_process: