• Aucun résultat trouvé

Mesh Generation

N/A
N/A
Protected

Academic year: 2022

Partager "Mesh Generation"

Copied!
29
0
0

Texte intégral

(1)

Mesh Generation

Jean-Daniel Boissonnat Geometrica, INRIA

http://www-sop.inria.fr/geometrica

Winter School, University of Nice Sophia Antipolis January 26-30, 2015

(2)

Meshing surfaces and 3D domains

visualization and graphics applications CAD and reverse engineering

geometric modelling in medecine, geology, biology etc.

autonomous exploration and mapping (SLAM) scientific computing : meshes for FEM

P d

dO

O o

Winter School 4 Mesh generation Sophia Antipolis 2 / 23

(3)

Mesh generation : from art to science

Grid methods

Lorensen & Cline [87] : marching cube Lopez & Brodlie [03] : topological consistency

Plantiga & Vegter [04] : certified topology using interval arithmetic

Morse theory

Stander & Hart [97]

B., Cohen-Steiner & Vegter [04] : certified topology

Delaunay refinement

Hermeline [84]

Ruppert [95]

Shewchuk [02]

Chew [93]

B. & Oudot [03,04]

Cheng et al. [04]

(4)

Main issues

Sampling

How do we choose points in the domain ?

What information do we need to know/measure about the domain ?

Meshing

How do we connect the points ?

Under what sampling conditions can we compute a good approximation of the domain ?

Winter School 4 Mesh generation Sophia Antipolis 4 / 23

(5)

Restricted Delaunay triangulation

[Chew 93]

Definition

Therestricted Delaunay triangulationDelX(P)to X⊂Rd is the nerve of Vor(P)∩X

If P is anε-sample, any ball centered onXthat circumscribes a facet ofDelX(P) has a radiusεrch(M)

(6)

Restricted Delaunay triangulation

[Chew 93]

Definition

Therestricted Delaunay triangulationDelX(P)to X⊂Rd is the nerve of Vor(P)∩X

If P is anε-sample, any ball centered onXthat circumscribes a facet ofDelX(P) has a radiusεrch(M)

Winter School 4 Mesh generation Sophia Antipolis 5 / 23

(7)

Restricted Delaunay triangulation

[Chew 93]

Definition

Therestricted Delaunay triangulationDelX(P)to X⊂Rd is the nerve of Vor(P)∩X

If P is anε-sample, any ball centered onXthat circumscribes a facet ofDelX(P) has a radiusεrch(M)

(8)

Restricted Delaunay triangulation

[Chew 93]

Definition

Therestricted Delaunay triangulationDelX(P)to X⊂Rd is the nerve of Vor(P)∩X

Winter School 4 Mesh generation Sophia Antipolis 6 / 23

(9)

A variant of the nerve theorem

[Edelsbrunner & Shah 1997]

LetMbe a compact manifold without boundary. If, for any face f ∈Vor(P) s.t. f ∩M6=∅,

1 f intersectsMtransversally

2 f ∩M=∅or is a topological ball thenDelM(P)≈M

(10)

A variant of the nerve theorem

[Edelsbrunner & Shah 1997]

LetMbe a compact manifold without boundary. If, for any face f ∈Vor(P) s.t. f ∩M6=∅,

1 f intersectsMtransversally

2 f ∩M=∅or is a topological ball thenDelM(P)≈M

Winter School 4 Mesh generation Sophia Antipolis 7 / 23

(11)

Proof of the closed ball property

Barycentric subdivision

ofVor(P)∩M ofDelM(P)

(12)

Good sampling, scale and dimension

Winter School 4 Mesh generation Sophia Antipolis 9 / 23

(13)

Sampling conditions

[Federer 1958], [Amenta & Bern 1998]

Medial axis ofM: axis(M)

set of points with at least two closest points onM

Reach

∀x∈M, rch(x)=infimum of the radii of the medial balls tangent toMatx rch(M)=infx∈Mrch(x)

(, η)-net ofM

1.P ⊂M,∀x∈M: d(x,P)≤rch(x)

(14)

Sampling conditions

[Federer 1958], [Amenta & Bern 1998]

Medial axis ofM: axis(M)

set of points with at least two closest points onM

Reach

∀x∈M, rch(x)=infimum of the radii of the medial balls tangent toMatx rch(M)=infx∈Mrch(x)

(, η)-net ofM

1.P ⊂M,∀x∈M: d(x,P)≤rch(x)

2.∀p,q∈ P, kp−qk ≥η min(rch(p),rch(q))

Winter School 4 Mesh generation Sophia Antipolis 10 / 23

(15)

Restricted Delaunay triang. of ( ε, η )-nets

[Amenta et al. 1998-], [B. & Oudot 2005]

If

S ⊂R3 is a compact surface of positive reach without boundary

P is an(ε, η)-net withε/η≤ξ0andε small enough

then

Del|S(S)provides good estimates of normals

There exists ahomeomorphism φ:Del|S(P)→ S

supx(kφ(x)−xk) =O(ε2)

(16)

Surface mesh generation by Delaunay refinement

[Chew 1993, B. & Oudot 2003]

φ:SR= Lipschitz function

∀xS, 0< φminφ(x)< εrch(x)

ORACLE: For a facetf ofDel|S(P), returncf,rf andφ(cf) A facetf isbadifrf > φ(cf)

Context and Motivation

Delaunay refinement meshing engine

The algorithms refines:

Bad facets: f Del|S(P) – oversized (sizing field)

– badly shaped (min angle bound) – inaccurate (distance bound) Bad Tetrahedra : tDel|O(P) – oversized (sizing field)

– badly-shaped (radius-egde ratio) Required oracle on domain to be meshed

point location in domain and subdomains

