From ad1db73b21d9af875d78cba13465cf229130c970 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Sat, 1 Dec 2018 15:39:27 +0100 Subject: [PATCH] update publish rendering --- .../publish/collect_prerendered_frames.py | 23 ---------------- pype/plugins/nuke/publish/collect_writes.py | 26 ++++++++++++------- pype/plugins/nuke/publish/render_local.py | 4 ++- .../nuke/publish/validate_collection.py | 12 +++++++-- 4 files changed, 30 insertions(+), 35 deletions(-) delete mode 100644 pype/plugins/nuke/publish/collect_prerendered_frames.py diff --git a/pype/plugins/nuke/publish/collect_prerendered_frames.py b/pype/plugins/nuke/publish/collect_prerendered_frames.py deleted file mode 100644 index e3cf9e2c42..0000000000 --- a/pype/plugins/nuke/publish/collect_prerendered_frames.py +++ /dev/null @@ -1,23 +0,0 @@ -import pyblish.api -import os - -class CollectFrames(pyblish.api.InstancePlugin): - """Inject the host into context""" - - order = pyblish.api.CollectorOrder + 0.499 - label = "Collect data into prerenderd frames" - hosts = ["nuke"] - families = ['prerendered.frames'] - - def process(self, instance): - - collected_frames = os.listdir(instance.data['outputDir']) - - if "files" not in instance.data: - instance.data["files"] = list() - - instance.data["files"].append(collected_frames) - instance.data['stagingDir'] = instance.data['outputDir'] - instance.data['transfer'] = False - - self.log.info('collected frames: {}'.format(collected_frames)) diff --git a/pype/plugins/nuke/publish/collect_writes.py b/pype/plugins/nuke/publish/collect_writes.py index e6097d8f6c..7ac79350c0 100644 --- a/pype/plugins/nuke/publish/collect_writes.py +++ b/pype/plugins/nuke/publish/collect_writes.py @@ -2,7 +2,6 @@ import os import nuke import pyblish.api -import clique import logging log = logging.getLogger(__name__) @@ -42,6 +41,7 @@ class CollectNukeWrites(pyblish.api.ContextPlugin): # get path path = nuke.filename(node) output_dir = os.path.dirname(path) + self.log.debug(output_dir) # Include start and end render frame in label name = node.name() @@ -51,28 +51,36 @@ class CollectNukeWrites(pyblish.api.ContextPlugin): int(last_frame) ) - self.log.debug("checking for error: {}".format(label)) - - files = [] # preredered frames if not node["render"].value(): + try: + families = "prerendered.frames" + collected_frames = os.listdir(output_dir) + if not collected_frames: + node["render"].setValue(True) + if "files" not in instance.data: + instance.data["files"] = list() + + instance.data["files"] = collected_frames + instance.data['stagingDir'] = output_dir + instance.data['transfer'] = False + except Exception: + node["render"].setValue(True) + + if node["render"].value(): # dealing with local/farm rendering if node["render_farm"].value(): families = "{}.farm".format(instance.data["families"][0]) else: families = "{}.local".format(instance.data["families"][0]) - else: - families = 'prerendered.frames' - files = [f for f in os.listdir(output_dir)] self.log.debug("checking for error: {}".format(label)) instance.data.update({ "path": path, "outputDir": output_dir, - "ext": ext, # todo: should be redundant + "ext": ext, "label": label, "families": [families], - "files": files, "firstFrame": first_frame, "lastFrame": last_frame, "outputType": output_type diff --git a/pype/plugins/nuke/publish/render_local.py b/pype/plugins/nuke/publish/render_local.py index aa8c98f34b..fb974e6588 100644 --- a/pype/plugins/nuke/publish/render_local.py +++ b/pype/plugins/nuke/publish/render_local.py @@ -31,7 +31,7 @@ class NukeRenderLocal(pyblish.api.InstancePlugin): first_frame = instance.data.get("firstFrame", None) last_frame = instance.data.get("lastFrame", None) - node_subset_name = instance.data.get("subset", None) + node_subset_name = instance.data.get("name", None) self.log.info("Starting render") self.log.info("Start frame: {}".format(first_frame)) @@ -43,4 +43,6 @@ class NukeRenderLocal(pyblish.api.InstancePlugin): int(first_frame), int(last_frame) ) + # swith to prerendered.frames + instance[0]["render"].setValue(False) self.log.info('Finished render') diff --git a/pype/plugins/nuke/publish/validate_collection.py b/pype/plugins/nuke/publish/validate_collection.py index 95864601aa..6c4c305de7 100644 --- a/pype/plugins/nuke/publish/validate_collection.py +++ b/pype/plugins/nuke/publish/validate_collection.py @@ -10,7 +10,11 @@ class RepairCollectionAction(pyblish.api.Action): icon = "wrench" def process(self, context, plugin): - [os.remove(f) for f in context[0].data["files"]] + + files_remove = [os.path.join(context[0].data["outputDir"], f) + for f in context[0].data["files"]] + for f in files_remove: + self.log.debug("removing file: {}".format(f)) context[0][0]["render"].setValue(True) self.log.info("Rendering toggled ON") @@ -31,11 +35,15 @@ class ValidateCollection(pyblish.api.InstancePlugin): self.log.info('collections: {}'.format(collections)) frame_length = instance.data["lastFrame"] \ - - instance.data["firstFrame"] + - instance.data["firstFrame"] + 1 assert len(collections) == 1, self.log.info("There are multiple collections in the folder") assert collections[0].is_contiguous(), self.log.info("Some frames appear to be missing") + self.log.info('frame_length: {}'.format(frame_length)) + self.log.info('len(list(instance.data["files"])): {}'.format( + len(list(instance.data["files"])))) + assert len(list(instance.data["files"])) is frame_length, self.log.info( "{} missing frames. Use repair to render all frames".format(__name__))