From 458bb80526dd42892044da471dc9a7253a0f486a Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Mon, 4 Mar 2024 17:48:46 +0100 Subject: [PATCH] modified usdlib modified as best as I could --- client/ayon_core/pipeline/usdlib.py | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/client/ayon_core/pipeline/usdlib.py b/client/ayon_core/pipeline/usdlib.py index 971caa7b87..7d4105f06f 100644 --- a/client/ayon_core/pipeline/usdlib.py +++ b/client/ayon_core/pipeline/usdlib.py @@ -9,7 +9,6 @@ except ImportError: # Allow to fall back on Multiverse 6.3.0+ pxr usd library from mvpxr import Usd, UsdGeom, Sdf, Kind -from ayon_core.client import get_asset_by_name from ayon_core.pipeline import Anatomy, get_current_project_name from ayon_core.pipeline.template_data import get_template_data @@ -120,7 +119,7 @@ def create_shot(filepath, layers, create_layers=False): return filepath -def create_model(filename, asset, variant_subsets): +def create_model(filename, folder_path, variant_subsets): """Create a USD Model file. For each of the variation paths it will payload the path and set its @@ -129,8 +128,8 @@ def create_model(filename, asset, variant_subsets): """ project_name = get_current_project_name() - asset_doc = get_asset_by_name(project_name, asset) - assert asset_doc, "Asset not found: %s" % asset + folder_entity = ayon_api.get_folder_by_path(project_name, folder_path) + assert folder_entity, "Folder not found: %s" % folder_path variants = [] for subset in variant_subsets: @@ -144,7 +143,9 @@ def create_model(filename, asset, variant_subsets): ) path = get_usd_master_path( - asset=asset_doc, product_name=subset, representation="usd" + folder_entity=folder_entity, + product_name=subset, + representation="usd" ) variants.append((variant, path)) @@ -171,7 +172,7 @@ def create_model(filename, asset, variant_subsets): stage.GetRootLayer().Save() -def create_shade(filename, asset, variant_subsets): +def create_shade(filename, folder_path, variant_subsets): """Create a master USD shade file for an asset. For each available model variation this should generate a reference @@ -180,8 +181,8 @@ def create_shade(filename, asset, variant_subsets): """ project_name = get_current_project_name() - asset_doc = get_asset_by_name(project_name, asset) - assert asset_doc, "Asset not found: %s" % asset + folder_entity = ayon_api.get_folder_by_path(project_name, folder_path) + assert folder_entity, "Folder not found: %s" % folder_path variants = [] @@ -197,7 +198,9 @@ def create_shade(filename, asset, variant_subsets): shade_subset = re.sub("^usdModel", "usdShade", subset) path = get_usd_master_path( - asset=asset_doc, product_name=shade_subset, representation="usd" + folder_entity=folder_entity, + product_name=shade_subset, + representation="usd" ) variants.append((variant, path)) @@ -208,7 +211,7 @@ def create_shade(filename, asset, variant_subsets): stage.GetRootLayer().Save() -def create_shade_variation(filename, asset, model_variant, shade_variants): +def create_shade_variation(filename, folder_path, model_variant, shade_variants): """Create the master Shade file for a specific model variant. This should reference all shade variants for the specific model variant. @@ -216,8 +219,8 @@ def create_shade_variation(filename, asset, model_variant, shade_variants): """ project_name = get_current_project_name() - asset_doc = get_asset_by_name(project_name, asset) - assert asset_doc, "Asset not found: %s" % asset + folder_entity = ayon_api.get_folder_by_path(project_name, folder_path) + assert folder_entity, "Folder not found: %s" % folder_path variants = [] for variant in shade_variants: @@ -225,7 +228,9 @@ def create_shade_variation(filename, asset, model_variant, shade_variants): model=model_variant, shade=variant ) path = get_usd_master_path( - asset=asset_doc, product_name=subset, representation="usd" + folder_entity=folder_entity, + product_name=subset, + representation="usd" ) variants.append((variant, path)) @@ -308,14 +313,14 @@ def _create_variants_file( return stage -def get_usd_master_path(asset, product_name, representation): +def get_usd_master_path(folder_entity, product_name, representation): """Get the filepath for a .usd file of a subset. This will return the path to an unversioned master file generated by `usd_master_file.py`. Args: - asset (Union[str, dict]): Folder path or asset document. + folder (Union[str, dict]): Folder path or entity. product_name (str): Product name. representation (str): Representation name. """ @@ -324,13 +329,7 @@ def get_usd_master_path(asset, product_name, representation): project_entity = ayon_api.get_project(project_name) anatomy = Anatomy(project_name, project_entity=project_entity) - if isinstance(asset, dict) and "name" in asset: - # Allow explicitly passing asset document - asset_doc = asset - else: - asset_doc = get_asset_by_name(project_name, asset, fields=["name"]) - - template_data = get_template_data(project_entity, asset_doc) + template_data = get_template_data(project_entity, folder_entity) template_data.update({ "product": { "name": product_name @@ -352,8 +351,8 @@ def get_usd_master_path(asset, product_name, representation): def parse_avalon_uri(uri): - # URI Pattern: avalon://{asset}/{subset}.{ext} - pattern = r"avalon://(?P[^/.]*)/(?P[^/]*)\.(?P.*)" + # URI Pattern: avalon://{folder}/{subset}.{ext} + pattern = r"avalon://(?P[^/.]*)/(?P[^/]*)\.(?P.*)" if uri.startswith("avalon://"): match = re.match(pattern, uri) if match: