Förderjahr 2023 / Projekt Call #18 / ProjektID: 6863 / Projekt: Potree-Next
Potree (potree.org) is a WebGL-based application that allows viewing massive point cloud data sets with up to hundreds of billions of points in web browsers.
We are happy to announce that Potree was granted 38700€ by netidee.at in order to further continue and improve this open source project throughout 2024. Specifically, we will be working on following features:
Migrate from WebGL to WebGPU.
WebGPU is a new and modern graphics API for web browsers that promises high-performance rendering and new features such as compute shaders. Compute-shaders are especially interesting as they allow implementing custom rendering solutions that outperform the the traditional triangle-oriented rendering pipeline when it comes to rendering points.
Add support for 3D Tiles.
Although our focus so far has been on rendering point clouds, we will also be working on rendering large triangle models by adding support for the 3D Tiles standard. 3D Tiles organizes triangle meshes in multi-resolution hierarchy that allows streaming and rendering only parts of massive triangle models that are required for the current viewpoint.
Support arbitrary point attributes
When Potree started, most point clouds had a few attributes out of a specific set of possible point attributes, with predefined meaning and encoding as defined by the LAS format specification (e.g., 16 bit intensity, 3x16 bit RGB, 8bit classification, etc). Since then, however, the LAS format was extended by the option to specify custom attributes where meaning and encoding are not known. Extra attributes could be normals, colors, group IDs, distance metrics, ambient occlusion, etc, and they could be labeled ("Normal", "N", "NxNyNz", ...) and encoded (3xfloat or 3xuint8, euclidean or polar, ...) however the generating application sees fit.
With Potree-Next, we'd like to offer two solutions to support and properly visualize arbitrary attributes: First, we'd like to provide a simple user interface where users can choose an attribute and an interpretation of said attribute. Second, we would also like to provide the option to write custom shaders that allow users to map the respective bytes of an attribute into color values for display. The latter is important in cases where attributes have complex, unkown encodings by third party applications, for which we can not provide defaults.