Python API#

The following table summarizes the available classes and functions.

acquire_physics_interface

Get the Newton physics interface.

acquire_stage

Get the Newton simulation stage.

configure_newton

Set the Newton runtime configuration.

get_newton_config

Return the live Newton configuration.

get_active_physics_engine

Get the name of the currently active physics engine.

get_available_physics_engines

Get list of all available physics engines.

Configuration Classes#

NewtonConfig

Configuration for Newton physics simulation in Isaac Sim.

NewtonSolverOutputConfig

Optional outputs computed by the Newton solver during simulation steps.

CollisionConfig

Configuration for the Newton collision pipeline.

HydroelasticConfig

Runtime configuration for hydroelastic contact.

XPBDSolverConfig

Configuration for XPBD (Extended Position-Based Dynamics) solver.

MuJoCoSolverConfig

Configuration for MuJoCo Warp solver-related parameters.

Tensor Interface#

The Newton tensor backend is provided by the separate isaacsim.physics.newton.tensors extension. Its generated Python API lists the simulation and view interfaces available when the extension is loaded.

Functions#

acquire_physics_interface() → NewtonPhysicsInterface | None#

Get the Newton physics interface.

Returns:

The physics interface for controlling simulation, or None if not initialized.

acquire_stage() → NewtonStage | None#

Get the Newton simulation stage.

Function name has a typo (“acuire”) but is kept for backward compatibility.

Returns:

The simulation stage object, or None if not initialized.

configure_newton(
cfg: NewtonConfig,
) → None#

Set the Newton runtime configuration.

Applied on the next play or re-initialization. Call before play from a standalone script or extension.

Parameters:

cfg – Newton simulation configuration.

get_newton_config() → NewtonConfig | None#

Return the live Newton configuration.

Returns:

The current or pending configuration, or None if Newton has not been configured.

get_active_physics_engine() → str#

Get the name of the currently active physics engine.

Returns:

Name of the active engine (“newton”, “physx”, etc.) or “Unknown” if none active.

get_available_physics_engines(
verbose: bool = False,
) → list[tuple[str, bool]]#

Get list of all available physics engines.

Parameters:

verbose – If True, print available engines to console.

Returns:

List of tuples (engine_name, is_active) for all registered engines.

Configuration Classes#

class NewtonConfig(
num_substeps: int = 1,
debug_mode: bool = False,
use_cuda_graph: bool = True,
time_step_app: bool = True,
physics_frequency: float = 600.0,
update_fabric: bool = True,
disable_physx_fabric_tracker: bool = True,
collapse_fixed_joints: bool = False,
fix_missing_xform_ops: bool = True,
contact_ke: float = 10000.0,
contact_kd: float = 100.0,
contact_kf: float = 10.0,
contact_mu: float = 1.0,
contact_ka: float = 0.5,
restitution: float = 0.0,
contact_margin: float = 0.01,
soft_contact_margin: float = 0.01,
joint_limit_ke: float = 100.0,
joint_limit_kd: float = 1.0,
armature: float = 0.1,
joint_damping: float = 1.0,
pd_scale: float = 1.0,
solver_cfg: ~isaacsim.physics.newton.impl.solver_config.NewtonSolverConfig = <factory>,
solver_outputs: ~isaacsim.physics.newton.impl.newton_config.NewtonSolverOutputConfig = <factory>,
collision_cfg: ~isaacsim.physics.newton.impl.collision_config.CollisionConfig = <factory>,
)#

Bases: object

Configuration for Newton physics simulation in Isaac Sim.

This configuration follows IsaacLab’s pattern of separating simulation-level parameters from solver-specific parameters.

armature: float = 0.1#

Default joint armature (rotor inertia).

collapse_fixed_joints: bool = False#

Whether to merge bodies connected by fixed joints during USD parsing.

When enabled, reduces body count and improves performance.

collision_cfg: CollisionConfig#

Collision pipeline configuration, including hydroelastic contact.

contact_ka: float = 0.5#

Default contact adhesion coefficient.

