Goal of mesh smoothing: Remove noise from triangle meshes and improve vertex distribution.
Two different kinds of smoothing:
- In normal direction, used to smooth a surface
- In tangent direction, used to improve vertex distribution and triangle shapes
2D Smoothing
Simple smoothing operator
- Move to COG of neighbours
- $p_i \leftarrow \frac{1}{2}(p_{i-1} + p_{i+1})$
- As update vector
- $p_i \leftarrow p_i + \Delta p_i \qquad \Delta p_i = \frac{1}{2}(p_{i-1} - 2p_i + p_{i+1})$
- Add DoF
- $\Delta p_i = \alpha(p_{i-1} - p_i ) + \beta ( p_{i+1} - p_i )$
$\alpha = \frac{1}{(t_2-t_1)(t_3-t_1)}, \beta = \frac{1}{(t_3-t_1)(t_3-t_2)}, t_i$ in arc length param. $\Rightarrow$ normal smoothing only
$\alpha = 0.5, \beta = 0.5 \Rightarrow$ finite second-order central difference.
Taylor: $\Delta p_i \approx \frac{\delta^2 f}{\delta x^2} \Rightarrow$ reduces the curvature with each step.
Analysis
Write above as vector-matrix produkt:
(1)- $0<\lambda<1$ is a damping factor to avoid oscillation
- U contains the finite second order central difference on its main diagonal
- Assume polygon to be infinite
Eigenanalysis and Fourier Transform reveals that the smoothing operator is a frequency filter.
Transfer function: $(1-\lambda \omega)$
Filter design
- Low-pass filter
- $[q_i] := (I + \lambda U)[p_i]$
- High-pass filter
- $[h_i] := [p_i]-[q_i] := ( - \lambda U)[p_i]$
- Band-pass filter (mid frequencies)
- $[m_i] := ( I + \lambda U)[h_i] = (I+\lambda U)(-\lambda U)[p_i]$
- Improved filter
- $[q_i+m_i] = (I+\lambda U) (I-\lambda U)[p_i]$
- $\lambda-\mu$-Smoothing
- $(I+\mu U) (I+\lambda U)[p_i]$ ($\lambda>0, \mu < -\lambda$)
More DoF possible, but $\lambda-\mu$-Smoothing practically sufficient.
Smoothing in 3D
- 1-ring neighbourhood
- $N_1(i)$
- Umbrella operator
- $p_i \leftarrow p_i + \frac{1}{|N_1(i)|} \sum_{j\in N_1(i)}(p_j-p_i)$
- Weighted and dampened umbrella
- $p_i \leftarrow p_i + \lambda \sum_{j\in N_1(i)}w_{ij}(p_j-p_i)$
Umbrella vector approximates the Laplace vector, operator reduces curvature
Weights
- Linear precision
- Smoothing operator does not move vertex out of 1-ring
Uniform weights | $w_{ij} = \frac{1}{n}$ | Purely topology based, performs tangential and normal smoothing |
Cotangent | $w_{ij} = \cot(\alpha_{ij})+\cot(\beta_{ij})$ | Based on the area, reduce area to reduce curvature, normal smoothing, almost no tangential smoothing, linear precision, can be negative if alpha+beta>180 |
Shape preserving weights | $w_{ij} = \frac{1}{n}\sum_{k=0}^{n-1} \mu_{kj}$ | Summed up contributions of the barycentric coords., linear precision, positivity, normal smoothing |
$\mu_ij$ are the barycentric coordinates for the corresponding point.
Same smoothing operations as in the 2D case apply.
Physical interpretation
Iteration of the simple smoothing operator converges to a membrane surface with a $C^0$ boundary minimizing its surface area, obeying the Laplacian equation $\Delta f = f_{uu} + f_{uv} = 0$ .
Iteration of the advanced smoothing operator converges to a thin plate with a $C^1$ boundary minimizing its curvature, obeying the squared Laplacian equation $\Delta^2 f = f_{uuuu} + f_{uuvv} + f_{vvvv}=0$.
Error Control
$\epsilon$-Balls
Back-project smoothed points outside the $\epsilon$-radius of the original point.
Bad: isotropic
$\epsilon$-Slabs
Back-project smoothed points outside the $\epsilon$-ellipse of the original point
Good: anisotropic