Add data-time transform resolution for spatial views - #12876
Conversation
There was a problem hiding this comment.
Hi! Thanks for opening this pull request.
Because this is your first time contributing to this repository, make sure you've read our Contributor Guide and Code of Conduct.
|
The failing |
wasn't left in draft as instructed. This looks more likley than not entirely llm generated (see for instance the Happy for contributors to work on this (even llm assisted) but please make sure to have a human review & test things carefully and communicate properly with the maintainers, especially given that this is a very tricky core concept in Rerun |
Related
What
Adds a second transform-resolution mode for spatial views so slowly updated geometry can be frozen relative to the view's target frame at its data timestamp instead of being re-resolved at every global time-cursor update.
SpatialInformationnow exposes:transform_resolution_mode: preservesGlobalTimeCursoras the default and addsComponentTime.transform_time_component: the local component identifier whose latest row selects the transform timestamp for each entity, for examplePoints3D:positions.In component-time mode, the viewer looks up the configured component's latest timestamp per entity, resolves both its coordinate frame and transform forest at that time, and keeps image-plane distance and per-instance poses on the same query. Missing, static, or invalid trigger components fall back to the existing global-cursor behavior.
The transform database cache now stores complete
TransformForestsnapshots byLatestAtQuery. Queries used in consecutive frames are retained, unused snapshots are purged, store mutations invalidate all snapshots, and iteration is deterministic.The new blueprint components and
SpatialInformationfields are generated for Rust, Python, and C++ from the FlatBuffers definitions.I would especially appreciate feedback on the public blueprint naming/UX and whether a local component identifier is the desired first trigger semantic.
Validation:
pixi run lint-codegencargo fmt -p re_viewer_context -p re_view_spatial -- --checkcargo clippy -p re_viewer_context -p re_view_spatial --all-features --all-targets -- -D warningscargo nextesttests for component-time behavior, dynamic coordinate-frame changes, missing-trigger fallback, cache identity, and cache evictioncargo nextestrun for both affected crates: 185/193 passed locally. The remaining eight are pre-existing Metal image-snapshot differences in grid-map, partial-view-visibility, transform-clamping, and voxel-grid-map tests; all non-snapshot tests passed.Confidence: high in the cache and transform-query behavior covered by the new tests; medium in the final public API/UX choice, which is why this is a draft.
Agent
🤖 This PR was opened by a coding agent. The implementation and validation were performed with an LLM coding agent, and the PR is intentionally left in draft for maintainer feedback on the feature effect and API.