asset-at-origin#
Code |
VG.025 |
---|---|
Validator |
|
Compatibility |
core usd |
Tags |
🔑 |
Summary#
Asset transforms shall be defined such that the asset is correctly positioned and oriented at the origin (0,0,0).
Description#
Assets should be authored with their local transformation setup so that when referenced into a scene at a particular location, the asset appears at that location as intended. This ensures predictable behavior when aggregating assets in larger scenes.
Why is it required?#
Ensures predictable asset placement in aggregate scenes
Simplifies asset referencing workflows
Provides consistent baseline for transformation operations
Facilitates automated scene composition and layout tools
Examples#
#usda 1.0
# Valid: Asset positioned correctly at origin
def Xform "Table_Valid" ()
{
float3 xformOp:translate = (0, 0, 0)
float3 xformOp:rotateXYZ = (0, 0, 0)
float3 xformOp:scale = (1, 1, 1)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
def Cube "TableTop" {
float3 xformOp:translate = (0, 0, 0.6)
float3 xformOp:scale = (1, 1, 0.2)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:scale"]
}
}
# Invalid: Asset with non-identity default transforms
def Xform "Table_Invalid" (
)
{
float3 xformOp:translate = (0, 0, 0.6) # Asset offset from origin by default
uniform token[] xformOpOrder = ["xformOp:translate"]
def Cube "TableTop" {
float3 xformOp:scale = (1, 1, 0.2)
uniform token[] xformOpOrder = ["xformOp:scale"]
}
}
How to comply#
Position assets at the origin (0,0,0) in their local space
Set default rotation to (0,0,0) for neutral orientation
Set default scale to (1,1,1) for unit scale
Use transformation operations for instance-specific positioning when referencing into scenes
Test assets by referencing them into a scene at the origin to verify correct placement