Download presentation
Presentation is loading. Please wait.
Published byRandolph Stevens Modified over 9 years ago
1
Robust Repair of Polygonal Models Tao Ju Rice University
2
Polygonal Models
3
Closed Model Partitions the space into disjoint inside and outside volumes –Each polygon lies between inside and outside Not ClosedClosed Not Closed
4
Model Repair Close polygonal models –Not just hole-filling Challenges: –Models may contain complex errors –Models are often very big –Geometry features need to be preserved
5
Previous Work Mesh-based model repair –Zippering [ Turk and Levoy 1994 ] –Stitching [ Barequet and Kumar 1997 ] –Progressive boundary decimation [ Borodin et al. 2002 ] –Hole filling with fairing [ Liepa 2003 ] Scattered data reconstruction –Tangent plane estimation [ Hoppe et al. 1992 ] –Level sets [ Zhao and Osher 2002 ] –Radial basis functions [ Turk and O’Brien 2002 ] –Partition-of-unity methods [ Ohtake et al. 2003 ] –Moving least squares surfaces [ Shen et al. 2004 ] –Context-based completion [ Sharf et al. 2004 ]
6
Previous Work Volumetric model repair How to determine signs ? How to generate surface ?
7
Previous Work Volumetric model repair – Sign generation –Adaptive signed distances [ Frisken et al. 2000 ] –Flood-filling [ Oomes et al. 1997 ] [ Andujar et al. 2002 ] –Space carving [ Curless and Levoy 1996 ] –Volumetric diffusion [ Davis et al. 2002 ] –Parity count and ray stabbing [ Nooruddin and Turk 2003 ] Volumetric model repair – Contouring –Marching Cubes [ Lorensen and Cline 1987 ] –Extended Marching Cubes [ Kobbelt et al. 2001 ] –Dual Contouring [ Ju et al. 2002]
8
Robust Model Repair Robust –Closes arbitrary polygon soups Efficient –Processes gigantic models on standard PCs Accurate –Preserves surface quality Simple !
9
Algorithm in a Nutshell Contour Patch Closed Dual Surface Scan- convert “Dual Surface”
10
They convert the input model to a volumetric form by constructing an octree grid that records edges intersecting the input model. Scan-conversion
12
They recursively walk down the octree, expanding nodes when necessary, until all the leaf cells at the bottom level of the tree that intersect the polygon are located. Then, cell edges that intersect the polygon are identified in those leaf cells and are marked as intersection edges (figure 4 (d)). Scan-conversion
13
Octree grid Memory-less octree construction Reliable and fast intersection tests Edges intersected with model Top-down creation
14
Fast intersection tests a triangle and a cube are disjoint if their projections on any one of the following 13 vectors are disjoint: (1) the triangle face normal, (2) 3 cube face normals, (3) and 9 pair-wise cross-products of the 3 edges of the cube and the 3 edges of the triangle.
15
Dual Surface Each face dual to an intersected octree edge Octree EdgeDual Face
16
Finding Holes Boundary edges –Odd-valence edges –Closed dual surface No boundary edge Set of boundary edges partitioned into cycles –Each cycle encloses a “hole”
17
Detect boundary cycles Detecting the boundary edges in (S) simply involves enumerating the cell faces on the primal grid containing an odd number of intersection edges. To form cycles, we introduce a bottom-up procedure detectProc[N] that returns all complete cycles B and incomplete cycles R inside the octree node N.
18
At a leaf node, detectProc[N] returns B = 0 and R = 0. At an internal node, (1) Call detectProc[Ni] for every child node N i, which return cycles B i and incomplete cycles R i. (2) Detect the boundary edges E crossing the faces between adjacent children nodes. (3) Connect R i by E to form complete cycles B’ and incomplete cycles R. B is the union of B’ and the B i s. Detect boundary cycles
19
Patch boundary cycles seek the surface of minimum area spanning a given curve in 3-D space.
20
Building a Patch Build one patch for each cycle –Each quad dual to an octree edge –Patch boundary is the cycle Divide-and-conquer! –Using octree
21
Integrating a Patch Add a quad –If does not exist on the dual surface Remove a quad –If already exists on the dual surface Key: parity of edge valence
22
Integrating a Patch Add a quad –If not already on the dual surface Remove a quad –If already on the dual surface Key: parity of edge valence
23
Sign Generation Sign changes across dual surface –Flood-filling Dual FaceOctree Signs
24
Contouring Marching Cubes –Edge intersections –Rounded corners Dual Contouring –Hermite data –Sharp features
25
Examples – CAD Model Input Model
26
Examples – CAD Model Dual Surface
27
Examples – CAD Model Closed Dual Surface
28
Examples – CAD Model Output (Marching Cubes)
29
Examples – CAD Model Output (Dual Contouring)
30
Examples - Bunny 1. Input 2. DS 3. DS Closed 4. Output Model Courtesy of the Stanford 3D Scanning Repository
31
Examples - Horse 1. Input2. DS 3. DS Closed 4. Output Model Courtesy of the Stanford 3D Scanning Repository
32
Examples – David (at 1mm) Input Output Model Courtesy of the Digital Michelangelo Project
33
Performance ModelTrianglesGridTimeMemory Bunny 69,451643.6 sec< 10 MB Horse 80,8051286.0 sec< 10 MB Dragon 871,41425645.2 sec16 MB Buddha 1,087,71610241.3 min28 MB David (2mm) 8,254,15040968.4 min92 MB David (1mm) 56,230,343819253.2 min417 MB On PC with 1.5GHz CPU and 2GB memory
34
Conclusion A simple, fast, and robust method to repair arbitrary polygon models Future work –Remove topological noise –Improve the quality of hole filling –Repair using an adaptive grid
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.