> This page is for version Release 3.0 (default).
> For other versions, use one of these documentation indexes:
> - Release 3.0 (default): https://docs.nvidia.com/isaaclab/3.0/llms.txt
> - Release 2.3: https://docs.nvidia.com/isaaclab/2.3/llms.txt
> - Release 2.2: https://docs.nvidia.com/isaaclab/2.2/llms.txt
> - Release 2.1: https://docs.nvidia.com/isaaclab/2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/isaaclab/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/isaaclab/_mcp/server.

# 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](/source/concepts/backends_and_presets#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   | `~isaaclab_physx.physics.PhysxManager.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  | `~isaaclab_newton.physics.NewtonManager.get_model`, `~isaaclab_newton.physics.NewtonManager.get_state_0`, `~isaaclab_newton.physics.NewtonManager.get_control`, and `~isaaclab_newton.physics.NewtonManager.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 | `~isaaclab_ov.physics.OvPhysxManager.get_physx_instance` or `~isaaclab_ov.sim.views.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                                                |

Isaac Lab also reads the native state and model for you when feeding renderers and
visualizers. See [scene_data_providers](/source/concepts/native-physics-api/scene_data_providers) for that read path.

## Backend-specific guides

* PhysX: [Tensor views and native access](/source/concepts/physics-backends/physx#tensor-views-and-native-access)
* Newton: [Native access](/source/concepts/physics-backends/newton#native-access)
* OvPhysX: [Native access](/source/concepts/physics-backends/ovphysx#native-access)