Transcript Document
CSL 859: Advanced
Computer Graphics
Dept of Computer Sc. & Engg.
IIT Delhi
Mesh
List of triangles
Each is a triplet of Vertices
Euler’s relation:
Each is an array of attributes
V + F -2 = E
Adjacency list
List of vertices
List of “pointers”
A vertex referred ~6 times (closed model)
Vertex & Topology
Vertex Attributes
..A..
..B..
..C..
..D..
..E..
..F..
What order should
we choose?
C
Topology
015
135
123
534
654
056
Post vertex shader cache
D
B
E
F
A
G
Triangle Strip
Vertex Attributes
..A..
..B..
..C..
..D..
..E..
..F..
C
D
B
Topology
ABFDE
AFGE
BCD
E
F
A
Can we turn any given
model into a single strip?
Would that eliminate the
need for storing topology?
G
Post Shader Cache
Perfect Triangle Strip of n triangles =>
1 new vertex per triangle
n-2 cache misses
Can we do better?
Euler’s law: V + F = E + 2
V ~ 0.5F (E = 1.5F for closed model)
Yes (Ideal: 0.5verts/triangle)
[Chhugani & Kumar, I3D 2007]
Vertex Arrays
Array of structures
Better triangle locality
Structure of arrays
Better shader locality
V0
xyzuvabc
V1
xyzuvabc
x0 x1 x2 x3
y0 y1 y2 y3
Half-Edge Data Structure
Vertex List
..V0..
..V1..
..V2..
..V3..
.
.
Face List
E0 E2 E1
E5 E4 E3
.
.
Edge List
V0 V1, F0, E1 E2, E5
..
V1 V0, F1, E3 E4, E0
..
V1
E2
F0
E1
E5
E3
F1
E0
E4
V0
Winged-Edge Data Structure
Vertex List
Face List
Edge List
..V0.., E0
..V1.., E0
..V2.., E1
..V3.., E4
.
.
E0
E4
.
.
V0 V1, F0 F1, E1 E2, E3 E4
.
.
Edge is oriented based on
one of its faces: left or right
V1
E3
F1
E2
F0
E1
E0
E4
V0
Mesh Simplification
Ideally, the change is incremental
courtesy H. Hoppe
Nominal Framework
Pre-processing
Create and store levels in a data-structure
Rendering time
Decide the appropriate detail
Coarse or fine-grained
Output count or approximation error
Traverse DS to generate that detail
Render
Competing Goals
Computational Efficiency
Some pre-processing
Storage Efficiency
Quality
Error metrics
screen space vs object space
Geometry, attributes, appearance
Global vs local optimization
local may be faster
global may generate closer approximations
Attributes
Color
Normal Vectors
Texture Coordinates
Curvature
Material Properties
Topology Considerations
Manifold vs non-manifold
Topology preservation
important in some areas
if topology is changed, then we can:
close holes in objects
join disconnected components
Shape and attribute appearance more
important than topology
Possible Algorithm?
Subdivide space into cells
Choose a vertex to represent each cell
For each pair of cells
If two vertices in two cells have an edge
Connect the representative vertices
Borel, Rossignac [1993]
Reduce Geometry Count
Remove a vertex
That leave a hole
Retriangulate the hole
Schroeder et al., 1992
Simple Operation
Collapse edges, one at a time
ecol(vs ,vt , vs’ )
vt
vr
vl
vs
vl
v’s
vr
Simplification
13,546
^
n
M=M
ecoln-1
500
152
M175
150
M1
ecoli
M0
ecol0
courtesy H. Hoppe
Inverse?
parameters
vspl(vs ,vl ,vr , vs’ ,vt’ ,…)
v’t
vl
vs
vr
vr
vl
v’s
Reconstruction
150
152
M0
500
M1
vspl0
13,546
^
Mn=M
M175
… vspli …
vspln-1
Progressive Mesh (PM) representation
courtesy H. Hoppe
Continuous LOD
From PM, extract Mi of any size
3,478 faces?
M0
vspl0
vspl1
vspli-1
vspln-1
3,478
Mi
M0
Mi
^
Mn=M
courtesy H. Hoppe
Vertex Correspondence
Mn
Mf
Mf-1
Mf-2
Mc
v1
v2
v3
v4
v5
v6
v7
v8
v1
v2
v3
v4
v5
v6
v7
v1
v2
v3
v4
v5
v6
v1
v2
v3
ecol
ecol
ecol
M0
courtesy H. Hoppe
Space Overhead
vspl(vs ,vl ,vr , v’s ,v’t ,…)
v’t
vl
vs vr
vl
v’s
vr
Attrib deltas:
vt -’ vs
vs -’ vs
…
Topology:
Index of v
s
Pair of index offsets
Selective Refinement
M0
What’s the problem?
vspl0
vspl1
vspli-1
vspln-1
courtesy H. Hoppe
Parent-Child Correspondence
vs
vsplit
vt
vu
Vertex Hierarchy
PM: M0
vspl0
vspl2
v1
M0
v10
Mn v12
vspl1
vspl3
vspl4
v2
v11
v4
v13
[Xia & Varshney 96]
v3
v5
v6
v14
vspl5
v8
v7
v15
v9
Selective Refinement
M0
vspl0
vspl2
v1
M0
v10
v12
vspl1
vspl3
vspl4
v2
v11
v4
v13
selectively refined mesh
v3
v5
v6
v14
vspl5
v8
v9
v7
v15
Restrictions?
Dependencies
vsplit
vl
vs
vr
v’t
vr
vl
v’s
ecol
vsplit legal if vs, vl , and vr present
ecol legal if local neighbors present
[Xia & Varshney 96]
Consistency
vsplit
fn1
fn3
vs
fn0
fn2
ecol
fn1
v’u
fn0
v’t
fn3
fn2
vsplit legal if:
vs is active
fn0,fn1,fn2,fn3 are active
ecol legal if:
[Hoppe 97]
v’s,v’t are active
fn0,fn1,fn2,fn3 are adjacent
Rendering Algorithm
Start with the active front in previous frame.
For each vertex, decided refine or coarsen
If legal, perform operation, otherwise:
Exploits frame coherence
Make vertex split legal by generating necessary
vertices
Leave Edge collapses alone
Amortize?
At each frame apply only a fraction of the eligible
ops
Rendering Algorithm
v1
M0
v10
v12
v2
v11
v4
v13
previous mesh
v3
v5
v6
v8
v9
v7
dependency
v14
v15
new mesh
LOD Algorithms
Simplification operator
Where should it be applied
No optimization
e.g., uniform grid cells
Greedy optimization
Sort edge collapses by error
Lazy optimization
Re-insert modified edges after each step
Re-insert a modified edge only when in front
Local vs Global optimization
Error Metric
Preserve appearance:
Geometric shape
Scalar fields (e.g. color)
Discontinuity curves
E
(e
shape
face areas
S
points
escalars )dA
(e
disc
disc. edges
)dL
S
points
courtesy H. Hoppe
Measuring Error
Geometric error
Distance between the original and
simplified surface?
Volume between the surfaces?
Visual error
Color, normal, & texture distortion
Silhouettes, background illumination
Semantics
Many others
Measuring Geometric Error
Surface-surface
Hausdorff distance
Vertex-surface vs
Vertex-plane
Vertex-vertex
Average distance or Max distance
Quadric Error
[Garland & Heckbert] 1998
Measure error by deviation from shape
Vertices are at intersection of planes
v’t
Do not collapse edges
Merge vertices
v’s
Quadric Error Metric
Plane equation for a face:
Ax By Cz D 0
p:
Distance to vertex v :
pT × v [A
Distance to vertex v :
D( v )
x
y
D ]×
1z
B C
( p
T
v) 2
p planes ( v )
(v
T
p planes ( v )
T
p )( p v )
v
T
p planes ( v )
T
( pp )v
v ppT
pplanes ( v )
T
÷
÷v
Quadric Error (cont’d)
A2
AB
T
pp
AC
AD
AC AD
BC BD
C2 CD
2
BD CD D
AB
B2
BC
Sum over all planes intersecting at v
Call it Q, the quadric error
D(v) vT (Q)v
Quadrics Based Simplification
Maintain quadric Q for every vertex
v1
Assign Edge Quadrics
Q1
v2
Q Q1 Q2
Sort edges based on quadric error
Need position of resulting vertex
D(v) vT (Q)v
One of original vertices or mid-point?
Q2
Optimal Vertex Placement
Minimize Q to calculate optimal
coordinates for placing new vertex
q11
q
12
V
q13
0
q12
q13
q 22
q 23
q 23
q33
0
0
q14
q 24
q34
1
1
0
0
0
1
Boundary Preservation
Label boundaries
Form boundary plane perpendicular
to face
Convert planes into quadrics
Weighted sum of quadrics
Scale border plane quadric higher
Preventing Mesh Inversion
Preventing foldovers:
7
8
8
2
2
10
A
9
3
A
9
5
6
3
merge
1
4
10
6
4
5
Adjacent face normals should not flip
Disallow foldover, or simply weight heavily
Quadric Error Metric
Pros:
Reasonably fast
Good fidelity even for drastic reduction
Robust -- handles non-manifold surfaces
Aggregation -- can merge objects
Cons:
Introduces non-manifold surfaces
User controls virtual-edge collapse threshold
Increased running time due to search for potential pairs
Correct value varies with model density
Needs extension to handle color (7x7 matrices)
Result – Bunny Model
69,451 triangles
1,000 triangles
100 triangles
1.4% of original size
0.14% of original size
courtesy Garland, Heckbert
Result – Terrain Model
199,114 faces
999 faces (46 secs)
courtesy Garland, Heckbert
Method Comparison
Original model
(4,204 faces)
Uniform Vertex Clustering
(262 faces)
Edge Contractions
(250 faces)
Pair Contractions
(250 faces)
courtesy Garland, Heckbert
Image-Driven Simplification
[Lindstrom & Turk
2000]
Compare
simplifications to
original via images
Collapse edge
Render from many views
Evaluate difference
(need image metric)
“Unrender” and retry
Pick cheapest and apply
Image-Driven Simplification
Pros:
Preserves appearance
Does not need to trade off geometric
error against attribute error
Shading artifacts accounted for
Side effects:
Drastically simplifies invisible regions!
Image-Driven Simplification
Cons:
Very slow
Still many examples that breaks it:
Hard to know how many images is enough
Hard to know how to evaluate images (RMS vs
Bolin-Meyer)
Screen Space Error
Depends on location and orientation of
error vector
We don’t even store error vectors
Screen Space Error
y+ε sin θ
z+ε cos θ
εs
ε θ
y,z
y/z
Eye
y+ε sin θ
εs = z+ε
cos θ
Image
Plane
y/z
Screen Space Error
LOD
d
viewing
plane
p
r
eye
p
d
z
2
dr
2
2 z tan( )
2
Appearance Preservation
Preserve three appearance attributes:
Surface Position
Surface Curvature
Material Color
Each may require different sampling
Normals Undersampled
13,433 triangles
1,749 triangles
10 pixels of surface deviation
Normals Properly Sampled
13,433 triangles
1,749 triangles,
10 pixels of deviation
Recall
v2, c2, n2
v3, c3, n3
v1, c1, n1
v = vertex coordinate = (x,y,z)
c = color = (r,g,b)
n = normal = (nx,ny,nz)
Filters surface
position, colors,
and normals
Must filter all
three equally
Decoupled Representation
texture map
c2
c3 c1
v2, t2
v1, t1
v 3, t 3
v = vertex coordinate = (x,y,z)
t = texture coordinate = (u,v)
c = color = (r,g,b)
n = normal vector = (nx,ny,nz)
normal map
n2
n3 n1
Decoupled Approach
Simplification filters surface
position and texture coordinates
Color and normal attributes filtered
per-pixel (mip-mapping, etc.)
Sample Normal Map
polygonal surface patch
normal map
Texture Deviation Metric
mesh Mi
(i+1)st edge collapse mesh Mi+1
Xi
Xi+1
x
P
2D texture domain
ei,i+1(x) = || xi+1 - xi ||
Ei,i+1 = max ei,i+1(x)
xP
New Texture Coordinates
Invalid texnew
Valid choices lie in convex kernel
Texture Deviation Error
Texture Space
X
Ei ( X ) || X
1
T0 (Ti ( X )) ||
APS Levels-of-detail
7,809 tris
488 tris
975 tris
1,951 tris
3,905 tris
courtesy J. Cohen
Terrains
Uniform array of height values
May encode in raster formats (DEM,
GeoTIFF)
Store Z instead of color
Easy to interpolate to find elevations
Easy view culling
There also are TINs
Triangulated Irregular Networks
TINs
Fewer polygons needed
Adaptively sampled
Precisely model maxima, minima,
ridges, valleys, overhangs, caves
LOD Hierarchy Structures
QuadTree Hierarchy
BinTree Hierarchy
Quadtrees
Each quad is actually two triangles
Produces cracks and T-junctions
But simple
Bintrees
Binary Triangle tree
Right triangular irregular networks (RTIN)
longest edge bisection
Easier to avoid cracks and T-junctions
Neighbor must be at adjacent levels
Cracks and T-Junctions
Avoid cracks:
Convert cracks into T-junctions
Fill cracks with extra triangles
Avoid T-junctions:
Continue to simplify ...
Bin-tree and T-junction
Terrain as a Pyramid
•Terrain as mipmap pyramid
•LOD using nested grids
Coarsest Level
Finest Level
[Losasso & Hoppe 2005]
Geometry Clip Maps
Transition region
Insert “0 area” triangles
Damp refined vertices as they get close to
the coarser level
Geometry Clip Maps
Transition region
Insert 0 area triangles
Damp refined vertices as they get close to
the coarser level
Texture Mapping PM
[Sander et al, 2001]