a lightweight approach to repairing digitized polygon meshes marco attene imati-ge / cnr 2010...

Post on 13-Jan-2016

236 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

A lightweight approach to repairing digitized polygon meshes

Marco Attene IMATI-GE / CNR

2010

Presented by Naitsat Alexander

Desirable meshes

• Closed watertight mesh• Single oriented manifold• No degenerated elements

Type of defects :– Defects in topology– Defects in geometry

2

link: [2]

Topological defects

3

[3]

Geometrical defects

4

[3]

Importance of mesh repairing

5

• Slicing for 3D printing • Partition into voxels

– Inside test for voxels

• Generation of tetrahedral meshes– Tetgen library

Volumetric algorithms + More robust

- Produce a new mesh

Surface algorithms+ Less aggressive

- Can’t handle too much defects

6

Repairing methods

[3]

Volumetric algorithms + More robust

- Produce a new mesh

Surface algorithms+ Less aggressive

- Can’t handle too much defects

7

Repairing methods

[6]

Volumetric algorithms + More robust

- Produce a new mesh

Surface algorithms+ Less aggressive

- Can’t handle too much defects

8

Repairing methods

[3]

General steps in repairing

9

Polygonal mesh

Triangulation &

Preprocessing Fixing topology Fixing

Geometry

Triangle mesh of closed

manifold

Simplicial complexes

= set of subsets of {1,…n}

Realization of f:V R3

10

1

2

3

4

5

6

7

8

9

10

11

12

13 14

(1,5,6) (6,5,7) (9,6,8)l(6)=

l(6*)= {(1,5,6),(6,5,7),(9,6,8)}

V = {1,2,…,14}E = {{1,2},{1,3}, …,{1,6},

{2,3}…}F = {(1,2,3),(1,3,4),(1,4,2),…}

Simplicial complexes

• Simplicial neighborhood of order k (k-ring)

11

0 ( )t N t 1( )N t 2 ( )N t

t t t

0

1

( )

( ) | share vertex of ( )k k

N S S

N S t F t N S

[1]

Repairing topology

12

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts

Triangle mesh of closed

manifold

Patch mesh holes

Keep the largest connected component

Repairing topology

13

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts

Triangle mesh of closed

manifold

Patch mesh holes

Keep the largest connected component

Repairing topology

14

“Cutting and Stitching”

A. Gueziec, G. Taubin, F. Lazarus 2001

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts

Triangle mesh of closed

manifold

Patch mesh holes

Keep the largest connected component

v

Cutting and Stitching

1. Locating singularities• Singular edges• Singular isolated vertices

15

l(v)

e

rank(e)>2

Cutting and Stitching

1. Locating singularities• Singular edges• Singular isolated vertices

2. Cutting• Global and local

16

e3

l(v2)

l(v2)

v1

v2

e2e1

Local and Global cutting

17

local global

[4]

Cutting and Stitching

1. Locating singularities• Singular edges• Singular isolated vertices

2. Cutting• Global and local

3. Stitching

18

v1

l(v2)

e1

e2

v2

l(v1)

Stitching

19

• Pinching two adjacent edges that

were cut

[4]

Repairing topology

20

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts

Triangle mesh of closed

manifold

Patch mesh holes

Keep the largest connected component

Repairing topology: long gaps

21

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts Patch the

holes

Keep the largest connected component

Triangle mesh of closed

manifold

?

Repairing topology

22

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts

Triangle mesh of closed

manifold

Patch mesh holes

Keep the largest connected component

Stitch components

[5]

Repairing topology

23

1. Orient the seed triangle

2. Propagate orientation to entire mesh

3. Cut through inconsistently orientated triangles

4. If cuts were necessary then terminate

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts

Triangle mesh of closed

manifold

Patch mesh holes

Keep the largest connected component

Repairing topology

24

Polygonal mesh

Triangulation & Data init

Remove topological singularities

Orient meshno cuts

Triangle mesh of closed

manifold

Patch mesh holes

Keep the largest connected component

P. Liepa. “Filling holes in meshes” 2003

Filling holes in meshes

• Main stages of the algorithm1. Compute a coarse triangulation to fill a hole

• Based on Barequet et al. 1995

2. Refine and smooth triangulation to match the surrounding density and geometry

25

[3]

Filling holes in meshes

Assumptions: • Holes are connected components of the boundary• Holes are simply connected polygons• No islands in holes

26

n verticesn-2 triangles

Self-intersections cannot be

excluded

Quality depends on boundary

distortion

Filling holes in meshes

Weight w(T) of triangulation T

27

( ) ( )

( ) area( )

( ) maximal dihedral angle

mixture of dihedral angle and area

t Tw T w t

w t t

w t

Filling holes in meshes

Weight w(T) of triangulation T

28

( ) ( )

( ) area( )

( ) maximal dihedral angle

mixture of dihedral angle and area

t Tw T w t

w t t

w t

Filling holes in meshes

• w(i,j) = minimal weight in triangulating sub-polygon i,i+1,…,j

w(2,9) = ?

29

[3]

Filling holes in meshes

30

• w(i,j) = minimal weight in triangulating sub-polygon i,i+1,…,j

