FAQ
Frequently Asked Questions or Issues
I do not see my model on loading the asset
On Load warning message "Unresolved Reference Path" shows
Since you're publishing into the asset structure make sure your data is inside the expected default primitive path for that asset, where the default primitive is always {folder[name]}
so your data should be inside /{folder[name]}/...
so that the data resides inside the default primitive path.
This is wrong: ⚠️
/geo/marble
/materials/material1
This is correct: 🏆
/hero
/geo/marble
/materials/material1
You are lacking the default primitive it expects.
What are all these publisher options, like Target Product?
Some technical details explained by @MustafaJafar
USD Publish Settings explained
Initialize as asset vs shot
As explained in Getting Started
Asset
Layer supports:- Load/unload the asset
- Have different layers to hold data from different departments
- Allow each layer to have switchable variants
Shot
Layer only combines different layers from different departments.
Here's an example of the generated asset and shot structure by AYON USD publish plugins.
USD Asset Structure
# USD Asset
{target-product}.usda
└── Xform {folder[name]}
├── inherits __class__/{folder[name]}
└── payload ./payload.usda # Relative path
payload.usda
└── mata data
└── sublayers
└── {target-product_department-name}.usda:ARGS:{layer-id}, {order}USD Shot Structure
# USD Shot
{target-product}.usda
└── mata data
└── sublayers
└── {target-product_department-name}.usda:ARGS:{layer-id}, {order}
Available Department Layers
Please, be aware that we currently do not provide validators to confirm if the content you intend to publish matches your selected layer. As it stands, layers function as labels with a predetermined order. For example, the model layer will consistently be evaluated before the material layer.
Layers order:
- Asset layers
- model: 100
- assembly: 150
- groom: 175
- look: 200
- rig: 300
- Shot layers
- layout: 200
- animation: 300
- simulation: 400
- fx: 500
- lighting: 600
USD Different publish options
Let's focus on 4 interesting settings + 1 computed value by the publisher.
target-product
which is a user editable text.target-product_department-name
which is a selection from a drop down list.variant-set-name
which is by default is set to{layer}
which evaluates to the selected item in the drop down list in Num2variant-name
which is by default is set to{variant}
as the arrow in the screenshot points.product-name
which what we have by default from the publisher for any publish instance.
Publish a separate layer
By disabling Enable
toggle.
USD publish plugins will skip the USD contribution and publish a single layer.
and, it doesn't affect the version in the latest published target-product
or target-product_department-name
.
Resultant Products:
- Product:
product-name
Publishing Asset contribution with Variant{product-name}.usd
# It can be any usd hierarchy.
When choosing shot instead of asset, the resultant Product: target-product
will follow the same shot structure mentioned earlier.
Resultant Products:
Product:
target-product
(2 layers)# USD Asset
{target-product}.usda
└── Xform {folder[name]}
├── inherits __class__/{folder[name]}
└── payload ./payload.usda # Relative path
payload.usda
└── mata data
└── sublayers
└── {target-product_department-name}.usda:ARGS:{layer-id}, {order}Product:
target-product_department-name
# USD Asset Layer
{target-product_department-name}.usda
└── Xform {folder[name]}
├── Variant Sets -> ["{variant-set-name}"]
└── Variant Set "{variant-set-name}"
└── Variant {variant-name}
├── reference -> {product-name}
└── custom data
├── ayon_order
└── ayon_uri -> AYON URI for the published AYON USD product variantProduct:
{product-name}
# USD product
{product-name}.usd
# It can be any hierarchy.
Publishing Asset contribution with no Variant
When choosing shot instead of asset, the resultant Product: target-product
will follow the same shot structure mentioned earlier.
Resultant Products:
Product:
target-product
(2 layers)# USD Asset
{target-product}.usda
└── Xform {folder[name]}
├── inherits __class__/{folder[name]}
└── payload ./payload.usda # Relative path
payload.usda
└── mata data
└── sublayers
└── {target-product_department-name}.usda:ARGS:{layer-id}, {order}Product:
target-product_department-name
# USD Asset Layer
{target-product_department-name}.usda
└── mata data
└── sublayers
└── {product-name}.usda:ARGS:{layer-id}Product:
{product-name}
# USD product
{product-name}.usd
# It can be any hierarchy.
We need to manually rename primitive paths the whole time?
We use reference so we can manually enter the primitive path, but i don't think that should be the way to go, they should all be connected and work without renaming and further input.
You should not need to manually rename all referenced primitive paths for assets
Using the AYON USD Contribution Workflow manual 're-assigning' all the time for assets should be redundant for the majority of the workflow. (Preferably this should never be needed, but some sections like animation from shot layers may still fall outside of that scope.)
- Use the AYON USD Contribution workflow where the asset build is built automatically from single product contributions into the root primitive.
- Load the
usdAsset
- avoid using the individual layers. You should not need to load those individually since they are all in the main asset.
Now, in a shot based workflow you just load the asset and since e.g. Maya animation caches are not already overlaid over a USD asset structure that is one of the moments where you will need to define the path you're overlaying to.
That's usually like:
- Reference the
usdAsset
into your shot's structure, e.g.
/asset/hero
Which may result in e.g. an asset with model and look:
/asset/
hero/ <- the `usdAsset` reference is here
geo/..
mtl/..
(The "hero" is the prim where you have the reference to the usdAsset
)
You need to make sure that anything you want to layer on top of your asset comes in with the same hierarchy, so an animation cache preferably also has the structure:
hero/
geo/..
With the animated geometry only.
That you can then also reference on top of /asset/hero
in the shot structure which makes your referenced asset (that already has materials) move because just the geometries are being overridden.
Keep in mind the layer strength - referencing lower in the hierarchy means a stronger opinion!
It's usually important to reference on the same root prim of the asset, because as soon as you e.g. reference over asset/hero/geo
instead your reference is lower in hierarchy than any reference on a higher prim like asset/hero
and hence will ALWAYS be the stronger opinion.