Robotics-Prop Profile USD Authoring Guide#
This document describes how to author a USD asset that conforms to the
Robotics-Prop profile. It consolidates the required feature set, USD
properties, naming conventions, and the optional runtime variants that this
profile exposes.
Robotics-Prop is the consolidated prop profile. It replaces the former
separate neutral and runtime-specific prop profiles with a single
profile whose neutral OpenUSD core is mandatory and whose solver-specific
behavior is selected through optional features.
Profile definition#
The Robotics-Prop profile includes the following feature set (see
robotics_prop.toml and the
feature dependency graph). Each
feature’s requirements and dependencies are defined in the feature
specifications.
[Robotics-Prop]
"3.0.0" = {features = [
{"FET_000_STANDARD" = {version = "0.1.0"}}, # "Core"
{"FET_001_STANDARD" = {version = "1.0.1"}}, # "Minimal"
{"FET_003_STANDARD" = {version = "0.2.0"}}, # "RBD Physics"
{"FET_004_STANDARD" = {version = "0.2.0"}, optional=true}, # "Simulate Multi-Body Physics"
{"FET_005_STANDARD" = {version = "0.1.0"}, optional=true}, # "Simulate Grasp Physics"
{"FET_006_STANDARD" = {version = "0.1.0"}, optional=true}, # "Materials (USDPreview)"
{"FET_006_MDL" = {version = "0.1.0"}, optional=true}, # "Materials (MDL)"
{"FET_007_STANDARD" = {version = "0.2.0"}, optional=true}, # "Non-Visual Materials"
{"FET_004_PHYSX" = {version = "0.4.0"}, optional=true}, # "Simulate Multi-Body Physics and SDF collision approximation"
{"FET_004_NEWTON" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (Newton)"
]}
"3.1.0" = {features = [ # Add optional runtime physics variant scaffolding (FET_000_* / FET_003_* / FET_004_*)
{"FET_000_STANDARD" = {version = "0.1.0"}}, # "Core"
{"FET_001_STANDARD" = {version = "1.0.1"}}, # "Minimal"
{"FET_003_STANDARD" = {version = "0.2.0"}}, # "RBD Physics"
{"FET_004_STANDARD" = {version = "0.2.0"}, optional=true}, # "Simulate Multi-Body Physics"
{"FET_005_STANDARD" = {version = "0.1.0"}, optional=true}, # "Simulate Grasp Physics"
{"FET_006_STANDARD" = {version = "0.1.0"}, optional=true}, # "Materials (USDPreview)"
{"FET_006_MDL" = {version = "0.1.0"}, optional=true}, # "Materials (MDL)"
{"FET_007_STANDARD" = {version = "0.2.0"}, optional=true}, # "Non-Visual Materials"
# PhysX runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_PHYSX" = {version = "0.1.0"}, optional=true}, # "Core PhysX runtime variant"
{"FET_003_PHYSX" = {version = "0.4.0"}, optional=true}, # "Rigid Body Physics (PhysX)"
{"FET_004_PHYSX" = {version = "0.4.0"}, optional=true}, # "Simulate Multi-Body Physics and SDF collision approximation"
# Newton runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_NEWTON" = {version = "0.1.0"}, optional=true}, # "Core Newton runtime variant"
{"FET_003_NEWTON" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (Newton)"
{"FET_004_NEWTON" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (Newton)"
# MuJoCo runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Core MuJoCo runtime variant"
{"FET_003_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (MuJoCo)"
{"FET_004_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (MuJoCo)"
]}
"3.2.0" = {features = [ # Add required SimReady packaging + provenance metadata (FET_031_STANDARD, FET_033_STANDARD@0.3.0 / SR.003) and optional standalone Isaac Sim composition (FET_100_ISAAC@0.4.0 / ISA.001)
{"FET_000_STANDARD" = {version = "0.1.0"}}, # "Core"
{"FET_001_STANDARD" = {version = "1.0.1"}}, # "Minimal"
{"FET_003_STANDARD" = {version = "0.2.0"}}, # "RBD Physics"
{"FET_004_STANDARD" = {version = "0.2.0"}, optional=true}, # "Simulate Multi-Body Physics"
{"FET_005_STANDARD" = {version = "0.1.0"}, optional=true}, # "Simulate Grasp Physics"
{"FET_006_STANDARD" = {version = "0.1.0"}, optional=true}, # "Materials (USDPreview)"
{"FET_006_MDL" = {version = "0.1.0"}, optional=true}, # "Materials (MDL)"
{"FET_007_STANDARD" = {version = "0.2.0"}, optional=true}, # "Non-Visual Materials"
{"FET_011_STANDARD" = {version = "0.2.0"}}, # "Semantic Labels"
{"FET_011_RTX" = {version = "0.1.0"}}, # "Semantic Labels (RTX)"
{"FET_046_STANDARD" = {version = "0.1.0"}}, # "Wikidata Q-Code"
# SimReady packaging + provenance metadata (required)
{"FET_031_STANDARD" = {version = "0.1.0"}}, # "Self-contained Package Source"
{"FET_033_STANDARD" = {version = "0.3.0"}}, # "Metadata (thumbnail + nested provenance metadata)"
# Standalone Isaac Sim composition (optional, produced by the
# simready_physx_to_isaac_prop transform). FET_100_ISAAC@0.4.0 depends on the
# PhysX rigid-body chain; when present it pulls its PhysX requirements in as
# dependencies during validation, but the PhysX features below and
# FET_100_ISAAC itself stay optional at the profile level.
{"FET_100_ISAAC" = {version = "0.4.0"}, optional=true}, # "Isaac composition"
# PhysX runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_PHYSX" = {version = "0.1.0"}, optional=true}, # "Core PhysX runtime variant"
{"FET_003_PHYSX" = {version = "0.4.0"}, optional=true}, # "Rigid Body Physics (PhysX)"
{"FET_004_PHYSX" = {version = "0.4.0"}, optional=true}, # "Simulate Multi-Body Physics and SDF collision approximation"
# Newton runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_NEWTON" = {version = "0.1.0"}, optional=true}, # "Core Newton runtime variant"
{"FET_003_NEWTON" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (Newton)"
{"FET_004_NEWTON" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (Newton)"
# MuJoCo runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Core MuJoCo runtime variant"
{"FET_003_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (MuJoCo)"
{"FET_004_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (MuJoCo)"
]}
"3.3.0" = {features = [ # Adopt FET_000_STANDARD@0.2.0 (drop NP.006 and SR.001) and FET_033_STANDARD@0.4.0 (SR.004)
{"FET_000_STANDARD" = {version = "0.2.0"}}, # "Core"
{"FET_001_STANDARD" = {version = "1.0.1"}}, # "Minimal"
{"FET_003_STANDARD" = {version = "0.2.0"}}, # "RBD Physics"
{"FET_004_STANDARD" = {version = "0.2.0"}, optional=true}, # "Simulate Multi-Body Physics"
{"FET_005_STANDARD" = {version = "0.1.0"}, optional=true}, # "Simulate Grasp Physics"
{"FET_006_STANDARD" = {version = "0.1.0"}, optional=true}, # "Materials (USDPreview)"
{"FET_006_MDL" = {version = "0.1.0"}, optional=true}, # "Materials (MDL)"
{"FET_007_STANDARD" = {version = "0.2.0"}, optional=true}, # "Non-Visual Materials"
{"FET_011_STANDARD" = {version = "0.2.0"}}, # "Semantic Labels"
{"FET_011_RTX" = {version = "0.1.0"}}, # "Semantic Labels (RTX)"
{"FET_046_STANDARD" = {version = "0.1.0"}}, # "Wikidata Q-Code"
# SimReady packaging + provenance metadata (required)
{"FET_031_STANDARD" = {version = "0.1.0"}}, # "Self-contained Package Source"
{"FET_033_STANDARD" = {version = "0.4.0"}}, # "Metadata (thumbnail + USD/sidecar provenance union / SR.004)"
# Standalone Isaac Sim composition (optional, produced by the
# simready_physx_to_isaac_prop transform). FET_100_ISAAC@0.4.0 depends on the
# PhysX rigid-body chain; when present it pulls its PhysX requirements in as
# dependencies during validation, but the PhysX features below and
# FET_100_ISAAC itself stay optional at the profile level.
{"FET_100_ISAAC" = {version = "0.4.0"}, optional=true}, # "Isaac composition"
# PhysX runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_PHYSX" = {version = "0.1.0"}, optional=true}, # "Core PhysX runtime variant"
{"FET_003_PHYSX" = {version = "0.4.0"}, optional=true}, # "Rigid Body Physics (PhysX)"
{"FET_004_PHYSX" = {version = "0.4.0"}, optional=true}, # "Simulate Multi-Body Physics and SDF collision approximation"
# Newton runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_NEWTON" = {version = "0.1.0"}, optional=true}, # "Core Newton runtime variant"
{"FET_003_NEWTON" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (Newton)"
{"FET_004_NEWTON" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (Newton)"
# MuJoCo runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Core MuJoCo runtime variant"
{"FET_003_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (MuJoCo)"
{"FET_004_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (MuJoCo)"
]}
"4.0.0" = {features = [ # Require UsdPreviewSurface; display colour, OpenPBR and MDL stay optional
{"FET_000_STANDARD" = {version = "0.2.0"}}, # "Core"
{"FET_001_STANDARD" = {version = "1.0.1"}}, # "Minimal"
{"FET_003_STANDARD" = {version = "0.2.0"}}, # "RBD Physics"
{"FET_004_STANDARD" = {version = "0.2.0"}, optional=true}, # "Simulate Multi-Body Physics"
{"FET_005_STANDARD" = {version = "0.1.0"}, optional=true}, # "Simulate Grasp Physics"
{"FET_006_STANDARD" = {version = "0.2.0"}}, # "Materials - UsdPreviewSurface (required)"
{"FET_006_OPENPBR" = {version = "0.1.0"}, optional=true}, # "Materials - OpenPBR (optional)"
{"FET_006_MDL" = {version = "0.2.0"}, optional=true}, # "Materials - MDL (optional)"
{"FET_010_STANDARD" = {version = "0.1.0"}, optional=true}, # "Display Color (optional)"
{"FET_007_STANDARD" = {version = "0.2.0"}, optional=true}, # "Non-Visual Materials"
{"FET_011_STANDARD" = {version = "0.2.0"}}, # "Semantic Labels"
{"FET_011_RTX" = {version = "0.1.0"}}, # "Semantic Labels (RTX)"
{"FET_046_STANDARD" = {version = "0.1.0"}}, # "Wikidata Q-Code"
# SimReady packaging + provenance metadata (required)
{"FET_031_STANDARD" = {version = "0.1.0"}}, # "Self-contained Package Source"
{"FET_033_STANDARD" = {version = "0.4.0"}}, # "Metadata (thumbnail + USD/sidecar provenance union / SR.004)"
# Standalone Isaac Sim composition (optional, produced by the
# simready_physx_to_isaac_prop transform). FET_100_ISAAC@0.4.0 depends on the
# PhysX rigid-body chain; when present it pulls its PhysX requirements in as
# dependencies during validation, but the PhysX features below and
# FET_100_ISAAC itself stay optional at the profile level.
{"FET_100_ISAAC" = {version = "0.4.0"}, optional=true}, # "Isaac composition"
# PhysX runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_PHYSX" = {version = "0.1.0"}, optional=true}, # "Core PhysX runtime variant"
{"FET_003_PHYSX" = {version = "0.4.0"}, optional=true}, # "Rigid Body Physics (PhysX)"
{"FET_004_PHYSX" = {version = "0.4.0"}, optional=true}, # "Simulate Multi-Body Physics and SDF collision approximation"
# Newton runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_NEWTON" = {version = "0.1.0"}, optional=true}, # "Core Newton runtime variant"
{"FET_003_NEWTON" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (Newton)"
{"FET_004_NEWTON" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (Newton)"
# MuJoCo runtime variant (Core -> Rigid Body -> Multibody)
{"FET_000_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Core MuJoCo runtime variant"
{"FET_003_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Rigid Body Physics (MuJoCo)"
{"FET_004_MUJOCO" = {version = "0.1.0"}, optional=true}, # "Simulate Multi-Body Physics (MuJoCo)"
]}
Version 3.2.0 additionally makes SimReady semantic labels, packaging source,
and provenance metadata required, and adds standalone Isaac Sim composition as an
optional feature. The neutral runtime-variant scaffolding also stays optional, so
the Isaac-composed asset and the neutral runtime variants are validated together
on the same asset. See Version 3.2.0 changes.
Version 3.3.0 keeps that 3.2.0 menu and adopts FET_000_STANDARD@0.2.0
(drops NP.006 and SR.001) plus FET_033_STANDARD@0.4.0 (SR.004 USD/sidecar
union). See Version 3.3.0 changes.
Version 4.0.0 is the SimReady Foundations 8.0 release of that same 3.3.0 contract. See
Version 4.0.0 changes.
Required versus optional features#
FET_006_STANDARD and FET_006_MDL remain optional through version 3.3.0.
Version 4.0.0 makes FET_006_STANDARD part of the required baseline and adds
display colour and OpenPBR as optional alternatives.
Feature |
Version |
Status |
Purpose |
|---|---|---|---|
|
0.2.0 ( |
Required |
Core file layout and anchored references |
|
1.0.1 |
Required |
Minimal OpenUSD asset: units, hierarchy, mesh geometry |
|
0.2.0 |
Required |
Neutral rigid-body physics and colliders |
|
0.2.0 |
Optional |
Neutral multibody joints |
|
0.1.0 |
Optional |
Grasp physics (physics material + grasp line) |
|
0.1.0 optional through |
Version-dependent |
|
|
0.1.0 (from profile |
Optional |
Display colour and opacity |
|
0.1.0 through |
Optional |
MDL materials |
|
0.1.0 (from profile |
Optional |
OpenPBR materials |
|
0.2.0 |
Optional |
Non-visual sensor materials |
A single-rigid-body prop satisfies the required set through FET_003_STANDARD
alone. Select FET_004_STANDARD only for props intentionally authored as a
multibody assembly with joints.
Version 3.1.0 additionally exposes optional PhysX, Newton, and MuJoCo runtime
variants. Each runtime is a three-feature chain: FET_000_<RUNTIME> for the
variant scaffolding, FET_003_<RUNTIME> for rigid bodies, and
FET_004_<RUNTIME> for multibody joints.
Version 4.0.0 makes the baseline appearance mandatory: every conforming asset
carries a UsdPreviewSurface material (FET_006_STANDARD). Display colour,
OpenPBR and MDL remain optional, so an asset picks whichever final surface its
runtime needs without being forced to author them all.
Requirements shared between a required and an optional feature stay required:
VM.MAT.001, VM.TEX.001, com.nvidia.usd.VM.BIND.001, and
com.nvidia.usd.VM.PS.001 are mandatory from 4.0.0 because
FET_006_STANDARD lists them, even though FET_006_OPENPBR and FET_006_MDL
list some of them too. VM.PBR.* (OpenPBR) and VM.BIND.002, VM.MDL.001,
com.nvidia.usd.VM.MDL.002, VM.TEX.002 (MDL) stay optional.
Required USD properties and schemas#
Core file layout (FET_000_STANDARD)#
Lay the asset out as
<asset_root>/<intermediate_folder>/<main.usd>, with the main USD filename containing the root folder name and exactly one USD file in the intermediate folder (NP.005).Use lowercase file names with
.usd,.usda,.usdc, or.usdzextensions, separating words with_or-(NP.002).Use lowercase directory names and group supporting content into purpose folders such as
materials/,textures/,geometry/, andphysics/(NP.003).Keep path strings within platform limits (
NP.004).Author asset metadata in root-layer
customLayerDataand/or a sidecar[asset_name].jsonbeside the USD file (NP.006).Make every
references,payloads,subLayers, and textureassetpath relative with./or../(NP.007), and make sure each one resolves to a file that exists on disk (NP.008).Author
dictionary SimReady_Metadatain root-layercustomLayerDatawith string fieldsasset_name,asset_type,source_file, andusd_date_generatedin ISOYYYY-MM-DDform (SR.001).Do not leave orphan
overprims with no underlyingdef(HI.010).
Stage metadata and hierarchy (FET_001_STANDARD)#
Set
upAxis = "Z"(UN.006) andmetersPerUnit = 1.0(UN.007).Set
defaultPrimto an existing prim (HI.004).Parent all prims under a single stage root prim (
HI.001) that inheritsUsdGeomXformable, typicallydef Xform(HI.003). AScope,Material, orShaderroot is invalid.Use anchored
./or../reference paths that do not escape the asset root (AA.001), pointing only at supported file types: USD,.png,.jpeg,.jpg,.exr,.m4a,.mp3,.wav(AA.002).
Geometry (FET_001_STANDARD)#
Author render geometry as
UsdGeom.Meshwithuniform token subdivisionScheme = "none"(VG.MESH.001).Author correct
float3[] extenton boundable geometry (VG.002).Keep mesh topology valid:
faceVertexIndicesin range, no degenerate faces (VG.014), using counter-clockwise winding (VG.029).Author normals through either
normal3f[] primvars:normalsornormal3f[] normals, but never both on the same mesh (VG.027). Normals must be unit length and point outward consistently with the winding (VG.028).Avoid coincident meshes occupying identical space (
VG.008).Place the asset at the origin with a neutral root transform (
VG.025).
Rigid bodies and colliders (FET_003_STANDARD)#
Apply
UsdPhysicsRigidBodyAPIto at least oneUsdGeomXformableprim (RB.001), and only toUsdGeomXformableprims (RB.003).Apply
UsdPhysicsCollisionAPIonly onUsdGeom.Gprimprims, not on bare Xforms (RB.COL.001).Apply
UsdPhysicsMeshCollisionAPIonly onUsdGeom.Mesh, always paired withUsdPhysicsCollisionAPI(RB.COL.002,RB.COL.003).Keep world scale uniform on Sphere, Capsule, Cylinder, Cone, and Points colliders; Mesh and Cube may be scaled non-uniformly (
RB.COL.004).Do not apply
PhysicsRigidBodyAPIinside aninstanceable = trueprototype; apply it on the instance root instead (RB.005).Author
float physics:masson the body or its descendant colliders (RB.007).Keep the composed world transform of a rigid body free of skew (
RB.009).Set
uniform token purpose = "guide"on collision-only meshes that should not render (RB.010).
Optional feature requirements#
Multibody joints (FET_004_STANDARD)#
Connect constrained bodies with a
UsdPhysicsJointsubtype and authorrel physics:body0andrel physics:body1; an empty side means world (JT.001).Target existing prims, or leave the relationship empty (
JT.002), with at most one target each (JT.003).Do not nest
PhysicsArticulationRootAPI(JT.ART.002), and do not apply it to kinematic (JT.ART.003) or disabled/static (JT.ART.004) bodies.Apply
PhysicsRigidBodyAPIto at least two separateUsdGeomXformablehierarchies (RB.MB.001).
Grasp physics (FET_005_STANDARD)#
Bind a physics material to every collider through
rel material:binding:physics(PMT.001).Author at least one grasp line that intersects graspable geometry, typically a
UsdGeom.BasisCurveswith two points,int[] curveVertexCounts = [2], anduniform token type = "linear"(GSP.001).
GSP.001 is a visual-semantic requirement with no executable validator. The
grasp line must cross a region a gripper can actually close on, so it needs
visual review rather than an arbitrary line.
Materials (FET_006_STANDARD, FET_010_STANDARD, FET_006_OPENPBR, and FET_006_MDL)#
From profile 4.0.0, FET_006_STANDARD is required rather than optional;
FET_010_STANDARD, FET_006_OPENPBR and FET_006_MDL stay optional.
Through 3.3.0, the Standard and MDL material features remain optional and the
display-colour and OpenPBR features are not listed.
FET_006_STANDARD covers UsdPreviewSurface assets:
Bind materials from inside a payload to materials defined in that payload scope (
com.nvidia.usd.VM.BIND.001).Use only spec-defined
UsdPreviewSurfaceinputs, types, and tokens, and do not time-sample uniform token inputs (com.nvidia.usd.VM.PS.001).
Both are defined and enforced by usd-validation-nvidia rather than by this
repository.
From version 0.2.0 (profile 3.3.0) it also adds:
Resolve a bound material for every renderable Gprim (
VM.MAT.001).Keep texture images at or below 16384 px in both dimensions (
VM.TEX.001).
FET_010_STANDARD covers the display-colour appearance layer, from profile
4.0.0:
Resolve a display colour on every renderable Gprim, authored on the prim or inherited from an ancestor (
DISP.001).Keep authored
primvars:displayColorvalues within the range a consumer can interpret, in the colour space resolved for the attribute (DISP.002).Keep authored
primvars:displayOpacityvalues within their valid range (DISP.003).
Display colour carries no shading network, so it is the appearance available to consumers that do not evaluate materials. It is a sibling of the other three material features, not a dependency of any of them.
FET_006_OPENPBR covers OpenPBR (MaterialX) assets, from profile 4.0.0:
Author an OpenPBR surface on
outputs:mtlx:surface(VM.PBR.001).Keep OpenPBR parameter values within their defined ranges (
VM.PBR.002).Keep the MaterialX graph structurally valid, with no dangling connections (
VM.PBR.003).Plus
com.nvidia.usd.VM.BIND.001,VM.MAT.001, andVM.TEX.001as above.
FET_006_MDL covers MDL assets and adds:
Match shader
inputs:*types to the MDL module or SDR spec (VM.BIND.002).Resolve a bound material for every renderable Gprim (
VM.MAT.001).Author a non-empty
uniform asset info:mdl:sourceAssetwith a./-relative.mdlpath that exists (VM.MDL.001), usinginfo:implementationSource = "sourceAsset"rather than the deprecatedmdlMaterialform (com.nvidia.usd.VM.MDL.002).Keep texture images at or below 16384 px in both dimensions (
VM.TEX.001).Author
colorSpacemetadata on eachasset inputs:*texture input of the MDL shader:srgb_rec709_sceneon the colour textures —diffuse_texture,emissive_color_texture, and on OmniGlassglass_color_textureandreflection_color_texture— andrawon every other texture input, including roughness, metalness, ambient occlusion, ORM, opacity, emissive mask, and normal and detail-normal maps (VM.TEX.002). This iscolorSpacemetadata on the input, not theUsdUVTextureattributeinputs:sourceColorSpace, which states the same thing in a different vocabulary for a shader class this requirement does not cover. The 8-bit normal-map scale and bias convention belongs to that reader too, and is not checked here.
Non-visual sensor materials (FET_007_STANDARD)#
Author
token[] omni:simready:nonvisual:attributes(NVM.001),token omni:simready:nonvisual:base(NVM.002), andtoken omni:simready:nonvisual:coating(NVM.003) using the token values allowed by the non-visual materials capability.Author these tokens only on materials actually bound to geometry (
NVM.004), keep them semantically consistent with the visual material (NVM.005), and do not time-sample them (NVM.006).
Runtime physics variants (version 3.1.0)#
Version 3.1.0 adds optional runtime variant scaffolding so one asset can carry
PhysX, Newton, and MuJoCo physics without any runtime seeing another’s schemas.
Variant scaffolding (FET_000_PHYSX, FET_000_NEWTON, FET_000_MUJOCO)#
On the stage defaultPrim, author one variant set per runtime, named exactly
PhysX, Newton, or MuJoCo, each with Disabled and Enabled options and a
default selection of Disabled (RV.001, RV.004, RV.007).
The Enabled option must contain exactly one anchored payload and nothing else
(RV.002, RV.005, RV.008, RV.010):
variantSet "PhysX" = {
"Disabled" {
}
"Enabled" {
prepend payload = @../runnables/physics/physx.usd@
}
}
Record the activation in root-layer customLayerData under
SimReady_Metadata.Variants.Physics.<Runtime> with prim, variantSetName,
and activateOption keys (RV.003, RV.006, RV.009).
With one runtime enabled and the others disabled, the composed stage must
contain only neutral UsdPhysics/physics: data plus that runtime’s own
schemas (RV.011). Foreign-runtime data leaking into the composed stage is a
failure.
PhysX rigid bodies and multibody (FET_003_PHYSX, FET_004_PHYSX)#
Apply
PhysicsCollisionAPIon aUsdGeom.Gprim, or on an Xform that also hasPhysxMeshMergeCollisionAPIwhosecollection:collisionmeshes:includesresolves to at least one Gprim (PHYSX.COL.001).Apply
PhysicsMeshCollisionAPIon aUsdGeom.Meshor a prim withPhysxMeshMergeCollisionAPI, always alongsidePhysicsCollisionAPI(PHYSX.COL.002).FET_004_PHYSX@0.4.0adds the mass and nesting rules: every rigid-body subtree needs authoredphysics:mass > 0or a collider with non-zero volume for auto-mass (RB.011), and nested rigid bodies must be connected by a joint (RB.012).
physics:approximation = "sdf" is a PhysX-only value. Authoring it in the
neutral base layer fails RV.011.
Newton rigid bodies and multibody (FET_003_NEWTON, FET_004_NEWTON)#
Apply either
NewtonMeshCollisionAPIorNewtonSDFCollisionAPIon aUsdGeom.Mesh, but not both (NEWTON.COL.001).Keep authored SDF values valid: non-negative
newton:contactMargin,newton:contactGap, andnewton:sdfPadding; a positivenewton:sdfMaxResolutiondivisible by 8;newton:sdfTextureFormatin{uint8, uint16, float32}; andnewton:sdfNarrowBandInner < newton:sdfNarrowBandOuter(NEWTON.COL.002).Apply
NewtonMassAPIonly onXformableprims, withdouble[] newton:inertiaeither empty or exactly six finite elements (NEWTON.MAS.001).Apply
NewtonMaterialAPIonly on aUsdShade.Materialthat also hasPhysicsMaterialAPI(NEWTON.MAT.001).
MuJoCo rigid bodies and multibody (FET_003_MUJOCO, FET_004_MUJOCO)#
Apply
MjcCollisionAPIalongsidePhysicsCollisionAPIon every active MuJoCo colliderUsdGeom.Gprim(MUJOCO.COL.001).Apply
MjcMeshCollisionAPIonly onUsdGeom.Mesh, withuniform token mjc:inertiain{legacy, convex, exact, shell}anduniform int mjc:maxhullvert >= -1(MUJOCO.COL.002).Mesh colliders carrying both
PhysicsMeshCollisionAPIandMjcCollisionAPImust setuniform token physics:approximation = "convexHull".
Version 3.2.0 changes#
Version 3.2.0 keeps the full 3.1.0 feature set and adds required SimReady
semantic-label, packaging-source, and provenance-metadata features:
Feature |
Version |
Status |
Purpose |
|---|---|---|---|
|
0.2.0 |
Required |
Semantic labels |
|
0.1.0 |
Required |
Semantic labels (RTX) |
|
0.1.0 |
Required |
Wikidata Q-Code |
|
0.1.0 |
Required |
Self-contained package source ( |
|
0.3.0 |
Required |
Thumbnail ( |
|
0.4.0 |
Optional |
Standalone Isaac Sim composition ( |
FET_033_STANDARD@0.3.0 requires a PNG thumbnail at
.thumbs/256x256/<asset_filename>.png next to the root asset, and a
customLayerData.SimReady_Metadata dictionary carrying the string provenance
fields (author, asset_name, asset_type, asset_license, category,
source_file, usd_date_generated) plus the asset-descriptive fields qcode
(Wikidata Q-Code), rigid_body_count (non-negative int), asset_extents
(float3 meters, XYZ), and mass (positive kilograms). Derive the physical
fields from the actual asset rather than fabricating them.
Isaac Sim composition (FET_100_ISAAC)#
FET_100_ISAAC@0.4.0 (ISA.001) is optional at the profile level. When it is
present, it requires the package to be a standalone Isaac component:
The interface prim sets
kind = component.A
payloads/directory holdsbase.usda,geometries.usd,instances.usda, andmaterials.usda.The interface references
./payloads/base.usda.
FET_100_ISAAC@0.4.0 depends on the PhysX rigid-body chain, so its PhysX
requirements are validated as dependencies even though FET_000_PHYSX and
FET_003_PHYSX stay optional at the profile level. The neutral runtime-variant
scaffolding (FET_000_PHYSX/FET_000_NEWTON/FET_000_MUJOCO) also stays
optional, so the Isaac payloads/ perf layout and the neutral
runnables/physics/<stem>.usd runtime variants coexist on the same asset. The
default composition is the neutral base (all runtimes Disabled), which also
satisfies FET_003_STANDARD.
The Isaac composition is produced by the standalone, Kit-free
simready.asset_transformer package
(nv_core/cip_specs/isaac_asset_transformer) via the
simready_physx_to_isaac_prop profile transform, which builds the component
interface and payloads/ perf layers. Provenance is a separate step that
derives the FET_033_STANDARD@0.3.0 SR.003 physical fields
(rigid_body_count, summed authored mass, world-space asset_extents) from
the source stage — the composed interface hides mass inside instanced payload
prototypes — and stamps them, along with the string provenance fields and a
256x256 SR.002 thumbnail, into the composed interface’s
customLayerData.SimReady_Metadata. Physical fields must be derived from the
actual asset, never fabricated. On 3.3.0 and 4.0.0 the same fields may also
live in the USD/sidecar union (FET_033_STANDARD@0.4.0).
Version 3.3.0 changes#
Version 3.3.0 keeps the full 3.2.0 feature set. The only contract changes
are feature-version bumps:
Feature |
From |
To |
Why |
|---|---|---|---|
|
0.1.0 |
0.2.0 |
Drop |
|
0.3.0 |
0.4.0 |
Replace |
Assets that already passed 3.2.0 with nested SimReady_Metadata still satisfy
3.3.0. No feature adapter is required; a sidecar JSON is an optional extra
location, not a new required file.
Version 4.0.0 changes#
Version 4.0.0 is the SimReady Foundations 8.0 release pin. It keeps the full 3.3.0
feature set with no contract changes. Assets that already passed 3.3.0 satisfy
4.0.0; no feature adapter is required.
Naming conventions#
Prim naming#
Choose either
camelCaseorsnake_caseand use it consistently.Avoid spaces, special characters, and reserved keywords.
Use descriptive, purpose-driven names.
Use prefixes by prim type when appropriate (e.g.,
mesh_,material_).
File naming#
Use lowercase file names.
Use
.usd,.usda,.usdc, or.usdzas appropriate.Use underscores or hyphens; avoid spaces and special characters.
Avoid reserved names (e.g.,
CON,PRN,AUX,NUL).Use version numbers when appropriate (e.g.,
_v1.0).
Validation metadata (recommended)#
Include profile metadata in customLayerData to simplify validation workflows:
customLayerData = {
dictionary SimReady_Metadata = {
dictionary validation = {
string profile = "Robotics-Prop"
string profile_version = "4.0.0"
}
}
}
Conformance workflow#
Repair one feature gate at a time, in dependency order:
validate Robotics-Prop
-> simready-foundation-conform-fet-000-standard
-> simready-foundation-conform-fet-001-standard
-> simready-foundation-conform-fet-003-standard (or -physx / -newton / -mujoco)
-> simready-foundation-conform-fet-004-standard (only for multibody props)
-> simready-foundation-conform-fet-005-standard
-> simready-foundation-conform-fet-006-standard or -mdl
-> simready-foundation-conform-fet-007-standard (only when selected)
-> validate Robotics-Prop again
References#
Feature dependency graph — requirements and dependencies for all features
nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/profiles/robotics_prop.tomlnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_000_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_001_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_003_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_004_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_005_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_006_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_006_MDL.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_007_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/naming_paths/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/atomic_asset/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/runtime_variants/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/sim_ready/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/units/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/hierarchy/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/visualization/geometry/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/visualization/materials/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_rigid_bodies/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_joints/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_materials/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_graspable/nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/nonvisual_sensors/nonvisual_materials/