Display visualization markers in a 2D or 3D scene.

3d panel

By publishing specifically formatted marker messages to a topic, you can programmatically add primitive shapes (arrows, spheres, etc.) and more complex visualizations (occupancy grids, point clouds, etc.) to your 3D panel's scene.

Choose the topics you want to display via the topic picker, and configure their visualization settings in the "Edit topic settings" menu.

3d panel topic-picker

To translate or rotate the placement of your markers, publish transform messages (supported types listed below) to define a transform between two coordinate frames. To successfully apply this transformation to your markers, your transform message must include its own frame_id and a child_frame_id (i.e. your markers' frame_id).

Note: The 3D panel does not yet support transform interpolation. Currently, markers that are not published in the root frame will reference the last-seen transform to determine where they should be rendered relative to the current root frame. This may slightly impact the accuracy of your marker placements.

Supported display types

User interactions

Click any given marker in the scene to display its relevant details in a dialog box. Clicking a point in a point cloud also enables exporting the point cloud message as a CSV.

3d panel clicked marker

The panel controls on the right can be used to do the following:

  • Search for text in the visualization marker messages
  • Set a target frame for the camera to follow – by default the scene will follow the center of a frame. When panning, the camera will be offset from, but stay relative to, that original frame center. If you ever get lost in a scene after panning, click "Follow" to snap the camera back to the default position.
  • Toggle the ability to follow orientation
  • Toggle between a 3D and 2D view of the scene
  • Measure distance between 2 user-specified points (only in 2D view)
  • View and edit the camera state
  • Sync camera positions across multiple 3D panels in your layout

You can click visualization markers to dynamically change the data visualized in other panels by leveraging linked variables.

First, click on any given visualization marker in the 3D panel, and then hover over the field you want to link in the dialog box that opens. Follow the prompts to link that field to a variable name of your choice. Now, whenever you click another marker under that same topic, the linked field for that new marker will update that variable value.

linked variables

For example, if you click on a visualization marker under /tracked_objects, and link the id field to $my_custom_id, the $my_custom_id variable will automatically be set to whatever that visualization marker’s id field contains (e.g. 1000). Now, if you click on another visualization marker under /tracked_objects, perhaps one with an id of 2000, that $my_custom_id variable will automatically be updated on click to 2000.

This is useful if you want to, for example, plot the selected marker’s velocity – you can open a Plot panel in your layout, and add a line for /tracked_objects{id==$my_custom_id}.velocity.


  • Flatten markers with a z-value of 0 to be located at the base frame's z value – Ensures that markers reference the same baseline height when rendering on a plane.
  • Automatically apply dark/light background color to text – Makes text label markers easier to read within the 3D scene.


To move the camera:

  • w – Forward
  • a – Left
  • s – Backward
  • d – Right
  • z, or Scroll up – Zoom in
  • x, or Scroll down – Zoom out
  • Drag – Parallel to the ground. Will disengage “follow” mode, if enabled.
  • Right-click + drag – Pan and rotate. Dragging horizontally rotates around the world's z-axis; dragging vertically pans around the x and y axes
  • Shift + other action – Adjusts all values to be 1/10 of baseline values; allows for more precise movements and adjustments


  • t – Open topic picker
  • Esc – Close topic picker
  • Cmd + f – Search for marker text