mkazhdan / PoissonRecon

Poisson Surface Reconstruction
MIT License
1.56k stars 425 forks source link

SSD Recon with Dirichelet boundary condition #291

Closed markloyman closed 7 months ago

markloyman commented 7 months ago

When I use SSD recon with Neumann boundary condition on a point cloud that is sparse near the floor: --width 0.0035 --valueWeight 0.4 --gradientWeight 0.14 --biLapWeight 0.3 --bType 3 --scale 1.2 --samplesPerNode 15 --colors image

So based on my experience with Poisson Recon, I tried to use the "watertight" Dirichlet boundary condition: --width 0.0035 --valueWeight 0.4 --gradientWeight 0.14 --biLapWeight 0.3 --bType 2 --scale 1.2 --samplesPerNode 15 --colors image

The Dirichlet result was surprising. But if I ask myslef what should happen if you set to 0 the SDF at the bounding box, than a surface on the bounding box actually makes sense and seem trivial. So it seems that the SDF formulation is actually incompatible with dirichlet boundary conditions.

According to the original paper:

So I am confused as to how / why boundary conditions were introduced in this implementation? In particular the option for dirichlet boundary condition.

Would really appriciate clarification on this.

Thank you!

mkazhdan commented 7 months ago

You are correct. SDF reconstruction with Dirichlet boundary conditions doesn't make sense. The SDF wants to grow larger as you move towards the boundary. The Dirichlet boundary conditions do the opposite. The two are incompatible.

The reason the flag for Dirichlet is there for SDF is simply that we kept it from Poisson Reconstruction. Our goal was to show that the FEM solver we designed for PR was more general than just for indicator function reconstruction. We didn't mean to suggest that the different variants of the FEM system were necessarily appropriate for other systems.

markloyman commented 7 months ago

Thank you for the swift reply!