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.

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 configuration, or None if the Newton stage has not been created.

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>,
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.

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 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,
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.

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.