Skip to content

Fix TransformAxes3D blanking the whole 3D view when one frame is unresolvable - #12826

Closed
lsy3 wants to merge 4 commits into
rerun-io:mainfrom
lsy3:upstream-d3542a0e
Closed

Fix TransformAxes3D blanking the whole 3D view when one frame is unresolvable#12826
lsy3 wants to merge 4 commits into
rerun-io:mainfrom
lsy3:upstream-d3542a0e

Conversation

@lsy3

@lsy3 lsy3 commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Related

What

TransformAxes3DVisualizer::execute loops over entities and, for each, builds transforms_to_draw. Its "nothing to draw" early-exit used return instead of continue:

if transforms_to_draw.is_empty() {
    return Ok(output);
}

Because this is inside the per-entity loop, the first entity that has nothing to draw — e.g. one whose transform frame can't be resolved to the view's target frame (a disconnected transform sub-tree; cf. #12530) — exits the whole visualizer. Every other entity's axes are dropped, and the line_builder draw data (attached only after the loop) is never emitted. So a 3D view whose content is transform axes goes fully blank as soon as a single frame is unresolvable, instead of just omitting that one frame's axes.

The fix is returncontinue, skipping just the unresolvable entity — matching the axis_length == 0.0 early-skip a few lines below which already uses continue.

First contribution to rerun — happy to iterate on style or scope if I missed a convention.

…resolvable

`TransformAxes3DVisualizer::execute` iterates entities and, for each, builds
`transforms_to_draw`. Its "nothing to draw" early-exit used `return` instead of
`continue`:

    if transforms_to_draw.is_empty() {
        return Ok(output);
    }

Because this is inside the per-entity loop, the first entity that has nothing to
draw — e.g. one whose transform frame can't be resolved to the view's target
frame (a disconnected transform sub-tree) — exits the entire visualizer. Every
other entity's axes are dropped, and the `line_builder` draw data (attached only
after the loop) is never emitted, so a 3D view whose content is transform axes
goes fully blank as soon as a single frame is unresolvable.

Use `continue` to skip just that entity, matching the `axis_length == 0.0`
early-skip a few lines below.
@lsy3

lsy3 commented Jun 23, 2026

Copy link
Copy Markdown
Contributor Author

Heads up — CI's label job will fail because outside contributors can't apply labels. Per labels.yml this PR needs:

  1. Changelog: include in changelog (it's a user-facing bug fix).
  2. Category: a label from the area list — 🪳 bug and/or 📺 re_viewer fit.

Could a maintainer add those when you get a chance? Thanks!

@Wumpf
Wumpf marked this pull request as ready for review August 12, 2026 10:13
Comment thread crates/viewer/re_view_spatial/src/visualizers/transform_axes_3d.rs Outdated

@Wumpf Wumpf left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missed this since it was drafted. But still look relevant actually. And correct!

@Wumpf Wumpf added 🪳 bug Something isn't working include in changelog labels Aug 12, 2026
@Wumpf

Wumpf commented Aug 12, 2026

Copy link
Copy Markdown
Member

@rerun-bot reality-sync

@rerun-sync

rerun-sync Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Sync complete. Mirror PR in reality: https://github.com/rerun-io/reality/pull/3121

Triggered by @Wumpf

@lsy3

lsy3 commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

Fixed the indentation introduced when applying the suggestion. Ready for resync/merge.

@Wumpf

Wumpf commented Aug 14, 2026

Copy link
Copy Markdown
Member

ah thx, forgot about it again 🤦
@rerun-bot reality-sync

@rerun-sync

rerun-sync Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Landed via sync commit

The corresponding reality PR was merged: https://github.com/rerun-io/reality/pull/3121

This PR's changes are included in 7c76d0d.
The sync commit may also contain additional adjustments that were made in reality before merge.

This PR could not be auto-merged directly because: simulated squash merge tree doesn't match expected sync commit

Closing this PR because the changes have landed.

@rerun-sync rerun-sync Bot closed this Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🪳 bug Something isn't working include in changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants