From c4cf4b3917be6dcfe709cc90b56023c02417faba Mon Sep 17 00:00:00 2001 From: aardschok Date: Tue, 25 Jul 2017 13:40:46 +0200 Subject: [PATCH] improved loaders --- .../plugins/maya/load/load_animation.py | 60 +++++++++++-------- colorbleed/plugins/maya/load/load_model.py | 2 - 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/colorbleed/plugins/maya/load/load_animation.py b/colorbleed/plugins/maya/load/load_animation.py index ed65b2f042..b29bbecece 100644 --- a/colorbleed/plugins/maya/load/load_animation.py +++ b/colorbleed/plugins/maya/load/load_animation.py @@ -1,4 +1,8 @@ -from avalon import api +import os + +from maya import cmds + +from avalon import api, maya class AbcLoader(api.Loader): @@ -13,12 +17,17 @@ class AbcLoader(api.Loader): color = "orange" def process(self, name, namespace, context, data): - from maya import cmds cmds.loadPlugin("AbcImport.mll", quiet=True) # Prevent identical alembic nodes from being shared # Create unique namespace for the cameras + # Get name from asset being loaded + assert "_" in name, "Naming convention not followed" + assetname = "{}_".format(name.split("_")[0]) + namespace = maya.unique_namespace(assetname, + format="%03d", + suffix="_abc") nodes = cmds.file(self.fname, namespace=namespace, sharedReferenceFile=False, @@ -27,8 +36,13 @@ class AbcLoader(api.Loader): reference=True, returnNewNodes=True) + # load colorbleed ID attribute + self.lock_id_attr(nodes) + self[:] = nodes + def lock_id_attr(self): + pass class CurvesLoader(api.Loader): """Specific loader of Curves for the avalon.animation family""" @@ -77,24 +91,19 @@ class CurvesLoader(api.Loader): ]) with maya.maintained_selection(): - cmds.select( - control_set, - replace=True, + cmds.select(control_set, + replace=True, + # Support controllers being embedded in + # additional selection sets. + noExpand=False) - # Support controllers being embedded in - # additional selection sets. - noExpand=False - ) - - nodes = cmds.file( - self.fname, - i=True, - type="atomImport", - renameAll=True, - namespace=namespace, - options=options, - returnNewNodes=True, - ) + nodes = cmds.file(self.fname, + i=True, + type="atomImport", + renameAll=True, + namespace=namespace, + options=options, + returnNewNodes=True) self[:] = nodes + cmds.sets(container, query=True) + [container] @@ -102,8 +111,7 @@ class CurvesLoader(api.Loader): self._post_process(name, namespace, context, data) def _post_process(self, name, namespace, context, data): - import os - from maya import cmds + from avalon import maya, io # Task-dependent post-process @@ -137,6 +145,7 @@ class CurvesLoader(api.Loader): cmds.select([output, controls], noExpand=True) dependencies = [context["representation"]["_id"]] + dependencies = " ".join(str(d) for d in dependencies) name = "anim{}_".format(dependency["name"].title()) # TODO(marcus): Hardcoding the family here, better separate this. @@ -144,8 +153,7 @@ class CurvesLoader(api.Loader): assert len(family) == 1, ("None or multiple animation " "families found") family = family[0] - maya.create( - name=maya.unique_name(name, suffix="_SET"), - family=family, - options={"useSelection": True}, - data={"dependencies": " ".join(str(d) for d in dependencies)}) + maya.create(name=maya.unique_name(name, suffix="_SET"), + family=family, + options={"useSelection": True}, + data={"dependencies": dependencies}) diff --git a/colorbleed/plugins/maya/load/load_model.py b/colorbleed/plugins/maya/load/load_model.py index 313048b1da..57d1676189 100644 --- a/colorbleed/plugins/maya/load/load_model.py +++ b/colorbleed/plugins/maya/load/load_model.py @@ -46,8 +46,6 @@ class ModelGPUCacheLoader(api.Loader): def process(self, name, namespace, context, data): - from maya import cmds - # todo: This will likely not be entirely safe with "containerize" # also this cannot work in the manager because it only works # on references at the moment!