0.15.0 - Blueprints from Python - 2024-04-09
The biggest news is the ability to create a blueprint via the Python logging API. Check out our associated blog post for more information.
import rerun.blueprint as rrb
blueprint = rrb.Blueprint(
rrb.Vertical(
rrb.Spatial3DView(name="3D", origin="/"),
rrb.Horizontal(
rrb.TextDocumentView(name="README", origin="/description"),
rrb.Spatial2DView(name="Camera", origin="/camera/image"),
rrb.TimeSeriesView(origin="/plot"),
),
row_shares=[3, 2],
)
rrb.BlueprintPanel(expanded=True),
rrb.SelectionPanel(expanded=False),
rrb.TimePanel(expanded=False),
)
The blueprint can then be sent to the Viewer with
rr.send_blueprint(blueprint)
Or stored to a file, and then later opened in the viewer:
blueprint.save("my_nice_dashboard.rbl")
In this case, the results looks something like this:
<picture>
<img src="https://static.rerun.io/blueprint-example/80071610c7a5e668438ebe0392826fbfbd797d30/full.png" alt="">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/blueprint-example/80071610c7a5e668438ebe0392826fbfbd797d30/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/blueprint-example/80071610c7a5e668438ebe0392826fbfbd797d30/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/blueprint-example/80071610c7a5e668438ebe0392826fbfbd797d30/1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/blueprint-example/80071610c7a5e668438ebe0392826fbfbd797d30/1200w.png">
</picture>
Blueprints are currently only supported in the Python API, with C++ and Rust support coming later.
✨ Overview & highlights
- 🟦 Configure the layout and content of space views from Python (docs)
- 🖧 More powerful and flexible data loaders (docs)
- 🖵 Improved UI for managing recordings and applications
- 💾 Save and load blueprint files in the viewer
- 🎨 Configurable background color for 3D Space Views #5443
- 💪 Linux ARM64 support #5489 #5503 #5511
- 🖼️ Show examples in the welcome page
- 🖱️ Improve context-menu when right-clicking items in the blueprint panel and streams tree
- ❌ Remove
InstanceKey
from our logging APIs #5395 (migration guide) - ❌ Remove groups from blueprints panel #5326
🔎 Details
🪵 Log API
🌊 C++ API
- Fix Arrow libraries from download & build not being found in some cases #5366
- CMake: Add
RERUN_INSTALL_RERUN_C
option to disable installation of rerun_c
library #5374 (thanks @traversaro!) - CMake: Fix
install
not finding external arrow
for dynamic linking #5375 (thanks @traversaro!) - Make
pinhole.hpp
robust against min/max
preprocessor macros (typically from windows.h
) #5432 - Build C++ SDK for Linux ARM64 #5489
- Generate fewer
.cpp
files: Inline forward serialization of transparent components to their respective datatypes #5544 - Fix
RERUN_C_BUILD_ARTIFACT
path value if CARGO_BUILD_TARGET
env variable is set #5547 (thanks @traversaro!)
🐍 Python API
- All Python components that wrap a
bool
now implement __bool__
#5400 - Add the remaining space views and name them consistently #5498
- Add option to include blueprint in an
.rrd
when calling .save(…)
#5572 - Allow naming space view containers #5626
🦀 Rust API
🪳 Bug fixes
- Sort text log space view on currently selected timeline #5348
- Fix parents of queried paths getting visualized, fix 2D objects not showing at all in 3D if their camera parent is not included #5424
- Fix: allow creating 3D space views for pinhole-only 3D scenes #5563
- Fix depth cloud bounding boxes for depth cloud visualizations with transforms #5578
- Fix image view not handling images with extra leading dimensions of size
1
#5579 - Fix web viewer crash on invalid url parameter #5631
- Be consistent in how items are removed from selection #5643
- Fix layout issue on welcome screen for narrow window, triggering debug assertion #5650
- Fix broken 2D space view heuristics in Python Notebooks #5674
- Avoid a hang on Linux by always create the renderer, even when we have no store_view #5724
- Fix crash/freeze when zooming out too far in a plot #5737
- Fix
draw_order
not working #5794
🌁 Viewer improvements
- Remove groups from blueprints panel #5326
- Improved tracking of which space views were generated by a heuristic #5419
- Configurable background color for 3D Space Views #5443
- Save recordings from web viewer #5488
- Support loading
.rbl
blueprint files #5513 - Tensor space view can now show images #5567
- Entity path query now shows simple statistics and warns if nothing is displayed #5693
- Go back to example page with browser Back-button #5750
- On Web, implement navigating back/forward with mouse buttons #5792
- Support displaying 1D tensors #5837
🧑🏫 Examples
- New
incremental_logging
example #5462 - New standalone example showing blueprint configuration of some stock #5603
- New example visualizing KISS-ICP #5546 (thanks @02alexander!)
- Remove car example #5576
- Add blueprint to
arkit_scenes
example, leveraging the viewer's ability to re-project 3D->2D #5510 - Add blueprint to
nuscenes
example #5556 - Add blueprint to Face Tracking example #5616
- Add blueprint to Gesture Detection example #5619
- Add blueprint to Human Pose Tracking example #5612
- Add blueprint to Live Camera Edge Detection example #5613
- Add blueprint to LLM Embedding Ner example #5614
- Add blueprint to Objectron example #5617
- Add blueprint to Signed Distance Fields example #5635
- Add blueprint to the RGBD example #5623
- ARFlow Example Page #5320 (thanks @YiqinZhao!)
- Fix controlnet example for current
controlnet
package version and add blueprint #5634 - Fix RRT-Star example not showing up on website or rerun.io/viewer #5628
- Fix not logging 3D gesture z component correctly in Gesture Detection example #5630 (thanks @andreasnaoum!)
- Updated READMEs for examples: LLM Embedding-Based Named Entity Recognition, nuScenes, Objectron, Open Photogrammetry Format, Raw Mesh #5653 (thanks @andreasnaoum!)
- Updated READMEs for the examples - Batch 1 #5620 (thanks @andreasnaoum!)
📚 Docs
- Docs: improve discoverability of image compression #5675
- Improve getting started doc section #5689
- Update web viewer links #5738
- Update docs with guides and tutorials for blueprint #5641
- Update README and description of
arkit_scenes
example #5711 (thanks @BirgerMoell!) - Improve readme of
depth_guided_stable_diffusion
example #5593 (thanks @BirgerMoell!)
🖼 UI improvements
- New timezone option: seconds since unix epoch #5450 (thanks @murgeljm!)
- Always enable entity path filter editor #5331
- Add icons for entities and components, and use them everywhere #5318
- Add support for context menu for viewport tab title and selected container's children list #5321
- Fix
ListItem
indentation so icons are properly aligned #5340 - Blueprint tree always starts at the origin now, "projected" paths are called out explicitly #5342
- Merge example page into welcome screen #5329
ListItem
's collapsing triangle is now styled consistently with the rest of the item #5354- Add helpers to enable stable and controllable collapsed state in hierarchical lists #5362
- Different icon for empty entity paths #5338
- Merge quick start guides #5378
- Update welcome screen panel illustrations #5394
- More context menu in blueprint and streams tree:
- Refactor #5392
- Add support to show/hide
DataResult
s #5397 - Add support for removing
DataResult
from a space view #5407 - Create a new space view with selected entities #5411
- Add context menu to streams tree #5422
- Add "Expand/Collapse all" actions #5433
- Cleanup #5456
- Automatically expand and scroll the blueprint tree when focusing on an item #5482
- Save blueprint to file #5491
- Add new design guidelines for title casing etc #5501
- Automatically expand and scroll the streams tree when focusing on an item #5494
- Reduce the height of the tab bars and side panel titles #5609
- Support toggling item visibility on touch screens #5624
- Select active recording if nothing else is selected #5627
- Enable selecting data sources and blueprints and recordings in them #5646
- Warn user when a software rasterizer is used #5655
- Improve spacing and alignment of menus #5680
- Simplify Welcome Screen and use card-based layout for examples #5699
- Make selection history global instead of per recordings #5739
- Improve formatting of numbers on plot Y axis #5753
- Show all loaded applications in recordings panel #5766
- Wider selection panel by default #5777
- Tighter UI for tensor, annotation-context, view coordinates, recording #5782
- Always show welcome screen, but sometimes fade it in #5787
🕸️ Web
- Support loading multiple recordings and/or blueprints in web-viewer #5548
- Build release
.wasm
with debug symbols #5708
🧑💻 Dev-experience
- Build wheels for Linux ARM64 #5511
📦 Dependencies
- Update wgpu to 0.19.3 #5409
- Update h2 to 0.3.26 to address RUSTSEC-2024-0332 #5775
🤷 Other
- Build CLI for Linux ARM64 #5503
- Allow hiding/showing entity subtrees under shown/hidden parent tree #5508
- Introduce basic support for
$origin
substitution in EntityPathFilter
#5517 - Introduce
rr.notebook_show()
to simplify notebook experience #5715 - Also remove nested inclusions when removing a subtree #5720
- Prevent gratuitous blueprint saves by not garbage collecting when the blueprint hasn't changed #5793
- Refactor
Selection
using IndexMap
and make it more encapsulated #5569