Requirements#

Summary#

  • The rigid body schema must be applied to any xformable prim that represent a rigid physical object

  • Colliding Gprims need to have the Collision API applied

  • Each rigid body or it’s descendant colliders, should have the mass API applied.

Granularity#

If joints are not present, each rigid body will be simulated as a free body. Only create multiple rigid bodies in an asset if they are either connected by joints or if they are intended to be simulated without being connected to each other.

Schema / OpenUSD Specification#

Rigid Body Physics are applied using the following two schemas that are part of the core OpenUSD specification.

USDA Sample#

(
    kilogramsPerUnit = 1
)

def Xform "RobotHead" (
    prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
    ) {

    physics:mass = 10.0

    def Mesh "Head" (
        prepend apiSchemas = ["PhysicsCollisionAPI"]
    ) {
        # ...
    }

    def Mesh "Jaw" (
        prepend apiSchemas = ["PhysicsCollisionAPI"]
    ) {
        # ...
    }
}

def Mesh "GroundPlane" (
    prepend apiSchemas = ["PhysicsCollisionAPI"]
) {}

Requirements#

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