WASM Demo site : https://rlamarche.github.io/bevy_pointcloud/
A Bevy plugin to render point clouds.
Roadmap :
- Render point cloud using a shader
- Compute AABB
- Add helpers for importing las/laz files
- Add helpers for importing PLY files
- Implement rendering described in https://www.cg.tuwien.ac.at/research/publications/2016/SCHUETZ-2016-POT/SCHUETZ-2016-POT-thesis.pdf
- Read Potree files in https://www.cg.tuwien.ac.at/research/publications/2016/SCHUETZ-2016-POT/SCHUETZ-2016-POT-thesis.pdf
- Efficiently load/unload chunks based on camera location
- ...
Takanawa Lion with multi pass rendering pipeline inspired by Potree:
Takanawa Lion with multi pass rendering pipeline + Eye Dome Lighting inspired by Potree:
1 million random points:
St. Anna Mountain, 33 millions points:
-
Rendering techniques and shaders adapted from Potree
Copyright (c) 2011-2020, Markus Schütz
Licensed under the BSD 2-Clause License (see THIRD_PARTY_LICENSES.md). -
Potree itself is based on prior research and open source projects.
Notably:- Multi-resolution octree algorithms developed at the Vienna University of Technology (Michael Wimmer, Claus Scheiblauer, Scanopy Project).
- Shaders inspired by CloudCompare (EDL), plas.io (LAS/LAZ support), and other point cloud tools.
-
The rendering pipeline implementation is based on Bevy's render pipelines
(Bevy Engine, MIT or Apache-2.0).
This project would not have been possible without the amazing work of the open-source and research communities. In particular, I would like to acknowledge:
- Potree by Markus Schütz, which inspired the rendering techniques and some shader code used here.
- Bevy Engine, whose rendering pipelines served as a foundation for the Rust-side implementation.
- The Vienna University of Technology (Michael Wimmer, Claus Scheiblauer) for their research on multi-resolution octrees in the Scanopy Project.
- CloudCompare for the EDL shader approach.
- plas.io for early contributions to LAS/LAZ point cloud rendering.
- The broader open-source graphics and visualization community for their continuous contributions to point-based rendering.
Thank you to all the researchers, developers, and contributors whose work laid the ground for this project.
Run the following commands to prepare the WASM:
cargo build --features webgl --example simple --target wasm32-unknown-unknown --release
wasm-bindgen --no-typescript --target web --out-dir path/to/site/ --out-name "bevy_pointcloud" ./target/wasm32-unknown-unknown/release/examples/simple.wasm
Optimize the wasm:
- Note: use the latest version of https://github.com/WebAssembly/binaryen because the one shipped with Ubuntu 24.04 make a broken WASM.
wasm-opt -O -ol 100 -s 100 -o bevy_pointcloud/bevy_pointcloud_bg.wasm bevy_pointcloud/bevy_pointcloud_bg.wasm