Mesh Processing
Mesh representation
Overview
Rough definition
Def.
A mesh is a piecewise linear geometrical structure embedded in
Usually, we assume
- Meshes contain a combinatorial strucutre (no a soup of triangles)
- The geometry is mostly defined by vertices coordinates
For instance, we can consider
|
|
|
Triangular meshes |
Quadtrilateral meshes |
Tetrahedral meshes |
Overview (bis)
Why meshes?
- Provide topological information
- Useful in many applications: modeling, rendering, numerical simulation, …
Formal characterization 1: Simplifical Complexes
Cellular structure
Vertices (0-cell), edges (1-cell), triangles (2-cell), tetrahedon (3-cell) simplices
Def. Simplex
A k-simplex is a k-dimensional polytope which is the convex hull
of its k + 1 affinely independent vertices
Formal characterization 1: Simplifical Complexes (bis)
Strong topological structure (order, boundary, co-boundary,
each simplex is topological ball)
Many topological operations on meshes can be described as k-simplices operations
Specific combinatoric makes implementation easy
Formal characterization 2: Cellular Complexes
We remove the constraint that k-cells are defined by k+1-vertices
..but..
- Cells are not topological balls anymore
- restricted cases (CW-complexes)
- combinatorial characterization (Combinatorial Maps)
Implementations
- Iteration on vertices
- Neighboring vertices
- no explicit representation of faces
Implementations
- direct access to faces
- Mesh representation data structures on GPU
- Optional backlink from vertices to faces
- no easy access to faces neighbors
Implementations
Neighboring faces for triangular meshes can be stored in a explicit structure
AdjF:
…but… not efficient for cellular meshes
Implementation: Winged-edge
Implementation: Half-edge
Double-linked list of edges
- Orientation matters !
- Faces can be made implicit from half-edges cycles
- Geometry (vertices) is attached as membres of half-edges
- For example, cycling around vertex can be done by sequences of
{opposite/prev} operations on HS
cgal.org
Implementation: Half-edge (bis)
Core topological operations maintaining the structure
cgal.org
Generic model: Combinatorial Maps
Valid combinatorial model in any dimension
- darts
- involutions/permutations ()
on dart labels to encode the structure
- Formal constraints on involutions to ensure valid topological maps
cgal.org
Mesh processing examples
Shape from mesh subdivision
Principle
Start from a control mesh and apply local subdivision rules to
generate finer object.
Subdivision rule
- Several schemes
- 1 triangle -> 4 triangles
- 1 quad -> 4 quads
- …
- Interpolation function for new vertices positions
Main idea: from the subdivison mechanism we can prove that the
limit surface is (, ,…)
Related to B-spline schemes
Examples
(resp. Catmull-Clark, Loop, Doo-Sabin)
Mesh simplification
Principle
Optimize the size of input mesh removing unnecessary triangles
More formally
Compute with
and
What kind of shape metric d ?
Simple Example
Local metric evaluation
- For each vertex evaluate its distance to its tangent plane
- If the distance is less than , we remove the point
and triangulate its one-ring
Fast and easy implement but
- No global metric guarantee
- Topological must be ensured on local edits
Mesh parametrization
Idea
Parametrized a complex mesh (2-manifold) on a 2D parameter space
Issues
- Planar embedding may not exist for some shapes
- We would like the embedding to preserve some information (metric,
area, angles,…)
Many applications
- Texture mapping
- Geometry processing
- Remeshing
- …
|
|
Mesh parametrization example
Conformal Parametrization
- Angle preserving transformation in complex plane
|
|
Discrete formulation
Defs.
Two meshes with same
topology are (conformally) equivalent iff
such that
or equivalently (logspace)
linear formulation
Mesh parametrization example
Topological issues
- if is homeomorphic to a disk, there exist a
conformal map to plane [U,V]
- if is homeomorphic to a sphere, there exist a conformal map from to a unit sphere
- … but maps are harder to manipulate for high genus surfaces
Practical solution: Cut and Open
Mesh Compression
Idea
Half-edge or Vertex-Edge data structure contains redundant information
that can be compressed
We want to
- compress the geometry (with or without loss)
- compress the combinatorial structure
- We may be interested in streamed decompression
Example: Triangular strip
<see blackboard>
- Separate geometric + combinatorial encoders/decoders
- Joint encoders from signal represnetation of the meshes (wavelets,…)
- …