rerun-io / rerun

Visualize streams of multimodal data. Fast, easy to use, and simple to integrate. Built in Rust using egui.
https://rerun.io/
Apache License 2.0
6.27k stars 294 forks source link

Improve ellipsoid wireframe #6962

Closed Wumpf closed 1 month ago

Wumpf commented 2 months ago

Ellipsoid wireframe is today a wireframe of the on-the-fly generated triangle mesh image

This approach still has some shortcomings:

To that end, we should instead use a more abstract representation by drawing the lines of (2d) ellipses on the primary axis image (both transparency and dotted lines we can't represent yet) image (this minus the solid, all outlines the same color)

Ideally, we'd also additionally render the view dependent outline on top as done here image Doing this via our outline postprocessor is not feasible right now the way it is set up, so instead we'd need to re-compute these outlines every frame and use our line renderer. While our line renderer is afaik decent with per-frame changing lines, this may be too much computation overhead though. Also, computing this outline "by hand" is probably too complicated to warrant the extra effort, which is why we should shelve this for the moment.

Other potential issues: Fairly high line tessellation may be needed to hide the fact that our lines are still not connected 🫤 On the bright side, the line renderer is fairly well optimized for long strips, so data overhead wise this isn't as bad (total number of positions it has to send to gpu is n+2 where n is all line vertices in a single line batch + 64bit for each strip)

emilk commented 1 month ago

Closed by https://github.com/rerun-io/rerun/pull/7044

Having the "backface" lines be dashed would be awesome, but too much work right now

Screenshot 2024-08-14 at 14 44 32