MCPcopy Create free account
hub / github.com/AlfonsoLRz/PointCloudRendering

github.com/AlfonsoLRz/PointCloudRendering @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
4,043 symbols 10,518 edges 254 files 1,079 documented · 27% updated 14mo ago★ 1761 open issues

Browse by type

Functions 3,523 Types & classes 520
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Rendering of large point clouds c++ numpy license

[!IMPORTANT] We have recently published a work to render huge point clouds, containing up to several billion points (tested with 18B points). It is available in https://github.com/Krixtalx/Nimbus!

This work is intended to provide fast rendering of large point clouds in OpenGL using compute shaders. It is built over an interface based on ImGui to ease the opening and visualization of large point clouds with a high frame rate per second (FPS). This work is based on Markus Schütz's research.

PointCloudRenderingIntro


Features

  • The provided project opens large point clouds limited by the GPU's memory size. The maximum allowed size of a Shader Storage Buffer Objects (SSBO) is far behind the GPU's capabilities, so the point clouds are partitioned into several chunks. Point clouds of several gigabytes may not be rendered in this application.

  • Beyond opening large point clouds, the base work of Markus Schütz allows improving the visualisation of point clouds through the latest extensions of compute shaders. See the image below to compare the enhancement to GL_POINTS rendering mode.

HQRComparison

  • As an alternative for large point clouds that cannot be completely loaded into the GPU, we provide a tool for reducing the size of a point cloud. For that purpose, points are sorted along a z-curve to narrow surrounding points into a single one.

ReductionComparison

  • Take screenshots with a higher resolution than the current viewport size. By default, they are saved as Screenshot.png under the root directory, though the size multiplier and path destination should be configured.

  • Graphical User Interface (GUI) provided by the ImGui library to configure the visualisation of the environment as well as the loading stage.

GUI


TODO

  • Include a more refined reduction algorithm, as the neighbourhood reduction given by Morton codes is mainly driven by the precision of such values for representing close points.

  • Translate the code to CUDA/Vulkan, as it might severely improve the performance.


Dependencies

imgui: 1.82 glm: 0.9.9 glew glfw: 3.3.0 openGL: ≥ 4.5


References

Markus Schütz and Bernhard Kerbl and Michael Wimmer. 2021. Rendering Point Clouds with Compute Shaders and Vertex Order Optimization. arXiv:2104.07526

Markus Schutz and Michael Wimmer. 2019. Rendering Point Clouds with Compute Shaders. In SIGGRAPH Asia 2019 Posters (SA '19). Association for Computing Machinery, New York, NY, USA, Article 32, 1–2. DOI: https://doi.org/10.1145/3355056.3364554

Core symbols most depended-on inside this repo

Shape

Method 1,831
Function 1,692
Class 395
Enum 125

Languages

C++99%
C1%

Modules by API surface

PointCloudRendering/Libraries/imgui/imgui.cpp458 symbols
PointCloudRendering/Libraries/imgui/imgui_internal.h252 symbols
PointCloudRendering/Libraries/lodepng/lodepng.cpp239 symbols
PointCloudRendering/Libraries/imgui/imgui_widgets.cpp210 symbols
PointCloudRendering/Libraries/imgui/imgui.h189 symbols
PointCloudRendering/Libraries/imnodes/imnodes.cpp162 symbols
PointCloudRendering/Libraries/imgui/imstb_truetype.h142 symbols
PointCloudRendering/Libraries/imgui/imgui_draw.cpp141 symbols
PointCloudRendering/Libraries/implot/implot.cpp135 symbols
PointCloudRendering/Libraries/implot/implot_items.cpp119 symbols
PointCloudRendering/Libraries/imfiledialog/ImGuiFileDialog.cpp114 symbols
PointCloudRendering/Libraries/implot/implot_internal.h95 symbols

For agents

$ claude mcp add PointCloudRendering \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page