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

# Creating visualization markers

This guide shows how to draw visualization markers: debug geometry (frames, arrows, spheres,
custom meshes) rendered over the scene through `markers.VisualizationMarkers`. Markers are
display-only: they carry no physics and do not affect the simulation.

For plain points, lines, and splines, Isaac Sim's own `isaacsim.util.debug_draw` extension
is lighter-weight. Use `VisualizationMarkers` when you need more complex shapes.

Markers are supported on Kit, Newton GL, Rerun, and Viser, but not yet on Newton RTX. See
[https://isaac-sim.github.io/IsaacLab/release/3.0.0/source/concepts/visualization.html](https://isaac-sim.github.io/IsaacLab/release/3.0.0/source/concepts/visualization.html) for how to enable them on a given visualizer.

## Quick Start

Run the packaged `markers` example:

#### uv (Recommended)

```bash
uv run --extra isaacsim isaaclab example markers
```

#### isaaclab.sh / isaaclab.bat

```bash
./isaaclab.sh example markers
```

Pass `--visualizer newton_gl` (or another supported backend) to switch visualizers; defaults
to `kit`.

![](/isaaclab/_fern-img/29e113cfa57cfbfcdee5d42af5dca6524d7de77a74eb501431c3f1521fb61e8e.webp)

To stop, close the window or press `Ctrl+C`.

```text
# Source file not found: ../../../examples/markers.py
```

## Configuring markers

`~markers.VisualizationMarkersCfg` takes:

* `markers.VisualizationMarkersCfg.prim_path`: prim path where the marker
  `UsdGeom.PointInstancer` is created.
* `markers.VisualizationMarkersCfg.markers`: a dict of marker prototypes. The key names
  the prototype; the value is its spawn config (any `~isaaclab.sim.spawners.SpawnerCfg`,
  including USD file references).

> **Note**
>
> Physics properties on a marker prototype's spawn config are stripped on creation, since
> markers are not simulated.

```text
# Source file not found: ../../../examples/markers.py
```

## Drawing markers

`~markers.VisualizationMarkers.visualize` sets marker poses and, optionally, which
prototype each marker instance uses via `marker_indices`.

```text
# Source file not found: ../../../examples/markers.py
```

Arguments left as `None` keep their previous value. Passing a different number of rows than
the last call resizes the marker instance count. See
`~markers.VisualizationMarkers.visualize`'s docstring for the full argument list
(`translations`, `orientations`, `scales`, `marker_indices`, `environment_ids`).

## Markers in practice

Markers are commonly used to debug per-environment state during training, such as commanded vs.
current velocity, or contact events:

![Embedded illustration](/isaaclab/_fern-img/c652307f0a57015ff6896af2f022c6c5c4bffe517fdc5abdf35c67472d75771d.webp)

![Embedded illustration](/isaaclab/_fern-img/f60fdca1f454dafdd48c7f600df6d6086ea409f151c343c6271d9aea4a1c7c3f.webp)

## See also

* [https://isaac-sim.github.io/IsaacLab/release/3.0.0/source/concepts/visualization.html](https://isaac-sim.github.io/IsaacLab/release/3.0.0/source/concepts/visualization.html): enabling markers per visualizer, and other visualizer
  features
* [/source/how-to/record_video](/source/how-to/record_video): recording a marker-annotated scene to video