diff --git a/openpype/hosts/maya/plugins/publish/validate_arnold_verbosity_level.py b/openpype/hosts/maya/plugins/publish/validate_arnold_verbosity_level.py new file mode 100644 index 0000000000..b4a08e6bb4 --- /dev/null +++ b/openpype/hosts/maya/plugins/publish/validate_arnold_verbosity_level.py @@ -0,0 +1,42 @@ +import pyblish.api +from openpype.pipeline import ( + PublishValidationError, + OptionalPyblishPluginMixin +) +from maya import cmds +from openpype.pipeline.publish import RepairAction + + +class ValidateArnoldVerbosityLevel(pyblish.api.InstancePlugin, + OptionalPyblishPluginMixin): + """Validate Arnold Verbosity Level For Deadline Submission""" + + order = pyblish.api.ValidatorOrder + families = ["renderlayer"] + hosts = ["maya"] + label = "Validate Arnold Verbosity Level" + actions = [RepairAction] + optional = True + + def process(self, instance): + if not self.is_active(instance.data): + return + if instance.data["renderer"] != "arnold": + self.log.debug("The renderer for deadline submission is not Arnold." + " Skipping Validate Arnold Verbosity Level.") + return + current_verbosity_level = cmds.getAttr( + "defaultArnoldRenderOptions.log_verbosity") + + if not current_verbosity_level >= 3: + report = ( + "Arnold verbosity level has invalid value(s).\n\n" + "It must be always greater than 3.\n\n" + "You can use repair action to set the correct value\n" + ) + raise PublishValidationError( + report, title="Invalid Value(s) for Arnold Verbosity Level") + + @classmethod + def repair(cls, instance): + return cmds.setAttr("defaultArnoldRenderOptions.log_verbosity", 3) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index 7d532923ff..cdaf329ef2 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -97,6 +97,7 @@ class VRayPluginInfo(object): @attr.s class ArnoldPluginInfo(object): ArnoldFile = attr.ib(default=None) + ArnoldVerbose = attr.ib(default=2) class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, @@ -281,6 +282,10 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, plugin_payload = attr.asdict(plugin_info) + if instance.data["renderer"] == "arnold": + plugin_payload["ArnoldVerbose"] = cmds.getAttr( + "defaultArnoldRenderOptions.log_verbosity") + # Patching with pluginInfo from settings for key, value in self.pluginInfo.items(): plugin_payload[key] = value @@ -648,7 +653,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, return job_info, attr.asdict(plugin_info) def _get_arnold_render_payload(self, data): - + from maya import cmds # Job Info job_info = copy.deepcopy(self.job_info) job_info.Name = self._job_info_label("Render") @@ -658,9 +663,12 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, # Plugin Info ass_file, _ = os.path.splitext(data["output_filename_0"]) ass_filepath = ass_file + ".ass" + current_verbosity_level = cmds.getAttr( + "defaultArnoldRenderOptions.log_verbosity") plugin_info = ArnoldPluginInfo( - ArnoldFile=ass_filepath + ArnoldFile=ass_filepath, + ArnoldVerbose=current_verbosity_level ) return job_info, attr.asdict(plugin_info) diff --git a/openpype/pipeline/publish/lib.py b/openpype/pipeline/publish/lib.py index 4ea2f932f1..87ca3323cb 100644 --- a/openpype/pipeline/publish/lib.py +++ b/openpype/pipeline/publish/lib.py @@ -74,7 +74,7 @@ def get_template_name_profiles( project_settings ["global"] ["publish"] - ["IntegrateAssetNew"] + ["IntegrateHeroVersion"] ["template_name_profiles"] ) if legacy_profiles: