From b02eb6c4c944419684e38927d9795677a8d15887 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 6 Feb 2020 21:34:25 +0100 Subject: [PATCH] fixed review filtering and attaching, creator creates layer if not present --- pype/maya/lib.py | 2 +- .../global/publish/collect_filesequences.py | 17 +++--- .../global/publish/submit_publish_job.py | 57 ++++--------------- pype/plugins/maya/create/create_render.py | 9 ++- .../maya/publish/submit_maya_deadline.py | 3 - 5 files changed, 30 insertions(+), 58 deletions(-) diff --git a/pype/maya/lib.py b/pype/maya/lib.py index 216b455137..9432f734b6 100644 --- a/pype/maya/lib.py +++ b/pype/maya/lib.py @@ -2491,7 +2491,7 @@ class RenderSetupListObserver: members = cmds.sets(render_set, query=True) or [] if not "LAYER_{}".format(layer_name) in members: print(" - creating set for {}".format(layer_name)) - set = cmds.sets(n="LAYER_{}".format(layer_name)) + set = cmds.sets(n="LAYER_{}".format(layer_name), empty=True) cmds.sets(set, forceElement=render_set) rio = RenderSetupItemObserver(item) print("- adding observer for {}".format(item.name())) diff --git a/pype/plugins/global/publish/collect_filesequences.py b/pype/plugins/global/publish/collect_filesequences.py index f20bda1289..947d055d9b 100644 --- a/pype/plugins/global/publish/collect_filesequences.py +++ b/pype/plugins/global/publish/collect_filesequences.py @@ -225,11 +225,11 @@ class CollectRenderedFrames(pyblish.api.ContextPlugin): if families_data and "slate" in families_data: families.append("slate") - if data.get("attachTo"): + if data["metadata"]["instance"].get("attachTo"): # we need to attach found collections to existing # subset version as review represenation. - for attach in data.get("attachTo"): + for attach in data["metadata"]["instance"]["attachTo"]: self.log.info( "Attaching render {}:v{}".format( attach["subset"], attach["version"])) @@ -238,6 +238,7 @@ class CollectRenderedFrames(pyblish.api.ContextPlugin): new_instance.data.update( { "name": attach["subset"], + "subset": attach["subset"], "version": attach["version"], "family": 'review', "families": ['review', 'ftrack'], @@ -368,7 +369,7 @@ class CollectRenderedFrames(pyblish.api.ContextPlugin): if "slate" in instance.data["families"]: frame_start += 1 - tags = ["review"] + tags = ["preview"] if baked_mov_path: tags.append("delete") @@ -476,14 +477,16 @@ class CollectRenderedFrames(pyblish.api.ContextPlugin): representation["tags"].remove('review') else: subset = data["metadata"]["instance"]["subset"] - self.log.info("Creating new subset: {}".format(subset)) - new_instance = context.create_instance(subset) data = copy.deepcopy(data) task = data["metadata"]["session"]["AVALON_TASK"] new_subset_name = 'render{}{}{}{}'.format( task[0].upper(), task[1:], subset[0].upper(), subset[1:]) + self.log.info( + "Creating new subset: {}".format(new_subset_name)) + new_instance = context.create_instance(new_subset_name) + new_instance.data.update( { "name": new_subset_name, @@ -503,11 +506,11 @@ class CollectRenderedFrames(pyblish.api.ContextPlugin): "slateFrame": slate_frame } ) - new_instance.data["representations"] = data["metadata"]["instance"]["representations"] + new_instance.data["representations"] = data["metadata"]["instance"]["representations"] # noqa: E501 if new_instance is not None: self.log.info("remapping paths ...") - new_instance.data["representations"] = [PypeLauncher.path_remapper(data=r) for r in new_instance.data["representations"]] # noqa: E501 + new_instance.data["representations"] = [PypeLauncher().path_remapper(data=r) for r in new_instance.data["representations"]] # noqa: E501 self.log.debug( "__ representations {}".format( new_instance.data["representations"])) diff --git a/pype/plugins/global/publish/submit_publish_job.py b/pype/plugins/global/publish/submit_publish_job.py index cb86d45141..6fc60dc9ff 100644 --- a/pype/plugins/global/publish/submit_publish_job.py +++ b/pype/plugins/global/publish/submit_publish_job.py @@ -148,7 +148,6 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): families = ["render.farm", "renderlayer", "imagesequence"] - # this will add review and ftrack tag only to `beauty` in `maya` app aov_filter = [AOVFilter("maya", ["beauty"])] enviro_filter = [ @@ -249,48 +248,8 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): :param instance: Instance data :type instance: dict - - Data needed for collect_filesequences: - - root - asset * - source * - frameStart - frameEnd - subset - ftrack - fps - user - version * - attachTo *: - subset - version - regex ! - exclude_regex ! - - metadata: - session * - instance *: - family - pixelAspect * - resolutionWidth - resolutionHeight - lutPath * - bakeRenderPath - families - slateFrame - version - representations: - name - ext - files": []] - frameStart - frameEnd - stagingDir - anatomy_template - fps - tags """ + data = instance.data.copy() context = instance.context @@ -341,16 +300,22 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): if data.get("expectedFiles"): representations = [] cols, rem = clique.assemble(data.get("expectedFiles")) + # create representation for every collected sequence for c in cols: ext = c.tail.lstrip(".") - review = True + preview = False + # if filtered aov name is found in filename, toggle it for + # preview video renderin for filter in self.aov_filter: if os.environ.get("AVALON_APP", "") == filter.app: for aov in filter.aov: if re.match( - r"(\.|_)({})(\.|_)".format(aov), list(c)[0] + r".+(?:\.|_)({})(?:\.|_).*".format(aov), + list(c)[0] ): - review = False + preview = True + break + break rep = { "name": ext, "ext": ext, @@ -361,7 +326,7 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): "stagingDir": os.path.dirname(list(c)[0]), "anatomy_template": "render", "fps": context.data.get("fps", None), - "tags": ["review"] if review else [], + "tags": ["review"] if preview else [], } representations.append(rep) diff --git a/pype/plugins/maya/create/create_render.py b/pype/plugins/maya/create/create_render.py index 159202c51f..080c6bd55d 100644 --- a/pype/plugins/maya/create/create_render.py +++ b/pype/plugins/maya/create/create_render.py @@ -55,9 +55,9 @@ class CreateRender(avalon.maya.Creator): instance = super(CreateRender, self).process() cmds.setAttr("{}.machineList".format(instance), lock=True) self._rs = renderSetup.instance() + layers = self._rs.getRenderLayers() if use_selection: print(">>> processing existing layers") - layers = self._rs.getRenderLayers() sets = [] for layer in layers: print(" - creating set for {}".format(layer.name())) @@ -65,6 +65,13 @@ class CreateRender(avalon.maya.Creator): sets.append(render_set) cmds.sets(sets, forceElement=instance) + # if no render layers are present, create default one with + # asterix selector + if not layers: + rl = self._rs.createRenderLayer('Main') + cl = rl.createCollection("defaultCollection") + cl.getSelector().setPattern('*') + renderer = cmds.getAttr( 'defaultRenderGlobals.currentRenderer').lower() # handle various renderman names diff --git a/pype/plugins/maya/publish/submit_maya_deadline.py b/pype/plugins/maya/publish/submit_maya_deadline.py index f28b9f5474..4c6399a880 100644 --- a/pype/plugins/maya/publish/submit_maya_deadline.py +++ b/pype/plugins/maya/publish/submit_maya_deadline.py @@ -211,9 +211,6 @@ class MayaSubmitDeadline(pyblish.api.InstancePlugin): # Only render layers are considered renderable in this pipeline "UsingRenderLayers": True, - # Use legacy Render Layer system - # "UseLegacyRenderLayers": legacy_layers, - # Render only this layer "RenderLayer": renderlayer,