Proposal
Remove the deformable registry in isaaclab_contrib and spawn deformables in Newton directly through Newton's import_usd/add_usd, the same way rigid bodies are ingested today.
Motivation
Deformables currently bypass Newton's USD importer. Instead, IsaacLab maintains a parallel registry:
DeformableRegistryEntry dataclass + NewtonManager._deformable_registry — source/isaaclab_contrib/isaaclab_contrib/deformable/deformable_object.py:38
- Populated by
_register_deformable(), which hand-reads the USD mesh/material into an entry — deformable_object.py:634
- Consumed by
instantiate_builder_from_stage() overrides that ignore_paths the deformable meshes in add_usd and re-inject them via add_deformable_entry_to_builder() — vbd_manager.py:160, coupled_mjwarp_vbd_manager.py, coupled_featherstone_vbd_manager.py
This is an explicit workaround. The TODOs say so:
"Subclass should not override this method, once deformables supported on Newton import_usd, this can be unified with NewtonManager's implementation." — vbd_manager.py:168 (and the same in both coupled managers)
By contrast, rigid bodies need no registry — NewtonManager.instantiate_builder_from_stage() just calls builder.add_usd(stage) (source/isaaclab_newton/isaaclab_newton/physics/newton_manager.py:1029).
The upstream Newton work to make import_usd handle deformables is in progress:
Once these land, the registry, the _register_deformable() reader, the ignore_paths plumbing, and the instantiate_builder_from_stage() overrides can all be deleted, unifying the deformable path with the rigid-body path.
Alternatives
Keep the registry indefinitely — rejected: it duplicates Newton's importer, diverges from the rigid-body path, and is maintenance overhead across three manager subclasses.
Build Info
- Isaac Lab Version: develop (3.x)
- Isaac Sim Version: 5.x / Newton backend
Additional context
Depends on the Newton importer work above. Related: #6207 (removing Kit/omni.physx reliance from deformable spawning).
Checklist
Acceptance Criteria
Proposal
Remove the deformable registry in
isaaclab_contriband spawn deformables in Newton directly through Newton'simport_usd/add_usd, the same way rigid bodies are ingested today.Motivation
Deformables currently bypass Newton's USD importer. Instead, IsaacLab maintains a parallel registry:
DeformableRegistryEntrydataclass +NewtonManager._deformable_registry—source/isaaclab_contrib/isaaclab_contrib/deformable/deformable_object.py:38_register_deformable(), which hand-reads the USD mesh/material into an entry —deformable_object.py:634instantiate_builder_from_stage()overrides thatignore_pathsthe deformable meshes inadd_usdand re-inject them viaadd_deformable_entry_to_builder()—vbd_manager.py:160,coupled_mjwarp_vbd_manager.py,coupled_featherstone_vbd_manager.pyThis is an explicit workaround. The TODOs say so:
By contrast, rigid bodies need no registry —
NewtonManager.instantiate_builder_from_stage()just callsbuilder.add_usd(stage)(source/isaaclab_newton/isaaclab_newton/physics/newton_manager.py:1029).The upstream Newton work to make
import_usdhandle deformables is in progress:Once these land, the registry, the
_register_deformable()reader, theignore_pathsplumbing, and theinstantiate_builder_from_stage()overrides can all be deleted, unifying the deformable path with the rigid-body path.Alternatives
Keep the registry indefinitely — rejected: it duplicates Newton's importer, diverges from the rigid-body path, and is maintenance overhead across three manager subclasses.
Build Info
Additional context
Depends on the Newton importer work above. Related: #6207 (removing Kit/
omni.physxreliance from deformable spawning).Checklist
Acceptance Criteria
import_usd/add_usdingests deformables natively (blocked on Add Newton Importer Support for USD Deformable Physics Schemas newton-physics/newton#3178, [Bug Report] No module named 'carb._carb' #3036, [Bug Report] Bug title #3038).DeformableRegistryEntry,_deformable_registry,_register_deformable(), andadd_deformable_entry_to_builder()are removed.instantiate_builder_from_stage()overrides and_get_deformable_ignore_paths()are dropped; deformable managers reuseNewtonManager's implementation.