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 to ``0``) 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 to ``0``) 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 cloud * ``No Color``: Output mesh will have no color * ``Density``: 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] M. Kazhdan, M. Bolitho, and H. Hoppe, “Poisson Surface Reconstruction,” in *Proceedings of the fourth Eurographics symposium on Geometry processing (SGP)*, 2006, vol. 7. .. [Kaz2013] M. Kazhdan and H. Hoppe, “Screened Poisson Surface Reconstruction,” *ACM Transactions on Graphics (ToG)*, vol. 32, Art. no. 3, Jun. 2013.