contact_kd: float = 100.0#

Default contact damping coefficient.

contact_ke: float = 10000.0#

Default contact stiffness (spring constant).

contact_kf: float = 10.0#

Default contact friction force coefficient.

contact_margin: float = 0.01#

Contact margin for rigid body collision detection.

contact_mu: float = 1.0#

Default friction coefficient (Coulomb friction).

debug_mode: bool = False#

Whether to enable debug mode for the solver.

disable_physx_fabric_tracker: bool = True#

Whether to pause PhysX fabric change tracking (if PhysX is loaded).

fix_missing_xform_ops: bool = True#

Whether to add missing identity xform operations to geometry prims to suppress USD warnings.

joint_damping: float = 1.0#

Default joint damping coefficient.

joint_limit_kd: float = 1.0#

Default joint limit damping.

joint_limit_ke: float = 100.0#

Default joint limit stiffness.

num_substeps: int = 1#

Number of substeps to use for the solver.

pd_scale: float = 1.0#

Scaling factor for PD controller gains when parsing USD joint drives.

physics_frequency: float = 600.0#

Physics simulation frequency in Hz.

restitution: float = 0.0#

Default coefficient of restitution (bounciness). 0 = no bounce, 1 = perfectly elastic.

soft_contact_margin: float = 0.01#

Contact margin for soft body collision detection.

solver_cfg: NewtonSolverConfig#

Solver-specific configuration.

solver_outputs: NewtonSolverOutputConfig#

Optional solver-computed outputs.

time_step_app: bool = True#

Whether the application should drive simulation time stepping.

If True, the stage update node calls step_sim(). If False, external code must step.

update_fabric: bool = True#

Whether to synchronize Newton state to USD Fabric each frame.

use_cuda_graph: bool = True#

Whether to use CUDA graph capture for performance optimization.

When enabled, the simulation loop is captured as a CUDA graph for faster execution. Highly recommended for production use.

class NewtonSolverOutputConfig(
contact_forces: bool = True,
link_incoming_joint_force: bool = False,
)#

Bases: object

Optional outputs computed by the Newton solver during simulation steps.

Enabling an output can add state storage and per-step computation. Configure the required outputs before initializing physics.

contact_forces: bool = True#

Whether to compute contact forces for contact tensor queries.

Whether to compute joint wrenches used by incoming-link and projected-DOF-force queries.

class CollisionConfig(
broad_phase: ~typing.Literal['nxn',
'sap',
'explicit'] = 'explicit',
rigid_contact_max: int | None = None,
hydroelastic: ~isaacsim.physics.newton.impl.collision_config.HydroelasticConfig = <factory>,
)#

Bases: object

Configuration for the Newton collision pipeline.

broad_phase: Literal['nxn', 'sap', 'explicit'] = 'explicit'#

Broad-phase pair generation mode.

hydroelastic: HydroelasticConfig#

Hydroelastic contact runtime settings.

rigid_contact_max: int | None = None#

Maximum number of rigid contacts to allocate, or None to derive it from the model.

Must be at least the per-world contact capacity of the solver, such as MuJoCoSolverConfig.nconmax.

class HydroelasticConfig(
enabled: bool = True,
reduce_contacts: bool = True,
buffer_fraction: float = 1.0,
buffer_mult_broad: int = 1,
buffer_mult_iso: int = 1,
buffer_mult_contact: int = 1,
normal_matching: bool = True,
anchor_contact: bool = False,
margin_contact_area: float = 0.01,
output_contact_surface: bool = False,
mc_edge_clamp_min: float = 0.02,
)#

Bases: object

Runtime configuration for hydroelastic contact.

Per-shape opt-in (enable, stiffness, SDF resolution) is authored in USD via NewtonSDFCollisionAPI and parsed automatically.

anchor_contact: bool = False#

Add an extra contact at the center of pressure per normal bin.

buffer_fraction: float = 1.0#

(0, 1].

Type:

GPU buffer size relative to the worst-case estimate. Range

buffer_mult_broad: int = 1#

