placeable-posable-are-xformable#
Code |
HI.006 |
---|---|
Validator |
Manual |
Compatibility |
openusd |
Tags |
🔑 |
Version |
0.1.0 |
Summary#
All prims representing objects or groups that require placement, posing or animation shall be xformable.
Description#
This requirement ensures that any prim in the USD scene graph that represents a distinct object or group and requires spatial transformation capabilities (placement, posing, or animation) must inherit from the UsdGeomXformable schema.
UsdGeomXformable provides the fundamental transformation capabilities needed for:
Positioning objects in 3D space
Rotating and orienting objects
Scaling objects
Animating transformations over time
Supporting hierarchical transformations
Without inheriting from UsdGeomXformable, prims cannot be properly transformed, positioned, or animated in the scene.
Why is it required?#
Enables proper positioning, posing, and animation of objects
Ensures compatibility with USD’s transform evaluation pipeline
Provides consistent transformation capabilities across all transformable prims
Supports animation workflows and keyframe-based transformations
Maintains consistency with USD’s transformable prim expectations
Examples#
# Valid: Mesh prim inherits UsdGeomXformable
def Mesh "TransformableMesh"
{
double3 xformOp:translate = (0, 0, 0)
double3 xformOp:rotateXYZ = (0, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ"]
}
# Valid: Xform prim inherits UsdGeomXformable
def Xform "TransformableXform"
{
double3 xformOp:translate = (1, 2, 3)
uniform token[] xformOpOrder = ["xformOp:translate"]
def Mesh "ChildMesh" {} # Also inherits UsdGeomXformable
}
# Valid: Light prim inherits UsdGeomXformable
def SphereLight "TransformableLight"
{
double3 xformOp:translate = (0, 5, 0)
uniform token[] xformOpOrder = ["xformOp:translate"]
}
# Invalid: Material prim does not inherit UsdGeomXformable
def Material "NonTransformableMaterial"
{
# Cannot be positioned, posed, or animated
}
How to comply#
Ensure all prims that need transformation capabilities inherit from UsdGeomXformable
Use prim types that naturally inherit UsdGeomXformable (Xform, Mesh, Sphere, Cube, Lights, etc.)
Avoid using non-transformable prims (Material, Shader, etc.) for objects that need placement or animation
Verify that transformation operations can be applied to the prims
Test that animation of transformations is supported
Exceptions to watch out for#
Non-transformable prims: Prims like Material, Shader, and other non-geometric types cannot be transformed and should not be used for objects requiring placement or animation
Reference prims: When referencing other assets, ensure the referenced prims also inherit from UsdGeomXformable if they need transformation capabilities