Skip to content

Commit

Permalink
Remove global RENDER_ATTRS, refactor to a `RenderSettings.get_paddi…
Browse files Browse the repository at this point in the history
…ng_attr` method

- Partial cleanup extracted from ynput#3880
  • Loading branch information
BigRoy committed Oct 20, 2023
1 parent 9708cd9 commit 7caaea4
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 26 deletions.
13 changes: 0 additions & 13 deletions openpype/hosts/maya/api/lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,6 @@
"doubleSided",
"opposite"}

RENDER_ATTRS = {"vray": {
"node": "vraySettings",
"prefix": "fileNamePrefix",
"padding": "fileNamePadding",
"ext": "imageFormatStr"
},
"default": {
"node": "defaultRenderGlobals",
"prefix": "imageFilePrefix",
"padding": "extensionPadding"
}
}


DEFAULT_MATRIX = [1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
Expand Down
8 changes: 8 additions & 0 deletions openpype/hosts/maya/api/lib_rendersettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,14 @@ class RenderSettings(object):
def get_image_prefix_attr(cls, renderer):
return cls._image_prefix_nodes[renderer]

@staticmethod
def get_padding_attr(renderer):
"""Return attribute for renderer that defines frame padding amount"""
if renderer == "vray":
return "vraySettings.fileNamePadding"
else:
return "defaultRenderGlobals.extensionPadding"

def __init__(self, project_settings=None):
if not project_settings:
project_settings = get_project_settings(
Expand Down
17 changes: 7 additions & 10 deletions openpype/hosts/maya/plugins/publish/validate_rendersettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
PublishValidationError,
)
from openpype.hosts.maya.api import lib
from openpype.hosts.maya.api.lib_rendersettings import RenderSettings


def convert_to_int_or_float(string_value):
Expand Down Expand Up @@ -129,13 +130,13 @@ def get_invalid(cls, instance):
layer = instance.data['renderlayer']
cameras = instance.data.get("cameras", [])

# Get the node attributes for current renderer
attrs = lib.RENDER_ATTRS.get(renderer, lib.RENDER_ATTRS['default'])
# Prefix attribute can return None when a value was never set
prefix = lib.get_attr_in_layer(cls.ImagePrefixes[renderer],
layer=layer) or ""
padding = lib.get_attr_in_layer("{node}.{padding}".format(**attrs),
layer=layer)
padding = lib.get_attr_in_layer(
attr=RenderSettings.get_padding_attr(renderer),
layer=layer
)

anim_override = lib.get_attr_in_layer("defaultRenderGlobals.animation",
layer=layer)
Expand Down Expand Up @@ -372,8 +373,6 @@ def repair(cls, instance):
lib.set_attribute(data["attribute"], data["values"][0], node)

with lib.renderlayer(layer_node):
default = lib.RENDER_ATTRS['default']
render_attrs = lib.RENDER_ATTRS.get(renderer, default)

# Repair animation must be enabled
cmds.setAttr("defaultRenderGlobals.animation", True)
Expand All @@ -391,15 +390,13 @@ def repair(cls, instance):
default_prefix = default_prefix.replace(variant, "")

if renderer != "renderman":
node = render_attrs["node"]
prefix_attr = render_attrs["prefix"]

prefix_attr = RenderSettings.get_image_prefix_attr(renderer)
fname_prefix = default_prefix
cmds.setAttr("{}.{}".format(node, prefix_attr),
fname_prefix, type="string")

# Repair padding
padding_attr = render_attrs["padding"]
padding_attr = RenderSettings.get_padding_attr(renderer)
cmds.setAttr("{}.{}".format(node, padding_attr),
cls.DEFAULT_PADDING)
else:
Expand Down
5 changes: 2 additions & 3 deletions openpype/modules/muster/plugins/publish/submit_maya_muster.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import pyblish.api
from openpype.lib import requests_post
from openpype.hosts.maya.api import lib
from openpype.hosts.maya.api.lib_rendersettings import RenderSettings
from openpype.pipeline import legacy_io
from openpype.settings import get_system_settings

Expand Down Expand Up @@ -68,10 +69,8 @@ def get_renderer_variables(renderlayer=None):
"""

renderer = lib.get_renderer(renderlayer or lib.get_current_renderlayer())
render_attrs = lib.RENDER_ATTRS.get(renderer, lib.RENDER_ATTRS["default"])

padding = cmds.getAttr("{}.{}".format(render_attrs["node"],
render_attrs["padding"]))
padding = cmds.getAttr(RenderSettings.get_padding_attr(renderer))

filename_0 = cmds.renderSettings(fullPath=True, firstImageName=True)[0]

Expand Down

0 comments on commit 7caaea4

Please sign in to comment.