Requirements Index#

Core#

Atomic Asset#

Units#

Visualization#

Geometry#

Tags

Summary

Compatibility

Validator

πŸ”‘

Assets must contain at least one Imageable Geometry

core-usd

πŸ”‘

Geometry shall be defined as such that the asset is correctly positioned and oriented at the origin (0,0,0).

core-usd

πŸ”‘

All geometry shall be represented as non-subdivided mesh primitives using the UsdGeomMesh schema.

core-usd

βœ…

Mesh geometry must be manifold

core-usd

latest+

βœ…

Mesh topology must be valid

core-usd

latest+

βœ…

Transparent physical bodies should be watertight to allow for simulation of light transmission and refraction.

core-usd

βœ…

Meshes should be positioned with xform ops rather than by β€œbaking” transformations into point positions.

core-usd

βœ…

Repeated occurrences of identically shaped objects should have identical mesh connectivity

core-usd

Manual

βœ…

The pivot point of an asset should be positioned logically: at the center of the object’s base for ground plane objects, and at the center of rotation for objects that rotate around specific points.

core-usd

βœ…

All non-subdivided meshes must have normals.

core-usd

latest+

βœ…

Mesh normals values must be valid to produce correct shading.

core-usd

βœ…

The winding order of faces in a mesh must correctly represent the orientation (front/back) of the face.

core-usd

β›”

World space bounds must not exceed RTX limit.

rtx

πŸš€

Boundable geometry primitives must have valid extent values.

open-usd

πŸš€

Only include geometry that contributes to visualization or simulation

open-usd

πŸš€

Use efficient mesh boundaries for performance

rtx

πŸš€

Meshes should maintain appropriate scale and boundary volumes

rtx

πŸš€

Meshes should not overlap unnecessarily

core-usd

πŸš€

Meshes should not share the exact same space

core-usd

πŸš€

Use indexed primvars when values are repeated

core-usd

latest+

πŸš€

Use subdivision only when needed for smooth surfaces or displacement

core-usd

latest+

πŸš€

Only include primvars that are actively used

core-usd

latest+

πŸš€

Combine small meshes into larger ones where appropriate

core-usd

πŸš€

Use appropriate tessellation density for geometry

core-usd

πŸš€

Use time samples only when attribute values change

core-usd

πŸš€

Each vertex position should be unique

core-usd

latest+

πŸš€

Avoid tessellating primitive shapes

core-usd

πŸš€

Mesh topology should be without unused vertices, edges, or faces.

core-usd

latest+

πŸš€

Faces should have non-zero area.Faces where all vertices are co-linear or coincident waste memory and can cause rendering artifacts.

core-usd

latest+

πŸš€

The values of points must not exceed the limit at which a given precision can be represented using 32-bit floats.

core-usd

πŸš€

Meshes must be triangulated for optimal rendering performance and compatibility when considering automatic collider creation (convex-hull, convex-decomposition, etc…). Triangulating mesh will provide predictable results versus n-gons.

core-usd

Materials#

Physics#

Rigid Bodies#

Tags

Summary

Compatibility

Validator

πŸ”‘

MuJoCo collision shapes must apply MjcCollisionAPI on valid USD collision geometry.

other

MuJoCoColliderAPIChecker

πŸ”‘

MuJoCo mesh collision data must use valid MjcMeshCollisionAPI and convex-hull mesh collision authoring.

other

MuJoCoMeshCollisionAPIChecker

πŸ”‘

Newton colliders must use a valid Newton collision schema.

other

NewtonColliderAPIChecker

πŸ”‘

Authored Newton SDF attributes must be valid.

other

NewtonSDFAttributesChecker

πŸ”‘

NewtonMassAPI must be applied on an Xformable, and any authored Newton mass attributes must be valid.

other

NewtonMassAttributesChecker

πŸ”‘

CollisionAPI may only be applied to a UsdGeom Gprim or to an Xform that has PhysxMeshMergeCollisionAPI and whose collisionmeshes collection includes at least one Gprim.

physx

πŸ”‘

Assets must contain at least one rigid body

open-usd

πŸ”‘

Invisible collision meshes must have their purpose attribute set to β€˜guide’ to be properly excluded from rendering.

open-usd

πŸ”‘

Colliding Gprims must apply the Collision API.

open-usd

πŸ”‘

Assets must contain at least two rigid bodies

open-usd

βœ…

MeshCollisionAPI may only be applied to a UsdGeom Mesh or to a prim that has PhysxMeshMergeCollisionAPI. CollisionAPI is required whenever MeshCollisionAPI is applied.

physx

βœ…

Rigid bodies have to be UsdGeomXformable prims.

open-usd

latest+

βœ…

Rigid bodies cannot be part of a scene graph instance.

open-usd

latest+

βœ…

Rigid bodies can not be nested unless xformOp reset xform stack is used.

open-usd

latest+

βœ…

Rigid bodies have to be UsdGeomXformable prims without skew matrix.

open-usd

latest+

βœ…

Rigid bodies should not be nested unless they are connected by a joint.

open-usd

βœ…

UsdPhysicsMeshCollisionAPI may only be applied to UsdGeom.Mesh prims, and any prim with MeshCollisionAPI must also have UsdPhysicsCollisionAPI applied.

open-usd

RigidBodyColliderMeshChecker

βœ…

The Mesh Collision API can only be assigned to Mesh Prims.

open-usd

βœ…

The collision shape scale must be uniform for the following geometries: Sphere, Capsule, Cylinder, Cone & Points.

open-usd

latest+

πŸ’Ž

Rigid bodies or their descendant collision shapes must have a mass specification.

open-usd

πŸ’Ž

Rigid bodies or their descendent collision shapes may have detailed mass properties including density, center of mass, and inertia tensor. When authored, these detailed mass properties must be internally consistent.

open-usd

πŸ’Ž

Every rigid body must have a valid (positive) physics:mass on itself or on at least one of its child colliders. Nested rigid body subtrees are excluded from the traversal. Negative mass is always a failure.

open-usd

πŸ’Ž

Enabled rigid bodies must have collision geometry.

open-usd

Joints & Articulations#