Skip to content

Commit

Permalink
Merge pull request #75 from BigRoy/bugfix/AY-6582-maya-reset-render-s…
Browse files Browse the repository at this point in the history
…ettings-aspect

Improve applying render resolution and aspect ratio on render settings reset
  • Loading branch information
BigRoy committed Aug 27, 2024
2 parents 2b29451 + 15ee05c commit 0e5ca50
Showing 1 changed file with 33 additions and 23 deletions.
56 changes: 33 additions & 23 deletions client/ayon_maya/api/lib_rendersettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from ayon_core.settings import get_project_settings

from ayon_core.pipeline import CreatorError, get_current_project_name
from ayon_core.pipeline.context_tools import get_current_folder_entity
from ayon_core.pipeline.context_tools import get_current_task_entity
from ayon_maya.api.lib import reset_frame_range


Expand Down Expand Up @@ -77,8 +77,6 @@ def set_default_renderer_settings(self, renderer=None):
renderer = cmds.getAttr(
'defaultRenderGlobals.currentRenderer').lower()

folder_entity = get_current_folder_entity()
folder_attributes = folder_entity["attrib"]
# project_settings/maya/create/CreateRender/aov_separator
try:
aov_separator = self._aov_chars[(
Expand All @@ -101,29 +99,31 @@ def set_default_renderer_settings(self, renderer=None):
prefix, type="string") # noqa
else:
print("{0} isn't a supported renderer to autoset settings.".format(renderer)) # noqa
# TODO: handle not having res values in the doc
width = folder_attributes.get("resolutionWidth")
height = folder_attributes.get("resolutionHeight")

task_entity = get_current_task_entity(fields={"attrib"})
task_attributes = task_entity["attrib"]
width: int = task_attributes["resolutionWidth"]
height: int = task_attributes["resolutionHeight"]
pixel_aspect: float = task_attributes["pixelAspect"]
if renderer == "arnold":
# set renderer settings for Arnold from project settings
self._set_arnold_settings(width, height)
self._set_arnold_settings()

if renderer == "vray":
self._set_vray_settings(aov_separator, width, height)
self._set_vray_settings(width, height, pixel_aspect, aov_separator)

if renderer == "redshift":
self._set_redshift_settings(width, height)
self._set_redshift_settings()
mel.eval("redshiftUpdateActiveAovList")

if renderer == "renderman":
image_dir = self._image_dir["renderman"]
cmds.setAttr("rmanGlobals.imageOutputDir",
image_dir, type="string")
self._set_renderman_settings(width, height,
aov_separator)
self._set_renderman_settings(aov_separator)
self._set_default_render_resolution(width, height, pixel_aspect)

def _set_arnold_settings(self, width, height):
def _set_arnold_settings(self):
"""Sets settings for Arnold."""
from mtoa.core import createOptions # noqa
from mtoa.aovs import AOVInterface # noqa
Expand Down Expand Up @@ -156,9 +156,6 @@ def _set_arnold_settings(self, width, height):
continue
AOVInterface('defaultArnoldRenderOptions').addAOV(aov)

cmds.setAttr("defaultResolution.width", width)
cmds.setAttr("defaultResolution.height", height)

self._set_global_output_settings()

cmds.setAttr(
Expand All @@ -175,7 +172,7 @@ def _set_arnold_settings(self, width, height):
self._additional_attribs_setter(additional_options)
reset_frame_range(playback=False, fps=False, render=True)

def _set_redshift_settings(self, width, height):
def _set_redshift_settings(self):
"""Sets settings for Redshift."""
# Not all hosts can import this module.
from maya import cmds # noqa: F401
Expand Down Expand Up @@ -231,11 +228,9 @@ def _set_redshift_settings(self, width, height):
redshift_render_presets.get("multipart_exr", True))
cmds.setAttr("redshiftOptions.exrForceMultilayer",
redshift_render_presets["force_combine"])
cmds.setAttr("defaultResolution.width", width)
cmds.setAttr("defaultResolution.height", height)
self._additional_attribs_setter(additional_options)

def _set_renderman_settings(self, width, height, aov_separator):
def _set_renderman_settings(self, aov_separator: str):
"""Sets settings for Renderman"""
# Not all hosts can import this module.
from maya import cmds # noqa: F401
Expand Down Expand Up @@ -295,11 +290,15 @@ def _set_renderman_settings(self, width, height, aov_separator):
additional_options = rman_render_presets["additional_options"]

self._set_global_output_settings()
cmds.setAttr("defaultResolution.width", width)
cmds.setAttr("defaultResolution.height", height)
self._additional_attribs_setter(additional_options)

def _set_vray_settings(self, aov_separator, width, height):
def _set_vray_settings(
self,
width: int,
height: int,
pixel_aspect: float,
aov_separator
):
# type: (str, int, int) -> None
"""Sets important settings for Vray."""
# Not all hosts can import this module.
Expand Down Expand Up @@ -372,11 +371,22 @@ def _set_vray_settings(self, aov_separator, width, height):
# resolution
cmds.setAttr("{}.width".format(node), width)
cmds.setAttr("{}.height".format(node), height)
cmds.setAttr("{}.pixelAspect".format(node), pixel_aspect)

additional_options = vray_render_presets["additional_options"]

self._additional_attribs_setter(additional_options)

def _set_default_render_resolution(self,
width: int,
height: int,
pixel_aspect: float):
from maya import cmds # noqa: F401
device_aspect = pixel_aspect * (width / height)
cmds.setAttr("defaultResolution.width", width)
cmds.setAttr("defaultResolution.height", height)
cmds.setAttr("defaultResolution.pixelAspect", pixel_aspect)
cmds.setAttr("defaultResolution.deviceAspectRatio", device_aspect)

@staticmethod
def _set_global_output_settings():
# Not all hosts can import this module.
Expand Down

0 comments on commit 0e5ca50

Please sign in to comment.