Releases: newton-physics/newton
Release list
Release v1.5.0
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.controllersmodule 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
nvmaxstorage, 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_posandjoint_target_velaliases have been removed fromModel,Control, andModelBuilder. Usejoint_target_qandjoint_target_qd; changing these names alone does not require changing the target layout. (#3617) -
Position-target layout. The legacy DOF-shaped
joint_target_qlayout is deprecated for models containing free, ball, or distance joints. Setnewton.use_coord_layout_targets = Truebefore building models sojoint_target_qmatchesjoint_q, keepjoint_target_qdDOF-shaped, and index position targets withModel.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=Falseto preserve body-associated visuals only, filter collision shapes withShapeFlags.COLLIDE_SHAPES, or passload_visual_shapes=Falsewhen visual shapes are unwanted. (#3694, #3712) -
Fast math. Tiled-camera render kernels and
intersect_ray()now use fast math by default. SetSensorTiledCamera.default_render_config.enable_fast_math = Falseand passfast_math=Falseto preserve bit-exact IEEE-precise output. (#3452, #3521) -
VBD Dahl friction. Implicit positive Dahl defaults are disabled. Pass
dahl_defaults_enabled=Trueonly as a temporary compatibility measure, then explicitly author positivevbd:dahl_eps_maxandvbd:dahl_tauvalues. (#3636) -
Model replication.
ModelBuilder.replicate()now merges copies in one pass and no longer invokes subclass overrides ofadd_world()oradd_builder()per copy. Move required side effects outside those overrides, or call the methods explicitly. (#3656) -
Kamino speculative contacts.
SolverKaminonow culls positive-distance speculative contacts by default. No compatibility switch restores the earlier behavior; increaseShapeConfig.marginto 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_posandjoint_target_velaliases are removed fromModel,Control, andModelBuilder, andActuatornow selectsjoint_target_qandjoint_target_qdby default. (#3617) -
SDF compatibility storage. Deprecated public texture-SDF and block-coordinate attributes on
ModelandSDFare removed. Use supported geometry APIs instead of relying on internal SDF storage. (#3622) -
BVH and heightfield helpers. The free
build_bvh_*andrefit_bvh_*helpers are removed in favor of the correspondingModel.bvh_build_*()andModel.bvh_refit_*()methods.Model.has_heightfieldsis removed; useModel.heightfield_count. (#3619) -
Solver flags and options.
SolverNotifyFlagsis removed in favor ofModelFlags, and the ineffectiveSolverMuJoCo(ls_parallel=...)option is removed. (#3619) -
Experimental VBD cable slots.
SolverVBD.JointSlotnow separates stretch, shear, bend, and twist. Rawslot=1andJointSlot.ANGULARnow select shear; useJointSlot.BEND, now slot 2, for bending. (#3122, #3783)
New deprecations
-
Scalar gravity. Pass a three-component gravity vector to
ModelBuilderinstead of a scalar. (#3324) -
Solver reset masks. Use a
wp.boolmask 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, andrigid_contact_stick_freeze_angular_epsare ignored and deprecated. Use collision-pipeline sticky matching. (#3652) -
Model-owned collision helpers. Replace
Model.contacts()andModel.collide()with an explicitCollisionPipeline,pipeline.contacts(), andpipeline.collide(). (#3409) -
DOF-shaped position targets. Opt into coordinate-layout position targets with
newton.use_coord_layout_targets = Truebefore building models and index them withModel.joint_target_q_start. (#3617)
Upcoming removals
-
The coordinate layout will become the only
joint_target_qlayout in a future release, andnewton.use_coord_layout_targetswill be removed. Opt into the coordinate layout now. (#3617) -
The temporary
dahl_defaults_enabled=Truecompatibility mode will be removed in a future release. Explicitly author positivevbd:dahl_eps_maxandvbd:dahl_tauvalues where Dahl cable friction is required. (#3636)
Dependency updates
- Newton now requires
warp-lang>=1.16.0. - The
simextra 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...
Release v1.4.0
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()andeval_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.
SolverMuJoConow propagates authoredshape_gapinto MuJoCogeom_gapandpair_gap, while MJCF and USD imports no longer subtract gap from margin by default. Shapes without an explicit gap inheritModelBuilder.rigid_gap = 0.1m, which now reaches MuJoCo and may increase detection-only contacts, broad-phase work, and contact-buffer pressure. Uselegacy_margin_gap=Truefor assets authored against MuJoCo 3.8 or earlier. For other scenes, retunebuilder.rigid_gapbefore adding shapes or setShapeConfig.gapper shape;0.0preserves 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 notMaterialprims, may stop resolving materials. Validate and repair affected assets withusdcheckerorusd-validation-nvidia. (#3350) -
Several simulation defaults and semantics changed. The CoACD threshold now defaults to
0.05; standaloneSolverSemiImplicitenables particle-particle contact forces;SolverFeatherstonesolves 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 ascollider_meshes=,collider_body_ids=, andcollider_particle_ids=. (#3524) -
APIs deprecated in earlier releases were removed. Notable removals include
SensorRaycast, the SensorTiledCamera 1.1 compatibility surface, the externalnewton-actuatorsdependency 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.configandrender_configtodefault_render_config, set texture and shadow behavior explicitly, and use the renamed camera-ray helpers. Other newly deprecated surfaces includeState.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
onnxextra adds ONNX policy inference throughwarp-nn[onnx]==0.3.0. - The deprecated
newton-actuatorsdependency is removed; usenewton.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:
- @han-xudong for URDF package resolution, viewer-state, SemiImplicit, XPBD-contact, and restitution fixes. (#2614, #2658, #3204, #3304, #3287)
- @aneangel for plotting and ViewerUSD improvements. (#2672, #2990, #2992)
- @devshahofficial for the example render-rate cap and USD mesh loading. (#2606, #3214)
- @maxkra15 for clearer USD schema failures and batched MuJoCo geometry fixes. (#3117, #3376)
- @felixmey for stabilizing and regression-testing the cable cross-slide table example. (#3126)
- @huidongc for fixing triangle-mesh construction in
RenderContext. (#3199) - @Langford-H for fixing
ViewerFilerunning state after close. (#3190) - @haoran-whynot for fixing Style3D memory growth without CUDA Graph capture. (#3243)
- @rshahid-nvidia for exposing BVH constructor selection in
ModelBuilder. (#2864) - @Dev-Jahn for fixing Implicit MPM graph capture with iterative linear solvers. (#3191)
- @jpatel3 for preserving unrelated USD articulations during import. (#3218)
- @mehdiataei for fixing CPU frame capture in ViewerGL. (#3093)
- @hujc7 for honoring ignored paths during custom-frequency USD traversal. (#3406)
- @ooctipus for canonical USD material-binding resolution. (#3350)
Release v1.3.0
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 withStateFlags, andModelFlagsis 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 forMesh.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)enablesjoint_target_qandjoint_target_qdarrays whose layout matchesjoint_qandjoint_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 duringModelBuilder.finalize(), and users can callmodel.bvh_refit_shapes(state)after state changes to keep BVH-backed ray queries and sensor renders current.SensorRaycastremains available but deprecated, with ray/depth workflows moving toSensorTiledCamerautilities. (#2971, #3039, #3097) -
Viewer and rendering capabilities. Newton adds the experimental
ViewerRTXbackend 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.MeshBVH built during model finalization, replacing the previous per-thread grid traversal path. The same release also consolidates public ray query workflows aroundnewton.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-authoredjoint_limit_ke/joint_limit_kdnow map through MuJoCo's per-DOF mass/inertia scaling, and force-spaceshape_material_ke/shape_material_kdcontacts now use MuJoCo's positivesolrefconvention 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=Falsewhen they need the legacy arrays. (#2959) -
Joint damping unification. Newton introduces shared
Model.joint_dampingandJointDofConfig.dampingsupport across solvers, withModel.mujoco.dof_passive_dampingdeprecated 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(), andModel.bvh_refit_particles(), with shape and particle BVHs now built automatically duringModelBuilder.finalize(). The older free BVH helper functions remain available with deprecation warnings. (#3039) -
Color-space correctness. USD color-space metadata is respected, and
SensorTiledCamerapackedcolorandalbedooutputs now default to sRGB. UseRenderConfig(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
ModelBuilderjoint target attributes removed.ModelBuilder.joint_target_posandModelBuilder.joint_target_velare now read-only deprecated aliases. Code that assigned those attributes should set per-axis targets throughJointDofConfig.target_pos/target_vel, or write directly toModelBuilder.joint_target_q/joint_target_qd. (#2965) -
Deprecated
SensorContactaliases removed. Thenet_force,include_total,sensing_objs,counterparts,reading_indices,shape, andObjectTypealiases from earlier releases have been removed. Usetotal_force,force_matrix,measure_total,sensing_obj_idx,sensing_obj_type,counterpart_indices, andcounterpart_typeinstead. (#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=Falseto keep the legacy equality-constraint arrays. (#2959) -
MuJoCo joint-limit stiffness depends on asset mass/inertia.
SolverMuJoConow converts Newtonjoint_limit_ke/joint_limit_kdforce-space gains through MuJoCo's per-DOFdof_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 rawmjc:solreflimit/model.mujoco.solreflimit, or setjoint_limit_ke <= 0orjoint_limit_kd <= 0to restore MuJoCo's defaultsolreflimit = (0.02, 1.0). (#2610, #3132) -
MuJoCo force-space contact stiffness may be safety-clamped.
SolverMuJoConow converts force-spaceshape_material_ke/shape_material_kdcontact gains through MuJoCo's positivesolrefconvention whenuse_mujoco_contacts=Falseand both contacting shapes useSOLREF_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 producingGeoType.CONVEX_MESHnow raiseValueErrorifShapeConfig.sdf_*orShapeConfig.is_hydroelasticare set. Build and attach the SDF on the underlyingMeshwithMesh.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.SolverKaminois marked experimental in this release, and its reset API now matchesSolverBase.reset()by resetting in place onstate. Migratestate_out=calls tostate=and pass reset targets such asbase_q=by keyword. (#2657, #3065) -
Example helper cleanup. The deprecated
newton.examples.compute_world_offsetshelper has been removed. UseModelBuilder.replicate()instead. (#3075)
Other Removals
- Internal raycast kernel cleanup.
raycast_kernel_no_hfieldhas been removed in favor ofraycast_kernel, and heightfield raycasting now routes through the mesh BVH path.SensorRaycastitself remains available but deprecated. (#2971, #3097)
New Deprecations
- Legacy joint target names.
Model.joint_target_pos/Control.joint_target_posandModel.joint_target_vel/Control.joint_target_velare deprecated in favor ofjoint_target_qandjoint_target_qd.ModelBuilder.joint_target_posandModelBuilder.joint_target_velare no longer writable; set per-axis targets withJointDofConfig.target_pos/target_velor write toModelBuilder.joint_target_q/joint_target_qd. (...
Release v1.2.1
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
ArticulationViewselection behavior.ArticulationViewnow 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.Subsetcolors 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-langbelow 1.14 andnewton-actuatorsbelow 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
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/ neuralMLPorLSTM) with an optionalDelayand zero or moreClampingpost-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 standalonenewton-actuatorspackage is deprecated and moved into core Newton asnewton.actuators, and gains full USD schema support (NewtonActuatorprim + composableNewtonActuatorDelayAPI,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.examplesundernewton/examples/kamino/and runnable through the standard example browser (#2518).
SolverMuJoCoperformance. 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 withSolverMuJoCo(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% onexample_robot_anymal_dwith 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).
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 orderMesh 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... |
Release v1.1.0
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
Bump version to 1.0.0 Signed-off-by: Alain Denzler <adenzler@nvidia.com>