To learn what Primitives are, check the concept page on Entities and Components.

In Python every Primitive is typically backed by one or more function calls. In contrast, the Rust API works by adding components explicitly. This is more flexible & extendable but also requires a rough understanding of which components the Viewer can interpret together as documented below.

Spatial Primitives

Arrow 3D

  • Python: log_arrow
  • Rust (primary): Arrow3D
  • Primary component: arrow3d
  • Secondary components: colorrgba, radius, label

Rectangle 2D

  • Python: log_rect, log_rects
  • Rust (primary): Rect2D
  • Primary component: rect2d,
  • Secondary components: colorrgba, radius, label, classid

Box 3D

  • Python: log_obb
  • Rust (primary): Box3D
  • Primary component: box3d,
  • Secondary components: vec3d, quaternion, colorrgba, radius, label, classid

Line 2D

Line 3D


Point 2D

  • Python: log_point, log_points
  • Rust (primary): Point2D
  • Primary component: point2d
  • Secondary components: colorrgba, radius, label, classid, keypointid

Point 3D

  • Python: log_point, log_points
  • Rust (primary): Point3D
  • Primary component: point3d
  • Secondary components: colorrgba, radius, label, classid, keypointid


Tensors & Images

colorrgba is currently only supported for images, i.e. tensors with 2 dimensions and an optional 3rd that can be interpreted as color channels. Furthermore, only the spatial Space View is able to use the color component.



  • Python: log_scalar
  • Rust (primary): Scalar
  • Primary component: scalar
  • Secondary components: scalar_plot_props, colorrgba, radius, label


Text Entry