How to display huge point cloud via QT?
-
I have some Qt examples on displaying 3D point cloud(with X,Y,Z,I), they can display small size point cloud well(< 100000 points), if I want to display huge point cloud( with more than 5 million points) in real time(< 100ms ), and colorize the points according to its height(or according to itensity I). Is Qt capable of doing such task? if so, which Qt module should I use? Qt3D, QML?
-
I think I have a bit of the same need as you but without the time constraint. I want to display a multitude of independent point clouds. To do this, I tried using the QtDataVisualization module, but I came up against the fact that the objects are not transparent to each other.
I describe my problem here and give an example code here: https://forum.qt.io/topic/156479/transparency-problem-between-qcustom3dvolume-of-the-same-scatter3d
If you only have one point cloud to represent, this may be a solution for you (then see if the data model can be updated quickly). You say you have examples of solutions for displaying point clouds, what approach have you already tried that I could use as inspiration?
-
@Winz-0 thank you for your advice. Now I resort to combination of PCL+VTK+QT , PCL for processing, VTK +Qt for display, thus reduce Qt burden. My example are below
https://github.com/aszpatowski/Lidar-Visualization-Qt/tree/master
https://github.com/zjulion/QtCloudViewer
I doubt that using Qt only can not handle huge points data at scale of more than 5M+ points -
Thanks for sharing your code @hitbuyi.
To optimize display speed, you could also consider displaying only a sub-section of you data depending on the zoom level, for example. The user won't notice the difference if you display 3 or 4 million pixels. You could apply trilinear interpolation to your raw data, for example, or take inspiration from approaches like this one: https://www.kdab.com/a-speed-up-for-charting-on-embedded/