Comments (4)
This is by design: we're not using the transform's scale as the axis length because in a environment where 1.0 means e.g. millimeters and you're working with kilometers this would make the axis too small.
Instead, we heuristically determine the Transform-arrow length
factor you see in the ui: It is determined by looking at the accumulated scene bounding box or if present the plane distance of a present pinhole camera.
What's a bit poorly communicated here is that it is a factor: if you log several transforms, but some with a smaller (or even non-uniform) scale, the transform axis will be transformed accordingly. I.e. whatever transform the actual transform tree does applies to the arrows just like it would to a mesh.
The good news is that in the next release it will be easy to override this:
- (python only) you can set a default value for this factor (which is now a component!) per View. Meaning you can tell Rerun to stop doing this fancy heuristic and instead use your default for everything
- (all languages) since the factor is now a component, it can also be just logged to the datastore alongside the transform itself
The later has already landed on main and the former is about to go in :)
from rerun.
Closing this as won't fix because the proposed solution of using the scale for transform axis length has shortcomings as described.
Hope the upcoming AxisLength
component (that's what it's called right now, but I think we should go with AxisLengthFactor
🤔 ) solves the usecase of having a deterministic known axis length size.
Please re-open if you have counter suggestions!
from rerun.
It's good to hear the ability to control the heuristic is going into the next release. Is there any workaround I can implement in the version I have to shrink the size of the published transforms? As it stands, the visualization of the trajectory above is not useful given the auto scaling makes the axes very large compared to the motion in the trajectory.
Can I add a fake pinhole camera to control this indirectly?
from rerun.
Using a smaller scale will already work since it shouldn't affect the heuristic and will shrink the arrows. Only problem of course is that this then also shrinks everything at and below the transform :/
A fake pinhole would change the arrow length to a quarter of the pinhole image length but that's probably not super useful since the pinhole image distance in turn is determined heuristically.
Likely a better alternative would be to just draw arrows manually using the Arrows3D
archetype. The transform arrow visualization should automatically turn off if there's anything else logged at the transform.
from rerun.
Related Issues (20)
- Table View Data browser design/roadmap HOT 1
- Bring back multi-timelines in text-log view
- Support displaying the same data in multiple notebook cells
- Editing `name` property on a time series that doesn't already have a name has no effect
- Use "more" button (`…`) instead of reset + context menu on view properties
- Rename blueprint section
- Refactor: merge `ArchetypeFieldInfo` into the `reflection` module
- When loading a `.png`, all external data loaders are run
- `HalfSizes2D` and `HalfSizes3D` should not be pluralized HOT 2
- Changing color on a mesh doesn't have any effect HOT 3
- Proposal: make indicator components an optional bool, and unify heuristics with fallback providers HOT 1
- Scrollable containers
- Spurious error message when using `multiprocessing `: "Fork detected during set_sink"
- `egui_plot`: looking for maintainer HOT 1
- Slider drag box is drawn over list item's action button
- Add `DragValue::only_clamp_on_input` to egui and use it for all drag values in edit ui
- Rerun notebook widget eavesdrops on keyboard events while typing in another cell HOT 3
- Viewer instances don't release memory when cell output is cleared HOT 2
- Rerun widget output allways ends up creating a scroll area
- The new self-contained widget is slow in google colab HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rerun.