350 likes | 366 Views
Surface Simplification. Dr. Scott Schaefer. Surface Simplification. Given a closed polygon model, reduce the number of polygons and maintain appearance of the shape. 5804 tris. 2500 tris. 1000 tris. 500 tris. Reducing Polygons.
E N D
Surface Simplification Dr. Scott Schaefer
Surface Simplification • Given a closed polygon model, reduce the number of polygons and maintain appearance of the shape 5804 tris 2500 tris 1000 tris 500 tris
Reducing Polygons • Perform local, topological operations to reduce number of polygons • Vertex removal
Reducing Polygons • Perform local, topological operations to reduce number of polygons • Vertex removal • Edge Collapse
Reducing Polygons • Perform local, topological operations to reduce number of polygons • Vertex removal • Edge Collapse • Face Collapse, …
Reducing Polygons • Perform local, topological operations to reduce number of polygons • Vertex removal • Edge Collapse • Face Collapse, …
Surface Simplification • How do we determine the order of edge collapse operations? • Where do we place new vertex after collapse?
Error Metrics For Simplification • QEF: Quadratic Error Function • Measures distance to infinite planes
Error Metrics For Simplification • QEF: Quadratic Error Function • Measures distance to infinite planes
Error Metrics For Simplification • QEF: Quadratic Error Function • Measures distance to infinite planes symmetric 3x3 3x1 1x1
Error Metrics For Simplification • QEF: Quadratic Error Function • Measures distance to infinite planes symmetric 3x3 3x1 1x1 Requires 10 floats independent of number of polygons!!!
Combining QEFS Add 10 numbers to combine QEFs!!!
Placement of Vertices Using QEFs • Place new vertex at minimum of error function
Placement of Vertices Using QEFs • Place new vertex at minimum of error function
Placement of Vertices Using QEFs • Place new vertex at minimum of error function
Placement of Vertices Using QEFs • Place new vertex at minimum of error function Not invertible in flat areas or straight edges!!!
Placement of Vertices Using QEFs • Place new vertex at minimum of error function Pseudoinverse minimizes |v|
Placement of Vertices Using QEFs • Let where c is a point we want to minimize the distance to
Placement of Vertices Using QEFs • Let where c is a point we want to minimize the distance to
Placement of Vertices Using QEFs • Let where c is a point we want to minimize the distance to
Placement of Vertices Using QEFs • Let where c is a point we want to minimize the distance to
Plane-Based Quadratic Error Function • Compact representation (10 numbers) • Fast to combine multiple functions (addition) • Relatively easy to minimize (pseudoinverse) • Suffers from numerical instabilities
Surface Simplification Algorithm • Build QEFs for each vertex • For each edge • Compute combined QEF and error • Insert edge into priority queue sorted by error • While poly # > target # • Collapse edge
Surface Simplification: Edge Collapse • Place new vertex at minimizer of QEF
Surface Simplification: Edge Collapse • Place new vertex at minimizer of QEF • QEF of new vertex is combined QEF
Surface Simplification: Edge Collapse • Place new vertex at minimizer of QEF • QEF of new vertex is combined QEF • Remove all edges touching collapsed edge from priority queue
Surface Simplification: Edge Collapse • Place new vertex at minimizer of QEF • QEF of new vertex is combined QEF • Remove all edges touching collapsed edge from priority queue • Recompute QEF/error for all edges touching new vertex and insert into priority queue
Surface Simplification: Lazy Method • Place new vertex at minimizer of QEF • QEF of new vertex is combined QEF • Mark all edges touching collapsed edge as dirty
Surface Simplification: Lazy Method • Place new vertex at minimizer of QEF • QEF of new vertex is combined QEF • Mark all edges touching collapsed edge as dirty • Mark edges to be removed as invalid
Surface Simplification: Lazy Method • Place new vertex at minimizer of QEF • QEF of new vertex is combined QEF • Mark all edges touching collapsed edge as dirty • Mark edges to be removed as invalid • When removing an edge from the priority queue, throw away if invalid. If dirty, recompute QEF and insert into priority queue
Surface Simplification: Edge Collapse • Edge collapse may alter topology of surface • Test for topology change and exclude unsafe edge collapses • Unsafe edge may become safe after another collapse • Alternatively, perform two edge collapses
Surface Simplification: Edge Collapse • Edge collapse may alter topology of surface • Test for topology change and exclude unsafe edge collapses • Unsafe edge may become safe after another collapse • Alternatively, perform two edge collapses unsafe edge collapses
Surface Simplification: Edge Collapse • Edge collapse may alter topology of surface • Test for topology change and exclude unsafe edge collapses • Unsafe edge may become safe after another collapse • Alternatively, perform two edge collapses
Surface Simplification • Extremely fast • Somewhat memory intensive • Limits maximum surface size • Greedy algorithm • Does not guarantee optimal sequence of edge collapses!!!