Upload
evan-glenn
View
216
Download
4
Embed Size (px)
Citation preview
Surface Simplification Using Quadric Error Metrics
Garland & HeckbertSiggraph 97
Vertex Clustering (Rossignac Borrel 1992)
2
What this is about
Related terms Level of detail Progressive mesh Polygon decimation Multiresolution modeling
3
Define the problem carefully
Mn: triangulated input modelMg: target approximation (criterion: desired face count or a maximum tolerable error)Context: multiresolution modelingTopology preservation: no guarantee In rendering, topologgy is less important
than overall appearance In particular, non-manifold regions can occur
4
Advantages
EfficiencyQualityGenerality As we will examine these carefully as
we go along (and we learned how to “sell” our
research)
5
Pair Contraction
Problems Definition of
pair Priority of pair Contraction
Book keeping Geometry
optimization: error analysis
6
Approximating Error with Quadrics
7
Error at vertex v
Plane Equation
Point-plane distance (signed)
= pTv
Symmetric matrix
Squared distance
vppv
vppvvpDTT
TTT
22
After Contraction
8
Find
In case it fails (to find the inverse), find any point along v1, v2
44342414
34332313
24232212
14131211
qqqq
qqqq
qqqq
qqqq
Q
Error Metric
Sum of squared distances to its incident planes Initial error is then zero
When contraction occurs, the new point assumes the planes from both verticesAnd it should be placed where the error is minimized(it also happens that) the error is linearly additive
The multiply count issue: argue … to get away??? (end of sec.5: sacrifice error for simplicity)
6.1 Evaluating Quote a formula (from Hoppe) to measure the distance
between approximate and original model
9
“Choose a heuristic to characterize the geometric error”
Algorithm
10
Result
Fig 5 & 6
11
12
13
Mesh Decimater in OpenMesh (ref, class)
Perform halfedge collapsing based ona priority queuePriority determined by “modules” considering
• More than one decimation module can be used. But a non-binary module must be registered with the decimater• (discussion in mailing list)
14
Aspect ratioEdge lengthHausdorffindepedentSets
Normal deviationNormal flippingProgressive meshQuadric errorRoundness
Decimater in OpenMesh
Decimater.info (std::cout);Decimater.add (Module);DecimaterT (mesh);Decimater.decimate(); // reduce as much as possibleDecimater.decimate_to (n_vertices);Decimater.decimate_to_faces (nv, nf);
15
16