Skip to content

Releases: newton-physics/newton

Release v1.5.0

Choose a tag to compare

@github-actions github-actions released this 11 Aug 13:19
cca3bb8

Newton v1.5.0

Newton v1.5.0 is a feature release following v1.4.0. It expands scalable batched simulation and robot-control workflows, improves contact reliability and asset-import fidelity, strengthens cable mechanics, and adds new opt-in MuJoCo and Kamino capabilities.

For the complete list of changes, see the changelog.

Highlights

  • Experimental: vectorized joint control. The new newton.controllers module adds model-based and caller-supplied joint-space impedance controllers for heterogeneous GPU robot batches, with a runnable example. (#3598)

  • Scalable multi-world workflows. Isolated implicit MPM, masked solver resets, and dedicated global-world gravity make batched robot-learning simulations easier to reset, capture, and run without cross-world state loss. (#3411, #3412, #3415, #3601, #3649, #3656, #3724)

  • Opt-in MuJoCo Warp sleeping. Tree sleeping, contact-based wake-up, initial sleep policies, compact nvmax storage, and a runnable example support scenes where many articulated trees can remain inactive. (#3731)

  • More reliable contact handling. Deterministic hydroelastic generation, persistent geometry, selective reset, stable box manifolds, full-surface VBD proxy coupling, and Kamino capacity fixes improve reproducibility in contact-rich simulations. (#3661, #3649, #3775, #3641, #3732, #3776, #3756)

  • Cable shear and twist. Cable helpers and experimental VBD slots model stretch, shear, bend, and twist independently, with corrected isotropic conditioning, more efficient bend/twist solving that remains robust near folds, seven validation examples, and a plectoneme showcase. (#3122, #3783, #3860)

  • Higher-fidelity USD and MJCF import. Importers preserve purpose, visibility, materials, textures, mass, velocity, physics-scene discovery and selection, collision filtering, sites, and equality constraints more faithfully. (#3404, #3712, #3418, #3322, #3628, #3761, #3714, #3785, #3814)

  • Experimental: Kamino DVI dynamics. Users can opt into sparse or dense DVI dynamics with diagnostics, warm starting, bounded recovery, and reusable ordering while PADMM remains the default. (#3570, #3613)

Performance improvements

  • Faster multi-world initialization. Representative replicated humanoid and G1 workloads initialize 11% to 24% faster, while CPU peak initialization memory falls 10% to 15% across Cartpole, Humanoid, and G1. (#3656)

  • Faster setup and lower inactive-scene cost. Faster terrain and USD construction shorten setup, while opt-in MuJoCo Warp sleeping reduces active work and solver memory when articulated trees can remain inactive. (#3656, #3710, #3731)

Announcements

Upgrade attention

  • Joint target names. The deprecated joint_target_pos and joint_target_vel aliases have been removed from Model, Control, and ModelBuilder. Use joint_target_q and joint_target_qd; changing these names alone does not require changing the target layout. (#3617)

  • Position-target layout. The legacy DOF-shaped joint_target_q layout is deprecated for models containing free, ball, or distance joints. Set newton.use_coord_layout_targets = True before building models so joint_target_q matches joint_q, keep joint_target_qd DOF-shaped, and index position targets with Model.joint_target_q_start. Models without those joint types have identical layouts. (#3617)

  • USD visual import. Static visual-only geometry now loads by default, and approximated colliders retain their authored render mesh. Pass load_static_visual_shapes=False to preserve body-associated visuals only, filter collision shapes with ShapeFlags.COLLIDE_SHAPES, or pass load_visual_shapes=False when visual shapes are unwanted. (#3694, #3712)

  • Fast math. Tiled-camera render kernels and intersect_ray() now use fast math by default. Set SensorTiledCamera.default_render_config.enable_fast_math = False and pass fast_math=False to preserve bit-exact IEEE-precise output. (#3452, #3521)

  • VBD Dahl friction. Implicit positive Dahl defaults are disabled. Pass dahl_defaults_enabled=True only as a temporary compatibility measure, then explicitly author positive vbd:dahl_eps_max and vbd:dahl_tau values. (#3636)

  • Model replication. ModelBuilder.replicate() now merges copies in one pass and no longer invokes subclass overrides of add_world() or add_builder() per copy. Move required side effects outside those overrides, or call the methods explicitly. (#3656)

  • Kamino speculative contacts. SolverKamino now culls positive-distance speculative contacts by default. No compatibility switch restores the earlier behavior; increase ShapeConfig.margin to move force onset and re-test affected scenes. (#3779)

Breaking changes and removals

The behavior and default changes that require migration are summarized under Upgrade attention. The following APIs deprecated in earlier releases have now been removed:

  • Joint targets and actuator defaults. The joint_target_pos and joint_target_vel aliases are removed from Model, Control, and ModelBuilder, and Actuator now selects joint_target_q and joint_target_qd by default. (#3617)

  • SDF compatibility storage. Deprecated public texture-SDF and block-coordinate attributes on Model and SDF are removed. Use supported geometry APIs instead of relying on internal SDF storage. (#3622)

  • BVH and heightfield helpers. The free build_bvh_* and refit_bvh_* helpers are removed in favor of the corresponding Model.bvh_build_*() and Model.bvh_refit_*() methods. Model.has_heightfields is removed; use Model.heightfield_count. (#3619)

  • Solver flags and options. SolverNotifyFlags is removed in favor of ModelFlags, and the ineffective SolverMuJoCo(ls_parallel=...) option is removed. (#3619)

  • Experimental VBD cable slots. SolverVBD.JointSlot now separates stretch, shear, bend, and twist. Raw slot=1 and JointSlot.ANGULAR now select shear; use JointSlot.BEND, now slot 2, for bending. (#3122, #3783)

New deprecations

  • Scalar gravity. Pass a three-component gravity vector to ModelBuilder instead of a scalar. (#3324)

  • Solver reset masks. Use a wp.bool mask with shape (world_count + 1,); the final entry selects global entities in world -1. (#3726)

  • VBD sticky-contact parameters. rigid_contact_stick_motion_eps, rigid_contact_stick_freeze_translation_eps, and rigid_contact_stick_freeze_angular_eps are ignored and deprecated. Use collision-pipeline sticky matching. (#3652)

  • Model-owned collision helpers. Replace Model.contacts() and Model.collide() with an explicit CollisionPipeline, pipeline.contacts(), and pipeline.collide(). (#3409)

  • DOF-shaped position targets. Opt into coordinate-layout position targets with newton.use_coord_layout_targets = True before building models and index them with Model.joint_target_q_start. (#3617)

Upcoming removals

  • The coordinate layout will become the only joint_target_q layout in a future release, and newton.use_coord_layout_targets will be removed. Opt into the coordinate layout now. (#3617)

  • The temporary dahl_defaults_enabled=True compatibility mode will be removed in a future release. Explicitly author positive vbd:dahl_eps_max and vbd:dahl_tau values where Dahl cable friction is required. (#3636)

Dependency updates

  • Newton now requires warp-lang>=1.16.0.
  • The sim extra moves to MuJoCo and MuJoCo Warp 3.11.
  • USD import workflows require newton-usd-schemas>=0.4.1.
  • No new required dependency names were added.

For complete dependency details, see the pyproject.toml comparison.

Acknowledgments

Thanks to the Newton Project Members and to the following contributors from outside the Newton maintainer, TSC, and project-member groups:

  • @maxkra15 for isolated multi-world implicit MPM, rebuildable sparse grids, and masked coupled-solver resets. (#3411, #3412, #3649)
  • @nvtw for Kamino DVI dynamics and performance, deterministic hydroelastic contacts, stable box manifolds, collision-pipeline migration, and viewer improvements. (#3570, #3613, #3610, #3661, #3776, #3409, #3410)
  • @StafaH for faster startup and model replication, mesh-derived heightfields, ray-query and camera performance, and configurable shape BVHs. (#3656, #3624, #3521, #3452, #3634)
  • @han-xudong for MJCF asset, default-class, material, site, and contact-pair fixes; model validation; and ball-joint damping support. (#3686, #3673, #3687, #3631, #3667, #3671, #3310, #3311, #3458, #3298, #3299)
  • @mmichelis for full-surface VBD proxy coupling and multi-world collision-buffer fixes. (#3756, #3664, #3785)
  • @ooctipus for USD purpose and material-binding behavior and MuJoCo external-contact cache correctness under CUDA graphs. (#3404, #3351, #3768)
  • @daniela-hase for forward-depth camera output, fullscreen ViewerGL sensor-image display, tiled and deformable rendering fixes, and Warp 1.16 integration. (#3519, #3811, #3536, #3551, #3518, #3557)
  • @caugonnet for fixing the lifetime of meshes shared across finalized models and adding explicit cache invalidation. (#3637)
  • @nblauch for tiled-camera cubic and triplanar texture projection modes. (#2312)
  • @jieseattle for warning when mirrored USD rigid-body transforms cannot be decomposed safely. (#3654)
  • @felixmey for fixing small-angle revolute-joint reconstruction. (#3706)
  • @c0d1f1ed for extending portable CPU graph-capture coverage. (#3501)
  • @lyd405121 for adding per-DOF masking to inverse-kinematics optimization. (#3488)
  • @LuyiLi for fixing scale-dependent MPR contacts on large mesh triangles. (#3766)
  • @kioxli for fixing MuJoCo collision-mask overflow at the highest su...
Read more

Release v1.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 15:57
0597c71

Newton v1.4.0

Newton v1.4.0 is a feature release centered on composing solvers, making captured and deterministic workflows more portable, expanding articulated dynamics tooling, improving deformable simulation and USD import, and delivering targeted performance gains in graph-captured and large-scale workloads.

For the complete list of changes, see the changelog.

Highlights

  • Experimental coupled solver composition. SolverCoupled, proxy coupling, and ADMM contacts make it possible to compose MuJoCo, Kamino, VBD, XPBD, and MPM within a single workflow. (#2848)

  • Experimental deformable USD workflows. Based on our AOUSD schema proposals, ModelBuilder.add_usd() can import curves, meshes, tetrahedral meshes, attachments, and element filters as Newton cables, cloth, soft bodies, joints, and collision filters. Tiled-camera rendering now treats cloth and volume topology as meshes without also rendering their vertices as particle spheres. (#3192, #3518)

  • Deterministic and portable execution. XPBD, SemiImplicit, Featherstone, VBD, and MuJoCo can opt into deterministic kernel paths for bit-exact repeated rollouts. Supported examples can also capture and replay Warp graphs on CPU. Default solver execution remains unchanged. (#3300, #3387)

  • VBD deformable simulation improvements. VBD gains opt-in full-surface rigid-soft contact that detects soft-triangle edge and face crossings against rigid SDFs, closing gaps that per-particle detection can miss. It also adds per-shape soft-contact margins and more consistent damping behavior across deformable materials, springs, cables, joints, and contacts. (#3262, #2994, #2877)

  • Articulated inverse dynamics. The experimental eval_inverse_dynamics_passive() and eval_inverse_dynamics_force() APIs populate caller-owned arrays with joint-space mass matrices, gravity and Coriolis forces, and manipulator-equation joint forces for full models or selected articulations. (#2753, #3530)

  • Detailed simulation tuning guides. Responding to strong user feedback, Newton 1.4 adds practical, diagnose-first tuning guides for building stable and efficient simulations. The new documentation provides a recommended tuning order, symptom-driven troubleshooting, solver-specific parameter guidance, contact and drive sanity checks, performance tradeoffs, and dedicated MuJoCo guidance. The guidance will expand in future releases.

Performance improvements

  • Much faster launch-heavy CPU workflows. Warp 1.15 CPU graph capture can greatly reduce launch overhead for graphable Newton workloads. A representative XPBD quadruped workload runs about 16 times faster with graph replay. (#3387)

  • Higher-throughput batched MuJoCo simulation. Large GPU workloads for G1, KitchenG1, and Humanoid run about 15% to 26% faster, while challenging Allegro workloads improve by about 11% with MuJoCo Warp 3.10.0.2. (#2980, #3502)

  • Faster simulation and visualization paths. Representative cloth and contact-heavy scenes run about 10% to 13% faster, and ViewerGL rendering is around 10% faster for large multi-world scenes.

Announcements

Breaking changes and removals

  • MuJoCo gap propagation and import semantics changed. SolverMuJoCo now propagates authored shape_gap into MuJoCo geom_gap and pair_gap, while MJCF and USD imports no longer subtract gap from margin by default. Shapes without an explicit gap inherit ModelBuilder.rigid_gap = 0.1 m, which now reaches MuJoCo and may increase detection-only contacts, broad-phase work, and contact-buffer pressure. Use legacy_margin_gap=True for assets authored against MuJoCo 3.8 or earlier. For other scenes, retune builder.rigid_gap before adding shapes or set ShapeConfig.gap per shape; 0.0 preserves the previous MuJoCo detection envelope. (#2980)

  • USD material resolution now follows canonical bindings only. Newton no longer falls back to non-canonical material relationships. Assets that rely only on bare purpose-specific bindings such as material:binding:preview, or bind to prims that are not Material prims, may stop resolving materials. Validate and repair affected assets with usdchecker or usd-validation-nvidia. (#3350)

  • Several simulation defaults and semantics changed. The CoACD threshold now defaults to 0.05; standalone SolverSemiImplicit enables particle-particle contact forces; SolverFeatherstone solves floating bases about the root center of mass; and inactive MPM particles no longer participate in grid transfers. Review the changelog for opt-outs and migration guidance before reusing tuned scenes.

  • Implicit MPM collider setup is keyword-only. All arguments to SolverImplicitMPM.setup_collider() must now be passed by name. Migrate positional calls to keywords such as collider_meshes=, collider_body_ids=, and collider_particle_ids=. (#3524)

  • APIs deprecated in earlier releases were removed. Notable removals include SensorRaycast, the SensorTiledCamera 1.1 compatibility surface, the external newton-actuators dependency and legacy actuator signature, top-level equality-constraint compatibility fields, and body armature. Migration paths are listed in the changelog. (#3169, #3168, #3170, #3296, #3153)

New deprecations and upcoming removals

  • Option-heavy solver, builder, shape, joint, and FEM APIs now warn when options are passed positionally. Keep stable identifiers positional and migrate configuration arguments to explicit keywords. (#2993)

  • Migrate from SensorTiledCamera.config and render_config to default_render_config, set texture and shadow behavior explicitly, and use the renamed camera-ray helpers. Other newly deprecated surfaces include State.body_q_prev, legacy neural-network checkpoint formats, implicit rod body-frame selection, and the legacy contact-match constants. See the changelog for the complete migration list. (#3408, #3372, #3356, #3498)

Dependency updates

  • Newton now requires warp-lang>=1.15.0.
  • The simulation extra moves to MuJoCo 3.10 and mujoco-warp>=3.10.0.2,<3.11.
  • USD import workflows require newton-usd-schemas>=0.4.0.
  • The new onnx extra adds ONNX policy inference through warp-nn[onnx]==0.3.0.
  • The deprecated newton-actuators dependency is removed; use newton.actuators.

For complete dependency details, see the pyproject.toml comparison.

Acknowledgments

Thanks to the Newton Project Members and to the following contributors from outside the Newton maintainer, TSC, and project-member groups:

Release v1.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 18:22

Newton v1.3.0

Release

Newton v1.3.0 expands core Newton workflows for reinforcement learning, imported assets, collision authoring, ray queries, and viewer/rendering support. The release adds in-place solver reset APIs, a migration path for coordinate-aligned joint targets, broader USD/SDF import coverage, improved hydroelastic contact handling, and new viewer and color-space capabilities.

New Features

  • Solver reset workflows for reinforcement learning. Solvers now share an in-place SolverBase.reset() API with StateFlags, and ModelFlags is the canonical model-change notification flag type. SolverMuJoCo.reset() supports masked world resets and clears persistent MuJoCo buffers, enabling selected environments to recover from divergence without rebuilding the solver. (#2657, #3062)

  • SDF and hydroelastic collision authoring. Newton now parses NewtonSDFCollisionAPI, validates SDF and hydroelastic settings, supports configurable SDF padding, and adds SDF edge simplification options for Mesh.build_sdf(). These changes make authored USD collision settings carry more directly into Newton simulations. (#2533, #2701)

  • Coordinate-aligned joint targets. newton.use_coord_layout_targets(True) enables joint_target_q and joint_target_qd arrays whose layout matches joint_q and joint_qd, addressing target layout mismatches for free and ball joints. Legacy target names remain available with deprecation guidance, and the default is expected to flip in a future release. (#2965)

  • Ray queries and sensor cleanup. newton.intersect_ray() provides a public ray-vs-shape query helper for custom raycast sensors and workflows. Initial shape BVHs are now built during ModelBuilder.finalize(), and users can call model.bvh_refit_shapes(state) after state changes to keep BVH-backed ray queries and sensor renders current. SensorRaycast remains available but deprecated, with ray/depth workflows moving to SensorTiledCamera utilities. (#2971, #3039, #3097)

  • Viewer and rendering capabilities. Newton adds the experimental ViewerRTX backend for real-time ray-traced rendering, GL viewer edge overlays, DPI-aware and movable GL panels, a loading splash during kernel compilation, scene-scaled debug markers, and explicit color-space controls for tiled camera outputs. (#1861, #2926, #2411)

  • Expanded USD and asset import coverage. Newton now imports mass properties, material contact response attributes, site markers, visual material subsets, URDF material colors, and signed scale for mesh, convex, and SDF geometry. This improves physical and visual fidelity for assets authored in USD and MJCF pipelines. (#2951, #3005, #2936)

Performance Improvements

  • SDF narrow-phase and hydroelastic contact updates. Mesh-SDF narrow phase now uses hardware-filtered SDF texture sampling with centered-difference gradients, and hydroelastic contact no longer drops the central contact region under deep interpenetration. Earlier on-disk SDF caches are transparently re-cooked with the new cache format. (#2894, #2701)

  • Heightfield and raycast acceleration. Heightfield raycasting now uses a wp.Mesh BVH built during model finalization, replacing the previous per-thread grid traversal path. The same release also consolidates public ray query workflows around newton.intersect_ray(). Overall, the optimizations result in up to 3x higher throughput for the tiled camera sensor. (#2971)

  • Collision pipeline tuning. Contact reduction now exposes contact_reduction_hashtable_size_factor, and SDF edge simplification can reduce contact complexity for mesh-derived SDFs while preserving compatibility with the previous behavior through explicit options. (#2701)

Developer Experience

  • MuJoCo and Kamino consistency and robustness. MuJoCo contact conversion, joint-limit handling, CPU-backend inertia synchronization, and Kamino contact/body-frame handling received fixes that improve solver consistency across imported models and mixed solver workflows. For SolverMuJoCo, Newton-authored joint_limit_ke / joint_limit_kd now map through MuJoCo's per-DOF mass/inertia scaling, and force-space shape_material_ke / shape_material_kd contacts now use MuJoCo's positive solref convention so timestep safety clamping can apply to overly stiff contacts. (#2610, #3132, #3139, #3018, #3033, #2822)

  • MuJoCo equality import. MJCF/USD MuJoCo equality constraints now convert to Newton loop joints or mimic constraints by default while preserving MuJoCo metadata for solver round-trips. Users can opt out with convert_mjc_equality_constraints=False when they need the legacy arrays. (#2959)

  • Joint damping unification. Newton introduces shared Model.joint_damping and JointDofConfig.damping support across solvers, with Model.mujoco.dof_passive_damping deprecated in favor of the shared field. (#2304)

  • Model-owned BVH management. Newton adds Model.bvh_build_shapes(), Model.bvh_refit_shapes(), Model.bvh_build_particles(), and Model.bvh_refit_particles(), with shape and particle BVHs now built automatically during ModelBuilder.finalize(). The older free BVH helper functions remain available with deprecation warnings. (#3039)

  • Color-space correctness. USD color-space metadata is respected, and SensorTiledCamera packed color and albedo outputs now default to sRGB. Use RenderConfig(output_color_space=ColorSpace.LINEAR) when previous linear-byte output is required. (#2411)

  • Documentation and tutorials. The release adds loop-closure documentation and a robotics tutorial notebook covering ModelBuilder, solvers, CUDA graphs, inverse kinematics, and pick-and-place workflows. (#2898, #2415)

Breaking Changes And Removals

Breaking Changes

  • Writable ModelBuilder joint target attributes removed. ModelBuilder.joint_target_pos and ModelBuilder.joint_target_vel are now read-only deprecated aliases. Code that assigned those attributes should set per-axis targets through JointDofConfig.target_pos / target_vel, or write directly to ModelBuilder.joint_target_q / joint_target_qd. (#2965)

  • Deprecated SensorContact aliases removed. The net_force, include_total, sensing_objs, counterparts, reading_indices, shape, and ObjectType aliases from earlier releases have been removed. Use total_force, force_matrix, measure_total, sensing_obj_idx, sensing_obj_type, counterpart_indices, and counterpart_type instead. (#2945)

  • MuJoCo equality constraints convert by default. MJCF/USD imports now convert MuJoCo equality constraints to Newton loop joints or mimic constraints while preserving MuJoCo metadata for solver round-trips. Pass convert_mjc_equality_constraints=False to keep the legacy equality-constraint arrays. (#2959)

  • MuJoCo joint-limit stiffness depends on asset mass/inertia. SolverMuJoCo now converts Newton joint_limit_ke / joint_limit_kd force-space gains through MuJoCo's per-DOF dof_invweight0, so the same numeric stiffness and damping can produce different dynamics than Newton 1.2. Existing assets with hand-tuned gains may become underdamped or hit MuJoCo's timestep safety clamp; retune the gains per asset mass/inertia and timestep. To keep native MuJoCo behavior, author raw mjc:solreflimit / model.mujoco.solreflimit, or set joint_limit_ke <= 0 or joint_limit_kd <= 0 to restore MuJoCo's default solreflimit = (0.02, 1.0). (#2610, #3132)

  • MuJoCo force-space contact stiffness may be safety-clamped. SolverMuJoCo now converts force-space shape_material_ke / shape_material_kd contact gains through MuJoCo's positive solref convention when use_mujoco_contacts=False and both contacting shapes use SOLREF_MODE_FORCE_SPACE. This preserves the intended force-space response for normal settings while allowing MuJoCo's timestep safety clamp to soften contacts that are too stiff for the timestep. Existing assets with explicitly authored force-space contact gains may need retuning, especially at larger timesteps. (#3139)

  • Convex-hull SDF and hydroelastic configuration now raises. ModelBuilder.add_shape_convex_hull() and paths producing GeoType.CONVEX_MESH now raise ValueError if ShapeConfig.sdf_* or ShapeConfig.is_hydroelastic are set. Build and attach the SDF on the underlying Mesh with Mesh.build_sdf() instead. (#2533)

  • Negative scale behavior is stricter. Mesh, convex, and SDF shapes now preserve signed scale, while symmetric primitives normalize negative scale to absolute values. Cone and heightfield shapes reject negative scale and should be mirrored with an explicit transform or pre-mirrored height data. (#2837, #2936)

  • SolverKamino.reset() signature changed. SolverKamino is marked experimental in this release, and its reset API now matches SolverBase.reset() by resetting in place on state. Migrate state_out= calls to state= and pass reset targets such as base_q= by keyword. (#2657, #3065)

  • Example helper cleanup. The deprecated newton.examples.compute_world_offsets helper has been removed. Use ModelBuilder.replicate() instead. (#3075)

Other Removals

  • Internal raycast kernel cleanup. raycast_kernel_no_hfield has been removed in favor of raycast_kernel, and heightfield raycasting now routes through the mesh BVH path. SensorRaycast itself remains available but deprecated. (#2971, #3097)

New Deprecations

  • Legacy joint target names. Model.joint_target_pos / Control.joint_target_pos and Model.joint_target_vel / Control.joint_target_vel are deprecated in favor of joint_target_q and joint_target_qd. ModelBuilder.joint_target_pos and ModelBuilder.joint_target_vel are no longer writable; set per-axis targets with JointDofConfig.target_pos / target_vel or write to ModelBuilder.joint_target_q / joint_target_qd. (...
Read more

Release v1.2.1

Choose a tag to compare

@github-actions github-actions released this 05 Jun 07:36

Newton v1.2.1

Newton v1.2.1 is a patch release following v1.2.0. It focuses on bug fixes and compatibility updates for the 1.2 release line.
For the complete list of changes, see the changelog.

Highlights

  • Collision correctness fixes. Mesh-convex and heightfield-convex contacts are now generated correctly when shapes are separated by margin but still within the contact envelope. (#2916)

  • Improved ArticulationView selection behavior. ArticulationView now exposes full labels for joints, links/bodies, and shapes, making it easier to disambiguate selected entries whose leaf names collide. Closed-loop link
    selections also now expose each physical body once for BODY-frequency accessors. (#2935, #2972)

  • USD visual material import fixes. Visual mesh imports now preserve face-material UsdGeom.Subset colors and textures by splitting material subsets into separate render meshes. Collision and physics import behavior is unchanged. (#2985)

  • Dependency compatibility updates. The 1.2 release line now pins warp-lang below 1.14 and newton-actuators below 0.1.1 to avoid known import-time warning compatibility issues while preserving Newton 1.2 behavior. (#3043, #3041)

Notes

This release is intended to be API-compatible with Newton v1.2.0. No breaking changes are expected.

Release v1.2.0

Choose a tag to compare

@github-actions github-actions released this 12 May 19:08
a886e3f

Newton v1.2.0

Newton v1.2 introduces an experimental composable actuator subsystem with full USD schema support, brings the Kamino simulation examples into newton.examples, and improves SolverMuJoCo simulation throughput over Newton 1.1. The release also includes asset-import correctness fixes, viewer additions, and collision-pipeline improvements summarized below; for the complete list of changes, see the full changelog.

Highlights

  • Newton actuators (experimental). Actuator models can be built from components: each one wires a single Controller (PD / PID / neural MLP or LSTM) with an optional Delay and zero or more Clamping post-processors (max-effort, DC-motor saturation, position-based). The design is optimized for graphable batch application in RL workloads in Newton and other simulators (e.g. PhysX). The standalone newton-actuators package is deprecated and moved into core Newton as newton.actuators, and gains full USD schema support (NewtonActuator prim + composable NewtonActuatorDelayAPI, NewtonPDControlAPI, clamping APIs), covering the IsaacLab actuator classes. See Actuators.

    # Before (newton-actuators package): one subclass per combination.
    actuator = ActuatorDelayedPD(kp, kd, delay)
    
    # After (newton.actuators): compose any combination of controller, delay, clamping.
    actuator = Actuator(
        ControllerPD(kp, kd),
        Delay(delay),
        [ClampingDCMotor(saturation_effort, velocity_limit, max_force)],
    )
  • Kamino examples ship with Newton. The Kamino simulation examples (basic and robot scenes) are now part of newton.examples under newton/examples/kamino/ and runnable through the standard example browser (#2518).

Screenshot from 2026-05-11 22-23-06
  • SolverMuJoCo performance. MJWarp optimizations improve performance across a wide range of configurations: typically around 10% higher simulation throughput over Newton 1.1 (e.g. 512-world KitchenG1 or 8192-world Humanoid), with the largest gains — up to 50% — for robots just above MuJoCo's 32-DoF sparse/dense threshold (e.g. 8192-world G1). When using the Newton collision pipeline with SolverMuJoCo (use_mujoco_contacts=False), three optimizations to the Newton-to-MJWarp contact conversion reduce the collision pipeline's share of GPU time from about 12% to 2.3% on example_robot_anymal_d with 4096 worlds (#2393).

Other notable changes

SolverMuJoCo: asset parsing and correctness

Correctness fixes across MJCF and USD asset import: multi-DOF joints with MjcActuator targets (#2397), MjcActuator import populating Newton's joint target arrays (#2598), <default><equality/></default> defaults in MJCF (#2510), degree-mode MJCF importer fixes for damping / stiffness / range (#2508), and <joint type="ball"/> support in MJCF including round-trip to MuJoCo specs (#2509). New SolverMuJoCo capabilities include enable_multiccd for up to four contact points per geom pair (#2435) and site-targeted actuator support (#2220). The MuJoCo integration guide is also rewritten end-to-end (#2574).

Viewer

The viewer gains live in-loop telemetry: ViewerGL.log_scalar() and ViewerViser.log_scalar() for live scalar time-series plots (#2341, #2387), ViewerBase.log_arrows() for arrow rendering via a dedicated geometry shader (#2403), array heatmap logging through log_array() (#2433), and Viewer.log_image() for displaying single or batched sensor images (#2578). The GL viewer adds Blender-style orbit / pan / dolly camera controls (#2579), a frame-by-frame step bound to . while paused (#2566), and per-mesh color and PBR material overrides on log_mesh() (#2628).

Screenshot from 2026-05-11 21-48-39

Newton Viewer running the sensor_tiled_camera example — the floating color window shows batched SensorTiledCamera output rendered into the viewer via Viewer.log_image().

VBD

SolverVBD's triangle (cloth / membrane) material switches from StVK to a stable Neo-Hookean formulation, with better stability under large stretch; tri_ka / tri_ke keep their meaning and near-rest behavior is unchanged (#2545). VBD now supports and defaults to augmented-Lagrangian hard constraints for body-body contacts and non-cable structural joint slots; toggle globally with the rigid_contact_hard flag, or per joint slot via SolverVBD.set_joint_constraint_mode() (#2327).

Sensors

SensorTiledCamera gains linear HDR color output via hdr_color_image (#2721). Raycast logic is consolidated under newton.geometry.raycast (#2482), and the BVH is disentangled from the raytracer and exposed via a public API: newton.geometry.build_bvh_shape(), build_bvh_particle(), refit_bvh_shape(), refit_bvh_particle() (#2544).

Collision pipeline (including SDF and hydroelastic contacts)

CollisionPipeline now has an option for deterministic contact detection (#2409). Pass deterministic=True to get bit-identical contacts when running contact detection multiple times on the same input:

import newton

builder = newton.ModelBuilder()
# ... build scene ...
model = builder.finalize()

pipeline = newton.CollisionPipeline(model, deterministic=True)
contacts = pipeline.contacts()

state = model.state()
pipeline.collide(state, contacts)
# contacts are now in a canonical, reproducible order

Mesh SDF construction switches to a texture-based sparse path, with a parity-based fast path auto-selected for watertight meshes via SDF.create_from_mesh(sign_method="auto") (#2475); cooked SDFs gain content-addressed on-disk caching through a new cache_dir argument on SDF.create_from_mesh and Mesh.build_sdf (#2620). Hydroelastic contacts get a broadphase scatter-kernel rewrite (#2419) and degenerate-triangle handling fixes (#2424). The narrow-phase MPR / GJK paths get correctness fixes for non-origin-centered convex hulls (#2651) and box support-map sign flips under noisy rotations (#2438). The collision pipeline also gains a first working CPU execution of mesh-mesh and mesh-heightfield SDF contacts (experimental; perf and correctness still being worked on, #2619), an O(W²·S²) shape-pair memory-explosion fix (#2384), and a collection of smaller perf improvements (#2477).

Breaking changes

ArticulationView.get_actuator_parameter / set_actuator_parameter

Both methods now require a component argument identifying the owning Controller, Clamping, or Delay instance, e.g. get_actuator_parameter(actuator, actuator.controller, "kp") (#2449).

SensorTiledCamera BVH lifecycle

Cameras no longer build their BVH implicitly. Call newton.geometry.build_bvh_shape() / build_bvh_particle() once after setup, then refit_bvh_shape() / refit_bvh_particle() before rendering frames whose geometry changed (#2544).

Mesh SDF: texture_data replaces sparse_volume / coarse_volume

Mesh SDFs build via the texture-based sparse path only and sample via SDF.texture_data. The SDF.sparse_volume and SDF.coarse_volume paths are removed (#2475).

Raycast return shape

All raycast functions now return distance and normal information; callers that previously unpacked only the hit position need to update (#2482).

Implicit MPM defaults and warmstart syntax

SolverImplicitMPM.Config.solver warmstart syntax moves from +-separated strings to ordered sequences: solver=("cg", "gauss-seidel") instead of solver="cg+gauss-seidel". The default solver changes from "gs" to "auto" (selects "gs" for trilinear bases, "gs-batched" for higher-order); set solver="gs" explicitly to restore the previous behavior. The default collider_basis changes from "Q1" to "S2" for improved contact quality (#2489).

VBD cable / rod stretch_stiffness and bend_stiffness

The default stretch_stiffness in add_joint_cable(), add_rod(), and add_rod_graph() is reduced from 1.0e9 to 1.0e5. stretch_stiffness and bend_stiffness in add_rod() / add_rod_graph() are now direct per-joint stiffness values, matching add_joint_cable() and other joint stiffness APIs (#2327).

SolverVBD rigid_contact_hard=True default

The VBD solver uses augmented-Lagrangian hard constraints for body-body contacts by default. Pass rigid_contact_hard=False to restore the previous (soft) behavior (#2327).

SolverVBD.collect_rigid_contact_forces() signature

SolverVBD.collect_rigid_contact_forces() now takes current and previous body transforms explicitly: (body_q, body_q_prev, contacts, dt) instead of (state, contacts, dt). Snapshot solver.body_q_prev before step(), then pass the post-step body transforms (#2327).

body_q_prev = wp.clone(solver.body_q_prev)
solver.step(state_in, state_out, control, contacts, dt)

body0, body1, point0, point1, force_on_body1, contact_count = solver.collect_rigid_contact_forces(
    state_out.body_q,
    body_q_prev,
    contacts,
    dt,
)

Additional SolverVBD rigid-constraint default tuning

In addition to rigid_contact_hard=True, several SolverVBD rigid-constraint defaults changed. Users depending on Newton 1.1 rigid VBD tuning should set the old values explicitly (#2327).

Parameter Newton 1.1 default Newton 1.2 default
rigid_avbd_beta 1.0e5...
Read more

Release v1.1.0

Choose a tag to compare

@github-actions github-actions released this 15 Apr 07:30

Newton 1.1.0

Newton 1.1.0 expands simulation capability in implicit MPM solver, stronger deformable and kinematic workflows, as well as richer rendering and sensor support. The release also improves collision performance, contact sensing, and validation coverage, while fixing important issues across asset import, contact handling, viewer behavior, and multi-GPU execution.

New features

  • Implicit MPM: adds major implicit MPM upgrades, including new material models, solver and discretization options, and broader example coverage.
  • TetMesh + USD loading: adds a TetMesh asset class plus USD/file loading support for volumetric deformable meshes.
  • Expanded kinematic and VBD support: kinematic bodies in VBD, and VBD support for prismatic, revolute, and D6 joints.
  • Rendering and sensor additions: adds Gaussian splats, tiled-camera texture support, Gaussian sorting modes, and PBR lighting and tone mapping in the GL viewer.
  • Contact sensing: adds friction aggregation to SensorContact and improves performance at larger world counts.

Improvements

  • Collision and SDF performance: improves collision pipeline performance and reduces SDF memory footprint.
  • Validation and workflows: strengthens end-to-end validation for MJCF, USD, Newton, and MJWarp conversion workflows.
  • Developer and example experience: improves documentation, viewer workflows, examples, and public API usability.

Bug fixes

  • Import and interoperability fixes: resolved important issues across USD, URDF, and MJCF pipelines, including mass and inertia handling, fixed-joint/articulation import, recursive asset references, and authored joint property parsing.
  • Physics and collision fixes: addressed contact-force conversion, contact drift and jitter, SDF and collision behavior, and several correctness issues in joint and contact handling.
  • Viewer and runtime stability fixes: fixed problems across ViewerGL, multi-GPU/device scoping, VSync, rendering behavior, and broader execution stability in more complex environments.

Release v1.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Apr 11:56
Bump version to 1.0.0

Signed-off-by: Alain Denzler <adenzler@nvidia.com>