350 likes | 367 Views
Learn about advanced methods for reducing polygon count while maintaining shape appearance. Uncover edge collapse, vertex removal, and face collapse operations to streamline your models efficiently. Discover error metrics such as the Quadratic Error Function (QEF) and optimal vertex placement strategies. Dive into the Surface Simplification Algorithm, QEF usage, and the Lazy Method for seamless shape simplification. Explore how to ensure topological consistency while collapsing edges and leveraging memory usage for speed.
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!!!