PhysicsMaterialAPI#
Makes a prim a physics material and creates a PxMaterial for it. Enumerated by usd-schemas CONTAINS PhysicsMaterialAPI with physics:dynamicFriction as the probe column. Nothing here is units-scaled; the two friction defaults diverge from the raw schema fallback.
Applies to:
TypedRead only when listed in
usd-schemas.
What USD population writes#
Every declared attribute is published at its resolved value, so an unauthored friction lands as the raw fallback 0.0 and a producer-populated stage never reaches the consumer’s 0.5 defaults. No column 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 |
|---|---|---|---|---|---|---|
|
float32 |
none |
0.0 |
resolved USD value (authored, else raw fallback) |
0.5 diverges |
0.5 (PhysX convention), not the schema fallback 0.0. Writing the raw fallback literally gives a frictionless material where an omitted column gives coefficient 0.5; USD population always publishes the resolved value, so an unauthored attribute yields 0.0 there. |
|
float32 |
none |
0.0 |
resolved USD value (authored, else raw fallback) |
0.5 diverges |
0.5, same divergence as physics:staticFriction: the raw fallback 0.0 is frictionless, the omitted column is 0.5. |
|
float32 |
none |
0.0 |
resolved USD value (authored, else raw fallback) |
0.0 |
0.0, no bounce. |
|
float32 |
mass/length^3 |
0.0 |
resolved USD value (authored, else raw fallback) |
-1.0 |
-1.0, the unset sentinel: mass computation ignores the material and falls back to PhysicsMassAPI density, then the consumer default density. The raw fallback 0.0 reads as unset too, so writing it literally is harmless. |
Interactions#
Material: This API, not the prim type, is what physics enumerates. See Material for the consequences of a Material prim without it.PhysxMaterialAPI: Combine modes and compliant contact live on PhysxMaterialAPI and are read only when that API is also in usd-schemas; without it every PhysX default applies (average combine, no compliance).PhysicsMassAPI: physics:density here is the second source of a shape’s density, after an explicit PhysicsMassAPI density on the body and before the consumer default.
Known divergences#
defect (consumer)
physics:staticFriction: The consumer default 0.5 for both frictions disagrees with the schema fallback 0.0 that the producer publishes: a producer-populated Material simulates with friction 0, a hand-populated stage that omits the columns with 0.5. Observed in the material_bound_cube parity test (PxMaterial::getStaticFriction 0.5 vs 0). Same for physics:dynamicFriction.