Skip to content

[Proposal] Remove deformable registry; spawn deformables via Newton import_usd #6208

Description

@mmichelis

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_registrysource/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

  • I have checked that there is no similar issue in the repo (required)

Acceptance Criteria

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions