mkazhdan / PoissonRecon

Poisson Surface Reconstruction
MIT License
1.59k stars 431 forks source link

Hello, I run Poisson Reconstruction to reconstruct a tunnel model, similar to a cylinder. Because of the normal vector of the boundary, will the boundary tend to close and fold ? #248

Open zaoyueri opened 1 year ago

zaoyueri commented 1 year ago

Hello, I run Poisson Reconstruction to reconstruct a tunnel model, similar to a cylinder. Because of the normal vector of the boundary, will the boundary tend to close and fold ? HB5CM5~KXRY 7_ 85J@YIOX nward?

mkazhdan commented 1 year ago

If you want it to close, you will need to use Dirichlet boundary conditions instead of default Neuman.

zaoyueri commented 1 year ago

Forgive my bluntness, can you tell me how to use Dirichlet boundary condition?

mkazhdan commented 1 year ago

--bType 2

zaoyueri commented 1 year ago

Do I need to modify the code of type B in the code of Poisson reconstruction?

zaoyueri commented 1 year ago

image I change it to Dirichlet boundary condition here, right?Is there anything else that needs to be modified?Thanks again for your reply!

mkazhdan commented 1 year ago

Assuming FAST_COMPILE is not enabled in PreProcessor.h, you don't need to recompile. You can just run the executable and add "--bType 2" as a parameter.

mkazhdan commented 1 year ago

Otherwise, yes, you need to change the value of DEFAULT_FEM_BOUNDARY to BOUNDARY_DIRICHLET.

zaoyueri commented 1 year ago

image image I used bType2 as the parameter input, and no folding occurred at the boundary. However, a surface is enveloped around the casing of the tunnel. It covers the outer surface of the tunnel.The cause of this problem may be that my data noise is not removed completely?

mkazhdan commented 1 year ago

That makes sense. Using "--bType 2" ensures that the resulting surface has no boundaries. However, in this case there are several ways in which this could happen. (I was hoping it would close the cylinder but instead it opted to loop around the backside and close it off that way.)

zaoyueri commented 1 year ago

Dear professor, it seems that the surface I generated should be accurate. Is there any other way to eliminate this redundant surface? Or is the model I generated accurate enough?

mkazhdan commented 1 year ago

You can run with the --density flag and then use the SurfaceTrimmer executable to remove the surface reconstructed away from the samples.