Collect camera from objectset if present.

This commit is contained in:
Toke Stuart Jepsen 2022-12-06 19:13:12 +00:00
parent fd6345743c
commit 3cf47e2562

View file

@ -8,6 +8,7 @@ import pyblish.api
class CollectAssData(pyblish.api.InstancePlugin):
"""Collect Ass data."""
# Offset to be after renderable camera collection.
order = pyblish.api.CollectorOrder + 0.2
label = 'Collect Ass'
families = ["ass"]
@ -25,7 +26,8 @@ class CollectAssData(pyblish.api.InstancePlugin):
instance.data['setMembers'] = members
self.log.debug('content members: {}'.format(members))
elif objset.startswith("proxy_SET"):
assert len(members) == 1, "You have multiple proxy meshes, please only use one"
msg = "You have multiple proxy meshes, please only use one"
assert len(members) == 1, msg
instance.data['proxy'] = members
self.log.debug('proxy members: {}'.format(members))
@ -35,4 +37,17 @@ class CollectAssData(pyblish.api.InstancePlugin):
group = re.compile(r" \[.*\]")
instance.data["label"] = group.sub("", instance.data["label"])
# Use camera in object set if present else default to render globals
# camera.
cameras = cmds.ls(type="camera", long=True)
renderable = [c for c in cameras if cmds.getAttr("%s.renderable" % c)]
camera = renderable[0]
for node in instance.data["setMembers"]:
camera_shapes = cmds.listRelatives(
node, shapes=True, type="camera"
)
if camera_shapes:
camera = node
instance.data["camera"] = camera
self.log.debug("data: {}".format(instance.data))