Skip to content

Comments

Transform3D no longer sets all its components to empty array by default#11911

Merged
Wumpf merged 6 commits intomainfrom
andreas/tf/no-more-empty-arrays
Nov 18, 2025
Merged

Transform3D no longer sets all its components to empty array by default#11911
Wumpf merged 6 commits intomainfrom
andreas/tf/no-more-empty-arrays

Conversation

@Wumpf
Copy link
Member

@Wumpf Wumpf commented Nov 17, 2025

Related

What

As described in

we changed our query semantics such that this is no longer necessary. This greatly improves navigation of transforms int he Viewer & queries and has the potential to speed logging of transforms up significantly (especially SDK sided).

In other words.

Before:
image

After:
image

@Wumpf Wumpf added 🍏 primitives Relating to Rerun primitives include in changelog 🪵 Log & send APIs Affects the user-facing API for all languages labels Nov 17, 2025
@github-actions
Copy link

github-actions bot commented Nov 17, 2025

Web viewer built successfully.

Result Commit Link Manifest
9e9c50c https://rerun.io/viewer/pr/11911 +nightly +main

View image diff on kitdiff.

Note: This comment is updated whenever you push a commit.

Copy link
Member

@grtlr grtlr left a comment

Choose a reason for hiding this comment

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

Nice! Only some minor questions.

pub const ATTR_RERUN_COMPONENT_OPTIONAL: &str = "attr.rerun.component_optional";
pub const ATTR_RERUN_COMPONENT_RECOMMENDED: &str = "attr.rerun.component_recommended";
pub const ATTR_RERUN_COMPONENT_REQUIRED: &str = "attr.rerun.component_required";
pub const ATTR_RERUN_LOG_MISSING_AS_EMPTY: &str = "attr.rerun.log_missing_as_empty";
Copy link
Member

Choose a reason for hiding this comment

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

Nice!

Copy link
Member

Choose a reason for hiding this comment

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

Are we sure to update the snippets? Or should we add migration code?

Copy link
Member Author

Choose a reason for hiding this comment

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

as per Slack message: yeah because migration code would be complicated and brittle - nulling out all [] is only legal if all transform components are missing.
Personally I also don't like it - the code IS producing different data now. Not in a viewer-breaking manner sure, but it's somewhat breaking

/// \example archetypes/instance_poses3d_combined title="Regular & instance transforms in tandem" image="https://static.rerun.io/leaf_transform3d/41674f0082d6de489f8a1cd1583f60f6b5820ddf/1200w.png"
/// \example archetypes/mesh3d_instancing !api title="3D mesh with instancing" image="https://static.rerun.io/mesh3d_leaf_transforms3d/c2d0ee033129da53168f5705625a9b033f3a3d61/1200w.png"
table InstancePoses3D (
"attr.docs.category": "Spatial 3D",
Copy link
Member

Choose a reason for hiding this comment

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

Makes me wonder: How did InstancePose3D get away without the missing attribute?

Copy link
Member Author

Choose a reason for hiding this comment

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

it didn't. We always accepted that this has different semantics there. Having the attribute in the first place was compromise nobody was happy with and somehow we arrived having it not there. I vaguely remember that being a conscious decision, but I can't summon the why....

Copy link
Member Author

@Wumpf Wumpf left a comment

Choose a reason for hiding this comment

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

(why did this go into review mode?! I wanted to reply only)

/// \example archetypes/instance_poses3d_combined title="Regular & instance transforms in tandem" image="https://static.rerun.io/leaf_transform3d/41674f0082d6de489f8a1cd1583f60f6b5820ddf/1200w.png"
/// \example archetypes/mesh3d_instancing !api title="3D mesh with instancing" image="https://static.rerun.io/mesh3d_leaf_transforms3d/c2d0ee033129da53168f5705625a9b033f3a3d61/1200w.png"
table InstancePoses3D (
"attr.docs.category": "Spatial 3D",
Copy link
Member Author

Choose a reason for hiding this comment

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

it didn't. We always accepted that this has different semantics there. Having the attribute in the first place was compromise nobody was happy with and somehow we arrived having it not there. I vaguely remember that being a conscious decision, but I can't summon the why....

Copy link
Member Author

Choose a reason for hiding this comment

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

as per Slack message: yeah because migration code would be complicated and brittle - nulling out all [] is only legal if all transform components are missing.
Personally I also don't like it - the code IS producing different data now. Not in a viewer-breaking manner sure, but it's somewhat breaking

@Wumpf Wumpf merged commit 3b4d612 into main Nov 18, 2025
47 checks passed
@Wumpf Wumpf deleted the andreas/tf/no-more-empty-arrays branch November 18, 2025 11:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

include in changelog 🪵 Log & send APIs Affects the user-facing API for all languages 🍏 primitives Relating to Rerun primitives

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants