What's covered today
Every Rigyd conversion targets three profiles — Prop-Robotics-Neutral, Prop-Robotics-Physx and Prop-Robotics-Isaac — and current output passes all three with zero errors. This includes both rigid and articulated simulation props: runtime-neutral enough to use in Isaac Sim, Isaac Lab, MuJoCo, Gazebo, or another OpenUSD-aware simulator, with PhysX collider and Isaac composition layers on top.
What the profiles cover
Section titled “What the profiles cover”- Stage-level conformance —
defaultPrim,upAxis = Z,metersPerUnit = 1.0,kilogramsPerUnit, and a single rootUsdGeomXform. - Naming and on-disk layout — prim, file, and folder names that survive a round-trip through Linux, Windows, and the Omniverse Nucleus path resolver, with no absolute paths in references.
- Geometry — valid topology, indexed primvars, consistent face winding, normals on non-subdivided meshes, points within 32-bit float precision, and sane RTX world-space bounds.
- Visual materials —
UsdPreviewSurfacebindings that resolve, texture colour spaces set correctly, dimensions within RTX limits. - Rigid-body physics —
UsdPhysicsRigidBodyAPIandMassAPIapplied correctly, mass and inertia coherent with collision volume, no skewed transforms. - Collision —
CollisionAPIandMeshCollisionAPIon the right prims, invisible colliders markedpurpose = "guide"so they don’t render but still simulate, and the PhysX structural pairPHYSX.COL.001/PHYSX.COL.002. - Physics materials and grasp — friction and restitution bound on every collider, and a grasp vector for manipulation planning.
- Isaac composition —
ISA.001: the asset is akind = "component"entry point composing apayloads/tree rather than one flattened file.
Colliders: two, and you pick
Section titled “Colliders: two, and you pick”/Root carries a collision_mode variantSet with two variants:
| Variant | Geometry | Use it when |
|---|---|---|
sdf (default selection) | A signed-distance field over the visual mesh itself | You are running PhysX on GPU. This is what the PhysX and Isaac profiles ask for, and it gives stable contact on fine features. |
convexHull | The convex decomposition (CoACD hulls under /Root/Collisions) | You are running CPU dynamics, or any runtime without SDF support — PhysX simulates SDF colliders on GPU only. |
The hull geometry itself is authored outside the variantSet, so a viewer can draw /Root/Collisions/* with no variant selection and no payload support. Only the physics opinions are variant-scoped. The SDF variant costs no extra geometry: its collider is an internal reference to /Root/Visual, so the points are stored once and resolve through composition.
For articulated assets, collision detail follows each part’s declared role. Graspable surfaces receive the finest SDF resolution, structural parts use the measured default, and incidental contact can use a smaller budget. Decorative parts remain in the visible model but are excluded from mass and collision generation. This keeps handles and controls precise without spending the same collision budget on trim.
What a delivered asset scores
Section titled “What a delivered asset scores”All nine profiles are scored on every conversion, not just the three we target — the ones we do not target are the only thing that says what is left to do. This is a representative delivered prop at spec release 2026.06.0:
| Profile | Requirements | Status | Unmet |
|---|---|---|---|
Prop-Robotics-Neutral (targeted) | 50 | PASS | — |
Prop-Robotics-Physx (targeted) | 52 | PASS | — |
Prop-Robotics-Isaac (targeted) | 37 | PASS | — |
Robot-Body-Neutral | 37 | INCOMPLETE | 4 driven-joint rules unwritten |
Robot-Body-Runnable | 48 | INCOMPLETE | 13 unwritten |
Robot-Body-Isaac | 48 | FAIL | VG.001, plus 20 unwritten |
Package | 6 | INCOMPLETE | 5 unwritten |
Package-NoBOM | 5 | INCOMPLETE | 4 unwritten |
Package-Candidate | 2 | INCOMPLETE | SR.002 unwritten |
Each entry in report.validation.profiles carries a one-line note describing where a passing asset can be used, plus targeted and — when we do not aim at it — not_targeted_because.
PASS and INCOMPLETE are different claims
Section titled “PASS and INCOMPLETE are different claims”| Status | Means |
|---|---|
PASS | Every requirement in the profile was checked, and none failed |
FAIL | At least one requirement failed — failing[] names them |
INCOMPLETE | Nothing failed, but some requirements have no rule written yet — unchecked[] names them |
INCOMPLETE is not a soft pass. It means we do not know. PASS is a claim about what we checked, so we only make it when we checked all of it — the Package profiles above report INCOMPLETE because they describe a distribution package rather than a single asset file, and we have a rule for only one of their requirements.
Where we disagree with NVIDIA’s own validator
Section titled “Where we disagree with NVIDIA’s own validator”Exactly one place, deliberately, and it is a reading of their prose rather than of their tooling.
RB.MB.001 asks that an asset contain at least two rigid bodies. A prop has one. NVIDIA’s own profile pages for Prop-Robotics-Neutral and -Physx carry a section headed “Multi-body physics (conditional)” which settles it:
Single-rigid-body props are valid for this profile when they satisfy
FET003_BASE_NEUTRAL. […] For props with exactly one rigid body, multi-body physics is not applicable and must not block profile conformance.
Their validator does not read that clause. Measured on our verification asset, it fails Prop-Robotics-Neutral on RB.MB.001 while passing Prop-Robotics-Physx and -Isaac, which reach the same feature through a dependency it does not evaluate — so the tool contradicts both their prose and itself. The prose is the authority, so we honour it: on an asset stamped as a Prop, RB.MB.001 reports N/A with na_reason: "not-applicable-to-asset" and the sentence quoted in the message.
The exemption is narrow. A multi-body asset gets a real answer either way, and an articulated asset that somehow shipped a single body still fails — this is for props that are single-body by design, not for a plan that collapsed.
Warnings are advisory
Section titled “Warnings are advisory”counts.warnings never affects a profile verdict — ours counts only errors against a profile, and NVIDIA’s filters to errors before computing a pass. Label warnings advisory if you surface them, and don’t let them colour a pass/fail badge.
One warning appears on essentially every asset and is expected: VG.MESH.001 wants all geometry to be non-subdivided meshes, while GSP.001 requires the grasp vector to be a BasisCurves line. Those two requirements cannot both be satisfied literally. NVIDIA’s validator raises the same warning on the same assets.
For the per-requirement status of every code in the registry, see Full requirement coverage.