Multiple Physics Solvers#
Goal#
Author and validate one SimReady prop so it can run under PhysX, Newton, or MuJoCo without a separate USD file per solver.
After this guide you can:
Explain how runtime physics variants isolate solvers on one asset
Map Core / Rigid Body / Multibody features to each solver
Point validators and samples at the correct runtime selection
Find the requirement, profile, and isolation references
Why multiple solvers on one asset#
Robotics pipelines rarely share one physics backend. PhysX is the reference path for Isaac Sim, Newton is the target runtime for Isaac Lab, and MuJoCo remains common for research and interchange. Separate USD files per solver break shared packaging, thumbnails, materials, and semantics.
SimReady Foundation uses runtime physics variants: a neutral OpenUSD base
plus optional payload layers. Each solver opts in through a USD variant set.
With every physics variant Disabled, the base stays valid. Enabling one
runtime composes only that runtime’s schemas on top of neutral physics data.
For prop assets, use the samples linked below as the reference layout. Robot body multiphysics support may differ by profile version — check the profile you target.
How it works#
flowchart TB
Base["Neutral SimReady base<br/>UsdPhysics + visuals + materials"]
Base --> VS["Variant sets on defaultPrim<br/>PhysX / Newton / MuJoCo"]
VS -->|Enabled| PX["runnables/physics/physx.usd"]
VS -->|Enabled| NW["runnables/physics/newton.usd"]
VS -->|Enabled| MJ["runnables/physics/mujoco.usd"]
VS -->|Disabled| Empty["Empty section<br/>no foreign schemas"]
Three layers enforce the contract:
Layer |
What it defines |
Where to read |
|---|---|---|
Runtime Variants (RV) |
Variant set names, payload paths, metadata, purity, isolation |
|
Runtime features |
Solver rigid-body and multibody rules ( |
Feature pages below |
Profiles |
Which optional runtime features a prop profile accepts |
Feature expansion pattern#
Neutral features describe OpenUSD physics. Each solver expands them with a runtime-tagged feature that the validator enables before checking:
Concern |
Neutral |
PhysX |
Newton |
MuJoCo |
|---|---|---|---|---|
Core scaffolding |
|
|
|
|
Rigid body |
|
|
|
|
Multibody |
|
|
|
|
Physics runtime features set a runtime field (PhysX, Newton, or
MuJoCo) so simready-validate enables that variant set before those rules
run. See Runtime Variant Field.
Isolation rules#
When PhysX = Enabled and the other physics variants stay Disabled, the
composed stage may contain only:
Neutral
UsdPhysics/physics:dataPhysX schemas and
physx*:attributes
Newton or MuJoCo schemas in that composition fail RV.011. The same rule
applies when Newton or MuJoCo is selected. With all physics variants
Disabled, no solver-specific schemas may remain.
Authoritative policy: Runtime Physics Isolation Matrix.
Common mistakes:
Authoring
physics:approximation = "sdf"on the neutral base (PhysX-only)Merging PhysX and Newton schemas into one payload
Leaving a second runtime variant
Enabledwhile validating another
Reference samples#
Sample |
Role |
|---|---|
Unibody prop with PhysX, Newton, and MuJoCo payloads under |
|
Multibody prop with the same runtime-variant layout |
Feature adapters#
Feature adapters mutate neutral physics into a runtime-specific contract
(Neutral → PhysX, Neutral → Newton, and so on). They author payload content;
Core FET_000_* features own the variant scaffolding around those payloads.
See Feature Adapters.