Poisson Reconstruction¶
This algorithm implements surface reconstruction from point clouds using the (Screened) Poisson Surface Reconstruction by Kazhdan, Bolitho, and Hoppe [Kaz2006], [Kaz2013].
Input¶
Exactly one point cloud with normals. The point cloud can have colors, which will be included in the reconstruction, but those are optional.
Output¶
A mesh approximating the surface that was sampled by the point cloud.
Description¶
This algorithm uses the Screened Poisson Surface Reconstruction, as described by Kazhdan, Bolitho, and Hoppe to create a mesh from a set of oriented points (i.e. points with normals). To do so a discretized indicator function is computed within an adaptive octree grid, the depth of which limits the achievable reconstruction precision. From this function the surface is extracted using a specialized variant of Marching Cubes.
By design Poisson Reconstruction always creates a closed, hole-free surface. If this is not desired, parts of the surface that are too far from the input point cloud can be removed again by setting Filtering surface distance r1, Filtering surface distance r2 and Filtering surface max angle to an appropriate value.
Filtering based on two distances (between newly generated triangles and the input point cloud), smaller distance r1 and bigger distance r2:
Triangles that are in the range of [0, r1] are all kept. Triangles that are in the range [r1, r2] are kept if their normals are similar to the normals of the closest input point. Triangles that are bigger than r2 are all removed.
Level: Maximum depth of the underlying octree. This parameter influences the reconstruction precision (higher = more accurate; lower = more coarse). In the special case of Level being smaller than
0
one of the other criteria will be used to decide whether a node is subdivided.Spacing: Minimum side length of an octree leaf node and by extension an approximate scale for the minimum side length of generated triangles. Ignored if Level is greater or equal to
0
.Filtering surface distance r1: Filtering distance r1. Set this value to
0
(and r2 also to0
) in order disable removal of unsupported faces and will keep a closed mesh.Filtering surface distance r2: Filtering distance r2. Set this value to
0
(and r1 also to0
) in order disable removal of unsupported faces and will keep a closed mesh.Filtering surface max angle: This value affects the newly generated triangle falls in the range [r1, r2]. If the angle between the triangle normal and the closest point normal (in the original point cloud), is bigger than this max angle, then the triangle is removed.
Maximum surface distance: Maximum distance a triangle in the mesh can be separated from any input point before being removed during postprocessing. Optional; values smaller or equal to
0
disable removal of unsupported faces and will keep a closed mesh.Color source: Source of the color of the resulting mesh, following options are available:
Color
: Use colors of source point cloudNo Color
: Output mesh will have no colorDensity
: Color coded point density will be used as mesh color
Density threshold mode: Allows to exclude certain vertices from the computation based on their density and according to the following criteria:
None
: No thresholding is applied on the vertices, all contribute to the final mesh.Quantile Density
: Applies alpha trimming on the vertices that are below a certain quantile in the density histogram. The quantile value is controlled by Density threshold.Median Density
: Applies binary thresholding on the vertices that have a lower density than a certain percentage of the median value of the density histogram. The percentage value is controlled by Density threshold.Absolute Density
: Uses absolute density threshold. The value is controlled by Density threshold.
Density threshold: The actual threshold used for determining whether a vertex is skipped from computation (only if Density threshold mode is not
None
).Samples per node: This floating point value specifies the minimum number of sample points that should fall within an octree node as the octree construction is adapted to sampling density. For noise-free samples, small values in the range [
1.0
-5.0
] can be used. For more noisy samples, larger values in the range [15.0
-20.0
] may be needed to provide a smoother, noise-reduced, reconstruction.Boundary type: Boundary type for the finite elements. Valid values are:
Dirichlet
Free
Neumann
[Kaz2006] |
|
[Kaz2013] |
|