Transcript ppt
Level of Detail:
Generating LODs
David Luebke
University of Virginia
Generating LODs
Simplification operator:
– Cell collapse
– Vertex removal
– Edge collapse
Full edge collapse
Half edge collapse
Vertex-pair merge a.k.a. “virtual edge collapse”
Generating LODs
Simplification operator:
– Cell collapse
– Vertex removal
– Edge collapse
Full edge collapse
Half edge collapse
Better fidelity (show why)
Less memory
Sort vertices, tris into VAR array for fast rendering
Vertex-pair merge a.k.a. “virtual edge collapse”
Merge separate objects
Generating LODs
Simplification algorithm
– Outer optimization: where to simplify
No optimization
Greedy optimization
Ex: uniform grid cells
Ex: floating cell clustering
Ex: sort edge collapses by error, resort on collapse
Lazy optimization
Ex: sort edge collapses by error, dirty bit on collapse
– Inner optimization: how to simplify
Ex: placement of new vertex, retriangulation
– Coming up: a practical example algorithm
Generating LODs
Measuring error
–
–
–
–
Hausdorff distance
METRO
Quadrics (coming up)
Image-based ideas
Quadric Error Metric
Minimize distance to all planes at a vertex
Plane equation for each face:
v
p:
Ax + By + Cz + D = 0
Distance to vertex v :
p v = [A
T
B C
x
y
D ]
1z
Squared Distance
At a Vertex
D( v ) =
( p
T
v) 2
(v
T
p )( pT v )
p planes ( v )
=
p planes ( v )
v
=
T
( ppT )v
p planes ( v )
= v ppT
pplanes ( v )
T
v
Quadric Derivation
(cont’d)
ppT is simply the plane equation squared:
A2
AB
T
pp =
AC
AD
AD
BD
BC C2 CD
2
BD CD D
AB
B2
AC
BC
The ppT sum at a vertex v is a matrix, Q:
D( v ) = vT (Q )v
Using Quadrics
Construct a quadric Q for every vertex
v2
v1
The edge quadric:
Q1
Q
Q2
Q = Q1 + Q2
Sort edges based on edge cost
– Suppose we contract to v1:
– v1’s new quadric is simply:
T
=
edge cost v1 Qv1
Q
Optimal Vertex Placement
Each vertex has a quadric error metric Q
associated with it
– Error is zero for original vertices
– Error nonzero for vertices created by merge
operation(s)
Minimize Q to calculate optimal
coordinates for placing new vertex
– Details in paper
– Authors claim 40-50% less error
Boundary Preservation
To preserve important boundaries, label
edges as normal or discontinuity
For each face with a discontinuity, a plane
perpendicular intersecting the
discontinuous edge is formed.
These planes are then converted into
quadrics, and can be weighted more
heavily with respect to error value.
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
Calculate the adjacent face normals, then
test if they would flip after simplification
If foldver, that simplification can be
weighted heavier or disallowed.
Quadric Error Metric
Pros:
– Fast! (70K poly bunny to 100 polygons in
seconds)
– Good fidelity even for drastic reduction
– Robust -- handles non-manifold surfaces
– Aggregation -- can merge objects
Quadric Error Metric
Cons:
– Introduces non-manifold surfaces
(bug or feature?)
– Tweak factor t is ugly
Too large: O(n2) running time
Correct value varies with model density
– Needs further extension to handle color (7x7
matrices)
Measuring Error
Most LOD algorithms measure error
geometrically
– What is the distance between the original and
simplified surface?
– What is the volume between the surfaces?
– Etc
Really this is just an approximation to the
actual visual error, which includes:
– Color, normal, & texture distortion
– Importance of silhouettes, background
illumination, semantic importance, etc etc etc
Measuring Geometric
Error
Hausdorff distance
Average distance
Surface-surface vs
vertex-surface vs
vertex-plane vs
vertex-vertex
Quadric error metrics: vertex-plane
measure that works well in practice