mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
If folder name starts with a digit we now prefix it with _ to avoid invalid USD data to be authored.
This commit is contained in:
parent
6bf7dea414
commit
67d5422c94
2 changed files with 20 additions and 2 deletions
|
|
@ -684,3 +684,20 @@ def get_sdf_format_args(path):
|
|||
"""Return SDF_FORMAT_ARGS parsed to `dict`"""
|
||||
_raw_path, data = Sdf.Layer.SplitIdentifier(path)
|
||||
return data
|
||||
|
||||
|
||||
def get_standard_default_prim_name(folder_path: str) -> str:
|
||||
"""Return the AYON-specified default prim name for a folder path.
|
||||
|
||||
This is used e.g. for the default prim in AYON USD Contribution workflows.
|
||||
"""
|
||||
folder_name: str = folder_path.rsplit("/", 1)[-1]
|
||||
|
||||
# Prim names are not allowed to start with a digit in USD. Authoring them
|
||||
# would mean generating essentially garbage data and may result in
|
||||
# unexpected behavior in certain USD or DCC versions, like failure to
|
||||
# refresh in usdview or crashes in Houdini 21.
|
||||
if folder_name and folder_name[0].isdigit():
|
||||
folder_name = f"_{folder_name}"
|
||||
|
||||
return folder_name
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ try:
|
|||
variant_nested_prim_path,
|
||||
setup_asset_layer,
|
||||
add_ordered_sublayer,
|
||||
set_layer_defaults
|
||||
set_layer_defaults,
|
||||
get_standard_default_prim_name
|
||||
)
|
||||
except ImportError:
|
||||
pass
|
||||
|
|
@ -652,7 +653,7 @@ class ExtractUSDLayerContribution(publish.Extractor):
|
|||
sdf_layer = Sdf.Layer.OpenAsAnonymous(path)
|
||||
default_prim = sdf_layer.defaultPrim
|
||||
else:
|
||||
default_prim = folder_path.rsplit("/", 1)[-1] # use folder name
|
||||
default_prim = get_standard_default_prim_name(folder_path)
|
||||
sdf_layer = Sdf.Layer.CreateAnonymous()
|
||||
set_layer_defaults(sdf_layer, default_prim=default_prim)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue