-
Notifications
You must be signed in to change notification settings - Fork 369
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support huge point clouds in the viewer #1136
Comments
I have been tackling rendering of point clouds for some time and here are some resources I've used to speed up rendering of point clouds:
While a bit specific to Unreal Engine 4, there are some insights in this master thesis project ( https://cgvr.cs.uni-bremen.de/theses/finishedtheses/point_cloud_rendering_in_unreal/thesis_FINAL_WEB.pdf ) about point order |
We should be a bit more specific with the "huge" part. From what we learned so far most users are more than happy in the region of <8mio points which seems to be in the region where we don't need acceleration structures for rendering. We need typically 24bytes per point right now (position, radius, color, index - could compress away the index!), so 8mio points would be merely 184Mb. Right now we have a hardcoded limited 4mio; point cloud renderer should be dynamic with this! |
…2512) ### What Add a simple example to display Open Photogrammetry Format datasets ![](https://static.rerun.io/3bb25c43fa2a4c367d036c27943812ebfe3e4d42_open_photogrammetry_format_1200w.png) This example is currently minimalist in that there is lots more in the OPF that could be displayed, such as uncalibrated vs. calibrated cameras, matches between points and cameras, etc. Also, I opted to display each calibrated camera as individual frames in the timeline, as displaying them currently spams the viewer with image views. Closes #2246 Would greatly benefit from #1136 Blocked by #2244 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) <!-- This line will get updated when the PR build summary job finishes. --> PR Build Summary: https://build.rerun.io/pr/2512 <!-- pr-link-docs:start --> Docs preview: https://rerun.io/preview/c1fd3e3/docs Examples preview: https://rerun.io/preview/c1fd3e3/examples <!-- pr-link-docs:end --> --------- Co-authored-by: Emil Ernerfeldt <[email protected]>
potree does large point clouds: |
The current state is around 1.5M points @30 fps on my M1 MacBook Pro. We are bounded primarily by
A rough roadmap:
|
From the same authors, a drastically different approach by accumulating data across frames, removing the need for hierarchical datastructures, LOD, caching, etc: https://github.com/m-schuetz/Skye |
What about just rasterize it on the server side and serve as video stream. |
Pixel rendering on the cloud is something we'd like to do in the future, but is orthogonal to the issue at hand. |
The Rerun Viewer is currently limited to only being able to display ~two million points at a time, and will have pretty terrible frame rate at 1 million points already.
The reason for this is that we upload the point cloud every frame. This is very simple, but obviously very wasteful.
A solution is to detect if the same points are being rendered this frame as the previous, and if so not re-upload them. This is similar to how we already handle tensors.
The text was updated successfully, but these errors were encountered: