From 390ccb4a094b03532fcd78f93ad97f790c65a945 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 13 Sep 2018 14:47:08 +0200 Subject: [PATCH] REN-52: Ensure no default camera is renderable --- .../validate_render_no_default_cameras.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 colorbleed/plugins/maya/publish/validate_render_no_default_cameras.py diff --git a/colorbleed/plugins/maya/publish/validate_render_no_default_cameras.py b/colorbleed/plugins/maya/publish/validate_render_no_default_cameras.py new file mode 100644 index 0000000000..4f55670a8c --- /dev/null +++ b/colorbleed/plugins/maya/publish/validate_render_no_default_cameras.py @@ -0,0 +1,40 @@ +from maya import cmds + +import pyblish.api +import colorbleed.api +import colorbleed.maya.lib as lib + + +class ValidateRenderNoDefaultCameras(pyblish.api.InstancePlugin): + """Ensure no default (startup) cameras are to be rendered.""" + + order = colorbleed.api.ValidateContentsOrder + hosts = ['maya'] + families = ['colorbleed.renderlayer'] + label = "No Default Cameras Renderable" + actions = [colorbleed.api.SelectInvalidAction] + + @staticmethod + def get_invalid(instance): + + layer = instance.data["setMembers"] + + # Collect default cameras + cameras = cmds.ls(type='camera', long=True) + defaults = [cam for cam in cameras if + cmds.camera(cam, query=True, startupCamera=True)] + + invalid = [] + with lib.renderlayer(layer): + for cam in defaults: + if cmds.getAttr(cam + ".renderable"): + invalid.append(cam) + + return invalid + + def process(self, instance): + """Process all the cameras in the instance""" + invalid = self.get_invalid(instance) + if invalid: + raise RuntimeError("Renderable default cameras " + "found: {0}".format(invalid))