Can i voxelize 3d set of points without reconstructing surface first?

Started by
3 comments, last by Scouting Ninja 6 years, 12 months ago
I have huge point cloud data I want to render them at interactive frame frate. Process I know is 1.point cloud data 2.triangulate it using delnauy or other triangulation algo 3.surface voxelization for mesh 4.volume tracing ti render

But triangulation process is very very slow. Can I somehow voxelize my point cloud directly ?? I am newbie to voxelization.
Advertisement
Why don't you render your points directly? Splatting points is very fast.
(You should be able to beat the graphics pipeline by implementing the splatting in a compute shader using atomics. http://media.lolrus.mediamolecule.com/AlexEvans_SIGGRAPH-2015-sml.pdf)

You need to create a tree from your points so you can use less points at the distance.
Creating such a tree is also very fast - much faster than voxelization and traceing the result.
https://devblogs.nvidia.com/parallelforall/thinking-parallel-part-iii-tree-construction-gpu/
Can you elaborate on what you mean by splatting 3d point cloud?
Splatting means just rasterizing points instead of triangles (e.g. using OpenGLs GL_POINTS).
The points are distributed densely over the surface and each has it's own color to avaid the need for textures.

There are many projects out there if you look for it (Open Source, Browser based etc.)

Probably the main issue is aliasing: Rotating the model will show front/back popping points because they need to overlap to make a closed surface - triangles don't have this issue.
But TAA might fix it enough to make it useable for games.


I'm not sure if it's good for your usecase. You'd need to tell us more of what you want to achieve.
Voxels always appear attractive because they are easy to implement, but they take more memory, bandwith and cycles.
Using a volume to encode just the surface of something means using 3D data for a case where 2D data would suffice.
But triangulation process is very very slow. Can I somehow voxelize my point cloud directly ?? I am newbie to voxelization.

Considering that a voxel is a single point in space with a attached vector, then your point cloud is already voxels.

What you are describing is displaying voxels as a mesh, drawing triangles is the fastest.

A other way would be to draw a cube at each voxel point, the down side is, that this way the cubes won't be properly connected. However it will allow you to use instancing instead of batches/ chunks to render the cubes.

Edit:

I think JoeJ means you should do this:

https://threejs.org/examples/webgl_buffergeometry_points.html

It can take some time to load.

This topic is closed to new replies.

Advertisement