Multiplier for the broad-phase block pair buffer, applied after buffer_fraction.

Increase when a broad phase overflow warning is reported.

buffer_mult_contact: int = 1#

Multiplier for the face contact buffer, applied after buffer_fraction.

Increase when a face contact overflow warning is reported.

buffer_mult_iso: int = 1#

Multiplier for the iso-surface extraction buffers, applied after buffer_fraction.

Increase when an iso subblock or iso voxel overflow warning is reported.

enabled: bool = True#

Whether to run the hydroelastic contact path when hydroelastic shapes are present.

margin_contact_area: float = 0.01#

Area used for non-penetrating margin contacts [m²].

mc_edge_clamp_min: float = 0.02#

Marching-cubes edge clamp parameter.

normal_matching: bool = True#

Align reduced contact normals with the aggregate force direction.

output_contact_surface: bool = False#

Export contact patch triangles for visualization.

reduce_contacts: bool = True#

Merge patch triangles into fewer representative contacts.

class XPBDSolverConfig(
solver_type: Literal['xpbd'] = 'xpbd',
iterations: int = 2,
)#

Bases: NewtonSolverConfig

Configuration for XPBD (Extended Position-Based Dynamics) solver.

An implicit integrator using eXtended Position-Based Dynamics (XPBD) for rigid and soft body simulation.

References

  • Miles Macklin, Matthias Müller, and Nuttapong Chentanez. 2016. XPBD: position-based simulation of compliant constrained dynamics. In Proceedings of the 9th International Conference on Motion in Games (MIG ‘16). Association for Computing Machinery, New York, NY, USA, 49-54. https://doi.org/10.1145/2994258.2994272

  • Matthias Müller, Miles Macklin, Nuttapong Chentanez, Stefan Jeschke, and Tae-Yong Kim. 2020. Detailed rigid body simulation with extended position based dynamics. In Proceedings of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation (SCA ‘20). Eurographics Association, Goslar, DEU, Article 10, 1-12. https://doi.org/10.1111/cgf.14105

iterations: int = 2#

Number of solver iterations.

solver_type: Literal['xpbd'] = 'xpbd'#

‘xpbd’, ‘mujoco’, ‘featherstone’, ‘semiImplicit’, ‘vbd’.

Type:

Type of solver to use

class MuJoCoSolverConfig(
solver_type: Literal['mujoco'] = 'mujoco',
njmax: int = 1200,
nconmax: int | None = 200,
cone: Literal['pyramidal', 'elliptic'] | None = None,
use_mujoco_cpu: bool = False,
disable_contacts: bool = False,
update_data_interval: int = 1,
save_to_mjcf: str | None = None,
use_mujoco_contacts: bool = False,
include_sites: bool = False,
)#

Bases: NewtonSolverConfig

Configuration for MuJoCo Warp solver-related parameters.

These parameters are used to configure the MuJoCo Warp solver. For more information, see the MuJoCo Warp documentation.

cone: Literal['pyramidal', 'elliptic'] | None = None#

Contact friction cone override. If None, use the value authored on the physics scene.

disable_contacts: bool = False#

Whether to disable contact computation in MuJoCo.

include_sites: bool = False#

If True, Newton shapes marked with ShapeFlags.SITE are exported as MuJoCo sites.

nconmax: int | None = 200#

Number of contact points per environment (world).

njmax: int = 1200#

Number of constraints per environment (world).

save_to_mjcf: str | None = None#

Optional path to save the generated MJCF model file.

solver_type: Literal['mujoco'] = 'mujoco'#

‘xpbd’, ‘mujoco’, ‘featherstone’, ‘semiImplicit’, ‘vbd’.

Type:

Type of solver to use

update_data_interval: int = 1#

Frequency (in simulation steps) at which to update the MuJoCo Data object from the Newton state.

use_mujoco_contacts: bool = False#

Whether to use MuJoCo’s contact computation.

use_mujoco_cpu: bool = False#

Whether to use the pure MuJoCo backend instead of mujoco_warp.