mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
modified usdlib
modified as best as I could
This commit is contained in:
parent
c3296b1322
commit
458bb80526
1 changed files with 23 additions and 24 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue