Maya: Fix wrong subset name of render family in deadline (#5442)

* Use existing subset_name as group_name by default

New publisher already carries real subset name (`renderModelingMain`), it should build group name only if subset_name is weird.

* Let legacy conversion of render instance recreate subset_name

Without it would create subset names like `renderingMain` which are not matching to newly created `renderMain` instances. This would cause issue in version restarts.

* Let Render Creator for Maya create proper subset_name

It was using hardcoded logic not matching other DCCs.

* Hound

* Fix method calls

* Fix typos

* Do not import unnecessary

* Capitalize is wrong function for here

* Overwrite get_subset_name for standardized results

It makes sense to override this method for other parts of code getting same results.

* Force change

It seems that GH doesn't recognize changes with adding()

* Update openpype/hosts/maya/plugins/create/convert_legacy.py

Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>

* Hound

---------

Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
This commit is contained in:
Petr Kalis 2023-08-17 10:33:52 +02:00 committed by GitHub
parent 328c3d9c7f
commit c5d882c7ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 10 deletions

View file

@ -22,10 +22,10 @@ from openpype.pipeline import (
LegacyCreator,
LoaderPlugin,
get_representation_path,
legacy_io,
)
from openpype.pipeline.load import LoadError
from openpype.client import get_asset_by_name
from openpype.pipeline.create import get_subset_name
from . import lib
from .lib import imprint, read
@ -405,14 +405,21 @@ class RenderlayerCreator(NewCreator, MayaCreatorBase):
# No existing scene instance node for this layer. Note that
# this instance will not have the `instance_node` data yet
# until it's been saved/persisted at least once.
# TODO: Correctly define the subset name using templates
prefix = self.layer_instance_prefix or self.family
subset_name = "{}{}".format(prefix, layer.name())
project_name = self.create_context.get_current_project_name()
instance_data = {
"asset": legacy_io.Session["AVALON_ASSET"],
"task": legacy_io.Session["AVALON_TASK"],
"asset": self.create_context.get_current_asset_name(),
"task": self.create_context.get_current_task_name(),
"variant": layer.name(),
}
asset_doc = get_asset_by_name(project_name,
instance_data["asset"])
subset_name = self.get_subset_name(
layer.name(),
instance_data["task"],
asset_doc,
project_name)
instance = CreatedInstance(
family=self.family,
subset_name=subset_name,
@ -519,6 +526,22 @@ class RenderlayerCreator(NewCreator, MayaCreatorBase):
if node and cmds.objExists(node):
cmds.delete(node)
def get_subset_name(
self,
variant,
task_name,
asset_doc,
project_name,
host_name=None,
instance=None
):
# creator.family != 'render' as expected
return get_subset_name(self.layer_instance_prefix,
variant,
task_name,
asset_doc,
project_name)
class Loader(LoaderPlugin):
hosts = ["maya"]

View file

@ -2,6 +2,8 @@ from openpype.pipeline.create.creator_plugins import SubsetConvertorPlugin
from openpype.hosts.maya.api import plugin
from openpype.hosts.maya.api.lib import read
from openpype.client import get_asset_by_name
from maya import cmds
from maya.app.renderSetup.model import renderSetup
@ -135,6 +137,18 @@ class MayaLegacyConvertor(SubsetConvertorPlugin,
# "rendering" family being converted to "renderlayer" family)
original_data["family"] = creator.family
# recreate subset name as without it would be
# `renderingMain` vs correct `renderMain`
project_name = self.create_context.get_current_project_name()
asset_doc = get_asset_by_name(project_name,
original_data["asset"])
subset_name = creator.get_subset_name(
original_data["variant"],
data["task"],
asset_doc,
project_name)
original_data["subset"] = subset_name
# Convert to creator attributes when relevant
creator_attributes = {}
for key in list(original_data.keys()):

View file

@ -568,9 +568,15 @@ def _create_instances_for_aov(instance, skeleton, aov_filter, additional_data,
col = list(cols[0])
# create subset name `familyTaskSubset_AOV`
group_name = 'render{}{}{}{}'.format(
task[0].upper(), task[1:],
subset[0].upper(), subset[1:])
# TODO refactor/remove me
family = skeleton["family"]
if not subset.startswith(family):
group_name = '{}{}{}{}{}'.format(
family,
task[0].upper(), task[1:],
subset[0].upper(), subset[1:])
else:
group_name = subset
# if there are multiple cameras, we need to add camera name
if isinstance(col, (list, tuple)):