PhysxJointAPI#

PhysX tuning shared by every joint type: joint friction, a joint-level armature seed and a joint-level maximum joint velocity. The two per-axis values are seeds that PhysxJointAxisAPI: may override per axis. All three only take effect on articulation joints; standalone PxJoints have no counterpart.

  • Applies to: PhysicsJoint

  • Read only when listed in usd-schemas.

What USD population writes#

Every declared attribute is published at its resolved value. physxJoint:maxJointVelocity is rewritten to FLT_MAX when unauthored and CREATED on every joint-typed prim even when this API is not applied; the consumer ignores it unless PhysxJointAPI is in usd-schemas.

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

physxJoint:jointFriction

float32

none

0.0

resolved USD value (authored, else raw fallback)

0.0

No joint friction. Read for every joint type including fixed, gear, rack and custom.

physxJoint:armature

float32

linear axes: mass; angular axes: mass*length^2

0.0

resolved USD value (authored, else raw fallback)

0.0

Zero armature on every axis. The value seeds every axis’ armature and is read whether or not PhysxJointAxisAPI is applied; only a strictly positive per-axis armature displaces it.

physxJoint:maxJointVelocity

float32

linear axes: length/s; angular axes: deg/s (deg_to_rad)

inf

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

FLT_MAX

Unlimited. Precedence per axis is PhysxJointAxisAPI::maxJointVelocity, then this column, then newton:velocityLimit, then FLT_MAX. A value >= FLT_MAX (including an explicitly authored inf) counts as no PhysX opinion and loses to newton:velocityLimit.

Interactions#

  • PhysicsJoint: Gate is the stage-wide presence of PhysxJointAPI plus usd-schemas CONTAINS PhysxJointAPI on the prim. hasAuthoredAttribute is always true on ovstage, so the resolved value always wins over the parser default.

  • PhysxJointAxisAPI: physxJoint:armature and physxJoint:maxJointVelocity are seeds for every axis; a PhysxJointAxisAPI: value overrides them per axis (armature only when strictly positive).

Known divergences#

  • note (consumer) physxJoint:maxJointVelocity: Authored-ness is decided by the value (v < FLT_MAX), because the authored bit is unavailable on ovstage. An explicitly authored inf therefore behaves as unauthored and yields to newton:velocityLimit when that is present.

Notes#

  • physxJoint:enableProjection is declared by older schema versions but is not read anywhere by the parser.

  • newton:velocityLimit (Newton schema, not part of this contract) is seeded before this column and is the fallback when maxJointVelocity is FLT_MAX.

  • Standalone (non-articulation) joints: none of these three columns has a PhysX counterpart; they are parsed and dropped.