Laplcian Mesh Fairing
Smoothing operations like mean curvature flow often shrinks the mesh. Therefore, we need to inflate the mesh back to the constrained positions in such a way that preserves the local curvature of the smoothed mesh. The technique we use is based on Olgo-Sorkine's work on Laplacian mesh editing (O. Sorkine et. al. 2004).
We represent each vertex relative to its topological neighbors. This data representation is known as the "Laplacian coordinate", since we effectively represent each vertex as its Laplacian. The main benefit of such representation is that the Laplacian coordinate is intrinsic to the geometry and thus can capture the mesh curvature very well. Moreover, we can easily recover the absolute geometry from Laplacian by solving a sparse linear system, given a set of constrained positions . In particular, we minimize the following energy,
by solving the following linear system,
where is the Laplacian operator on the mesh, is the vertex positions to solve for, and is all vertex Laplacians.
Importantly, the Laplacian coordinate is invariant to translation, but not invariant to scaling and rotation. Our challenge is to find a modification to the classic Laplacian coordinate to make it scale invariant.
The solution is to compute a transformation for each vertex based on the new vertex positions . Then we modify the energy function to be,
Intuitively, we need to transform the target Laplacian to the pose of the neighborhood around vertex . In practice, we find the transformation by minimizing the following function,
where is the initial position of vertex , is the transformed position of vertex , and is the neighborhood of vertices around .
Finally, we model as an affine transformation, such that
where is the scaling factor, and is the translation vector.
Then we can fit a transformation matrix over the point and its neighbors by solving a linear system, where
where and
The solution to this linear system gives us a formula to write the transformation matrix in terms of the new vertex positions , where . We can then use the coefficients of for each vertex in our energy function to solve for implicitly.
Applying this smoothing algorithm on a simple curve network below, we can see that the final mesh adheres to the constrained positions on the curve network while preserving the curvatures of the smoothed mesh.
