Mesh Smoothing

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.


Write above as vector-matrix produkt:

\begin{align} [p_i] \leftarrow [p_i] + [\Delta p_i] = (I + \lambda U)[p_i] \end{align}
  • $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]$
$(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
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


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


Back-project smoothed points outside the $\epsilon$-radius of the original point.
Bad: isotropic

\begin{align} p_i \leftarrow p_i^* + \frac{\epsilon}{||p_i-p_i^*||}(p_i-p_i^*) \end{align}


Back-project smoothed points outside the $\epsilon$-ellipse of the original point
Good: anisotropic

\begin{align} p_i \leftarrow p_i^* + \frac{\epsilon}{|\langle n_i^*, p_i-p_i^* \rangle |}(p_i-p_i^*) \end{align}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.