Title: Polygonal Mesh
1Polygonal Mesh Data Structure and Processing
2What is a Mesh?
3What is a Mesh?
- A Mesh is a pair (P,K), where P is a set of point
positions - and K is an abstract simplicial complex which
contains all topological information. - K is a set of subsets of
- Vertices
- Edges
- Faces
-
4What is a Mesh?
- Each edge must belong to at least one face, i.e.
- Each vertex must belong to at least one edge,
i.e. - An edge is a boundary edge if it only belongs to
one face
5What is a Mesh?
- A mesh is a manifold if
- Every edge is adjacent to one (boundary) or two
faces - For every vertex, its adjacent polygons form a
disk (internal vertex) or a half-disk (boundary
vertex)
Manifold
Non-manifold
- A mesh is a polyhedron if
- It is a manifold mesh and it is closed (no
boundary) - Every vertex belongs to a cyclically ordered set
of faces (local shape is a disk)
6Orientation of Faces
- Each face can be assigned an orientation by
defining the ordering of its vertices - Orientation can be clockwise or
counter-clockwise. - The orientation determines the normal direction
of face. Usually counterclockwise order is the
front side.
7Orientation of Faces
- A mesh is well oriented (orientable) if all faces
can be oriented consistently (all CCW or all CW)
such that each edge has two opposite orientations
for its two adjacent faces - Not every mesh can be well oriented.e.g. Klein
bottle, Möbius strip
non-orientable surfaces
8Euler Formula
- The relation between the number of vertices,
edges, and faces. - where
- V number of vertices
- E number of edges
- F number of faces
9Euler Formula
- Tetrahedron
- V 4
- E 6
- F 4
- 4 - 6 4 2
- Cube
- V 8
- E 12
- F 6
- 8 -12 6 2
- Octahedron
- V 6
- E 12
- F 8
- 6 -12 8 2
V 8 E 12 1 13 F 6 1 7 8 - 13 7 2
V 8 E 12 F 6 8 - 12 6 2
10Euler Formula
- More general rule
- where
- V number of vertices
- E number of edges
- F number of faces
- C number of connected components
- G number of genus (holes, handles)
- B number of boundaries
V 16 E 32 F 16 C 1 G 1 B 0 16 32
16 2 (1 - 1) - 0
11Data Structure
12Neighborhood Relations
13Neighborhood Relations
- For a vertex
- All neighboring vertices
- All neighboring edges
- All neighboring faces
- Knowing some types of relation,we can discover
other (but not necessary all)topological
information - e.g. if in addition to VV, VE and VF, we know
neighboring vertices of a face, we can discover
all neighboring edges of the face
14Choice of Data Structure
- Criteria for choosing a particular data structure
- Size of mesh ( of vertices and faces)
- Speed and memory of computer
- Types of meshes (triangles only, arbitrary
polygons) - Redundancy of data
- Operations to be preformed (see next slide)
- Tradeoff between updating and query
- More redundancy of data, faster query but slower
updating
15Choice of Data Structure
- Face-based data structure
- Problem different topological structure for
triangles and quadrangles - Edge-based data structure
- Winged-edge data structure
- Problem traveling the neighborhood requires one
case distinction - Half-edge data structure
- Aka doubly connected edge list (DCEL)
16Half-Edge Data Structure
- Each edge is divided into two half-edges
- Each half-edge has 5 references
- The face on left side (assume counter-clockwise
order) - Previous and next half-edge in counterclockwise
order - The twin edge
- The starting vertex
- Each face has a pointer to one of its edges
- Each vertex has a
- pointer to a half
- edge that has this vertex as the start vertex
17Half-edge data structure example
half-edge origin twin incident face next prev
e3,1 v2 e3,2 f1 e1,1 e3,1
e3,2 v3 e3,1 f2 e5,1 e4,1
e4,1 v4 e4,2 f2 e3,2 e5,1
e4,2 v3 e4,1 f3 e7,1 e6,1
18Half-Edge Data Structure
19Half-Edge Data Structure
- Here is another view of half-edge data structure.
- Next pointers provide links around each face in
counterclockwise (prev pointers can be used to go
around in clockwise) - Example finding all verticesadjacent to vertex
v.
/ Assume closed mesh and using counterclockwise
order / HalfEdge he v.heHalfEdge curr
heoutput (curr.twin.start)while
(curr.twin.next ! he) curr
curr.twin.next output (curr.twin.start)
20Progressive mesh
21Progressive Mesh
- References
- Hoppe, Progressive mesh, Siggraph 96
- Hoppe, View-dependent Refinement of Progressive
Meshes, Siggraph 97 - New representation of triangular meshes
- Simplify meshes through sequence of edge collapse
transformations - Record the sequence of inverse transformations
(vertex splits)
22Traditional Mesh Representation
mesh M
V
F
Vertex 1 x1 y1 z1 Vertex 2 x2 y2 z2
Face 1 2 3 Face 3 2 4 Face 4 2 7
(appearance attributes normals, colors,
textures, ...)
23Progressive Mesh Representation
M0 base mesh
M1
M175
Mn Original mesh
24Simplification Edge Collapse
- Idea apply a sequence of edge collapses
ecol(vs ,vt , vs )
vt
vl
vr
vl
vr
vs
vs
25Simplification Edge Collapse
M0
M1
M175
Mn
ecol0
ecoli
ecoln-1
M0
Mi
26Reconstruction Vertex Split
attributes
vspl(vs ,vl ,vr , vs ,vt ,)
vt
vl
vr
vl
vr
vs
vs
27Reconstruction Vertex Split
M0
M1
M175
Mn
vspl0
vspli
vspln-1
M0
Mi
28Progressive Mesh Benefits
PM
lossless
vspl
- efficient
- continuous-resolution
- space-efficient
- progressive
- Optimization process
- off-line process
- various metrics (could use simpler heuristics)
29Application Mesh compression
12964 faces
1000 faces
30Application Progressive Transmission
Transmit the records progressively
time
M0
vspl0
vspl1
Receiver displays
M0
31Application Selective refinement
M0
vspl0
vspl1
vspli-1
vspln-1
(e.g. view frustum)
32Property Vertex Correspondence
Mc
Mf
M0
v1
v1
Mn
v2
v2
ecol
ecol
v3
v3
v4
ecol
v5
v6
v7
v8
ecol(vs ,vt , vs )
33Application Smooth Transitions
Correspondence is a surjection (onto function)
Mf
Mc
v1
v1
v2
v2
Mfc
v3
v3
v4
V
F
V
v5
v6
can form a smooth visual transition geomorph
v7
v8
34Mesh Simplification
35References
- Garland and Heckbert, Surface Simplification
Using Quadric Error Metrics, Siggraph 97
36Applications
- Create progressively coarser versions of objects
(levels of detail LOD) render less detailed
version for small, distant, unimportant parts of
scene - Inverse decimation for progressive transmission
- Multiresolution decomposition (for compression,
editing) decompose an original mesh M0 into a
low frequency component (simplified mesh Ms) and
a high frequency component (M0 Ms)
37Introduction
- LOD frameworks
- discrete LOD
- continuous LOD
- view-dependent (anisotropic) LOD
- Simplification algorithms can be
- Fidelity-based for generating accurate image
- Budget-based simplify until a targeted number
of polygons for time-critical rendering
38Basic Approaches
- Bottom-up approaches (this lecture)
- Start with the original fine mesh
- Remove elements (vertices, edges, triangles,
tetrahedra) and replace with fewer elements - Top-down approaches (wavelet, subdivision-based)
- Start with very coarse approximation of original
mesh - New points are inserted to generate better meshes
39Bottom-up approaches
- Most methods operate from a priority queue of
element - Vertices, edges, triangles, tetrahedra are
ordered in a priority queue and process
one-by-one as they are de-queued - The cost function, which assigns the priority,
determines the order of processing
40Local simplification operators
- Edge collapse (full edge and half edge collapse)
Hoppe96, Xia96, Bajaj99 - Vertex-pair collapse Shroeder97,
Garland97,Popovic97 - Triangle collapse Hamann94, Gieng98
- Vertex removal Shroeder92
- etc
41Operator Edge Collapse
Full-edge collapse vnew optimized position
Half-edge collapse vnew va or vb
42Operator Edge Collapse
Beware triangle folding!
Lead to visual artifacts, e.g., illumination and
texture discontinuities.
Can be detected by measuring the change in the
normals of the corresponding triangles before and
after an edge collapse
43Operator Edge Collapse
Beware topological inconsistence!
A manifold mesh may become non-manifold due to
edge collapse
44Operator Vertex-pair Collapse
Vertex-pair collapse
va
vnew
vb
Enables closing of holes and tunnels changes
topology
45Operator Triangle Collapse
triangle collapse
va
vc
vnew
vb
A triangle collapse is equivalent to two edge
collapses. Triangle collapse hierarchies are
shallower, but also less adaptable since this is
a less fine-grained operation.
46Comparisons
- Collapse operators simplest to implement
well-suited for implementing geomorphing between
successive levels of detail - Half-edge collapse advs less triangles are
modified than full-edge collapse vertices are a
subset of original mesh gt simplifies bookkeeping
47Priority Queue Methods
- Using the cost function (priority), prioritize
all the elements in the mesh - Collapse the element with the lowest cost
(priority) - Readjust the priorities of all the elements in
the queue affected by the collapse
48Error Metrics
- Usually incorporate some form of object-space
geometric error measure - Object-space error measure may be converted to a
screen-space distance during runtime - May also incorporate measure of attribute errors
(color, normal and texture coordinate) - Measure incremental error or total error
49Quadric Error Metric (QEM)(Garland and Heckbert,
Siggraph 97)
- Maybe the best method
- Fast error computation, compact storage, good
visual quality - Measures sum of squared vertex-plane distances
50Quadric Error Metric (QEM)
- P1 (a b c d) representing a plane ax by cz
d 0, and v vx vy vz 1 - s1 distance from vertex v to plane P1
- squared vertex-plane distances
- s2 (pv)2 (vTp)(pTv)
- Total square distances
The quadratic form Qp is a 4x4 symmetric matrix,
represented using 10 unique floating point
numbers. Summing all the matrices gives Qv
51Quadric Error Metric (QEM)
- Introduces QEM to prioritize collapses
- a 4x4 matrix Q is associated with each vertex
- Error of a vertex v is vTQv
- Initially, compute matrices Q for all vertices
- Compute the collapse cost of each edge by summing
the QEM of its two vertices - The error (cost) of collapsing the edge (va , vb
)? v is vT(QaQb)v - Repeat
- Collapse the edge with least cost
- Update collapse costs of v and its neighborhood
- Until user requirement is achieved
52Quadric Error Metric (QEM)
Ellipsoids shown are level surfaces of the error
quadrics, illustrate the size and orientation
of error quadrics
53Quadric Error Metric (QEM)
69,451 triangles
1,000 triangles
100 triangles
54QEM Simplification
55Mesh Fairing (Smoothing)
56References
- Taubin, A signal processing approach to fair
surface design, Siggraph 95. - Kobbelt et al., Interactive multi-resolution
modeling on arbitrary meshes, Siggraph 98 - Desbrun et al. Implicit fairing of irregular
meshes using diffusion and curvature flow,
Siggraph 99
57Mesh Fairing
58Fairing operators for meshes
- Umbrella Kobbelt98
- Improved umbrella Desbrun99
- Taubin lm Taubin95
- Curvature flow Desbrun99
- etc
59Definition 1-ring Neighbors of a Vertex
p1
pn
p
p2
1-ring neighbors of p, N1(p)p1,p2,,
pn Valence of p is n
...
60General Idea
- Predict a vertex position from its neighbor
- for a vertex vi and its neighbor vj, let the
weight be wij such that - For vertex vi, predict
- Iterate through all vertices and update the
positions
where Is a specific normalized curvature
operator, ? is a damping factor
61General idea
- Two ways to do smoothing
- Explicit updating find each and update
each - Compute all , solve for all xi as a linear
system - Let K I W, then in matrix form, ?X - K
X
62Umbrella Operator
- Pros simple, fast work well for meshes with
small variation in edge length and face angles - Cons
- for irregular connectivity meshes lead to
artifacts - weights only based on the connectivity, not the
geometry (e.g., edge length, face area, angle
between edges) - vertex drifting problem, smoothing affects
parametrization, not just geometry
63Improved Umbrella Operator
- Scale-dependent umbrella operator
- Still has a non-zero tangential component that
causes vertex drifting - Discussion no longer linear (linearized by
assuming the edge lengths do not change during
one smoothing round)
64Curvature Flow Operator
- A noise removal procedure that does not depend on
parametrization - Vertices move along the surface normal with a
speed equal to the mean curvature - Geometry is smoothed without affecting the
sampling rate
aj
xi
xj
bj
65Curvature Flow Operator
- Vertices can only move along their normal
- no vertex drifting in parameter space
66Comparisons
67Extensions and Applications
- Volume preservation
- Fairing meshes with constraints
- Stopband filters and enhancement
- Multiresolution editing of arbitrary meshes
- Non-uniform subdivision
- Mesh edge detection
- Fairing of non-manifold models