Jump to content
Masoud

How can I convert a point cloud to a surface?

Recommended Posts

i don't think that you have a default tool for surface reconstruction from a point cloud. If you really need accurate result you need to check Poisson surface reconstruction algorithm. 

https://hhoppe.com/poissonrecon.pdf

Implementing this in vex might be hard and slow

 

there is a thread that talk about this :

 

I would find a good binary executable that do poisson surface reconstruction, and that can be call with a command line , then link it to houdini by taking exemple of what they do in the Labs Instant Meshes nodes. 

https://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version13.72/#EXECUTABLES

there is also a Labs AliceVision Meshing nodes , that might be interesting to check before , cause it might be able to already do this. i have never try it.

Edited by sebkaine

Share this post


Link to post
Share on other sites

Try VDB from particles and convert that to polygons.

Untitled-1.jpg

Share this post


Link to post
Share on other sites

Hi Atom,

VDB is not a suitable workflow, because it makes an unwanted offset on the surface and is slow to convert the point clouds.

I need a thin layer surface, exactly laid on points.

Share this post


Link to post
Share on other sites

Give the point cloud iso node a try. Set your step size small for each axis, like 0.05.

Untitled-1.jpg

Edited by Atom
  • Like 2

Share this post


Link to post
Share on other sites

You also try the vdb from particle fluid and play with different settings to get the look that you are looking for.

 

 

 

 

 

 

houdini_1p36lcALiw.png

PointCloud_To_Surface.hip

  • Like 1

Share this post


Link to post
Share on other sites

with the command line tool PoissonRecon from my link i get the following result. 

the utility is pretty straightforward, and can be call directly from houdini like the Labs tools.

resurface.thumb.gif.f6a66550b2f36dfa9e3d7971c7c583ce.gif

surfacing.zip

  • Like 2

Share this post


Link to post
Share on other sites

Using third party tools:

 

Meshlab 2021.10

Import Mesh the point cloud as OBJ file

1/ Compute Normals for Point sets

2/ Surface Reconstruction: Screened poisson

(those are the full names of the functions, you can type them in the upper right magnifying glass search field)

I can't elaborate too much on the parameters, but you should be able to reconstruct the surface in some case, especially if the point cloud still looks like a surface, not your use case, as it will output a surface, but something that doesn't really look like the original rubber toy

I think it works well for example, to rebuild the mid section of a character if the hole size is in the same ballpark as the average distance between the points; otherwise the rebuilt surface will not bridge the two parts together. Lots of parameters to play with though...

 

Share this post


Link to post
Share on other sites

shame this functionality doesn't come as a node in Houdini out of the box. it would be really handy sometimes.

Share this post


Link to post
Share on other sites

These command line and asset are pretty cool.
By the way I have two comment these two lines to make the asset work
#cmd.append("--color")
#cmd.append("16")
But without normals (Which is often the case with point clouds), you still have to use mash lab, which reduces the interest of using them.
Is there a way to calculate the direction of normals on a point cloud without recoding the algorithm in VEX ?

I tried with the @N = @P trick, it's not as bad as I expected, but it's still not great.

capture1.jpg

capture2.jpg

Edited by flcc

Share this post


Link to post
Share on other sites

If you are not happy with the normal from particle fluid (or more usually, this one is too slow) or you would have to use the covariance matrix to get decent normal, that's the only way io know

so far working good enough for me

 

https://jakerice.design/2018/09/19/Covariance-and-Principal-Component-Analysis/

 

image.thumb.png.2854cc9b622e6d8aacb9806cc91c097d.png

 

 

 

Edited by vinyvince
  • Thanks 1

Share this post


Link to post
Share on other sites

Yes I tried the differents methods (those of the forum and particles fluid normal) but the jacke rice one is definitively better.

Thank.

Share this post


Link to post
Share on other sites

For those who have the time to investigate i agree with antoine that meshlab would give the best toolset for the job, and even more.

cause it can be use in command line, it work under windows or linux env, and function can be call in python inside houdini.

compute_normal_for_point_clouds

https://pymeshlab.readthedocs.io/en/latest/filter_list.html?highlight=point normal#compute_normal_for_point_clouds

generate_surface_reconstruction_screened_poisson

https://pymeshlab.readthedocs.io/en/latest/filter_list.html?highlight=poisson#generate_surface_reconstruction_screened_poisson 

Share this post


Link to post
Share on other sites
7 hours ago, flcc said:

Yes I tried the differents methods (those of the forum and particles fluid normal) but the jacke rice one is definitively better.

Thank.

You Welcome :)

Share this post


Link to post
Share on other sites

Thanks to everyone,

As @Atom said, the Houdini has an SOP called "Point Cloud ISO" for this purpose.

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

×