Physics Schemas#
Physics behavior in a USD scene is described by schemas: typed sets of
attributes and relationships applied to prims. ovphysx loads and simulates scenes
authored with these schemas. This page explains the schema layers ovphysx
understands and how to make the PhysX-specific ones available when you author
with a stock usd-core.
Schema Layers#
USD Physics Schema (
UsdPhysics) — the standard OpenUSD schema for annotating assets with physics:PhysicsScene,PhysicsRigidBodyAPI,PhysicsCollisionAPI,PhysicsMassAPI,PhysicsMaterialAPI, the joint types, and articulation APIs. It ships with stockusd-coreand has typed Python bindings, for exampleUsdPhysics.RigidBodyAPI.Apply(prim). Refer to the OpenUSD UsdPhysics reference.PhysX Schema (
Physx*, codeless) — extendsUsdPhysicswith PhysX-specific functionality and tuning:PhysxSceneAPI(solver, GPU settings),PhysxRigidBodyAPI(CCD, sleep, stabilization),PhysxCollisionAPI(contact and rest offsets),PhysxForceAPI, joint extensions such asPhysxJointAxisAPI(refer to Joints), deformable extensions (refer to Deformables), and more. ovphysx ships this schema as codeless artifacts (plugInfo.jsonplusgeneratedSchema.usda, no compiled library).Omni Physics Deformable Schema (codeless) — extends
UsdPhysicswith deformable bodies (OmniPhysicsDeformableBodyAPIand friends). Refer to Deformables.
The complete attribute set for each schema — types, defaults, and allowed values — is authoritative in the schema definitions themselves and is rendered in the Omni Physics documentation and the OpenUSD UsdPhysics reference. This guide describes intent, not full attribute definitions, so the two do not drift.
How ovphysx Ships the PhysX Schemas#
ovphysx exposes the PhysX USD schemas as codeless artifacts: a
plugInfo.json (Type: resource) plus a generatedSchema.usda per module, with
no compiled library. Codeless schemas carry no typed helper class — there is no
PhysxSchema.PhysxRigidBodyAPI binding. You apply them by identifier and author
their attributes generically.
Because they are codeless, the core UsdPhysics typed APIs (rigid body,
collider, mass, scene) work out of the box with stock usd-core, while
Physx* attributes require registering the codeless schemas first.
Making Schemas Available#
There are two registration paths, depending on which USD runtime is in play.
ovphysx’s bundled USD runtime#
When you run the simulator, ovphysx uses its bundled OV namespaced USD runtime.
Importing ovphysx automatically calls register_schema_paths(), which appends
ovphysx’s schema plugin path to OV_PXR_PLUGINPATH_2511 before the first USD
stage open. In a process that mixes ovphysx with another USD-aware subsystem
(for example ovrtx), call register_schema_paths() (and the peer subsystem’s
equivalent) explicitly before the first stage open so USD’s schema registry sees
every plugin root. This ordering is not advisory: USD’s schema registry is built
once, on first access, and a late call cannot repair it. Refer to the USD
coexistence notes in the Overview.