PhysxRigidBodyAPI#

PhysX tuning for a dynamic rigid body. Read only when the prim also carries PhysicsRigidBodyAPI with rigidBodyEnabled true. Three columns have units-scaled parser defaults that the raw schema fallback does not reproduce.

What USD population writes#

Every declared attribute is published at its resolved value. Five columns are rewritten when unauthored, and CREATED on any prim with PhysicsRigidBodyAPI even when this API is not applied: sleepThreshold, stabilizationThreshold, maxDepenetrationVelocity (units-scaled), maxLinearVelocity (1e16) and maxContactImpulse (FLT_MAX). The producer’s values equal the consumer’s absent-column defaults, so on a producer-populated stage the raw schema fallbacks never reach the consumer.

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

physxRigidBody:linearDamping

float32

1/s

0.0

resolved USD value (authored, else raw fallback)

0.0

0.

physxRigidBody:angularDamping

float32

1/s

0.05

resolved USD value (authored, else raw fallback)

0.05

0.05.

physxRigidBody:maxLinearVelocity

float32

length/s

inf

when unauthored: 1e+16 (column created even without the API)

1e+16

1e16, effectively unlimited. inf is clamped to the same value.

physxRigidBody:maxAngularVelocity

float32

deg/s (deg_to_rad)

5729.58

resolved USD value (authored, else raw fallback)

5729.58

100 rad/s (5729.58 deg/s). Authored values are clamped to 1e16 deg/s and converted; negative values are ignored.

physxRigidBody:sleepThreshold

float32

length^2/s^2

5e-05

when unauthored: 5e-5 * (10 / metersPerUnit) ** 2 (column created even without the API)

5e-5 * (10 / metersPerUnit) ** 2 diverges

Units-scaled default: 5e-3 on a meter stage, 50 on a centimeter stage. Writing the raw schema fallback 5e-5 on a centimeter stage makes the body sleep 10^6 times too eagerly.

physxRigidBody:stabilizationThreshold

float32

length^2/s^2

1e-05

when unauthored: 1e-5 * (10 / metersPerUnit) ** 2 (column created even without the API)

1e-5 * (10 / metersPerUnit) ** 2 diverges

Units-scaled default: 1e-3 on a meter stage, 10 on a centimeter stage.

physxRigidBody:maxDepenetrationVelocity

float32

length/s

3.0

when unauthored: 3 / metersPerUnit (column created even without the API)

3 / metersPerUnit diverges

Units-scaled default: 3 on a meter stage, 300 on a centimeter stage.

physxRigidBody:contactSlopCoefficient

float32

none

0.0

resolved USD value (authored, else raw fallback)

0.0

0.

physxRigidBody:maxContactImpulse

float32

mass*length/s

inf

when unauthored: FLT_MAX (column created even without the API)

FLT_MAX

Unlimited.

physxRigidBody:cfmScale

float32

none

0.025

resolved USD value (authored, else raw fallback)

0.025

0.025.

physxRigidBody:solverPositionIterationCount

int32

none

16

resolved USD value (authored, else raw fallback)

16

16.

physxRigidBody:solverVelocityIterationCount

int32

none

1

resolved USD value (authored, else raw fallback)

1

1.

physxRigidBody:enableCCD

bool8

none

false

resolved USD value (authored, else raw fallback)

false

Off.

physxRigidBody:enableSpeculativeCCD

bool8

none

false

resolved USD value (authored, else raw fallback)

false

Off.

physxRigidBody:disableGravity

bool8

none

false

resolved USD value (authored, else raw fallback)

false

Gravity applies.

physxRigidBody:retainAccelerations

bool8

none

false

resolved USD value (authored, else raw fallback)

false

Off.

physxRigidBody:enableGyroscopicForces

bool8

none

true

resolved USD value (authored, else raw fallback)

true

On.

physxRigidBody:solveContact

bool8

none

true

resolved USD value (authored, else raw fallback)

true

On.

physxRigidBody:lockedPosAxis

int32

none

0

resolved USD value (authored, else raw fallback)

0

No locked translation axes. Bitmask x=1, y=2, z=4.

physxRigidBody:lockedRotAxis

int32

none

0

resolved USD value (authored, else raw fallback)

0

No locked rotation axes. Bitmask x=1, y=2, z=4.

Known divergences#

  • fragile physxRigidBody:sleepThreshold: The authored-bit gate that protects units-scaled defaults is a no-op on ovstage (hasAuthoredAttribute is always true), so the default is passed through the clamp. Every current default lies inside its clamp range; a future default outside it would be clipped on ovstage only. Same for stabilizationThreshold and maxDepenetrationVelocity.