VBD#

SolverVBD is a unified implicit solver based on Vertex Block Descent (VBD): cloth, soft bodies, rigid bodies (joints, contacts, rods), and their interactions are all solved in one VBD loop, with joint and contact constraints enforced through an augmented-Lagrangian (ALM) extension of the method. The compliant ALM constraint path is enabled by default (rigid_compliant_alm=True). Pass rigid_compliant_alm=False explicitly to retain the deprecated legacy path during its migration period.

Experimental

SolverVBD is experimental. Its public API, behavior, feature support, performance, and implementation may change without prior notice.

This page is the VBD backend guide: when to choose the solver, how to set it up correctly, and where to find runnable examples. For symptom-driven diagnosis and parameter tuning, see VBD Tuning and the Simulation Tuning landing page.

Note

This guide is under active development. Each section below states its intended scope and links to existing references until the full content lands.

When to Choose VBD#

In development. This section will position VBD against the other Newton solvers for cloth, soft-body, rigid, and mixed scenes, and state its current limitations.

Until then, start from the Supported Features matrix and the Joint Feature Support tables in the solver overview. The underlying methods are described in the references cited by SolverVBD:

  • Anka He Chen, Ziheng Liu, Yin Yang, and Cem Yuksel. 2024. Vertex Block Descent. ACM Trans. Graph. 43, 4. https://doi.org/10.1145/3658179

  • Chris Giles, Elie Diaz, and Cem Yuksel. 2025. Augmented Vertex Block Descent. ACM Trans. Graph. 44, 4. https://doi.org/10.1145/3731195 (the deprecated legacy rigid constraint path)

API Explanations#

Construction and Stepping#

In development. This section will cover the canonical setup and step loop: coloring via color() (required for particles and for rigid bodies integrated by VBD), the recommended CollisionPipeline → Contacts → SolverVBD construction order, and the CUDA graph capture constraints around contact state pre-allocation.

Until then, see the SolverVBD API reference, which documents the constructor and includes a minimal working simulation loop.

Model Inputs#

In development. This section will explain what the solver consumes from ModelBuilder for each system: triangle meshes for cloth, tetrahedral meshes for soft bodies, rigid bodies with the supported joint types (including rods), the default compliant ALM constraint mode (rigid_compliant_alm=True) versus the deprecated legacy path, and the deprecated legacy-path controls — model.vbd.joint_is_hard and set_joint_constraint_mode() (deprecated since 1.6; no solver-mode effect under compliant ALM).

Coupling Modes#

In development. This section will cover how deformables and rigid bodies interact inside the solver (no special coupling setup is needed) and one-way coupling with an external rigid-body solver (integrate_with_external_rigid_solver=True).

Until then, see Coupled Solvers.

Contact Handling#

In development. This section will explain the contact stack: particle self-contact detection (vertex–triangle and edge–edge), body–particle contacts, friction, and the penetration-free Divide and Truncate (DAT) scheme that truncates particle motion against contact bounds. Coverage of Offset Geometric Contact (OGC) will be added once it is available in Newton.

The contact methods are described in:

  • Anka H. Chen, Jerry Hsu, Youssef Ayman, and Miles Macklin. 2026. Divide and Truncate: A Penetration and Inversion Free Framework for Coupled Multi-physics System. In ACM SIGGRAPH 2026 Conference Papers. https://doi.org/10.1145/3799902.3811143

  • Anka He Chen, Jerry Hsu, Ziheng Liu, Miles Macklin, Yin Yang, and Cem Yuksel. 2025. Offset Geometric Contact. ACM Trans. Graph. 44, 4. https://doi.org/10.1145/3731205

Key Constructor Parameters#

In development. A lean orientation over the three constructor parameter groups — common, particle_*, and rigid_* — cross-linked to SolverVBD for defaults and to VBD Tuning for effects and recommended values.

Examples#

In development. This section will walk through a small, representative set of examples per system rather than the full list.

Runnable examples using SolverVBD on GitHub: