Skip to content

Releases: rerun-io/rerun

Development Build

08 Oct 04:02
ec30916
Compare
Choose a tag to compare
Development Build Pre-release
Pre-release

This is a prerelease. It is not intended for production use.
Please report any issues you find.

Example Hosted App

https://rerun.io/viewer/commit/ec30916

Wheels can be installed with:

pip install --pre --no-index -f https://build.rerun.io/commit/ec30916/wheels --upgrade rerun-sdk

or

pip install --pre --no-index -f https://github.com/rerun-io/rerun/releases/download/prerelease --upgrade rerun-sdk

CMake fetch-content for C++ SDK

include(FetchContent)
FetchContent_Declare(rerun_sdk URL https://build.rerun.io/commit/ec30916/rerun_cpp_sdk.zip)
FetchContent_MakeAvailable(rerun_sdk)

or

include(FetchContent)
FetchContent_Declare(rerun_sdk URL https://github.com/rerun-io/rerun/releases/download/prerelease/rerun_cpp_sdk.zip)
FetchContent_MakeAvailable(rerun_sdk)

0.18.2: Bug fixes and performance improvements

29 Aug 15:25
Compare
Choose a tag to compare

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


Rerun 0.18.1 was (soft) yanked as we realized a bit too late that it was incomplete: we're jumping straight from 0.18.0 to 0.18.2.
0.18.2 is simply 0.18.1 with #7308 on top.

This patch release comes with the following fixes:

🌊 C++ API

  • Install sdk_info.h even if RERUN_INSTALL_RERUN_C option is OFF #7246 (thanks @traversaro!)

🐍 Python API

  • Fix VisualizerOverrides serializer and improved error handling #7288

🦀 Rust API

  • Add rerun::external::ndarray #7259
  • Handle proper half-size splatting semantics in from_mins_and_sizes #7291

🪳 Bug fixes

  • Fix error when trying to clear non-existent component #7215
  • Fix gamma (srgb EOTF) for GLTF via Asset3D embedded rgb(a) textures #7251
  • Fix Chunk::component_batch_raw not checking the bitmap first #7286
  • Fix and test all known HybridResults issues from 0.18 #7297
  • Fix secondary plot components ignoring blueprint defaults #7302
  • Fix relayout on tab background click #7283
  • Update time crate to 0.3.36, fixing compilation on newer Rust versions #7308

🚀 Performance improvements

  • Speed up data density graph by rendering them more coarsly #7229
  • Default RERUN_CHUNK_MAX_BYTES to 384kiB instead of 4MiB #7263
  • Speed up handling of large numbers of transform entities #7300
  • Fix memory leak by updating to re_arrow2 0.17.5 #7262

🖼 UI improvements

  • Hide time controls if there is only one time point on a timeline #7241

📦 Dependencies

  • Correct dependency on puffin to 0.19.1, preventing a possible build failure #7221 (thanks @kpreid!)
  • Update time crate to 0.3.36, fixing compilation on newer Rust versions #7228

0.18.1: Bug fixes and performance improvements

29 Aug 09:32
Compare
Choose a tag to compare

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


This patch release comes with the following fixes:

🌊 C++ API

  • Install sdk_info.h even if RERUN_INSTALL_RERUN_C option is OFF #7246 (thanks @traversaro!)

🐍 Python API

  • Fix VisualizerOverrides serializer and improved error handling #7288

🦀 Rust API

  • Add rerun::external::ndarray #7259
  • Handle proper half-size splatting semantics in from_mins_and_sizes #7291

🪳 Bug fixes

  • Fix error when trying to clear non-existent component #7215
  • Fix gamma (srgb EOTF) for GLTF via Asset3D embedded rgb(a) textures #7251
  • Fix Chunk::component_batch_raw not checking the bitmap first #7286
  • Fix and test all known HybridResults issues from 0.18 #7297
  • Fix secondary plot components ignoring blueprint defaults #7302
  • Fix relayout on tab background click #7283

🚀 Performance improvements

  • Speed up data density graph by rendering them more coarsly #7229
  • Default RERUN_CHUNK_MAX_BYTES to 384kiB instead of 4MiB #7263
  • Speed up handling of large numbers of transform entities #7300
  • Fix memory leak by updating to re_arrow2 0.17.5 #7262

🖼 UI improvements

  • Hide time controls if there is only one time point on a timeline #7241

📦 Dependencies

  • Correct dependency on puffin to 0.19.1, preventing a possible build failure #7221 (thanks @kpreid!)
  • Update time crate to 0.3.36, fixing compilation on newer Rust versions #7228

0.18.0: Exploiting column chunks for faster ingestion and lower memory use

16 Aug 10:06
Compare
Choose a tag to compare

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.

📖 Release blogpost: http://rerun.io/blog/column-chunks
🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-18

0.18.Release.hero.mp4

✨ Overview & highlights

Rerun 0.18 introduces new column-oriented APIs and internal storage datastructures (Chunk & ChunkStore) that can both simplify logging code as well as improve ingestion speeds and memory overhead by a couple orders of magnitude in many cases (timeseries-heavy workloads in particular).

These improvements come in 3 broad categories:

  • a new send family of APIs, available in all 3 SDKs (Python, C++, Rust),
  • a new, configurable background compaction mechanism in the datastore,
  • new CLI tools to filter, prune and compact RRD files.

Furthermore, we started cleaning up our data schema, leading to various changes in the way represent transforms & images.

New send APIs

Unlike the regular row-oriented log APIs, the new send APIs let you submit data in a columnar form, even if the data extends over multiple timestamps.

This can both greatly simplify logging code and drastically improve performance for some workloads, in particular timeseries, although we have already seen it used for other purposes!

API documentation:

API usage examples:

Python timeseries

Using log() (slow, memory inefficient):

rr.init("rerun_example_scalar", spawn=True)

for step in range(0, 64):
    rr.set_time_sequence("step", step)
    rr.log("scalar", rr.Scalar(math.sin(step / 10.0)))

Using send() (fast, memory efficient):

rr.init("rerun_example_send_columns", spawn=True)

rr.send_columns(
    "scalars",
    times=[rr.TimeSequenceColumn("step", np.arange(0, 64))],
    components=[rr.components.ScalarBatch(np.sin(times / 10.0))],
)
C++ timeseries

Using log() (slow, memory inefficient):

const auto rec = rerun::RecordingStream("rerun_example_scalar");
rec.spawn().exit_on_failure();

for (int step = 0; step < 64; ++step) {
    rec.set_time_sequence("step", step);
    rec.log("scalar", rerun::Scalar(std::sin(static_cast<double>(step) / 10.0)));
}

Using send() (fast, memory efficient):

const auto rec = rerun::RecordingStream("rerun_example_send_columns");
rec.spawn().exit_on_failure();

std::vector<double> scalar_data(64);
for (size_t i = 0; i < 64; ++i) {
    scalar_data[i] = sin(static_cast<double>(i) / 10.0);
}
std::vector<int64_t> times(64);
std::iota(times.begin(), times.end(), 0);

auto time_column = rerun::TimeColumn::from_sequence_points("step", std::move(times));
auto scalar_data_collection =
    rerun::Collection<rerun::components::Scalar>(std::move(scalar_data));

rec.send_columns("scalars", time_column, scalar_data_collection);
Rust timeseries

Using log() (slow, memory inefficient):

let rec = rerun::RecordingStreamBuilder::new("rerun_example_scalar").spawn()?;

for step in 0..64 {
    rec.set_time_sequence("step", step);
    rec.log("scalar", &rerun::Scalar::new((step as f64 / 10.0).sin()))?;
}

Using send() (fast, memory efficient):

let rec = rerun::RecordingStreamBuilder::new("rerun_example_send_columns").spawn()?;

let timeline_values = (0..64).collect::<Vec<_>>();
let scalar_data: Vec<f64> = timeline_values
    .iter()
    .map(|step| (*step as f64 / 10.0).sin())
    .collect();

let timeline_values = TimeColumn::new_sequence("step", timeline_values);
let scalar_data: Vec<Scalar> = scalar_data.into_iter().map(Into::into).collect();

rec.send_columns("scalars", [timeline_values], [&scalar_data as _])?;

Background compaction

The Rerun datastore now continuously compacts data as it comes in, in order find a sweet spot between ingestion speed, query performance and memory overhead.

This is very similar to, and has many parallels with, the micro-batching mechanism running on the SDK side.

You can read more about this in the dedicated documentation entry.

Post-processing of RRD files

To help improve efficiency for completed recordings, Rerun 0.18 introduces some new commands for working with rrd files.

Multiple files can be merged, whole entity paths can be dropped, and chunks can be compacted.

You can read more about it in the new CLI reference manual, but to give a sense of how it works the below example merges all recordings in a folder and runs chunk compaction using the max-rows and max-bytes settings:

rerun rrd compact --max-rows 4096 --max-bytes=1048576 /my/recordings/*.rrd > output.rrd

Overhauled 3D transforms & instancing

As part of improving our arrow schema and in preparation for reading data back in the SDK, we've split up transforms into several parts.
This makes it much more performant to log large number of transforms as it allows updating only the parts you're interested in, e.g. logging a translation is now as lightweight as logging a single position.

There are now additionally InstancePoses3D which allow you to do two things:

  • all 3D entities: apply a transform to the entity without affecting its children
  • Mesh3D/Asset3D/Boxes3D/Ellipsoids3D: instantiate objects several times with different poses, known as "instancing"
    • Support for instancing of other archetypes is coming in the future!

instancing in action
All four tetrahedron meshes on this screen share the same vertices and are instanced using an InstancePoses3D archetype with 4 different translations

⚠️ Breaking changes

  • .rrd files from older versions won't load correctly in Rerun 0.18
  • mesh_material: Material has been renamed to albedo_factor: AlbedoFactor #6841
  • Transform3D is no longer a single component but split into its constituent parts. From this follow various smaller API changes
  • Python: NV12/YUY2 are now logged with Image
  • ImageEncoded is deprecated and replaced with EncodedImage (JPEG, PNG, …) and Image (NV12, YUY2, …)
  • DepthImage and SegmentationImage are no longer encoded as a tensors, and expects its shape in [width, height] order

🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-18

🔎 Details

🪵 Log API

  • Add Ellipsoids3D archetype #6853 (thanks @kpreid!)
  • Dont forward datatype extensions beyond the FFI barrier #6777
  • All components are now consistently implemented by a datatype #6823
  • Add new archetypes.ImageEncoded with PNG and JPEG support #6874
  • New transform components: Translation3D & TransformMat3x3 #6866
  • Add Scale3D component #6892
  • Angle datatype stores now only radians #6916
  • New DepthImage archetype #6915
  • Port SegmentationImage to the new image archetype style #6928
  • Add components for RotationAxisAngle and RotationQuat #6929
  • Introduce TransformRelation component #6944
  • New LeafTransform3D, replacing OutOfTreeTransform3D #7015
  • Remove Scale3D/Transform3D/TranslationRotationScale3D datatypes, remove Transform3D component #7000
  • Rewrite Image archetype #6942
  • Use LeafTranslation (centers), LeafRotationQuat and LeafRotationAxisAngle dire...
Read more

0.17.0: More Blueprint features and better notebooks

08 Jul 15:21
Compare
Choose a tag to compare

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

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!
  • 🕸️ 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 new rerun-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 to HalfSize2D
  • HalfSizes3D has been renamed to HalfSize3D
  • .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:
    • Part 0: improved arrow chunk formatters #6437
    • Part 1: introduce Chunk and its suffle/sort routines #6438
    • Part 2: introduce TransportChunk #6439
    • Part 3: micro-batching #6440
    • Part 4: integrations #6441
  • Remove unused scalar scattering component #6471
  • Introduce ImagePlaneDistance Component #6505
  • Introduce new archetype for Axes3D #6510
  • Expose Colormap component for DepthImage, depth image colormap now used outside of reprojection #6549
  • TimeSeriesAggregation can now be set per SeriesLine (and as blueprint default per View) #6558
  • Expose FillRatio component to configure DepthImage 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 add axis_length to Transform3D #6676
  • Expose UI point radii to logging & blueprint, remove old default radius settings in favor of blueprint default components #6678
  • Rename HalfSizes2D/3D to HalfSize2D/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 with WGPU_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](https://github.c...
Read more

0.16.1

29 May 16:29
Compare
Choose a tag to compare

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


This patch release comes with the following fixes:

  • Don't log warnings when unknown clients connect over TCP #6368
  • Fix not being able to set time series' Y axis ranges from the UI #6384
  • Fix error when logging segmentation image #6449
  • Fix broken example source links in Viewer example list #6451

0.16.0: More blueprint control from code

16 May 16:50
Compare
Choose a tag to compare

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.

Release.0.16.mp4

✨ Overview & highlights

  • 🟦 Customize views in code: We started exposing some view properties in the blueprint!
    • 📋 Included are:
      • Visible time ranges
      • Time Series legend & y-axis configuration
      • 2D & 3D View background color
      • 2D View bounds
    • 📚 learn more on the new view blueprint doc pages
    • 🚀 …more to come in the future!
  • 🕰️ Deprecated timeless in favor of new static logging
    • Except for the name change, they behave similarly in most use cases. Unlike with timeless, static data…
      • …can't be mixed with non-static data on the same component.
      • …will override previous static data and not keep old data in memory.
    • Check out our migration guide.
  • 🖼️ 2D View's pan & zoom got redone, it's now a free canvas without any scroll bar
  • 🤖 Added an example to use Rerun with ROS2.

As always there's a lot going on under the hood:

  • 🚚 We streamlined our development processes & CI and examples.
  • 🕸️ Our web page is about to switch from React to Svelte, making it a lot snappier!
  • 💿 Instance key removal in 0.15.0 opened the door to major simplifications in our data store, this
    will make it easier for us to improve performance and implement data streaming.
  • 🤗 We're making it easier to work with HuggingFace's Gradio API. Stay tuned! Most things for this already landed in this release and we'll soon build more direct support on top.

Full Changelog

0.15.1 - Fix Python notebooks

11 Apr 15:28
Compare
Choose a tag to compare

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


  • Fix timeout in notebooks by making the app_url correctly point to app.rerun.io #5877
  • CMake: Allow to call find_package(rerun_sdk) two or more times #5886 (thanks @traversaro!)

0.15.0 - Blueprints from Python

09 Apr 15:07
Compare
Choose a tag to compare

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


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:

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

  • Replace MarkerShape with code-generated enum type #5336
  • Key-less data model 1: scrap InstanceKey from public logging APIs #5395
  • Remove the check for WrongNumberOfInstances #5399
  • Control panel expanded state via blueprint APIs #5484
  • Remove deprecated TimeSeriesScalar #5604
  • Customizable data loaders #5327 #5328 #5330 #5337 #5351 #5355 #5379 #5361 #5388

🌊 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](https://github....
Read more