PhysxMaterialAPI#

PhysX tuning for a physics material: combine modes and compliant contact. Read only when the prim also carries PhysicsMaterialAPI (that API is what enumerates materials) and only when PhysxMaterialAPI is listed in usd-schemas.

  • Applies to: Typed

  • Requires on the same prim: PhysicsMaterialAPI

  • Read only when listed in usd-schemas.

What USD population writes#

Every declared attribute is published at its resolved value. Token attributes are published as token-id columns (TOKEN_ID semantic); the consumer reads them through the typed TokenId overload. Nothing is rewritten or created by the producer.

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

physxMaterial:frictionCombineMode

uint64, TOKEN_ID

none

average

resolved USD value (authored, else raw fallback)

average

average. Accepted tokens: average, min, max, multiply. An unrecognised token or an invalid token id silently resolves to average.

physxMaterial:restitutionCombineMode

uint64, TOKEN_ID

none

average

resolved USD value (authored, else raw fallback)

average

average. Same tokens and unrecognised-token rule as physxMaterial:frictionCombineMode.

physxMaterial:dampingCombineMode

uint64, TOKEN_ID

none

average

resolved USD value (authored, else raw fallback)

average

average. Same tokens and unrecognised-token rule as physxMaterial:frictionCombineMode.

physxMaterial:compliantContactAccelerationSpring

bool8

none

false

resolved USD value (authored, else raw fallback)

false

Off: compliant stiffness and damping are force-based. On, they are interpreted as accelerations.

physxMaterial:compliantContactStiffness

float32

force/length (acceleration/length when the acceleration spring flag is set)

0.0

resolved USD value (authored, else raw fallback)

0.0

0.0: compliant contact off; physics:restitution reaches PhysX unchanged. Any positive value switches the material to compliant contact by storing -stiffness as the PhysX restitution.

physxMaterial:compliantContactDamping

float32

forces/length (accelerations/length when the acceleration spring flag is set)

0.0

resolved USD value (authored, else raw fallback)

0.0

0.0, no compliant damping.

Interactions#

  • PhysicsMaterialAPI: physics:restitution and compliantContactStiffness share one PhysX slot: stiffness > 0 replaces the restitution with -stiffness. The scene default material never receives the compliant-contact fields, only the three combine modes.

Notes#

  • physxMaterial:improvePatchFriction is neither in the current PhysxMaterialAPI schema fallback inventory nor read anywhere by the consumer; it is not a column of this contract.

  • The runtime CombineMode enum (eAverage=0, eMin, eMultiply, eMax) matches PxCombineMode ordinal for ordinal; token order in the schema (average, min, max, multiply) differs from the enum order, which only matters if a future contract maps tokens to integers.