Jump to content

How can I convert a point cloud to a surface?


Masoud

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
Link to comment
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...

 

Link to comment
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
Link to comment
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
Link to comment
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 

Link to comment
Share on other sites

  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...