Newton Physics Documentation#

Newton Physics Engine Banner

Newton is a GPU-accelerated, extensible, and differentiable physics simulation engine designed for robotics, research, and advanced simulation workflows. Built on top of NVIDIA Warp and integrating MuJoCo Warp, Newton provides high-performance simulation, modern Python APIs, and a flexible architecture for both users and developers.

Key Features#

  • GPU-accelerated: Leverages NVIDIA Warp for fast, scalable simulation.

  • Multiple solver implementations: XPBD, VBD, MuJoCo, Featherstone, SemiImplicit.

  • Modular design: Easily extendable with new solvers and components.

  • Differentiable: Supports differentiable simulation for machine learning and optimization.

  • Rich Import/Export: Load models from URDF, MJCF, USD, and more.

  • Open Source: Maintained by Disney Research, Google DeepMind, and NVIDIA.

Learn More

Start with the introduction tutorial for a hands-on walkthrough. For a deeper conceptual introduction, see the DeepWiki Newton Physics page.

Core Concepts#

        ---
config:
  theme: forest
  themeVariables:
    lineColor: '#76b900'

---
flowchart LR
    subgraph Authoring["Model Authoring"]
        direction LR
        P[Python API] --> A[ModelBuilder]

        subgraph Imported["Imported assets"]
            direction TB
            U[URDF]
            M[MJCF]
            S[USD]
        end

        U --> G[Importer]
        M --> G
        S --> G
        G --> A
    end

    B[Model]

    subgraph Loop["Simulation Loop"]
        direction LR
        C[State] --> D[Solver]
        J[Control] --> D
        E[Contacts] --> D
        D --> C2[Updated state]
    end

    subgraph Outputs["Outputs"]
        direction TB
        K[Sensors]
        F[Viewer]
    end

    A -->|builds| B
    B --> C
    B --> J
    B --> E
    C2 --> K
    E --> K
    C2 --> F
    
  • ModelBuilder: The entry point for constructing simulation models from primitives or imported assets.

  • Model: Encapsulates the physical structure, parameters, and configuration of the simulation world, including bodies, joints, shapes, and physical properties.

  • State: Represents the dynamic state at a given time, including positions and velocities that solvers update each step. Optional extended attributes store derived quantities such as rigid-body accelerations for sensors.

  • Contacts: Stores the active contact set produced by Model.collide, with optional extended attributes such as contact forces for sensing and analysis.

  • Control: Encodes control inputs such as joint targets and forces applied during the simulation loop.

  • Solver: Advances the simulation by integrating physics, handling contacts, and enforcing constraints. Newton provides multiple solver backends, including XPBD, VBD, MuJoCo, Featherstone, and SemiImplicit.

  • Sensors: Compute observations from State, Contacts, sites, and shapes. Many sensors rely on optional extended attributes that store derived solver outputs.

  • Importer: Loads models from external formats via add_urdf(), add_mjcf(), and add_usd().

  • Viewer: Visualizes the simulation in real time or offline.

Simulation Loop#

  1. Build or import a model with ModelBuilder.

  2. Finalize the builder into a Model.

  3. Create any sensors, then allocate one or more State objects plus Control inputs and Contacts.

  4. Call Model.collide to populate the contact set for the current state.

  5. Step a solver using the current state, control, and contacts.

  6. Update sensors, inspect outputs, render, or export the results.