Mesh Processing§

author:David Coeurjolly

Mesh representation§

Overview§

Rough definition

Def.

A mesh is a piecewise linear geometrical structure embedded in \mathbb{R}^d

Usually, we assume

For instance, we can consider

_images/triangular.png _images/quad.png _images/tetra.png
Triangular meshes Quadtrilateral meshes Tetrahedral meshes

Overview (bis)§

Why meshes?

_images/introduction.jpg

Formal characterization 1: Simplifical Complexes§

Cellular structure

Vertices (0-cell), edges (1-cell), triangles (2-cell), tetrahedon (3-cell) \Rightarrow simplices

Def. Simplex

A k-simplex is a k-dimensional polytope which is the convex hull of its k + 1 affinely independent vertices

Def. Simplicial Complex

A simplicial complex \mathcal{K} is a set of simplices that satisfies the following conditions:

  1. Any face of a simplex from \mathcal{K} is also in \mathcal{K}
  2. The intersection of any two simplices \sigma_1, \sigma_2 \in \mathcal{K} is a face of both \sigma_1 and \sigma_2
_images/complexsimpl.png _images/notcomplex.png

Formal characterization 1: Simplifical Complexes (bis)§

\Rightarrow Strong topological structure (order, boundary, co-boundary, each simplex is topological ball)

\Rightarrow Many topological operations on meshes can be described as k-simplices operations

\Rightarrow Specific combinatoric makes implementation easy

Formal characterization 2: Cellular Complexes§

We remove the constraint that k-cells are defined by k+1-vertices

_images/cellcompl.png

..but..

Implementations§

_images/vertvert.png

Implementations§

_images/vertface.png

Implementations§

_images/vertface.png

Neighboring faces for triangular meshes can be stored in a explicit structure

AdjF: \quad f_i \rightarrow \{f_a,f_b,f_c\}

…but… not efficient for cellular meshes

Implementation: Winged-edge§

_images/winged.png

Implementation: Half-edge§

Double-linked list of edges

_images/halfedge.png

cgal.org

Implementation: Half-edge (bis)§

Core topological operations maintaining the structure

_images/euler_facet.png _images/euler_vertex.png
_images/euler_center.png _images/euler_loop.png
_images/add_facet1.png _images/add_facet2.png

cgal.org

Generic model: Combinatorial Maps§

Valid combinatorial model in any dimension

_images/combmap2.png _images/combmap.png

cgal.org

Mesh processing examples§

Shape from mesh subdivision§

Principle

Start from a control mesh and apply local subdivision rules to generate finer object.

_images/subdiv_small.png

Subdivision rule

Main idea: from the subdivison mechanism we can prove that the limit surface is (C^1, C^2,…)

Related to B-spline schemes

Examples§

_images/catmull.png _images/loop.png _images/doosabin.png

(resp. Catmull-Clark, Loop, Doo-Sabin)

Mesh simplification§

Principle

Optimize the size of input mesh removing unnecessary triangles

More formally

What kind of shape metric d ?

_images/sphere.png

Simple Example§

Local metric evaluation

_images/schroeder.png _images/res-schroeder.png

Fast and easy implement but

Mesh parametrization§

Idea

Parametrized a complex mesh (2-manifold) on a 2D parameter space [U,V]

Issues

Many applications

  • Texture mapping
  • Geometry processing
  • Remeshing
_images/conformalTexture.png

Mesh parametrization example§

Conformal Parametrization

  • Angle preserving transformation in complex plane
_images/conformal.png

Discrete formulation

Defs.

Two meshes \mathcal{M} \mathcal{M}' with same topology are (conformally) equivalent iff \exists \{u_i\} such that

\tilde{l}_{ij} = e^{(u_i + u_j)/2} l_{ij}

or equivalently (logspace)

\tilde{\lambda}_{ij} = \lambda_{ij} + u_i + u_j

\Rightarrow linear formulation

Mesh parametrization example§

Topological issues

_images/conformalintro.png

Practical solution: Cut and Open

_images/cut.png

Mesh Compression§

Idea

Half-edge or Vertex-Edge data structure contains redundant information that can be compressed

We want to

Example: Triangular strip

_images/strip.png

<see blackboard>