5.1. Voxel Growing
To polygonize the surface of an implicit function, the geometry space should be discretized to construct the voxels for evaluation, as shown in Figure 2
. The classical marching cubes method evaluates all the voxels to extract the zero level set (Figure 3
a), while the voxel growing method only evaluates the voxels intersecting the isosurface in the geometry space (Figure 3
b). However, it is time consuming to determine the first initial seed point by traversing all the cubes. Moreover, the original voxel growing method cannot ensure to recover the complete model with multiple isosurfaces for missing some possible seed points, as shown in Figure 3
In this paper, combined with the single point FMM, we improve the voxel growing method without specifying the seed points manually. For the RBF interpolant, all of the domain constraints with zero values are selected as seed points to avoid missing evaluations, as shown in Figure 2
. The voxel containing at least one seed point is viewed as an initial seed voxel. Then the method tracks the voxels intersecting the isosurface using all the initial seed voxels. We construct a voxel growing queue to store the adjacent voxels intersecting the isosurface for tracking. The adjacent voxels intersected the isosurface are appended to the voxel growing queue greedily until there are no new voxels intersected the isosurface, as shown in Figure 3
d. Note that the evaluated voxels should be marked to avoid recomputation. Different from the marching cubes method, the voxel growing method evaluates the voxels greedily. Though the voxel growing method reduces the number of evaluations, the evaluation points should be determined via the reconstruction process step by step, which reduces the efficiency of single point evaluation. To improve the evaluation efficiency, the single point FMM is used to evaluate the points one by one. Note that the evaluated points should be marked to avoid recomputation.
The improved voxel growing achieves the same reconstruction effect more efficiently. In the growing process, a voxel growing queue is used to track an isosurface. Reconstructing an isosurface requires only one initial seed voxel. As long as each isosurface has at least one constraint point with zero values, the original model can be completely reconstructed. Generally, the sampling points can meet the requirement in practical applications. It is worth noting that the initial seed voxels in the same isosurface are repeated and should be removed to avoid recomputation. Considering the fact that a voxel growing queue corresponds to an isosurface, an available approach is to remove the repeated initial seed voxels in the same growing queue gradually.
5.2. Leaf Growing
In the voxel growing queue, the numerical results show that assigning different priorities to the pending voxels leads to a different evaluation efficiency. It is because the order of voxel growing affects the single point evaluation efficiency. Compared with the original FMM, the third step of the single point FMM computes the L2P coefficients many times for the evaluation points in the same leaf cell. For the evaluation points in the same leaf cell, the L2P operation interpolates at the same Chebyshev nodes, and the same coefficients can be precomputed by expanding the Chebyshev polynomials.
To avoid a mass of redundant computation, we present the leaf growing method based on the improved voxel growing method. The main difference is that the growing process considers both the evaluation cell of FMM and the reconstruction cell of MC. The evaluation cell of FMM refers to leaf cell, the finest level of octree. The reconstruction cell of MC refers to the voxel or cube. An available approach is to track the implicit surface leaf by leaf instead of voxel by voxel, and then to evaluate all the voxels in the same leaf.
To reduce the number of evaluation points, the improved growing strategy is to track the implicit surface leaf by leaf in global, and voxel by voxel in local. In addition, the voxels in the growing queue are specified a priority via the position in the leaf. There are three positional relationships between the leaf and the voxel, namely interior, intersection and exterior, as shown in Figure 4
. In the voxel growing process, a leaf
with the precomputed L2P coefficients is viewed as a current leaf. The precomputed L2P coefficients of
will be stored until there are no voxels inside or intersecting
in the voxel growing queue. To save the memory storage, for the voxels in the growing queue, the voxels inside the current leaf should be evaluated first. Then the voxels intersecting the current leaf will be evaluated and a new current leaf will be obtained.
Given a radial basis functions interpolant , and a desired reconstruction accuracy , based on the above analysis, a simplified procedure of the fast implicit surface reconstruction method for the RBF interpolant is given below.
Step 1: Space division. Compute the minimum bounding box via the constraint points and divide the space into regular voxels (cubes) via the desired reconstruction accuracy . Scale the minimum bounding box in a certain ratio.
Step 2: Construct the initial seed voxels. Select the points of the domain constraints with zero values () as the seed points and construct an initial seed voxel set via the positions of the seed points.
Step 3: Execute the setup step. Compute the multipole moments based on the source points . The source points are the interpolation centers for the RBF interpolant .
Step 4: Traverse the initial seed voxel set . Construct a voxel growing queue and add an initial seed voxel to .
Step 5: Traversing the voxel growing queue , take out a voxel with the highest priority. Evaluate the points of the voxel by executing the translation and evaluation steps. Obtain the current leaf cell of the FMM according to the L2P operation. Store the evaluated points and the evaluated voxels to avoid the repeated evaluation.
Step 6: According to the lookup table of the marching cubes method, triangulate the voxel via the eight evaluated values. Optionally, some additional strategies can be implemented to resolve the ambiguities.
Step 7: Determine the new growing voxels for tracking. Among the six adjacent voxels of , append the un-evaluated voxels that are intersected the isosurface to the voxel growing queue .
Step 8: Specify a priority for the new growing voxels via the corresponding position in the current leaf cell of the FMM.
Step 9: Compare the new growing voxels with the initial seed voxel set , and remove the duplicate initial seed voxels in .
Step 10: Return to Step 5 until the traversing of the voxel growing queue is finished.
Step 11: Extract an isosurface based on the triangulated voxels.
Step 12: Return to Step 4 until the traversing of the initial seed voxel set is finished.
Step 13: Output the reconstructed isosurfaces.