PhysicsDriveAPI#

Force- or acceleration-mode PD drive on one joint axis, applied as PhysicsDriveAPI:. The D6 reads transX..rotZ and distance, a revolute reads angular, a prismatic reads linear; presence of the instance enables the drive. Rotational instances are stored in degrees and the parser converts them: targets degrees to radians, stiffness and damping multiplied by 57.29577951308232.

  • Applies to: PhysicsJoint

  • Multi-apply: applied as PhysicsDriveAPI:<instance>; <inst> in a column name is the instance. Instances: transX, transY, transZ, rotX, rotY, rotZ, distance, angular, linear.

  • Read only when listed in usd-schemas.

What USD population writes#

All six declared attributes of every applied instance are published at their resolved values (type force, targets and gains 0, maxForce inf when unauthored). No rewrite.

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

drive:<inst>:physics:type

uint64, TOKEN_ID

none

force

resolved USD value (authored, else raw fallback)

force

Force-mode drive. Only a token equal to the interned acceleration selects acceleration mode; any other token, including a malformed one, is force.

drive:<inst>:physics:targetPosition

float32

rot: deg; trans: length (deg_to_rad)

0.0

resolved USD value (authored, else raw fallback)

0.0

Target at zero.

drive:<inst>:physics:targetVelocity

float32

rot: deg/s; trans: length/s (deg_to_rad)

0.0

resolved USD value (authored, else raw fallback)

0.0

Zero velocity target.

drive:<inst>:physics:stiffness

float32

rot: torque/deg; trans: force/length

0.0

resolved USD value (authored, else raw fallback)

0.0

No positional spring.

drive:<inst>:physics:damping

float32

rot: torques/deg; trans: forces/length

0.0

resolved USD value (authored, else raw fallback)

0.0

No velocity damping.

drive:<inst>:physics:maxForce

float32

rot: torque; trans: force

inf

resolved USD value (authored, else raw fallback)

FLT_MAX

Unlimited drive force. The walker seeds FLT_MAX and the parser maps any non-finite value to FLT_MAX, so the USD fallback inf is safe to write literally.

Interactions#

  • PhysicsJoint: The drive is enabled by the mere presence of PhysicsDriveAPI: in usd-schemas; there is no enable attribute. The D6 gate is per instance for transX..rotZ and distance; revolute reads angular and prismatic reads linear directly.

  • PhysxDrivePerformanceEnvelopeAPI: PhysxDrivePerformanceEnvelopeAPI: extends this drive with an actuator envelope; it is read only when the drive exists and only takes effect on articulation joints.

Notes#

  • Per-joint-type instance matrix: Fixed none; Revolute angular; Prismatic linear; Spherical none; Distance none; D6 (PhysicsJoint) transX transY transZ rotX rotY rotZ distance; Gear, Rack, Custom none.

  • Standalone mapping: transX/Y/Z and linear -> PxD6Drive::eX/eY/eZ (linear -> eX); rotX and angular -> eTWIST; rotY -> eSWING1; rotZ -> eSWING2 (the standalone D6 uses PxD6AngularDriveConfig::eSWING_TWIST). The distance instance is parsed into the descriptor but the runtime creates no drive for it.

  • Articulation mapping: angular/rotX -> PxArticulationAxis::eTWIST, rotY -> eSWING1, rotZ -> eSWING2, linear -> eX; translational D6 instances are ignored. Position and velocity targets are negated when body0 is not the parent link, and a position target beyond +-2pi on an unlimited revolute is wrapped with a warning.

  • Rotational instances (rotX, rotY, rotZ, angular) are stored in degrees; the parser converts targets degrees to radians and multiplies stiffness and damping by 57.29577951308232. Linear and translational instances are stored unconverted.