🎨 modify camera extractor to allow more data

This commit is contained in:
Ondřej Samohel 2022-06-08 16:25:51 +02:00
parent 082fb1d29d
commit ca6d77fff7
No known key found for this signature in database
GPG key ID: 02376E18990A97C6
2 changed files with 27 additions and 12 deletions

View file

@ -34,7 +34,6 @@ class ExtractCameraAlembic(openpype.api.Extractor):
dag=True, type="camera")
# validate required settings
assert len(cameras) == 1, "Not a single camera found in extraction"
assert isinstance(step, float), "Step must be a float value"
camera = cameras[0]
@ -44,8 +43,12 @@ class ExtractCameraAlembic(openpype.api.Extractor):
path = os.path.join(dir_path, filename)
# Perform alembic extraction
member_shapes = cmds.ls(
members, leaf=True, shapes=True, long=True, dag=True)
with lib.maintained_selection():
cmds.select(camera, replace=True, noExpand=True)
cmds.select(
member_shapes,
replace=True, noExpand=True)
# Enforce forward slashes for AbcExport because we're
# embedding it into a job string
@ -57,10 +60,12 @@ class ExtractCameraAlembic(openpype.api.Extractor):
job_str += ' -step {0} '.format(step)
if bake_to_worldspace:
transform = cmds.listRelatives(camera,
parent=True,
fullPath=True)[0]
job_str += ' -worldSpace -root {0}'.format(transform)
job_str += ' -worldSpace'
for member in member_shapes:
self.log.info(f"processing {member}")
transform = cmds.listRelatives(
member, parent=True, fullPath=True)[0]
job_str += ' -root {0}'.format(transform)
job_str += ' -file "{0}"'.format(path)

View file

@ -131,12 +131,12 @@ class ExtractCameraMayaScene(openpype.api.Extractor):
"bake to world space is ignored...")
# get cameras
members = instance.data['setMembers']
members = cmds.ls(instance.data['setMembers'], leaf=True, shapes=True,
long=True, dag=True)
cameras = cmds.ls(members, leaf=True, shapes=True, long=True,
dag=True, type="camera")
# validate required settings
assert len(cameras) == 1, "Single camera must be found in extraction"
assert isinstance(step, float), "Step must be a float value"
camera = cameras[0]
transform = cmds.listRelatives(camera, parent=True, fullPath=True)
@ -158,15 +158,24 @@ class ExtractCameraMayaScene(openpype.api.Extractor):
frame_range=[start, end],
step=step
)
baked_shapes = cmds.ls(baked,
baked_camera_shapes = cmds.ls(baked,
type="camera",
dag=True,
shapes=True,
long=True)
members = members + baked_camera_shapes
members.remove(camera)
else:
baked_shapes = cameras
baked_camera_shapes = cmds.ls(cameras,
type="camera",
dag=True,
shapes=True,
long=True)
# Fix PLN-178: Don't allow background color to be non-black
for cam in baked_shapes:
for cam in cmds.ls(
baked_camera_shapes, type="camera", dag=True,
shapes=True, long=True):
attrs = {"backgroundColorR": 0.0,
"backgroundColorG": 0.0,
"backgroundColorB": 0.0,
@ -177,7 +186,8 @@ class ExtractCameraMayaScene(openpype.api.Extractor):
cmds.setAttr(plug, value)
self.log.info("Performing extraction..")
cmds.select(baked_shapes, noExpand=True)
cmds.select(cmds.ls(members, dag=True,
shapes=True, long=True), noExpand=True)
cmds.file(path,
force=True,
typ="mayaAscii" if self.scene_type == "ma" else "mayaBinary", # noqa: E501