Crate rerun

source ·
Expand description

Rerun - log point clouds, images, etc and visualize them effortlessly

Add the rerun library to your crate with cargo add rerun.

There is also a rerun binary. The binary is required in order to stream log data over the networks, and to open our .rrd data files. If you need it, install the rerun binary with cargo install rerun-cli.

Feature flags

  • analytics (enabled by default) — Enable telemetry using our analytics SDK.

  • demo (enabled by default) — Demo helpers for examples.

  • glam (enabled by default) — Add support for some math operations using glam. Only relevant if feature sdk is enabled.

  • image (enabled by default) — Integration with the image crate, plus JPEG support..

  • log (enabled by default) — Integration with the log crate.

  • native_viewer — Support spawning a native viewer. This adds a lot of extra dependencies, so only enable this feature if you need it!

  • server (enabled by default) — Support for running a TCP server that listens to incoming log messages from a Rerun SDK.

  • sdk (enabled by default) — Embed the Rerun SDK and re-export all of its public symbols.

  • web_viewer — Support serving a web viewer over HTTP.

    Enabling this inflates the binary size quite a bit, since it embeds the viewer wasm.

    For faster & easier builds, the web-player build comes bundled with the crate. Enabling this feature will embed this pre-built web-player.

    However, when building from source in the repository, this feature adds quite a bit to the compile time since it requires compiling and bundling the viewer as wasm. You also need to install some additional tools, which you can do by running scripts/setup_web.sh.

There are many different ways of sending data to the Rerun Viewer depending on what you’re trying to achieve and whether the viewer is running in the same process as your code, in another process, or even as a separate web application.

Checkout SDK Operating Modes for an overview of what’s possible and how.

If you get stuck on anything, open an issue at https://github.com/rerun-io/rerun/issues. You can also ask questions on the Rerun Discord.

Using the rerun library

Logging
let rec = rerun::RecordingStreamBuilder::new("rerun_example_app").buffered()?;

let points: Vec<rerun::components::Position3D> = positions();
let colors: Vec<rerun::components::Color> = colors();
let image: image::DynamicImage = capture_image();

rec.log("points", &rerun::archetypes::Points3D::new(points).with_colors(colors))?;

rec.log("image", &rerun::archetypes::Image::try_from(rerun::datatypes::TensorData::from_image(image)?)?)?;

See RecordingStream for details.

Streaming

To stream log data to an awaiting rerun process, you can do this: Start rerun in a terminal by just running rerun.

Then do this:

let rec = rerun::RecordingStreamBuilder::new("rerun_example_app")
    .connect(rerun::default_server_addr(), rerun::default_flush_timeout());
Buffering

let (rec, storage) = rerun::RecordingStreamBuilder::new("rerun_example_app").memory()?;
log_using(&rec);
rerun::native_viewer::show(storage.take());

Binary

The rerun binary is required in order to stream log data over the networks, and to open our .rrd data files.

The binary can act either as a server, a viewer, or both, depending on which options you use when you start it.

cargo install rerun
rerun --help

Modules

Structs

Enums

Traits

Functions

Type Aliases