Loading...

PPT – Polygonal Mesh Data Structure and Processing PowerPoint presentation | free to download - id: 12ad15-YmY2O

The Adobe Flash plugin is needed to view this content

Polygonal Mesh Data Structure and Processing

- Chiew-Lan Tai

What is a Mesh?

What 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

What 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

What 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)

Orientation 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.

Orientation 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

Euler Formula

- The relation between the number of vertices,

edges, and faces. - where
- V number of vertices
- E number of edges
- F number of faces

Euler 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

Euler 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

Data Structure

Neighborhood Relations

Neighborhood 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

Choice 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

Choice 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)

Half-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

Half-edge data structure example

Half-Edge Data Structure

Half-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 vertices adjacent to vertex

v.

/ Assume closed mesh and using counterclockwise

order / HalfEdge he v.he HalfEdge curr

he output (curr.twin.start) while

(curr.twin.next ! he) curr

curr.twin.next output (curr.twin.start)

Progressive mesh

Progressive 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)

Traditional 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, ...)

Progressive Mesh Representation

M0 base mesh

M1

M175

Mn Original mesh

Simplification Edge Collapse

- Idea apply a sequence of edge collapses

ecol(vs ,vt , vs )

vt

vl

vr

vl

vr

vs

vs

Simplification Edge Collapse

M0

M1

M175

Mn

ecol0

ecoli

ecoln-1

M0

Mi

Reconstruction Vertex Split

- Invertible lossless!

attributes

vspl(vs ,vl ,vr , vs ,vt , )

vt

vl

vr

vl

vr

vs

vs

Reconstruction Vertex Split

M0

M1

M175

Mn

vspl0

vspli

vspln-1

M0

Mi

Progressive Mesh Benefits

PM

lossless

vspl

- efficient
- continuous-resolution
- space-efficient
- progressive

- single-resolution

- Optimization process
- off-line process
- various metrics (could use simpler heuristics)

Application Mesh compression

12964 faces

1000 faces

Application Progressive Transmission

Transmit the records progressively

time

M0

vspl0

vspl1

Receiver displays

M0

Application Selective refinement

M0

vspl0

vspl1

vspli-1

vspln-1

(e.g. view frustum)

Property Vertex Correspondence

Mc

Mf

M0

v1

v1

Mn

v2

v2

ecol

ecol

v3

v3

v4

ecol

v5

v6

v7

v8

ecol(vs ,vt , vs )

Application 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

Mesh Simplification

References

- Garland and Heckbert, Surface Simplification

Using Quadric Error Metrics, Siggraph 97

Applications

- 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)

Introduction

- 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

Basic 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

Bottom-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

Local 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

Operator Edge Collapse

Full-edge collapse vnew optimized position

Half-edge collapse vnew va or vb

Operator 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

Operator Edge Collapse

Beware topological inconsistence!

A manifold mesh may become non-manifold due to

edge collapse

Operator Vertex-pair Collapse

Vertex-pair collapse

va

vnew

vb

Enables closing of holes and tunnels changes

topology

Operator 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.

Comparisons

- 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

Priority 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

Error 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

Quadric 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

Quadric 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

Quadric 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

Quadric Error Metric (QEM)

Ellipsoids shown are level surfaces of the error

quadrics, illustrate the size and orientation

of error quadrics

Quadric Error Metric (QEM)

69,451 triangles

1,000 triangles

100 triangles

QEM Simplification

Mesh Fairing (Smoothing)

References

- 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

Mesh Fairing

Fairing operators for meshes

- Umbrella Kobbelt98
- Improved umbrella Desbrun99
- Taubin lm Taubin95
- Curvature flow Desbrun99
- etc

Definition 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

...

General 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

General 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

Umbrella 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

Improved 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)

Curvature 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

Curvature Flow Operator

- Vertices can only move along their normal
- no vertex drifting in parameter space

Comparisons

Extensions 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