PhysxContactReportAPI#
Registers a rigid body (or every link of an articulation) for contact reporting. Read by the runtime at actor creation, not by the parse library; without the API in usd-schemas nothing is registered even if the attributes are authored.
Applies to:
XformableRead only when listed in
usd-schemas.Uses blocks:
stage_units
What USD population writes#
The threshold is published at its resolved value (raw fallback 1.0 when unauthored); the reportPairs relationship only when authored, an authored empty target list being an empty row.
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 |
mass*length/s (impulse) |
1.0 |
resolved USD value (authored, else raw fallback) |
|
One tolerances length (1 / metersPerUnit): 1 on a meter stage, 100 on a centimeter stage. Ambiguous-fallback collapse: a column that reads exactly 1.0 is treated as unauthored and yields the same units-scaled default, so writing the raw fallback literally is equivalent to omitting the column, and an intended threshold of exactly 1.0 cannot be expressed on a non-meter stage. |
|
uint64 array, RELATIONSHIP_PATH_ID |
not written |
Wildcard: contacts with EVERY other actor are reported. This is decided by hasRelationship, not by the target count: a relationship that is present but empty registers nothing, and a present relationship whose targets all fail to resolve to live objects also registers nothing rather than widening into the wildcard. |
Interactions#
PhysicsRigidBodyAPI: Registered once per rigid actor at creation; on an articulation root every link is registered with the same threshold and pairs.stage_units: The default threshold scales with the tolerances length; the authored value does not.
Known divergences#
fragile (consumer)
physxContactReport:threshold: Because ovstage reports every column as authored, the consumer distinguishes authored from unauthored by comparing against the raw schema fallback 1.0; an authored 1.0 collapses to the units-scaled default (1 / metersPerUnit). Same shape as the character controller contactOffset/stepOffset case.