mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge pull request #288 from BigRoy/enhancement/maya_yeti_rig_load_create_cache_instance
Maya: Create yeticache instance directly on loading a yeti rig
This commit is contained in:
commit
7aa8741b01
3 changed files with 63 additions and 4 deletions
|
|
@ -1,8 +1,13 @@
|
|||
from typing import List
|
||||
|
||||
import maya.cmds as cmds
|
||||
|
||||
from ayon_core.hosts.maya.api import plugin
|
||||
from ayon_core.hosts.maya.api import lib
|
||||
|
||||
from ayon_core.pipeline import registered_host
|
||||
from ayon_core.pipeline.create import CreateContext
|
||||
|
||||
|
||||
class YetiRigLoader(plugin.ReferenceLoader):
|
||||
"""This loader will load Yeti rig."""
|
||||
|
|
@ -15,6 +20,9 @@ class YetiRigLoader(plugin.ReferenceLoader):
|
|||
icon = "code-fork"
|
||||
color = "orange"
|
||||
|
||||
# From settings
|
||||
create_cache_instance_on_load = True
|
||||
|
||||
def process_reference(
|
||||
self, context, name=None, namespace=None, options=None
|
||||
):
|
||||
|
|
@ -49,4 +57,41 @@ class YetiRigLoader(plugin.ReferenceLoader):
|
|||
)
|
||||
self[:] = nodes
|
||||
|
||||
if self.create_cache_instance_on_load:
|
||||
# Automatically create in instance to allow publishing the loaded
|
||||
# yeti rig into a yeti cache
|
||||
self._create_yeti_cache_instance(nodes, variant=namespace)
|
||||
|
||||
return nodes
|
||||
|
||||
def _create_yeti_cache_instance(self, nodes: List[str], variant: str):
|
||||
"""Create a yeticache product type instance to publish the output.
|
||||
|
||||
This is similar to how loading animation rig will automatically create
|
||||
an animation instance for publishing any loaded character rigs, but
|
||||
then for yeti rigs.
|
||||
|
||||
Args:
|
||||
nodes (List[str]): Nodes generated on load.
|
||||
variant (str): Variant for the yeti cache instance to create.
|
||||
|
||||
"""
|
||||
|
||||
# Find the roots amongst the loaded nodes
|
||||
yeti_nodes = cmds.ls(nodes, type="pgYetiMaya", long=True)
|
||||
assert yeti_nodes, "No pgYetiMaya nodes in rig, this is a bug."
|
||||
|
||||
self.log.info("Creating variant: {}".format(variant))
|
||||
|
||||
creator_identifier = "io.openpype.creators.maya.yeticache"
|
||||
|
||||
host = registered_host()
|
||||
create_context = CreateContext(host)
|
||||
|
||||
with lib.maintained_selection():
|
||||
cmds.select(yeti_nodes, noExpand=True)
|
||||
create_context.create(
|
||||
creator_identifier=creator_identifier,
|
||||
variant=variant,
|
||||
pre_create_data={"use_selection": True}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -103,6 +103,17 @@ class ImportLoaderModel(BaseSettingsModel):
|
|||
group_name: str = SettingsField(title="Group name")
|
||||
|
||||
|
||||
class YetiRigLoaderModel(LoaderEnabledModel):
|
||||
create_cache_instance_on_load: bool = SettingsField(
|
||||
title="Create Yeti Cache instance on load",
|
||||
description=(
|
||||
"When enabled, upon loading a Yeti Rig product a new Yeti cache "
|
||||
"instance is automatically created as preparation to publishing "
|
||||
"the output directly."
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class LoadersModel(BaseSettingsModel):
|
||||
colors: ColorsSetting = SettingsField(
|
||||
default_factory=ColorsSetting,
|
||||
|
|
@ -195,8 +206,8 @@ class LoadersModel(BaseSettingsModel):
|
|||
default_factory=LoaderEnabledModel,
|
||||
title="Yeti Cache Loader"
|
||||
)
|
||||
YetiRigLoader: LoaderEnabledModel = SettingsField(
|
||||
default_factory=LoaderEnabledModel,
|
||||
YetiRigLoader: YetiRigLoaderModel = SettingsField(
|
||||
default_factory=YetiRigLoaderModel,
|
||||
title="Yeti Rig Loader"
|
||||
)
|
||||
|
||||
|
|
@ -266,5 +277,8 @@ DEFAULT_LOADERS_SETTING = {
|
|||
"VRaySceneLoader": {"enabled": True},
|
||||
"XgenLoader": {"enabled": True},
|
||||
"YetiCacheLoader": {"enabled": True},
|
||||
"YetiRigLoader": {"enabled": True},
|
||||
"YetiRigLoader": {
|
||||
"enabled": True,
|
||||
"create_cache_instance_on_load": True
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring addon version."""
|
||||
__version__ = "0.1.15"
|
||||
__version__ = "0.1.16"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue