Native Physics API Access

Native Physics API Access#

Warning

Native physics APIs are backend-specific escape hatches. They can bypass Isaac Lab’s buffering, validation, ordering, and lifecycle management. Use the unified asset and sensor APIs unless an engine-native capability or a lower-overhead data path is required.

Choose an access level#

Use native access only when the unified APIs do not provide a capability or data path that the workload needs. Keep it close to the component that owns the simulation state. For the portable API boundary and backend lifecycle, see Backend Architecture.

  1. Use the unified Isaac Lab data and write APIs for portable task code.

  2. Reuse an Isaac Lab-owned native handle when its selection already matches.

  3. Create raw engine access only for a selection or capability that the owning Isaac Lab object does not expose.

Ownership and synchronization#

Backend

Native entry point

Selection model

Data ownership

Read/write model

Synchronization

Invalidation

PhysX

get_physics_sim_view()

Typed views selected by prim globs

Engine/view-owned buffers

Getter/setter pull/push

Explicit setters and occasional kinematic refresh

Reacquire after view invalidation, hard reset, or teardown

Newton

get_model(), get_state_0(), get_control(), and get_contacts()

Generic labels and ArticulationView

Live engine-owned Warp arrays

Direct pointer or selection reads/writes

Forward kinematics and model-change notification when applicable

Reacquire current state across state-buffer swaps and all objects after model rebuild

OvPhysX

get_physx_instance() or OvPhysxView

A tensor type plus pattern/prim list

Caller-owned transfer buffers backed by engine bindings

Explicit read()/write() or guarded convenience methods

Caller respects access mode, device, dtype, and shape

Reacquire after stage/runtime teardown