�������������������������������� ������������������������������������ ������������������������������� ������������������������ ���������������������������������� ���������������������������������������� ��������� ��� ���������� ���������� ���������������� Mesh Decimation Mark Pauly
Applications • Oversampled 3D scan data ~150k triangles ~80k triangles Mark Pauly - ETH Zurich 280
Applications • Overtessellation: E.g. iso-surface extraction Mark Pauly - ETH Zurich 281
Applications • Multi-resolution hierarchies for – efficient geometry processing – level-of-detail (LOD) rendering Mark Pauly - ETH Zurich 282
Applications • Adaptation to hardware capabilities Mark Pauly - ETH Zurich 283
Size-Quality Tradeoff error size Mark Pauly - ETH Zurich 284
Outline • Applications • Problem Statement • Mesh Decimation Methods – Vertex Clustering – Iterative Decimation – Extensions – Remeshing – Variational Shape Approximation Mark Pauly - ETH Zurich 285
Problem Statement • Given: M = ( V , F ) M � = ( V � , F � ) • Find: such that |V � | = n < |V| �M − M � � 1. and is minimal, or |V � | �M − M � � < � 2. and is minimal M � M Mark Pauly - ETH Zurich 286
Problem Statement • Given: M = ( V , F ) M � = ( V � , F � ) • Find: such that |V � | = n < |V| �M − M � � 1. and is minimal, or |V � | �M − M � � < � 2. and is minimal hard! → look for sub-optimal solution Mark Pauly - ETH Zurich 287
Problem Statement • Given: M = ( V , F ) M � = ( V � , F � ) • Find: such that |V � | = n < |V| �M − M � � 1. and is minimal, or |V � | �M − M � � < � 2. and is minimal • Respect additional fairness criteria – normal deviation, triangle shape, scalar attributes, etc. Mark Pauly - ETH Zurich 288
Outline • Applications • Problem Statement • Mesh Decimation Methods – Vertex Clustering – Iterative Decimation – Extensions Mark Pauly - ETH Zurich 289
Vertex Clustering • Cluster Generation • Computing a representative • Mesh generation • Topology changes Mark Pauly - ETH Zurich 290
Vertex Clustering • Cluster Generation – Uniform 3D grid – Map vertices to cluster cells • Computing a representative • Mesh generation • Topology changes Mark Pauly - ETH Zurich 291
Vertex Clustering • Cluster Generation – Hierarchical approach – Top-down or bottom-up • Computing a representative • Mesh generation • Topology changes Mark Pauly - ETH Zurich 292
Vertex Clustering • Cluster Generation • Computing a representative – Average/median vertex position – Error quadrics • Mesh generation • Topology changes Mark Pauly - ETH Zurich 293
Computing a Representative Average vertex position → Low-pass filter Mark Pauly - ETH Zurich 294
Computing a Representative Median vertex position → Sub-sampling Mark Pauly - ETH Zurich 295
Computing a Representative Error quadrics Mark Pauly - ETH Zurich 296
Error Quadrics • Squared distance to plane p = ( x, y, z, 1) T , q = ( a, b, c, d ) T dist ( q, p ) 2 = ( q T p ) 2 = p T ( qq T ) p =: p T Q q p a 2 ab ac ad b 2 ab bc bd Q q = b 2 ac bc cd d 2 ad bd cd Mark Pauly - ETH Zurich 297
Error Quadrics • Sum distances to vertex ’ planes �� � dist ( q i , p ) 2 = p T Q q i p = p T p =: p T Q p p � � Q q i i i i • Point that minimizes the error 0 q 11 q 12 q 13 q 14 0 p ∗ = q 21 q 22 q 23 q 24 0 q 31 q 32 q 33 q 34 0 0 0 1 1 Mark Pauly - ETH Zurich 298
Comparison average median error quadric Mark Pauly - ETH Zurich 299
Vertex Clustering • Cluster Generation • Computing a representative • Mesh generation – Clusters p ⇔ {p 0 ,...,p n }, q ⇔ {q 0 ,...,q m } – Connect (p,q) if there was an edge (p i ,q j ) • Topology changes Mark Pauly - ETH Zurich 300
Vertex Clustering • Cluster Generation • Computing a representative • Mesh generation • Topology changes – If different sheets pass through one cell – Not manifold Mark Pauly - ETH Zurich 301
Outline • Applications • Problem Statement • Mesh Decimation Methods – Vertex Clustering – Iterative Decimation – Extensions Mark Pauly - ETH Zurich 302
Incremental Decimation • General Setup • Decimation operators • Error metrics • Fairness criteria • Topology changes Mark Pauly - ETH Zurich 303
General Setup Repeat: pick mesh region apply decimation operator Until no further reduction possible Mark Pauly - ETH Zurich 304
Greedy Optimization For each region evaluate quality after decimation enqeue(quality, region) Repeat: pick best mesh region apply decimation operator update queue Until no further reduction possible Mark Pauly - ETH Zurich 305
Global Error Control For each region evaluate quality after decimation enqeue(quality, region) Repeat: pick best mesh region if error < ε apply decimation operator update queue Until no further reduction possible Mark Pauly - ETH Zurich 306
Incremental Decimation • General Setup • Decimation operators • Error metrics • Fairness criteria • Topology changes Mark Pauly - ETH Zurich 307
Decimation Operators • What is a "region" ? • What are the DOF for re-triangulation? • Classification – Topology-changing vs. topology-preserving – Subsampling vs. filtering – Inverse operation → progressive meshes Mark Pauly - ETH Zurich 308
Vertex Removal Select a vertex to be eliminated Mark Pauly - ETH Zurich 309
Vertex Removal Select all triangles sharing this vertex Mark Pauly - ETH Zurich 310
Vertex Removal Remove the selected triangles, creating the hole Mark Pauly - ETH Zurich 311
Vertex Removal Fill the hole with triangles Mark Pauly - ETH Zurich 312
Decimation Operators Vertex Removal Vertex Insertion • Remove vertex • Re-triangulate hole – Combinatorial DOFs – Sub-sampling Mark Pauly - ETH Zurich 313
Decimation Operators Edge Collapse Vertex Split • Merge two adjacent triangles • Define new vertex position – Continuous DOF – Filtering Mark Pauly - ETH Zurich 314
Decimation Operators Half-Edge Collapse Restricted Vertex Split • Collapse edge into one end point – Special vertex removal – Special edge collapse • No DOFs – One operator per half-edge – Sub-sampling! Mark Pauly - ETH Zurich 315
Edge Collapse Mark Pauly - ETH Zurich 316
Edge Collapse Mark Pauly - ETH Zurich 317
Edge Collapse Mark Pauly - ETH Zurich 318
Edge Collapse Mark Pauly - ETH Zurich 319
Edge Collapse Mark Pauly - ETH Zurich 320
Edge Collapse Mark Pauly - ETH Zurich 321
Edge Collapse Mark Pauly - ETH Zurich 322
Edge Collapse Mark Pauly - ETH Zurich 323
Edge Collapse Mark Pauly - ETH Zurich 324
Edge Collapse Mark Pauly - ETH Zurich 325
Priority Queue Updating Mark Pauly - ETH Zurich 326
Incremental Decimation • General Setup • Decimation operators • Error metrics • Fairness criteria • Topology changes Mark Pauly - ETH Zurich 327
Local Error Metrics • Local distance to mesh [Schroeder et al. 92] – Compute average plane – No comparison to original geometry Mark Pauly - ETH Zurich 328
Global Error Metrics • Simplification envelopes [Cohen et al. 96] – Compute (non-intersecting) offset surfaces – Simplification guarantees to stay within bounds Mark Pauly - ETH Zurich 329
Global Error Metrics • (Two-sided) Hausdorff distance: Maximum distance between two shapes – In general d(A,B) ≠ d(B,A) – Computationally involved A d(A,B) B d(B,A) Mark Pauly - ETH Zurich 330
Global Error Metrics • Scan data: One-sided Hausdorff distance sufficient – From original vertices to current surface Mark Pauly - ETH Zurich 331
Global Error Metrics • Error quadrics [Garland, Heckbert 97] – Squared distance to planes at vertex – No bound on true error Q 3 = Q 1 +Q 2 Q 1 Q 2 v 3 p 1 p 2 solve v 3T Q 3 v 3 = min p iT Q i p i = 0, i={1,2} < ε ? → ok Mark Pauly - ETH Zurich 332
Recommend
More recommend