Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
Merge pull request #3386 from pypeclub/enhancement/OP-3302_maya-camer…
Browse files Browse the repository at this point in the history
…a-content-validation

Maya: Camera extra data - additional fix for #3304
  • Loading branch information
antirotor authored Jul 4, 2022
2 parents adc90a4 + 0b07036 commit 15b2c62
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 26 deletions.
28 changes: 24 additions & 4 deletions openpype/hosts/maya/plugins/publish/extract_camera_alembic.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def process(self, instance):

# get cameras
members = instance.data['setMembers']
cameras = cmds.ls(members, leaf=True, shapes=True, long=True,
cameras = cmds.ls(members, leaf=True, long=True,
dag=True, type="camera")

# validate required settings
Expand Down Expand Up @@ -61,10 +61,30 @@ def process(self, instance):

if bake_to_worldspace:
job_str += ' -worldSpace'
for member in member_shapes:
self.log.info(f"processing {member}")

# if baked, drop the camera hierarchy to maintain
# clean output and backwards compatibility
camera_root = cmds.listRelatives(
camera, parent=True, fullPath=True)[0]
job_str += ' -root {0}'.format(camera_root)

for member in members:
descendants = cmds.listRelatives(member,
allDescendents=True,
fullPath=True) or []
shapes = cmds.ls(descendants, shapes=True,
noIntermediate=True, long=True)
cameras = cmds.ls(shapes, type="camera", long=True)
if cameras:
if not set(shapes) - set(cameras):
continue
self.log.warning((
"Camera hierarchy contains additional geometry. "
"Extraction will fail.")
)
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)
Expand Down
21 changes: 11 additions & 10 deletions openpype/hosts/maya/plugins/publish/extract_camera_mayaScene.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,18 +172,19 @@ def process(self, instance):
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)
long=True), attrs.items()):
plug = "{0}.{1}".format(cam, attr)
unlock(plug)
cmds.setAttr(plug, value)

self.log.info("Performing extraction..")
cmds.select(cmds.ls(members, dag=True,
Expand Down
13 changes: 1 addition & 12 deletions openpype/hosts/maya/plugins/publish/validate_camera_contents.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,7 @@ def get_invalid(cls, instance):
raise RuntimeError("No cameras found in empty instance.")

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]
parents_long_named = [
"|".join(parents[:i]) for i in range(1, 1 + len(parents))
]
if cameras[0] in parents_long_named:
cls.log.error(
"{} is parented under camera {}".format(
member, cameras[0]))
invalid.extend(member)
cls.log.info("not validating shapes in the content")
return invalid

# non-camera shapes
Expand Down

0 comments on commit 15b2c62

Please sign in to comment.