Sign in to follow this  
SilverSurfer

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

Recommended Posts

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.

Share this post


Link to post
Share on other sites
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/

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Edited by Scouting Ninja

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this