PhysicsRigidBodyAPI#

Makes an Xformable prim a rigid body. Enumerated by usd-schemas CONTAINS PhysicsRigidBodyAPI. Colliders are the prim itself if it is a Gprim with PhysicsCollisionAPI, plus descendant Gprims with PhysicsCollisionAPI.

  • Applies to: Xformable

  • Read only when listed in usd-schemas.

  • Uses blocks: prim, stage_units

What USD population writes#

Every declared attribute is published at its resolved value; relationships only when authored (an authored empty target list is an empty row). The producer also resolves the physics material binding onto this prim (see MaterialBindingAPI) and creates five units-aware PhysxRigidBodyAPI columns when they are unauthored, whether or not PhysxRigidBodyAPI is applied (see that component).

Columns#

Raw fallback is the USD schema value. Producer writes is what ovstage population puts in the column for a USD stage. Parser default applies on the consumer when the column is absent, in stage units. diverges means writing the raw fallback literally parses differently from omitting the column (the parser default): USD population may well publish that very value for an unauthored attribute, so the marker is about the column being present, not about its value.

Column

Type

Units

Raw fallback

Producer writes

Parser default

If absent

physics:rigidBodyEnabled

bool8

none

true

resolved USD value (authored, else raw fallback)

true

Dynamic body. False produces a static body that ignores every PhysxRigidBodyAPI column.

physics:kinematicEnabled

bool8

none

false

resolved USD value (authored, else raw fallback)

false

Not kinematic. A kinematic body with a non-zero velocity is promoted to a surface-velocity body.

physics:startsAsleep

bool8

none

false

resolved USD value (authored, else raw fallback)

false

Body starts awake.

physics:velocity

float32[3], VECTOR

length/s

(0, 0, 0)

resolved USD value (authored, else raw fallback)

(0, 0, 0)

Zero initial linear velocity.

physics:angularVelocity

float32[3], VECTOR

deg/s (deg_to_rad)

(0, 0, 0)

resolved USD value (authored, else raw fallback)

(0, 0, 0)

Zero initial angular velocity.

usd-metadata:customData:physics:localSpaceVelocities

bool8

none

the nested customData value physics -> localSpaceVelocities when present on any prim the physics selector matched

consumer setting outputVelocitiesLocalSpace

Velocities are interpreted per the consumer-wide setting. When true, the linear velocity is multiplied by the prim’s decomposed world scale in local axes, then both velocities are rotated into world space, at load and on supported later edits. On a PointInstancer prototype the same rule governs the instancer’s velocities and angularVelocities arrays: each is rotated into that instance’s own world frame, and the linear one is scaled by the instancer’s decomposed world scale – the per-instance scales entry and the prototype’s own scale do not take part – see Local-space instance velocities. After the scene’s first DirectGPU step, live ovstage velocity edits do not update dynamic (non-kinematic) bodies; use world-space session writes instead, with angular velocity in rad/s rather than the USD deg/s. See limitations.

physics:simulationOwner

uint64 array, RELATIONSHIP_PATH_ID

not written

Body joins the default scene. A non-empty list whose targets resolve to no PhysicsScene drops the body.

Interactions#

  • prim: World translation and rotation, composed from omni:xform up the chain (or omni:fabric:worldMatrix when present), become the body pose.

  • PhysicsScene: No scene relationship is required; see PhysicsScene for the consumer’s synthetic default.

  • PhysxRigidBodyAPI: The producer creates sleepThreshold, stabilizationThreshold, maxDepenetrationVelocity, maxLinearVelocity and maxContactImpulse columns on every rigid body when unauthored. Without PhysxRigidBodyAPI in usd-schemas the consumer ignores them.