w(2,9) = min ( w((2,3,9)) + w(3,9),

Filling holes in meshes

31

• w(i,j) = minimal weight in triangulating sub-polygon i,i+1,…,j

w(2,9) = min ( w((2,3,9)) + w(3,9),

w(2,4)+w((2,4,9)) + w(4,9),

Filling holes in meshes

32

• w(i,j) = minimal weight in triangulating sub-polygon i,i+1,…,j

w(2,9) = min ( w((2,3,9)) + w(3,9),

w(2,4)+w((2,4,9)) + w(4,9),w(2,5)+w((2,5,9)) + w(5,9),

Filling holes in meshes

33

• w(i,j) = minimal weight in triangulating sub-polygon i,i+1,…,j

w(2,9) = min ( w((2,3,9)) + w(3,9),

w(2,4)+w((2,4,9)) + w(4,9),w(2,5)+w((2,5,9)) + w(5,9),w(2,6)+w((2,6,9)) + w(6,9),

Filling holes in meshes

34

• w(i,j) = minimal weight in triangulating sub-polygon i,i+1,…,j

w(2,9) = min ( w((2,3,9)) + w(3,9),

w(2,4)+w((2,4,9)) + w(4,9),w(2,5)+w((2,5,9)) + w(5,9),w(2,6)+w((2,6,9)) + w(6,9),w(2,7)+w((2,7,9)) + w(7,9),

Filling holes in meshes

• w(i,j) = minimal weight in triangulating sub-polygon i,i+1,…,j

w(2,9) = min ( w((2,3,9)) + w(3,9),

w(2,4)+w((2,4,9)) + w(4,9),w(2,5)+w((2,5,9)) + w(5,9),w(2,6)+w((2,6,9)) + w(6,9),w(2,7)+w((2,7,9)) + w(7,9),w(2,8)+w((2,8,9)) )

35

Filling holes in meshes

• w(0,n) = minimal weight in triangulating the boundary

• Recursive formula

• O(n3) complexity

(Dynamic programming)

36

0

(0, ) min (0, ) (0, , ) ( , )

( , 1) 0m n

w n w m w m n w m n

w i i

Filling holes : results

37

[3]

Degeneracy removal

38

Mesh Mk←0

T← narrow trianglesk← k+1

Fixed mesh

Remove Nk(T) & Path holes

T Fix triangles &update T

k> kmax ?

T

Failure YesNo

Repairing geometry

39

Mesh Mk←0

T← narrow trianglesk← k+1

Fixed mesh

Remove Nk(T) & Path holes

• Epsilon geometry to locate narrow triangles• Repairing by swap & collapse method

T Fix triangles &update T

k> kmax ?

T

Failure YesNo

Swap and Collapse

• Nearly flat triangle with >-– Swap edge against

• Other narrow triangles with <– Collapse edge against

• Check if swap/collapse is legal

40

=arcsin(10-

5) [1]

Degeneracy removal

41

Mesh Mk←0

T← narrow trianglesk← k+1

Fixed mesh

Remove Nk(T) & Path holes

• Maximal number of iterations = 3

T Fix triangles &update T

k> kmax ?

T

Failure YesNo

Degeneracy removal

42

Mesh Mk←0

T← narrow trianglesk← k+1

Fixed mesh

Remove Nk(T) & Path holes

• Remove possible disconnected components• Next loop of repairing is made only for effected

triangles

T Fix triangles &update T

k> kmax ?

T

Failure YesNo

Removal of self intersections

43

Mesh Mk←0 Init voxels Fixed

mesh

Remove Nk(T) & Path holes

T T← self intersecting trianglesk← k+1

k> kmax ?

T

Failure YesNo

Removal of self intersections

44

Mesh Mk←0 Init/update voxels Fixed

mesh

Remove Nk(T) & Path holes

• Building 100x100x100 voxels• After 1st loop storing only voxels of effected

triangles

T T← self intersecting trianglesk← k+1

k> kmax ?

T

Failure YesNo

Removal of self intersections

45

Mesh Mk←0 Init/update voxels Fixed

mesh

Remove Nk(T) & Path holes

• Maximal number of iterations = 3• Remove possible disconnected components

T T← self intersecting trianglesk← k+1

k> kmax ?

T

Failure YesNo

Repairing geometry : flow

46

Mesh M

Degeneracy removal with

kmax= 3

Fixed mesh

M’

Self intersection removal with

kmax= 3

T← narrow triangles

T

T success

failure

maximum of 10 iterations

Results

47

topology

geometry

[1]

Results

48

geometrytopology

[1]

Comparison

Other methods for mesh repairing

1. S. Bischoff and L. Kobbelt. “Structure preserving cad model repair” 2005

2. F. Nooruddin and G. Turk. “Simplification and repair of polygonal models using volumetric techniques” 2003

3. T. Ju. “Robust repair of polygonal models” 2004

49

Comparison

50

11534 faces 12634 faces 17174 faces 110908 faces 363776 faces

Original Current method Method 1 Method 2 Method 3

[1]

Failure cases

51[1]

Improvements

• Parallel computations• More efficient search for self-intersection

– Adapting voxel size / octree resolution to the mesh

• Repairing topology and geometry in a single loop– There is overlap between the topology and the geometry

stages

52

References

1) A lightweight approach to repairing digitized polygon meshes. Marco Attene.

2) Polygon Mesh Repairing: An Application Perspective. Marco Attene, Marcel Campen and Leif Kobbelt. 2012

3) Model Repair. Leif Kobbelt RWTH Aachen University .

4) Cutting and stitching : Converting sets of polygons to manifold surfaces. A. Gueziec, G. Taubin, F. Lazarus, and B. Horn.

5) Automatic mesh-healing technique for model repair and finite element model generation. C.S. Chong, A. Senthil Kumar, H.P. Lee.

6) A Practical Guide to Polygon Mesh Repairing. Marcel Campen, Marco Attene and Leif Kobbelt.

53

Thank you

Questions ?

54

top related