fix layer data class

This commit is contained in:
Ondrej Samohel 2021-05-27 22:08:53 +02:00
parent 8a052af783
commit bb149c1961
No known key found for this signature in database
GPG key ID: 8A29C663C672C2B7

View file

@ -90,7 +90,7 @@ IMAGE_PREFIXES = {
@attr.s
class LayerMetadata:
class LayerMetadata(object):
"""Data class for Render Layer metadata."""
frameStart = attr.ib()
frameEnd = attr.ib()
@ -112,7 +112,6 @@ class ExpectedFiles:
multipart (bool): Flag if multipart exrs are used.
"""
multipart = False
def __init__(self, render_instance):
@ -159,6 +158,7 @@ class ExpectedFiles:
)
def _get_files(self, renderer):
# type: (AExpectedFiles) -> list
files = renderer.get_files()
self.multipart = renderer.multipart
return files
@ -210,7 +210,7 @@ class AExpectedFiles:
def get_renderer_prefix(self):
"""Return prefix for specific renderer.
This is for most renderers the same and can be overriden if needed.
This is for most renderers the same and can be overridden if needed.
Returns:
str: String with image prefix containing tokens
@ -231,6 +231,7 @@ class AExpectedFiles:
return file_prefix
def _get_layer_data(self):
# type: () -> LayerMetadata
# ______________________________________________
# ____________________/ ____________________________________________/
# 1 - get scene name /__________________/
@ -265,12 +266,13 @@ class AExpectedFiles:
def _generate_single_file_sequence(
self, layer_data, force_aov_name=None):
# type: (LayerMetadata, str) -> list
expected_files = []
for cam in layer_data["cameras"]:
file_prefix = layer_data["filePrefix"]
for cam in layer_data.cameras:
file_prefix = layer_data.filePrefix
mappings = (
(R_SUBSTITUTE_SCENE_TOKEN, layer_data["sceneName"]),
(R_SUBSTITUTE_LAYER_TOKEN, layer_data["layerName"]),
(R_SUBSTITUTE_SCENE_TOKEN, layer_data.sceneName),
(R_SUBSTITUTE_LAYER_TOKEN, layer_data.layerName),
(R_SUBSTITUTE_CAMERA_TOKEN, self.sanitize_camera_name(cam)),
# this is required to remove unfilled aov token, for example
# in Redshift
@ -285,29 +287,30 @@ class AExpectedFiles:
file_prefix = re.sub(regex, value, file_prefix)
for frame in range(
int(layer_data["frameStart"]),
int(layer_data["frameEnd"]) + 1,
int(layer_data["frameStep"]),
int(layer_data.frameStart),
int(layer_data.frameEnd) + 1,
int(layer_data.frameStep),
):
expected_files.append(
"{}.{}.{}".format(
file_prefix,
str(frame).rjust(layer_data["padding"], "0"),
layer_data["defaultExt"],
str(frame).rjust(layer_data.padding, "0"),
layer_data.defaultExt,
)
)
return expected_files
def _generate_aov_file_sequences(self, layer_data):
# type: (LayerMetadata) -> list
expected_files = []
aov_file_list = {}
for aov in layer_data["enabledAOVs"]:
for cam in layer_data["cameras"]:
file_prefix = layer_data["filePrefix"]
for aov in layer_data.enabledAOVs:
for cam in layer_data.cameras:
file_prefix = layer_data.filePrefix
mappings = (
(R_SUBSTITUTE_SCENE_TOKEN, layer_data["sceneName"]),
(R_SUBSTITUTE_LAYER_TOKEN, layer_data["layerName"]),
(R_SUBSTITUTE_SCENE_TOKEN, layer_data.sceneName),
(R_SUBSTITUTE_LAYER_TOKEN, layer_data.layerName),
(R_SUBSTITUTE_CAMERA_TOKEN,
self.sanitize_camera_name(cam)),
(R_SUBSTITUTE_AOV_TOKEN, aov[0]),
@ -320,14 +323,14 @@ class AExpectedFiles:
aov_files = []
for frame in range(
int(layer_data["frameStart"]),
int(layer_data["frameEnd"]) + 1,
int(layer_data["frameStep"]),
int(layer_data.frameStart),
int(layer_data.frameEnd) + 1,
int(layer_data.frameStep),
):
aov_files.append(
"{}.{}.{}".format(
file_prefix,
str(frame).rjust(layer_data["padding"], "0"),
str(frame).rjust(layer_data.padding, "0"),
aov[1],
)
)
@ -335,12 +338,12 @@ class AExpectedFiles:
# if we have more then one renderable camera, append
# camera name to AOV to allow per camera AOVs.
aov_name = aov[0]
if len(layer_data["cameras"]) > 1:
if len(layer_data.cameras) > 1:
aov_name = "{}_{}".format(aov[0],
self.sanitize_camera_name(cam))
aov_file_list[aov_name] = aov_files
file_prefix = layer_data["filePrefix"]
file_prefix = layer_data.filePrefix
expected_files.append(aov_file_list)
return expected_files
@ -358,13 +361,12 @@ class AExpectedFiles:
expected_files = []
if layer_data.enabledAOVs:
expected_files = self._generate_aov_file_sequences(layer_data)
return self._generate_aov_file_sequences(layer_data)
else:
expected_files = self._generate_single_file_sequence(layer_data)
return expected_files
return self._generate_single_file_sequence(layer_data)
def get_renderable_cameras(self):
# type: () -> list
"""Get all renderable cameras.
Returns:
@ -375,12 +377,11 @@ class AExpectedFiles:
cmds.listRelatives(x, ap=True)[-1] for x in cmds.ls(cameras=True)
]
renderable_cameras = []
for cam in cam_parents:
if self.maya_is_true(cmds.getAttr("{}.renderable".format(cam))):
renderable_cameras.append(cam)
return renderable_cameras
return [
cam
for cam in cam_parents
if self.maya_is_true(cmds.getAttr("{}.renderable".format(cam)))
]
@staticmethod
def maya_is_true(attr_val):
@ -405,18 +406,17 @@ class AExpectedFiles:
return bool(attr_val)
@staticmethod
def get_layer_overrides(attr):
"""Get overrides for attribute on given render layer.
def get_layer_overrides(attribute):
"""Get overrides for attribute on current render layer.
Args:
attr (str): Maya attribute name.
layer (str): Maya render layer name.
attribute (str): Maya attribute name.
Returns:
Value of attribute override.
"""
connections = cmds.listConnections(attr, plugs=True)
connections = cmds.listConnections(attribute, plugs=True)
if connections:
for connection in connections:
if connection:
@ -427,18 +427,18 @@ class AExpectedFiles:
)
yield cmds.getAttr(attr_name)
def get_render_attribute(self, attr):
def get_render_attribute(self, attribute):
"""Get attribute from render options.
Args:
attr (str): name of attribute to be looked up.
attribute (str): name of attribute to be looked up.
Returns:
Attribute value
"""
return lib.get_attr_in_layer(
"defaultRenderGlobals.{}".format(attr), layer=self.layer
"defaultRenderGlobals.{}".format(attribute), layer=self.layer
)