title: Interactive HTML Slides
for Geometry Processing
subtitle: using the PMP library
author: Mario Botsch
affiliation: Graphics & Geometry Group
Bielefeld University
...
- Use the cursor keys left/right to navigate through the slides
- Click page number (bottom right) to open navigation menu
- Press f/ESC to enter/leave fullscreen mode
- Press o or ESC to enter/leave overview mode
- Double-click an item (e.g. an image) to zoom in/out.
- The demos are written in C++ using the PMP library
- They are cross-compiled to Javascript using emscripten
- They require support for WebGL 2
- See https://caniuse.com/webgl2
- The demos work nicely on Chrome, Chromium, or Firefox
- They do not run on Apple Safari in MacOS and iOS
- Subdivision scheme for triangle meshes
- Generates
$C^2$ continuous limit surfaces:-
$C^1$ for extraordinary vertices (valence ≠ 6) -
$C^2$ continuous everywhere else
-
Loop, Smooth Subdivision Surfaces Based on Triangles, M.S. thesis, 1987{target="_blank" .footer}
Loop, Smooth Subdivision Surfaces Based on Triangles, M.S. thesis, 1987{target="_blank" .footer}
- Subdivision scheme for arbitrary polygons
- Connect new face points to edge-vertex-edge triple
- Turns all polygon faces into quads
- Generates
$C^2$ continuous limit surfaces:-
$C^1$ for extraordinary vertices (valence ≠ 4) -
$C^2$ continuous everywhere else
-
DeRose et al, Subdivision Surfaces in Character Animation, SIGGRAPH 1998{target="_blank" .footer}
VSPACE(50px)
::: tiny
::: tiny
::: tiny $$ \vec{v} = \frac{k-2}{k} \vec{v}
- \frac{1}{k^2} \sum_{i=1}^k \vec{v}_i
- \frac{1}{k^2} \sum_{i=1}^k \vec{f}_i $$ ::: :::
DeRose et al, Subdivision Surfaces in Character Animation, SIGGRAPH 1998{target="_blank" .footer}
{ #demo width=1000px height=550px }
[Model created using Blender, original from Willem-Paul van Overbruggen]{.footer}
- Continuous PDE:
$\frac{\partial \vec{x}}{\partial t} ;=; \lambda \Delta \vec{x}$ - Explicit integration per vertex:
$\vec{x}_i \leftarrow \vec{x}_i + \delta t , \lambda \Delta \vec{x}_i$
{ height=300px }
{ height=300px }
{ height=300px }
$$ \laplace \vec{x}\of{v_i} ;:=; \frac{1}{\abs{\set{N}1\of{v_i}}} \sum{v_j \in \set{N}_1\of{v_i}} \left( \vec{x}\of{v_j} - \vec{x}\of{v_i} \right) $$
- Properties
- simple and efficient
- depends only on connectivity
- does not take into account geometry at all
Taubin, A Signal Processing Approach to Fair Surface Design, SIGGRAPH 1995{.footer target="_blank"}
$$ \laplace \vec{x}\of{v_i} ;:=; \frac{1}{2A\of{v_i}} \sum_{v_j \in \set{N}1\of{v_i}} \left( \cot \alpha{ij} + \cot \beta_{ij} \right) \left( \vec{x}\of{v_j} - \vec{x}\of{v_i} \right) $$
- Properties
- takes geometry and connectivity into account
- more accurate discretization
- can be derived through FEM
Meyer et al, Discrete Differential-Geometry Operators for Triangulated 2-Manifolds, VisMath III, 2003{target="_blank" .footer}
- Uniform Laplacian is an inaccurate discretization
- Might be non-zero even for planar meshes
- Smoothes geometry and triangulation
- Might be desired for mesh regularization
Desbrun et al, Implicit Fairing of Irregular Meshes using Diffusion and Curvature Flow, SIGGRAPH 1999{target="_blank" .footer}
- Let's write the position update in matrix notation
- Write all points
$\vec{x}_i^{(t)}$ in a large vector/matrix:$$\vec{X}^{(t)} = \trans{\left( \vec{x}_1^{(t)}, \ldots, \vec{x}_n^{(t)} \right)} \in \R^{n\times 3}$$ - Matrix version of explicit integration
$$\vec{X}^{(t+1)} = (\vec{I} + \delta t , \lambda \vec{L}) , \vec{X}^{(t)}$$ - Matrix version of implicit integration
$$(\vec{I} - \delta t , \lambda \vec{L}) , \vec{X}^{(t+1)} = \vec{X}^{(t)}$$
HINT({{Easy to implement, but requires small
Desbrun et al, Implicit Fairing of Irregular Meshes using Diffusion and Curvature Flow, SIGGRAPH 1999{target="_blank" .footer}
{ #demo width=1000px height=600px }
VSPACE(50px)
- Specify target edge length
$L$ - Iterate a few times
-
Split edges longer than
$\frac{4}{3} L$ -
Collapse edges shorter than
$\frac{4}{5}L$ - Flip edges to get closer to valence 6
- Shift vertices by tangential relaxation
- Project vertices onto input mesh
-
Split edges longer than
Botsch & Kobbelt, A Remeshing Approach to Multiresolution Modeling, SGP 2004{target="_blank" .footer}
{ height=500px }
{ height=500px }
{ height=500px }
{ height=500px }
Botsch & Kobbelt, A Remeshing Approach to Multiresolution Modeling, SGP 2004{target="_blank" .footer}
- Adapt edge length to local curvature
- Compute maximum principle curvature on reference mesh
- Determine local target edge length from max-curvature
- Adjust split & collapse criteria accordingly
Dunyach et al, Adaptive Remeshing for Real-Time Mesh Deformation, EG 2013{target="_blank" .footer}
{ .autoplay .controls height=600px }
Dunyach et al, Adaptive Remeshing for Real-Time Mesh Deformation, EG 2013{target="_blank" .footer}
{ .autoplay .controls height=600px }
Dunyach et al, Adaptive Remeshing for Real-Time Mesh Deformation, EG 2013{target="_blank" .footer}
{ #demo width=1000px height=600px }
- Define feature edges / vertices
- Large dihedral angles
- Material boundaries
- Adjust local operators
- Don’t flip feature edges
- Collapse only along features
- Univariate smoothing
- Project to feature curves
- Don’t touch feature vertices