Point Cloud Rendering

Hello together,

I need to render large point clouds with vtk 9.3. on a quite modern graphics device.
The point cloouds have up to 15 million points. Any tips or suggestions how to achieve reasonable render performance?

Hello @metamurk,

It depends on your gpu of course but render 15 millions points with a “reasonable” performance should already be possible with the classic OpenGL integration of VTK.

Note that there is some on going work regarding point cloud rendering with WebGPU (https://gitlab.kitware.com/vtk/vtk/-/merge_requests/11361), but in your case I don’t think you need it for now

I use a RTX 2000 Ada Laptop GPU.
Ok, I mean fast.
Are there any good examples implemtenting culling, LODs or any other improvements for PCs in vtk?

By default any renderer has a frustum culler. There is also a LOD but you will need to use the vtkLODProp3D in this case, there is also an example about how to use it: https://examples.vtk.org/site/Cxx/Visualization/LODProp3D/

Would it be usefull to pre-sort the points in some gpu relatd way?

Would it be usefull to pre-sort the points in some gpu relatd way?

I don’t think you need to do that for 15 millions of points.

VTK will not have a huge gain if you do that as the vtk mapper cannot reuse it directly, if you still want to do that you’ll need to write your own point cloud mapper with a first pass of depth sorting

Note that this approach was already done in another vtk based app named F3D for gaussian splatting support, here is the related mapper: f3d/vtkext/private/module/vtkF3DPointSplatMapper.h at master · f3d-app/f3d · GitHub

thank you very much. At the moment performance is quite good, but I suppose these guys will come around the corner with 30 million points next week :slight_smile:

What is the best approach for picking points from the cloud fast?

Nice!

At the moment performance is quite good, but I suppose these guys will come around the corner with 30 million points next week :slight_smile:

I don’t know how much points we can support exactly with fast performance by default, so don’t hesitate to share your result :slightly_smiling_face:

What is the best approach for picking points from the cloud fast?

There is few picker in vtk indeed but I think the best one for your case is the vtkPointPicker (and his example is here)

Hello, our experience is that VTK is extremely efficient at visualising point clouds. For instance on the same machine it is faster than CloudCompare visualising point clouds of tens to hundreds million points. We just use PolyData with cells set as vertices and a standard viewer,

2 Likes

thanks for these interesting insight, for your information I published recently a blog post regarding point cloud rendering with WebGPU you might be interested :slightly_smiling_face:

https://www.kitware.com/achieving-interactivity-with-a-point-cloud-of-2-billion-points-in-a-single-workstation/