intersection detection/computation between boundary surfaces and segments (Delaunay edges)

PA-MY (INRIA Geometrica) CGALmesh ARC-ADT-AE-2010 9 / 36

Algorithm

INIT compute an initial (small) sampleP0S REPEAT IFf is a bad facet

insert in Del3D(cf), updatePandDel|S(P) UNTIL all facets are good

Winter School 4 Mesh generation Sophia Antipolis 12 / 23

(17)

Surface mesh generation by Delaunay refinement

[Chew 1993, B. & Oudot 2003]

φ:SR= Lipschitz function

∀xS, 0< φminφ(x)< εrch(x)

ORACLE: For a facetf ofDel|S(P), returncf,rf andφ(cf) A facetf isbadifrf > φ(cf)

Context and Motivation

Delaunay refinement meshing engine

The algorithms refines:

Bad facets: f Del|S(P) – oversized (sizing field)

– badly shaped (min angle bound) – inaccurate (distance bound) Bad Tetrahedra : tDel|O(P) – oversized (sizing field)

– badly-shaped (radius-egde ratio) Required oracle on domain to be meshed

point location in domain and subdomains

intersection detection/computation between boundary surfaces and segments (Delaunay edges)

PA-MY (INRIA Geometrica) CGALmesh ARC-ADT-AE-2010 9 / 36

Algorithm

INIT compute an initial (small) sampleP0S REPEAT IFf is a bad facet

insert in Del3D(cf), updatePandDel|S(P) UNTIL all facets are good

(18)

The meshing algorithm in action

Winter School 4 Mesh generation Sophia Antipolis 13 / 23

(19)

The algorithm outputs a good sample

The output sampleP is sparse

∀p∈ P,d(p,P \ {p}) =kp−qk

≥min(φ(p), φ(q))

≥φ(p)− kp−qk

⇒ kp−qk ≥ 12φ(p)≥ 12φ0 >0 the algorithm terminates

P is a looseε-sample ofS

I Each facet has aS-radiusrf φ(cf)< εrch(S)

I Del|S(P)has a vertex on each cc ofS (INIT)

(20)

Size of the sample = Θ R

S dx φ2(x)

Upper bound

Bp=B(p,φ(p)2 ),p∈ P R

S dx φ2(x) P

p

R

(Bp∩S) dx

φ2(x) (theBpare disjoint)

49P

p

area(Bp∩S)

φ2(p) φ(x)φ(p) +kpxk

32 φ(p))

P

pC = C|P|

reach(S)

p φ(p)2

Lower bound

Use a covering instead of a packing

Winter School 4 Mesh generation Sophia Antipolis 15 / 23

(21)

Size of the sample = Θ R

S dx φ2(x)

Upper bound

Bp=B(p,φ(p)2 ),p∈ P R

S dx φ2(x) P

p

R

(Bp∩S) dx

φ2(x) (theBpare disjoint)

49P

p

area(Bp∩S)

φ2(p) φ(x)φ(p) +kpxk

32 φ(p))

P

pC = C|P|

reach(S)

p φ(p)2

Lower bound

Use a covering instead of a packing

(22)

The full result

The Delaunay refinement algorithm produces a good (dense and sparse) sample a triangulated surfaceˆS

I homeomorphic toS

I close toS (Hausdorff/Fr ´echet distance, approximation of normals)

Winter School 4 Mesh generation Sophia Antipolis 16 / 23

(23)

Applications

Implicit surfacesf(x,y,z) =0

Isosurfaces in a 3d image (Medical images) Triangulated surfaces (Remeshing)

Point sets (Surface reconstruction)

see cgal.org, CGALmesh project

(24)

Results on smooth implicit surfaces

Winter School 4 Mesh generation Sophia Antipolis 18 / 23

(25)

CGALmesh Achievements

Meshing 3D domains

Input from segmented 3D medical images

[INSERM] [SIEMENS]

(26)

Comparison with the Marching Cube algorithm

Delaunay refinement Marching cube

Winter School 4 Mesh generation Sophia Antipolis 20 / 23

(27)

CGALmesh Achievements

Meshing with sharp features

A polyhedral example

(28)

CGALmesh Achievements

Meshing 3D multi-domains

Input from segmented 3D medical images [IRCAD]

PA-MY (INRIA Geometrica) CGALmesh ARC-ADT-AE-2010 21 / 36

Winter School 4 Mesh generation Sophia Antipolis 22 / 23

(29)

Surface reconstruction from unorganized point sets

Références

Documents relatifs

Ainsi, si on recherche plusieurs fois un même élément, il sera alors amené progressivmeent en début de liste et la recherche sera plus rapide. Dans classe ListeTri donnée en

7 avec la méthode compterPairs qui renvoie le nombre d’entiers pairs contenu dans le fichier

Université de Nice-Sophia Antipolis POLYTECH.

Question sur 1 pt : Il faut d’abord compiler le programme Java en Java Byte Code à l’aide de la commande javac, puis on exécute le .class qui contient la méthode main à l’aide

On souhaite écrire une petite application graphique qui permet à l’utilisateur de dessiner deux points dans un carré, de les relier par une droite et d’afficher la distance entre

Écrivez la fonction lireReel qui lit sur l’entrée standard caractère à caractère (à l’aide de la fonction getchar() , à l’exclusion de toute autre fonction), un réel (positif

Au lieu de retirer, à chaque itération, 1 diviseur au dividende et d’incrémenter de 1 le quotient, le diviseur est multiplié successivement par 2 pour trouver son plus grand

qui prend en paramètre une chaîne de caractères, et qui remplace chaque chiffre par le caractère ’_’ dans celle-ci.. La fonction renvoie un pointeur sur le 1er caractère de