0.17.0: More Blueprint features and better notebooks
Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
📖 Release blogpost: https://rerun.io/blog/blueprint-overrides
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli --locked
- Online demo: https://rerun.io/viewer/version/0.17.0/
- C++
FetchContent
: https://github.com/rerun-io/rerun/releases/download/0.17.0/rerun_cpp_sdk.zip
Export-1720079627846_compressed.mp4
🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-17
✨ Overview & highlights
- 🟦 Blueprint component override & defaults, and visualizer override for all views
- Component defaults: Configure default component value for an entire view, used when no values are logged to the data store (using
rr.log()
). - Component overrides: Specify a value to use regardless of the data-store & default values and use specified value instead. Can be set per view per entity.
- Visualizer overrides: Specify a visualizer to use for a given entity in a given view. Previously only available for scalar data in timeseries views, now available for all view kinds.
- All three are available from the (fully revamped) UI and the Python blueprint APIs.
- Everything that was editable per entity in a view now uses component overrides (e.g. camera plane distance, transform axis lengths, etc.)
- Tip: Tooltips for each component in the UI include a link to the docs now!
- Component defaults: Configure default component value for an entire view, used when no values are logged to the data store (using
- 🕸️ Improved notebook & website embedding support
- Now you can stream data from the notebook cell to the embedded viewer.
- Much improved support for having multiple viewers on the same web page.
- More configuration options have been added to control the visibility of the Menu bar, time controls, etc.
- Note: Use
pip install "rerun-sdk[notebook]"
to include the better notebook support. This includes the newrerun-notebook
package, which is used internally by [rerun-sdk
].
- 🧑🏫 New Examples
- 🛠️ Improved the logging API with many new and updated archetypes and components (see migration guide)
- 🖼️
TensorView
is now fully configurable from blueprint code - 🎛️ Revamped selection panel UI
- 🚚 Much work is being done under-the-hood to migrate our data-store to "chunks" (aka units of batched data). More on this in the next release!
- SDKs are already using chunks to transport data to the viewer, performance characteristics may have changed but should be largely the same for the moment.
⚠️ Breaking changes
HalfSizes2D
has been renamed toHalfSize2D
HalfSizes3D
has been renamed toHalfSize3D
.rrd
files from older versions won't load in Rerun 0.17
🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-17
🔎 Details
🪵 Log API
- Introduce chunks and use them on the client side:
- Remove unused scalar scattering component #6471
- Introduce
ImagePlaneDistance
Component #6505 - Introduce new archetype for
Axes3D
#6510 - Expose
Colormap
component forDepthImage
, depth image colormap now used outside of reprojection #6549 TimeSeriesAggregation
can now be set perSeriesLine
(and as blueprint default per View) #6558- Expose
FillRatio
component to configureDepthImage
back-projection radius scaling #6566 - Expose image opacity component #6635
- Make draw order editable & solve 2D flickering issues, add draw order to arrow2d archetype #6644
- Remove
Axes3D
archetype and addaxis_length
toTransform3D
#6676 - Expose UI point radii to logging & blueprint, remove old default radius settings in favor of blueprint default components #6678
- Rename
HalfSizes2D/3D
toHalfSize2D/3D
#6768
🌊 C++ API
- Add docs on how to install C++ SDK with conda-forge packages #6381 (thanks @traversaro!)
🐍 Python API
- Make barchart legend settable via blueprint #6514
- Expose tensor slice selection to blueprint #6590
- Use literal unions in Python enum codegen #6408
- Allow hiding top panel via blueprint #6409
- Improve the visibility of Python public APIs to type checkers #6462
- Expose
Interactive
component #6542 - Python components now implement the
ComponentBatchLike
interface #6543 - Allow streaming to the viewer from the cell where it's created #6640
- Introduce new Python API for setting overrides #6650
- Publish
rerun_notebook
in CI #6641
🦀 Rust API
- All components implement the
Default
trait now in Rust #6458 - Codegen
DerefMut
&Deref
for all trivial components #6470
🪳 Bug Fixes
- Allow removing blueprint entries even when they are invisible #6503
- Fix wrong depth projection value on picking when depth meter was edited #6551
- Always enable OpenGL fallback backend, fix
--renderer=gl
only working together withWGPU_BACKEND
env-var #6582 - Improve container selection panel UI #6711
- Fix annotation context labels not showing in views #6742
- Quiet the 'not a mono-batch' log spam when selecting keypoint with a batch class-id #6359
- Fix incorrect label placement for 3D arrows with origins #6779
- Don't pass RRD paths to other data-loaders #6617
🌁 Viewer Improvements
- Introduce a mechanism for blueprint-provided defaults #6537
- Allow resetting view property components from GUI for all generically implemented property UI #6417
- Don't log "SDK client connected" messages until after we have confirmed it's a client #6456
- Background color settings uses new generic UI now #6480
- TimeSeries y-range is now tightly synced with plot view & uses new generic UI #6485
- Remove option to enable/disable depth projection from UI #6550
- Expose tensor colormap/gamma/filter/scaling to blueprint #6585
- Handle static text messages in TextLogView gracefully, handle overrides #6712
- Multiple instances of points/arrows/boxes with single label display label now at the center #6741
🧑🏫 Examples
- Add the OCR example #6560 (thanks @andreasnaoum!)
- Add the Vista example #6664 (thanks @roym899!)
- Add the Stereo Vision SLAM example #6669 (thanks @02alexander!)
- Add 2D neural field notebook example #6775 (thanks @roym899!)
- Update the nuScenes example to use blueprint overrides and defaults #6783
- Update the plots example to use blueprint overrides #6781
📚 Docs
- Add links to our docs in component tooltips #6482
- Show the first line of the docs when hovering a component name #6609
- Improve docs for components #6621
- Add a "Visualizers and Overrides" concept page #6679
- Better document limited effect of
DepthMeter
&FillRatio
in 2D views #6745 - Update troubleshooting guide with graphics driver updating advice #6756
- Update Pixi link to their new website #6688 (thanks @esteve!)
- Use "N-dimensional" instead of "rank-N" in docstrings and error messages #6797
🖼 UI Improvements
- Update the UI for time series view properties using list item #6390
- Fix welcome screen header jumping during load #6389
- Add support for exact width to
PropertyContent
#6325 - Migrate to
list_time2
: - Improve the colormap drop down menu #6401
- Reduce height of top and bottom panels #6397
- Allow hiding all TimePanel/BlueprintPanel/SelectionPanel #6407
- Remove the ability to display multiple tensors in a single space view #6392
- Smooth scrolling in 2D space views #6422
- Improve welcome screen for small screens #6421
- Use egui's
UiStack
to implement full span widgets #6491 - Use
list_item
for the component list inInstancePath::data_ui
#6309 - Allow editing visual bounds from UI #6492
- Allow manually setting full span scopes #6509
- Make object hover & selection colors brighter and more pronounced #6596
- Show outline around hovered/selected tiles in viewport #6597
- Unified visualizer & override UI, enabled on all entities #6599
- Introduce visualizer blueprint query stack UI #6605
- Reorganize Selection Panel #6637
- Rewrite the
ui.large_collapsing_header
intore_ui::SectionCollapsingHeader
usingre_ui::ListItem
#6657 - Move entity filter "edit" button to a section header icon #6662
- Add help to several sections in the Selection Panel #6668
- Introduce
ButtonContent
and use it in the selection panel #6720
🕸️ Web
- Allow overriding app blueprint from web #6419
- Add fullscreen mode to web viewer #6461
- Fix rerun-web canvas size #6511
- JS: Make LogChannel public #6529
- New notebook API #6573
- Add width/height properties to web viewer #6636
- Do not read query in embedded web viewer #6515
🗣 Refactors
- Generic view property building, applied to
TimeSeriesView
'sPlotLegend
#6400 - Extracted several
re_viewer
parts into standalone crates:re_viewport_blueprint
#6405,re_context_menu
#6428,re_blueprint_tree
#6427, andre_selection_panel
#6431