0.8.0 - Infrastructure investments and more transform improvements - 2023-07-27
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://demo.rerun.io/version/0.8.0/
Overview & Highlights
log_pinhole
is now easier to use in simple cases and supports non-RDF camera coordinates. #2614- You only need to set focal length and optional principal point instead of setting the full 3x3 matrix.
- There is also a new argument:
camera_xyz
for setting the coordinate system. The default is RDF (the old
default). This affects the visible camera frustum, how rays are projected when hovering a 2D image, and how depth
clouds are projected.
- The visualizer can now show coordinate arrows for all affine transforms within the view. #2577
- Linestrips and oriented bounding boxes can now be logged via batch APIs in python.
- Rust users that build their own Viewer applications can now add fully custom Space Views. Find more information here.
- New optional
flush_timeout
specifies how long Rerun will wait if a TCP stream is disconnected during a flush. #2821- In Rust,
RecordingStream::connect
now requiresflush_timeout
specified as anOption<Duration>
.- To keep default behavior, this can be specified using the
rerun::default_flush_time()
helper.
- To keep default behavior, this can be specified using the
- In Python
flush_init_sec
is now an optional argument torr.connect()
- In Rust,
- In Rust, the
RecordingStream
now offers a stateful time API, similar to the Python APIs. #2506- You can now call
set_time_sequence
,set_time_seconds
, andset_time_nanos
directly on theRecordingStream
,
which will set the time for all subsequent logs using that stream. - This can be used as an alternative to the the previous
MsgSender::with_time
APIs.
- You can now call
- The Rerun SDK now defaults to 8ms long microbatches instead of 50ms. This makes the default behavior more suitable for use-cases like real-time video feeds. #2220
- Check out the microbatching docs for more information
on fine-tuning the micro-batching behavior.
- Check out the microbatching docs for more information
- The web viewer now incremental loads
.rrd
files when streaming over HTTP. #2412
Ongoing Refactors
- There have been a number of significant internal changes going on during this release with little visible impact.
This work will land across future releases, but is highlighted here since much of it is visible through the
changelog.- The layout of the Viewer is now controlled by a Blueprint datastore. In the future this will allow for direct API
control of the layout and configuration of the Viewer. A very early prototype of this functionality is available
via thererun.experimental
module in Python. - An entirely new code-generation framework has been brought online for Rust, Python and C++. This will eventually enable
new object-centric APIs with a more scalable, consistent, and ergonomic experience. - Bringup of C++ support is now underway and will eventually become our third officially supported SDK language.
- The layout of the Viewer is now controlled by a Blueprint datastore. In the future this will allow for direct API
Known Regressions
- Due to the Blueprint storage migration, blueprint persistence on web is currently broken. Will be resolved in:
#2579
In Detail
🐍 Python SDK
- Clean up warnings printed when
rr.init
hasn't been called #2209 - Normalise Python typing syntax to 3.8+ #2361
- Simpler, sturdier stateful time tracking in both SDKs #2506
- Fix not taking np.array for single colors #2569
- Add a basic pyright config #2610
- Improve
log_pinhole
and support non-RDF pinholes #2614 - Expose batch APIs for linestrips #2822
- Expose batch APIs for oriented bounding boxes #2823
🦀 Rust SDK
- Add example for adding custom Space Views #2328
- Simpler, sturdier stateful time tracking in both SDKs #2506
- Automagic flush when
take()
ing aMemorySinkStorage
#2632 - Logging SDK: Log warnings if user data is dropped #2630
- Add support for
RecordingStream::serve
#2815
🌁 Viewer Improvements
- Better handle scroll-to-zoom in 3D views #1764
- Add command to screenshot the application #2293
- Show layout in blueprint tree view #2465
- Double-click to select entity #2504
- Add Rerun.io link/text in top bar #2540
- New auto-layout of space views #2558
- Add 'Dump datastore' command to palette #2564
- Support any
dtype
for depth images #2602 - Change "Save Selection" command to Cmd+Alt+S #2631
- Consistent transform visualization for all entities with transforms #2577
- Improve
log_pinhole
and support non-RDF pinholes #2614
🚀 Performance Improvements
- Flush the batches every 8ms instead of 50 ms #2220
- Replace
image
crate jpeg decoder with zune-jpeg #2376 - Stream
.rrd
files when loading via http #2412
🪳 Bug Fixes
- Fix deadlock when misusing the Caches #2318
- Fix unstable order/flickering of "shown in" space view list on selection #2327
- Fix transforms not applied to connections from transform context #2407
- Fix texture clamping and color gradient selection being displayed incorrectly #2394
- Fix projected ray length #2482
- Tweak the depth bias multiplier for WebGL #2491
- Clip image zoom rectangle #2505
- Fix missing feature flags for benchmarks #2515
run_all.py
script fixes #2519- Update egui_tiles with fix for drag-and-drop-panic #2555
- Convert objectron proto.py back to using typing.List #2559
- Exclude from
objectron/proto/objectron/proto.py
fromjust py-format
#2562 - Fix pinhole visualization not working with camera extrinsics & intrinsics on the same path #2568
- Fix: always auto-layout spaceviews until the user interveens #2583
- Fix freeze/crash when logging large times #2588
- Update egui_tiles to fix crash #2598
- Fix clicking object with single instance (of every component) selecting instance instead of entity #2573
- Cleanup internal data-structures when process has been forked #2676
- Fix shutdown race-condition by introducing a flush_timeout before dropping data #2821
- Fix ui-scale based point/line sizes incorrectly scaled when zooming based on horizontal dimension #2805
- Fix visibility toggle for maximized Space Views #2806
- Fix loading file via CLI #2807
- Fix disconnected space APIs in Python SDK #2832
- Avoid unwrap when generating authkey #2804
...
See the Full CHANGELOG for more details.