modified usdlib

modified as best as I could
This commit is contained in:
Jakub Trllo 2024-03-04 17:48:46 +01:00
parent c3296b1322
commit 458bb80526

View file

@ -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<asset>[^/.]*)/(?P<subset>[^/]*)\.(?P<ext>.*)"
# URI Pattern: avalon://{folder}/{subset}.{ext}
pattern = r"avalon://(?P<folder>[^/.]*)/(?P<subset>[^/]*)\.(?P<ext>.*)"
if uri.startswith("avalon://"):
match = re.match(pattern, uri)
if match: