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: Xformable

  • Read 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

physxContactReport:threshold

float32

mass*length/s (impulse)

1.0

resolved USD value (authored, else raw fallback)

1 / metersPerUnit

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.

physxContactReport:reportPairs

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.