robust repair of polygonal models tao ju rice university

Post on 15-Jan-2016

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Robust Repair of Polygonal ModelsRobust Repair of Polygonal ModelsRobust Repair of Polygonal ModelsRobust Repair of Polygonal Models

Tao JuRice University

Polygonal ModelsPolygonal Models

Closed ModelClosed Model

• Partitions the space into disjoint inside and outside volumes– Each polygon lies between inside and outside

Not Closed Closed ClosedNot Closed

Model RepairModel 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

Previous WorkPrevious 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]

Previous WorkPrevious Work

• Volumetric model repair

How to determine signs ? How to generate surface ?

Previous WorkPrevious 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]

Robust Model RepairRobust Model Repair

• Robust– Closes arbitrary polygon soups

• Efficient– Processes gigantic models on standard PCs

• Accurate– Preserves surface quality

• Simple !

Algorithm in a NutshellAlgorithm in a Nutshell

Contour

Patch

Closed Dual Surface

Scan-convert

“Dual Surface”

• They convert the input model to a volumetric form by constructing an octree grid that records edges intersecting the input model.

Scan-conversionScan-conversion

Scan-conversionScan-conversion

• 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-conversionScan-conversion

Scan-conversionScan-conversion

• Octree grid

• Memory-less octree construction

• Reliable and fast intersection tests

• Edges intersected with model

• Top-down creation

Fast intersection testsFast 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.

Dual SurfaceDual Surface

• Each face dual to an intersected octree edge

Octree Edge Dual Face

Finding HolesFinding Holes

• Boundary edges– Odd-valence edges– Closed dual surface

No boundary edge

• Set of boundary edges partitioned into cycles– Each cycle encloses

a “hole”

Detect boundary cyclesDetect 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.

• At a leaf node, detectProc[N] returns B = 0 and R = 0.

• At an internal node,(1) Call detectProc[Ni] for every child node Ni,

which return cycles Bi and incomplete cycles Ri.

(2) Detect the boundary edges E crossing the faces between adjacent children nodes. (3) Connect Ri by E to form complete cycles B’ and incomplete cycles R. B is the union of B’ and the Bis.

Detect boundary cyclesDetect boundary cycles

Patch boundary cyclesPatch boundary cycles

• seek the surface of minimum area spanning a given curve in 3-D space.

Building a PatchBuilding 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

Integrating a PatchIntegrating 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

Integrating a PatchIntegrating 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

Sign GenerationSign Generation

• Sign changes across dual surface– Flood-filling

Dual Face Octree Signs

ContouringContouring

• Marching Cubes– Edge intersections– Rounded corners

• Dual Contouring– Hermite data– Sharp features

Examples – CAD ModelExamples – CAD Model

Input Model

Examples – CAD ModelExamples – CAD Model

Dual Surface

Examples – CAD ModelExamples – CAD Model

Closed Dual Surface

Examples – CAD ModelExamples – CAD Model

Output (Marching Cubes)

Examples – CAD ModelExamples – CAD Model

Output (Dual Contouring)

Examples - BunnyExamples - Bunny1. Input 2. DS

3. DS Closed

4. Output

Model Courtesy of the Stanford 3D Scanning Repository

Examples - HorseExamples - Horse1. Input 2. DS

3. DS Closed

4. Output

Model Courtesy of the Stanford 3D Scanning Repository

Examples – David (at 1mm)Examples – David (at 1mm)

Input Output

Model Courtesy of the Digital Michelangelo Project

PerformancePerformance

Model Triangles Grid Time Memory

Bunny 69,451 64 3.6 sec < 10 MB

Horse 80,805 128 6.0 sec < 10 MB

Dragon 871,414 256 45.2 sec 16 MB

Buddha 1,087,716 1024 1.3 min 28 MB

David (2mm) 8,254,150 4096 8.4 min 92 MB

David (1mm) 56,230,343 8192 53.2 min 417 MB

• On PC with 1.5GHz CPU and 2GB memory

ConclusionConclusion

• 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

top related