Background
In mesh optimization and processing, mesh smoothing is a very important means to get smooth surface from large and irregular polygonal meshes. The mesh smoothing process typically needs two steps: compute Laplacian operator and integrate it explicitly or implicitly. Three major approaches emerged in recent years to compute the Laplacian operator: linearized Laplacian operator, scale dependent Laplacian operator and curvature flow operator. The linearized Laplacian operator combined with Taubin’s λ|μ algorithm3 (explicit integration) is the easiest and fastest approach, which is widely used in mesh smoothing, but creates a significant distortion of the shape when applied to a mesh with different sampling rates.
Curvature flow operator1 depends only on intrinsic properties of the surface. Curvature flow smoothes the surface by moving along the surface normal n with a speed of the mean curvature κ. By this means the curvature is kept almost constant after mesh smoothing, thus less distortion is induced even when applied to a mesh with different sampling rates. The curvature flow combined with implicit integration1 achieves the best smoothing effects, but involves solving the sparse linear system, which is not very easy and convenient to implement in simple languages.
In signal processing, it is desirable to increase the sampling rate when the signal changes quickly and reduce the sampling rate when the signal hardly changes. If we use uniform sampling rates for the whole mesh, we either have to lose some important geometric features for the sharp area to get a simplified mesh, or we have to oversample the flat area to preserve the original sharp feature.
Description
In this project, the curvature flow operator is combined with Taubin’s λ|μ algorithm (explicit integration), which can be implemented in simple java language. With this simpler curvature based mesh smoothing algorithm, we can still get some decent results.
Now we are able to process meshes with different sampling rates with this curvature based mesh smoothing algorithm, which makes mesh resampling possible. I.e., we can further resample the original mesh to get better optimized meshes with more desirable sampling rates. We can use the surface curvature as an indication of how fast the mesh changes at each point, and resample the mesh accordingly to achieve desirable sampling rates, i.e., use coarse grid for flat surface and fine grid for sharp surface. For this purpose, we need to collapse the short edges of the relatively flat area to decrease the sampling rates to an extent we want, and refine the long edges incident to the vertices with high curvature.
For details, please refer to my presentation.
My work is based on the java application obtained from EE148 Hw#4.
Curvature based mesh smoothing algorithm is implemented in a robust way, which achieves better smoothing and maintains the original mesh shape. Especially it works well on meshes with different sampling rates, and keeps sharp features almost intact.
Curvature based resampling achieves better optimized mesh with more desirable sampling rates at surfaces with different curvature.
Reference:
1. Implicit Fairing of Irregular Meshes using Diffusion and Curvature Flow
by M. Desbrun, M. Meyer, P. Schroder, and A. H. Barr, in Proceedings of Siggraph 1999, 1999
2.
Geometric Signal
Processing on Polygonal Meshes
by G. Taubin, Eurographics 2000 State of The Art Report (STAR), September 2000
3.
A Signal Processing
Approach to Fair Surface Design
by G. Taubin, in Proceedings of Siggraph 1995
4. Estimating the Tensor of Curvature of a Surface from a Polyhedral Approximation
by G. Taubin, Fifth International Conference on Computer Vision (ICCV'95)