From 951dcfca3e7f9c02e8d878fea4d693f950b7fada Mon Sep 17 00:00:00 2001 From: Simone Barbieri Date: Mon, 10 Feb 2020 14:45:50 +0000 Subject: [PATCH] Code optimization --- pype/blender/plugin.py | 13 ++---- pype/plugins/blender/create/create_model.py | 2 +- pype/plugins/blender/create/create_rig.py | 4 +- pype/plugins/blender/load/load_model.py | 15 +++--- pype/plugins/blender/load/load_rig.py | 51 +-------------------- 5 files changed, 16 insertions(+), 69 deletions(-) diff --git a/pype/blender/plugin.py b/pype/blender/plugin.py index c85e6df990..b441714c0d 100644 --- a/pype/blender/plugin.py +++ b/pype/blender/plugin.py @@ -10,15 +10,8 @@ from avalon import api VALID_EXTENSIONS = [".blend"] -def model_name(asset: str, subset: str, namespace: Optional[str] = None) -> str: - """Return a consistent name for a model asset.""" - name = f"{asset}_{subset}" - if namespace: - name = f"{namespace}:{name}" - return name - -def rig_name(asset: str, subset: str, namespace: Optional[str] = None) -> str: - """Return a consistent name for a rig asset.""" +def asset_name(asset: str, subset: str, namespace: Optional[str] = None) -> str: + """Return a consistent name for an asset.""" name = f"{asset}_{subset}" if namespace: name = f"{namespace}:{name}" @@ -149,7 +142,7 @@ class AssetLoader(api.Loader): asset = context["asset"]["name"] subset = context["subset"]["name"] - instance_name = model_name(asset, subset, namespace) + instance_name = asset_name(asset, subset, namespace) return self._get_instance_collection(instance_name, nodes) diff --git a/pype/plugins/blender/create/create_model.py b/pype/plugins/blender/create/create_model.py index 7301073f05..a3b2ffc55b 100644 --- a/pype/plugins/blender/create/create_model.py +++ b/pype/plugins/blender/create/create_model.py @@ -19,7 +19,7 @@ class CreateModel(Creator): asset = self.data["asset"] subset = self.data["subset"] - name = pype.blender.plugin.model_name(asset, subset) + name = pype.blender.plugin.asset_name(asset, subset) collection = bpy.data.collections.new(name=name) bpy.context.scene.collection.children.link(collection) self.data['task'] = api.Session.get('AVALON_TASK') diff --git a/pype/plugins/blender/create/create_rig.py b/pype/plugins/blender/create/create_rig.py index 01eb524eef..5d83fafdd3 100644 --- a/pype/plugins/blender/create/create_rig.py +++ b/pype/plugins/blender/create/create_rig.py @@ -12,14 +12,14 @@ class CreateRig(Creator): name = "rigMain" label = "Rig" family = "rig" - icon = "cube" + icon = "wheelchair" def process(self): import pype.blender asset = self.data["asset"] subset = self.data["subset"] - name = pype.blender.plugin.rig_name(asset, subset) + name = pype.blender.plugin.asset_name(asset, subset) collection = bpy.data.collections.new(name=name) bpy.context.scene.collection.children.link(collection) self.data['task'] = api.Session.get('AVALON_TASK') diff --git a/pype/plugins/blender/load/load_model.py b/pype/plugins/blender/load/load_model.py index bb9f2250be..cde4109a7c 100644 --- a/pype/plugins/blender/load/load_model.py +++ b/pype/plugins/blender/load/load_model.py @@ -12,6 +12,7 @@ from avalon import api logger = logging.getLogger("pype").getChild("blender").getChild("load_model") + class BlendModelLoader(pype.blender.AssetLoader): """Load models from a .blend file. @@ -45,8 +46,8 @@ class BlendModelLoader(pype.blender.AssetLoader): libpath = self.fname asset = context["asset"]["name"] subset = context["subset"]["name"] - lib_container = pype.blender.plugin.model_name(asset, subset) - container_name = pype.blender.plugin.model_name( + lib_container = pype.blender.plugin.asset_name(asset, subset) + container_name = pype.blender.plugin.asset_name( asset, subset, namespace ) relative = bpy.context.preferences.filepaths.use_relative_paths @@ -76,11 +77,11 @@ class BlendModelLoader(pype.blender.AssetLoader): scene.collection.children.link(bpy.data.collections[lib_container]) - rig_container = scene.collection.children[lib_container].make_local() + model_container = scene.collection.children[lib_container].make_local() objects_list = [] - for obj in rig_container.objects: + for obj in model_container.objects: obj = obj.make_local() @@ -182,14 +183,14 @@ class BlendModelLoader(pype.blender.AssetLoader): scene.collection.children.link(bpy.data.collections[lib_container]) - rig_container = scene.collection.children[lib_container].make_local() + model_container = scene.collection.children[lib_container].make_local() objects_list = [] # Link meshes first, then armatures. # The armature is unparented for all the non-local meshes, # when it is made local. - for obj in rig_container.objects: + for obj in model_container.objects: obj = obj.make_local() @@ -283,7 +284,7 @@ class CacheModelLoader(pype.blender.AssetLoader): subset = context["subset"]["name"] # TODO (jasper): evaluate use of namespace which is 'alien' to Blender. lib_container = container_name = ( - pype.blender.plugin.model_name(asset, subset, namespace) + pype.blender.plugin.asset_name(asset, subset, namespace) ) relative = bpy.context.preferences.filepaths.use_relative_paths diff --git a/pype/plugins/blender/load/load_rig.py b/pype/plugins/blender/load/load_rig.py index 8593440624..361850c51b 100644 --- a/pype/plugins/blender/load/load_rig.py +++ b/pype/plugins/blender/load/load_rig.py @@ -46,8 +46,8 @@ class BlendRigLoader(pype.blender.AssetLoader): libpath = self.fname asset = context["asset"]["name"] subset = context["subset"]["name"] - lib_container = pype.blender.plugin.rig_name(asset, subset) - container_name = pype.blender.plugin.rig_name( + lib_container = pype.blender.plugin.asset_name(asset, subset) + container_name = pype.blender.plugin.asset_name( asset, subset, namespace ) relative = bpy.context.preferences.filepaths.use_relative_paths @@ -113,53 +113,6 @@ class BlendRigLoader(pype.blender.AssetLoader): self[:] = nodes return nodes - def load(self, - context: dict, - name: Optional[str] = None, - namespace: Optional[str] = None, - options: Optional[Dict] = None) -> Optional[bpy.types.Collection]: - """Load asset via database - - Arguments: - context: Full parenthood of representation to load - name: Use pre-defined name - namespace: Use pre-defined namespace - options: Additional settings dictionary - """ - # TODO (jasper): make it possible to add the asset several times by - # just re-using the collection - assert Path(self.fname).exists(), f"{self.fname} doesn't exist." - - self.process_asset( - context=context, - name=name, - namespace=namespace, - options=options, - ) - - # Only containerise if anything was loaded by the Loader. - nodes = self[:] - if not nodes: - return None - - # Only containerise if it's not already a collection from a .blend file. - representation = context["representation"]["name"] - if representation != "blend": - from avalon.blender.pipeline import containerise - return containerise( - name=name, - namespace=namespace, - nodes=nodes, - context=context, - loader=self.__class__.__name__, - ) - - asset = context["asset"]["name"] - subset = context["subset"]["name"] - instance_name = pype.blender.plugin.rig_name(asset, subset, namespace) - - return self._get_instance_collection(instance_name, nodes) - def update(self, container: Dict, representation: Dict): """Update the loaded asset.