From 45d228ce9fdc0791c79b079782613136f2ff7bc0 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 22 Jun 2022 01:07:45 +0200 Subject: [PATCH] :bug: fix handling of extra geometry --- .../plugins/publish/extract_camera_alembic.py | 6 ++--- .../publish/extract_camera_mayaScene.py | 24 +++++++++++-------- .../publish/validate_camera_contents.py | 13 +--------- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_camera_alembic.py b/openpype/hosts/maya/plugins/publish/extract_camera_alembic.py index 4110ad474d..893aa63b01 100644 --- a/openpype/hosts/maya/plugins/publish/extract_camera_alembic.py +++ b/openpype/hosts/maya/plugins/publish/extract_camera_alembic.py @@ -61,10 +61,10 @@ class ExtractCameraAlembic(openpype.api.Extractor): if bake_to_worldspace: job_str += ' -worldSpace' - for member in member_shapes: - self.log.info(f"processing {member}") + for member in members: transform = cmds.listRelatives( - member, parent=True, fullPath=True)[0] + member, parent=True, fullPath=True) + transform = transform[0] if transform else member job_str += ' -root {0}'.format(transform) job_str += ' -file "{0}"'.format(path) diff --git a/openpype/hosts/maya/plugins/publish/extract_camera_mayaScene.py b/openpype/hosts/maya/plugins/publish/extract_camera_mayaScene.py index 1cb30e65ea..569efbe335 100644 --- a/openpype/hosts/maya/plugins/publish/extract_camera_mayaScene.py +++ b/openpype/hosts/maya/plugins/publish/extract_camera_mayaScene.py @@ -172,18 +172,22 @@ class ExtractCameraMayaScene(openpype.api.Extractor): dag=True, shapes=True, long=True) + attrs = {"backgroundColorR": 0.0, + "backgroundColorG": 0.0, + "backgroundColorB": 0.0, + "overscan": 1.0} + # Fix PLN-178: Don't allow background color to be non-black - for cam in cmds.ls( + for cam, (attr, value) in itertools.product(cmds.ls( baked_camera_shapes, type="camera", dag=True, - shapes=True, long=True): - attrs = {"backgroundColorR": 0.0, - "backgroundColorG": 0.0, - "backgroundColorB": 0.0, - "overscan": 1.0} - for attr, value in attrs.items(): - plug = "{0}.{1}".format(cam, attr) - unlock(plug) - cmds.setAttr(plug, value) + shapes=True, long=True), attrs.items()): + # the above call still pull in shapes that are not + # cameras, so we filter them out here + if cmds.nodeType(cam) != "camera": + continue + plug = "{0}.{1}".format(cam, attr) + unlock(plug) + cmds.setAttr(plug, value) self.log.info("Performing extraction..") cmds.select(cmds.ls(members, dag=True, diff --git a/openpype/hosts/maya/plugins/publish/validate_camera_contents.py b/openpype/hosts/maya/plugins/publish/validate_camera_contents.py index eb93245f93..e209487ae4 100644 --- a/openpype/hosts/maya/plugins/publish/validate_camera_contents.py +++ b/openpype/hosts/maya/plugins/publish/validate_camera_contents.py @@ -52,20 +52,9 @@ class ValidateCameraContents(pyblish.api.InstancePlugin): if not cls.validate_shapes: cls.log.info("not validating shapes in the content") - - for member in members: - parents = cmds.ls(member, long=True)[0].split("|")[1:-1] - cls.log.info(parents) - parents_long_named = [ - "|".join(parents[:i]) for i in range(1, 1 + len(parents)) - ] - cls.log.info(parents_long_named) - if cameras[0] in parents_long_named: - cls.log.error( - "{} is parented under camera {}".format(member, cameras[0])) - invalid.extend(member) return invalid + # non-camera shapes valid_shapes = cmds.ls(shapes, type=('camera', 'locator'), long=True) shapes = set(shapes) - set(valid_shapes)