bigroy comment on the camera setup on validation

This commit is contained in:
Kayla Man 2023-08-31 15:41:33 +08:00
parent b18bbf439e
commit 055e825000
3 changed files with 14 additions and 9 deletions

View file

@ -34,6 +34,9 @@ class CollectRender(pyblish.api.InstancePlugin):
aovs = RenderProducts().get_aovs(instance.name)
files_by_aov.update(aovs)
camera = rt.viewport.GetCamera()
instance.data["cameras"] = [camera.name] or None
if "expectedFiles" not in instance.data:
instance.data["expectedFiles"] = list()
instance.data["files"] = list()

View file

@ -13,8 +13,7 @@ class ValidateViewportCamera(pyblish.api.InstancePlugin,
OptionalPyblishPluginMixin):
"""Validates Viewport Camera
Check if the renderable camera in scene used as viewport
camera for rendering
Check if the renderable camera used for rendering
"""
order = pyblish.api.ValidatorOrder
@ -27,11 +26,9 @@ class ValidateViewportCamera(pyblish.api.InstancePlugin,
def process(self, instance):
if not self.is_active(instance.data):
return
cameras_in_scene = [c for c in rt.Objects
if rt.classOf(c) in rt.Camera.Classes]
if rt.viewport.getCamera() not in cameras_in_scene:
if not instance.data["cameras"]:
raise PublishValidationError(
"Cameras in Scene not used as viewport camera"
"No renderable Camera found in scene."
)
@classmethod
@ -39,10 +36,11 @@ class ValidateViewportCamera(pyblish.api.InstancePlugin,
rt.viewport.setType(rt.Name("view_camera"))
camera = rt.viewport.GetCamera()
cls.log.info(f"Camera {camera} set as viewport camera")
cls.log.info(f"Camera {camera} set as renderable camera")
renderer_class = get_current_renderer()
renderer = str(renderer_class).split(":")[0]
if renderer == "Arnold":
arv = rt.MAXToAOps.ArnoldRenderView()
arv.setOption("Camera", str(camera))
arv.close()
instance.data["cameras"] = [camera.name]

View file

@ -31,6 +31,7 @@ class MaxPluginInfo(object):
Version = attr.ib(default=None) # Mandatory for Deadline
SaveFile = attr.ib(default=True)
IgnoreInputs = attr.ib(default=True)
Camera = attr.ib(default=None)
class MaxSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
@ -154,7 +155,8 @@ class MaxSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
SceneFile=self.scene_path,
Version=instance.data["maxversion"],
SaveFile=True,
IgnoreInputs=True
IgnoreInputs=True,
Camera=instance.data["cameras"][0]
)
plugin_payload = attr.asdict(plugin_info)
@ -238,7 +240,9 @@ class MaxSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
if renderer == "Redshift_Renderer":
plugin_data["redshift_SeparateAovFiles"] = instance.data.get(
"separateAovFiles")
if instance.data["cameras"]:
plugin_info["Camera0"] = None
plugin_info["Camera1"] = instance.data["cameras"][0]
self.log.debug("plugin data:{}".format(plugin_data))
plugin_info.update(plugin_data)