• Aucun résultat trouvé

Rappels Structures Polyèdres et Triangulations Interrogation du modèle Brep. transformations géométriques Parties cachées. O.

N/A
N/A
Protected

Academic year: 2022

Partager "Rappels Structures Polyèdres et Triangulations Interrogation du modèle Brep. transformations géométriques Parties cachées. O."

Copied!
73
0
0

Texte intégral

(1)

Représentation frontière (3D) Représentation frontière (3D)

-- 2 2 ième ième partie partie --

Rappels

Structures Polyèdres et Triangulations Interrogation du modèle Brep

Opérations booléennes, Opérations booléennes,

transformations géométriques Parties cachées

O.Stab 2019

(2)

Produit Vectoriel (3D) Produit Vectoriel (3D)

V U W

r r

r =

Rappels de géométrie (1)

W w Wr r

r = Wr = Ur Vr sin(θ)

=

z y x

u u u U

r

U r V

r W

r

θ

=

=

=

=

z y y

x z

z x x

z y

y z z

y x

v u v

u w

v u v

u w

v u v

u w

W

. .

. .

. .

(3)

Produit scalaire (3D) Produit scalaire (3D)

Rappels de géométrie (2)

V U w

r r

= .

U r

) cos(θ V

U w

r

= r

V V V

r r r

2 .

= V U w=t *

Projection d’un vecteur V sur l’axe ur

=

=

z y x

z y x

z y

z x

z

z y y

x y

z x y

x x

u

u w

u w

u w

v v v

u u

u u

u

u u u

u u

u u u

u u

V P

. . .

. .

. .

. .

*

2 2

2

x

y P

O

ur V r

θ

Écriture matricielle de la projection :

z z y

y x

x v u v u v

u

w = . + . + . u

V

Vr r r ) cos(

'= θ

' V

r

z

ur

Projection d’un vecteur V sur l’axe u

.

(4)

Produit mixte (3D) Produit mixte (3D)

Rappels de géométrie (3)

) .(U V W

m

r r

r

=

Écriture matricielle :

V r

P2 P3

P

=

z z

z

y y

y

x x

x

v u

w

v u

w

v u

w Det V

U

W.( ) r r

r

x y

θ

W U r

r P2

P4

(5)

Le plan Le plan

Représentation algébrique (RA) ?

Calcul de la RA à partir de 3 points ?

(6)

2. Représentation informatique

2. Représentation informatique

(7)

#VRML V2.0 utf8

Geometry IndexedFaceSet { ccw TRUE

solid TRUE convex TRUE

coord Coordinate { point [

Description des

Description des polyèdres polyèdres

X3 Y3 Z3 X4Y4 Z4

Face-based data structure (edge-based data structure)

Indications

2 blocs : les points et les faces

coord Coordinate { point [

# Coordonnees des points X1Y1 Z1

X2Y2 Z2

]}

coordIndex [

# Les faces 1 2 3 4 -1

Exemple de format de données de type : X3D, VRML, Inventor…

f1

X1 Y1 Z1 X2 Y2 Z2

Limitations

(8)

Représentation

Représentation informatique informatique

f1 a4

a3

a1

a2

s3 s1

s4

s2 a7

F = { f1,f2…f6} A = { a1, a2…a12} S = { s1,s2…s8 } interne, Cas 3D

Edge-based data structure (face-based data structure)

f2

f3 a1

a5 s7

s2 a6

a7

a10

Relations :

v F A S

b(v) = {f , f …f }

(9)

Représentation

Représentation informatique informatique

f1 a4

a3

a1

a2

s3 s1

s4

s2 a7

F = { f1,f2…f6} A = { a1, a2…a12} S = { s1,s2…s8 } Edge-based data structure (face-based data structure)

f2

f3 a1

a5 s7

s2

s6 s5

a6

a9

a7

a10

Relations :

v F A S

b(v) = {f1, f2…f6}

b(f3) = {a2, a6, a10, a7} b(a6) = {s6,s2}

(10)

Représentation

Représentation informatique informatique

f1 a4

a3

a1

a2

s3 s1

s4

s2 a7

F = { f1,f2…f6} A = { a1, a2…a12} S = { s1,s2…s8 } Edge-based data structure (face-based data structure)

f2

f3 a1

a5 s7

s2 a6

a7

a10

Relations : s6 dans a6, s dans a …

(11)

Représentation

Représentation informatique informatique

DECL : Double Edged Connected List

(DCEL, winged-edge)

Edge-based data structure (face-based data structure)

HDS : Half-edge Data Structure

c.interne->interne

c.interne

CGAL, OpenMesh...

(12)

Triangulations frontières

Triangulations frontières

(13)

Structure de données Structure de données

1,7,2

1 7

2 2,0,6

0 2

Face-based data structure (edge-based data structure)

1 7

6

Algo de parcours ?

(14)

EXERCICE : décrire le tétra.

EXERCICE : décrire le tétra.

dans la structure de données dans la structure de données

4

3

ITRNOE ITRTRI

1

2 3

COORD NOETRI

(15)

Faces planes et/ou courbes Faces planes et/ou courbes

n1

Surface plane Surface courbe

n1

n2 n3

Combien d’information faut-il stocker dans le 1er modèle ?

(16)

PovRay

PovRay : Triangulation : Triangulation

mesh {

PovRay

« smooth_triangle »

Ni3

Ni2 Ni1

i

mesh {

triangle { <X11, Y11, Z11>, <X12, Y12, Z12>, <X13, Y13, Z13>

[texture { nom_texture }] } smooth_triangle {

(17)

Formats … Formats …

solid name

STL

OFF

OFF

# cube.obj

# list of vertices

OBJ

#VRML V2.0 utf8

Geometry IndexedFaceSet {

# optionnel mais utile : ccw TRUE

solid TRUE convex TRUE

coord Coordinate { point [

WRL

https://poly.google.com/

solid name

facet normal ninjnk outer loop

vertex v1xv1yv1z vertex v2xv2yv2z vertex v3xv3yv3z endloop

endfacet

endsolid name

OFF # cube.off

# A cube 8 6 12 1.0 0.0 1.0 0.0 1.0 1.0

-1.0 0.0 1.0 0.0 -1.0 1.0 1.0 0.0 -1.0 0.0 1.0 -1.0 -1.0 0.0 -1.0 0.0 -1.0 -1.0 4 0 1 2 3 4 7 4 0 3 4 4 5 1 0 4 5 6 2 1 4 3 2 6 7 4 6 5 4 7

# cube.obj

# list of vertices v 1.0 0.0 1.0 v 0.0 1.0 1.0 v -1.0 0.0 1.0 v 0.0 -1.0 1.0 v 1.0 0.0 -1.0 v 0.0 1.0 -1.0 v -1.0 0.0 -1.0 v 0.0 -1.0 -1.0

# list of faces f 1 2 3 4 f 8 5 1 4

# mais aussi :

# f node/norm/texture f 6/4/1 2/5/3 7/6/8 6/4/5

point [

# Coordonnees des points X1Y1 Z1

X2Y2 Z2

]}

coordIndex [

# Les faces 1 2 3 4 -1 5 6 2 1 -1

] }

(18)

EXERCICE : EXERCICE :

Étapes de l’algorithme de

reconstruction d’une frontière à partir du format STL

solid name

STL

solid name

facet normal ninjnk outer loop

vertex v1xv1yv1z vertex v2xv2yv2z vertex v3xv3yv3z endloop

endfacet

endsolid name

(19)

EXERCICE : fichier «

EXERCICE : fichier « OFF OFF » »

Représentez par un dessin la

géométrie correspondant au fichier

« OFF »

OFF OFF # cube.off

# A cube 8 6 12 1.0 0.0 1.0 0.0 1.0 1.0

-1.0 0.0 1.0 0.0 -1.0 1.0 1.0 0.0 -1.0 0.0 1.0 -1.0 -1.0 0.0 -1.0 0.0 -1.0 -1.0 4 0 1 2 3 4 7 4 0 3 4 4 5 1 0 4 5 6 2 1 4 3 2 6 7 4 6 5 4 7

(20)

EXERCICE : structure de données EXERCICE : structure de données

?

?

Quelles structure de données minimales peut-on utiliser pour représenter :

?

?

(21)

Contraintes

Contraintes d d ’’intégrité intégrité

Cas 2D

Intersection réduites aux sommets communs

Cas 3D

• Intersection réduites aux arêtes communes

Cas 3D

sommets communs Un sommet appartient exactement à 2 arêtes

Existe une orientation des arêtes telle que chaque

sommet est origine d’une arête et extrémité d’une autre.

arêtes communes

• Une arête appartient exactement à 2 faces

• Existe une orientation des faces telle que chaque arête est parcourue dans un sens puis dans l’autre.

(22)

3. Interrogation du

3. Interrogation du modèle modèle

?

(23)

Interrogation du

Interrogation du modèle modèle (3D) (3D)

Intersection d ’une droite avec le modèle ? Un point (x,y) est-il à l ’intérieur ou

l ’extérieur du polyèdre ? Volume d’un polyèdre ? Volume d’un polyèdre ?

...

X,Y,Z

(24)

Intersection d’une Droite avec un Plan Intersection d’une Droite avec un Plan

Rappels de géométrie (1)

PI

(25)

Intersection d’une Droite avec un Plan Intersection d’une Droite avec un Plan

Plan : Ax+By+Cz+D=0 Droite : x(t)=a1t+a2

y(t)=b1t+b2 z(t)=c1t+c2

Rappels de géométrie (1)

PI

z(t)=c1t+c2

=> équation linéaire : ti = Aa1+Bb1+Cc1

Aa2+Bb2+Cc2+D PI (x(ti), y(ti), z(ti) )

(26)

Intersection

Intersection d’une d’une droite droite avec un

avec un Polyèdre Polyèdre (1) (1)

METHODE :

Projeter le polygone dans le plan perpendiculaire à la droite

Pour toutes les faces du polyèdre…

Intersection ?

(27)

Intersection

Intersection d’une d’une droite droite avec un

avec un Polyèdre Polyèdre (2) (2)

Intersection ? 1) Intersection de la droite avec le plan

2) Projection du polygone et du point

d’intersection dans un plan

3) Point dans polygone ?

(28)

Point

Point dans dans polyèdre polyèdre ? ?

PRINCIPE : idem 2D, parité du nombre d’intersection avec une ½ droite

• METHODE :

• Projection des faces

• Traitement des cas singuliers

(29)

Point dans polyèdre ? Point dans polyèdre ?

Cas singuliers

Intersection ? SUR A

(30)

Point dans polyèdre ? Point dans polyèdre ?

Cas singuliers

Intersection : OUI

(31)

Point dans polyèdre ? Point dans polyèdre ?

Cas singuliers

Point dans polygone ?

Intersection : OUI DANS

Point dans polygone ?

(32)

Point dans polyèdre ? Point dans polyèdre ?

Cas singuliers

Point dans polygone ? Point dans polygone ?

Intersection : NON HORS

(33)

Point dans polyèdre ? Point dans polyèdre ?

Point dans polygone replié ?

3

1

(34)

Point

Point dans dans polyèdre polyèdre (1) (1)

(35)

Point

Point dans dans polyèdre polyèdre (2) (2)

Hors

(36)

Point

Point dans dans polyèdre polyèdre (3) (3)

Dans

(37)

Point

Point dans dans polyèdre polyèdre (4) (4)

Hors

(38)

Calcul

Calcul du volume du volume

0,0 0,1

1,0 z1

z3 z2

0,0 0,1

x = x(u,v) y = y(u,v)

(u,v) dans [0:1]x[0:1]

et u+v <= 1

(39)

EXERCICE : Calcul du volume EXERCICE : Calcul du volume

Algorithme :

Approche pratique

(40)

Détection/Calculer/Eviter des Détection/Calculer/Eviter des

intersections entre polyèdres intersections entre polyèdres

Hierarchical AABB-Tree in CGAL

Minkowski 3D in CGAL

(41)

4. Modification du

4. Modification du modèle modèle

Niveau élémentaire :

◦ Opérateurs d ’Euler f – a + s = 2cc Niveau supérieur :

◦ Transformations géométriques

◦ Opérations booléennes

◦ Dilatation/erosion :

Somme de Minkowski

A B

AnB

(42)

4.1. Transformations

4.1. Transformations

(43)

Transformations Transformations

Rotations :

( ) ( ) ( )

( ) ( )

=

ψ ψ

ψ 0 1 0

sin 0

cos

Ry

( ) ( ) ( )

( ) ( )

= θ θ

θ 0 cos sin 0 0

1 Rx

( )

=

1 0

0

0 )

cos(

) sin(

0 ) sin(

) cos(

α α

α α

z α R

Composition : est la rotation

d’angles d’Euler (lacet, tangage, roulis).

Associatif mais pas commutatif…

( ) ( )

sin ψ 0 cos ψ

( ) ( )

0 sin θ cos θ

( ) ( ) ( )

α y ψ x θ

z R R

R

( ) ( ) ( )

α , ψ , θ

(44)

Rotation autour d’un axe Rotation autour d’un axe





=

2 2

2

. .

. .

. .

z y

z x

z

z y y

x y

z x y

x x

N

n n

n n

n

n n n

n n

n n n

n n

A



 0 − n n

=

z y x

n n n N

y

N

P

O’ P’

θ

I-AN= -BN2





=

0 0

0

x y

x z

y z

N

n n

n n

n n

B

M = A + cos(θ).(I-A ) + sin(θ).B

x y

O

(45)

Rotation autour d’un axe Rotation autour d’un axe

=

z y x

n n n N

y

N

P

O’ P’

θ

OP = OO’ + O’P OP = OO’ + ||O’P|| i

OP’ = OO’ + cos(θ) ||O’P|| i + sin(θ) ||O’P|| j OP’ = OO’ + cos(θ) O’P + sin(θ) N n O’P

Approche vectorielle et démonstration

M = AN + cos(θ).(I-AN) + sin(θ).BN z

x y

AN est la matrice de projection sur l’axe N,

O OP’ = OO’ + cos(θ)(OP-OO’) + sin(θ) N n OP

OO’ = (N.OP) N = AN.OP = BN OP

(46)

Géométrie projective et Géométrie projective et coordonnées homogènes coordonnées homogènes

Le calcul doit être rapide :

Projection (œil) = plan de la caméra

La composition dépend du type de

La composition dépend du type de

transformation

(47)

Coordonnées Homogènes Coordonnées Homogènes

z

= 1

y x

 Pc



= y Pc x

Coordonnées Homogènes géométrie projective d=2

( ) ( ) ( )

( ) ( )

=

1 0

0

0 cos

sin

0 sin

cos

θ θ

θ θ

z θ R





=

1 /

1 / y Pc x

Matrice de transformation dans Rd+1

z=1

x y z

Pc

0 0 1





=

1 0

0

1 0

0 1

y x

T t

t

M

1

y

Pc ‘ = MT * Pc x

(48)

Translation et mise à l’échelle (d=3) Translation et mise à l’échelle (d=3)









=

1 0

0 0

1 0

0

0 1

0

0 0

1

z y x

T t

t t M

P M

P ' =

T









= 0 0 0

0 0

0

y x

S S

M

P ' = M

S

P

MT *(x,y,z,1) = (x+tx,y+ty,z+tz,1) (x+tx,y+ty,z+tz)

(49)

Rotations (d=3) Rotations (d=3)

x y

ψ

( )

( ) ( )

( ) ( )

=

1 0 0

0

0 1 0

0

0 0 cos

sin

0 0 sin

cos

φ φ

φ φ

z φ R

( ) ( )

cos ψ 0 sin ψ 0

z

θ

x

φ ( ) ( ) ( )

=

1 0

0 0

0 cos

0 sin

0 0

1 0

ψ ψ ψ

Ry

( ) ( ) ( )

( ) ( )

=

1 0

0 0

0 cos

sin 0

0 sin

cos 0

0 0

0 1

θ θ

θ θ θ

Rx

( )

'

z

.

y

.

x

P = RP = R R R P

(50)

3,3

0

3

1

H t

R T M

 

=  

 

 

ur

Matrice homogène de Matrice homogène de transformation

transformation

'

H

.

P = M P

 

1

1 3,3

3

( ) .

0 1

T T

H t

R R T

M

=   −

 

 

 

ur

(51)

Projections Projections

focale plan image

(52)

Projection orthographique Projection orthographique

Image

[0,0,f]

Image Plan y

x z

Repère caméra (œil)

=

1 0 0 0

0 0 0

0 0 1 0

0 0 0 1

M per f

[0,0,f]

x,y,f x,y,z

(53)

Projection perspective Projection perspective

Image y

x z

[0,0,f]

F=[0,0,0]

Image Plan

F=[0,0,0]

Repère caméra (œil)

[0,0,f]

Mper *(x,y,z,1) = (x,y,z,z/f) qui donne en 3D : (x*(f/z), y*(f/z), f)

=

1 0 0

0

0 1

0 0

0 0

1 0

0 0

0 1

f

M per x(f/z),y(f/z),f x,y,z

(54)

4.2. Opérations booléennes 4.2. Opérations booléennes

= TRUE

(55)

Opérations booléennes Opérations booléennes

Fr(B)dans A

Fr(A)dans B Fr(B)hors A Fr(AnB) = Fr(AuB) =

Fr(A) hors B Fr(A), Fr(B)

AnB AuB

A B

(56)

Opérations booléennes Opérations booléennes régularisées

régularisées

(57)

Opérations booléennes Opérations booléennes régularisées

régularisées

Fr(A)dans B Fr(B)sur- A

Fr(B)dans A

Fr(A)dans B

(58)

Fr(AnB) = Fr(A) dans B + Fr(B) dans A + Fr(B) sur + A

Opérations booléennes Opérations booléennes régularisées

régularisées

Fr(AuB) = Fr(A) hors B + Fr(B) hors A + Fr(B) sur +A Fr(A-B) = Fr(A) hors B + Fr(B) dans A + Fr(B) sur - A

(59)

Opérations booléennes Opérations booléennes

Exemple 3D

(60)

Opérations booléennes Opérations booléennes

Exemple 3D

(61)

Opérations booléennes Opérations booléennes

Exemple 3D Fr(A) hors B

Fr(B) hors A

Fr(A) dans B

Fr(B) dans A

Fr(B) sur+A

Fr(A) sur+ B

(62)

Opérations booléennes Opérations booléennes

1. Calcul des intersections

2. Classification des parties de frontière

Schéma de l’algorithme 2D et 3D

2. Classification des parties de frontière 3. Suppression des parties inutiles

4. Collage des parties restantes

(63)

Étape 1 : Arêtes = intersection des faces

Opérations booléennes

Opérations booléennes

(64)

Étape 2 : Classification des portions de frontière

Opérations booléennes Opérations booléennes

Fr(A) hors B

Fr(B) hors A

Fr(A) sur+ B

Fr(B) sur+A

(65)

Étape 3 : Suppression des portions de frontière

Opérations booléennes Opérations booléennes

Fr(A) hors B

Fr(B) hors A

Fr(AuB) = Fr(A) hors B + Fr(B) hors A + Fr(B) sur +A Fr(A) sur+ B

Fr(B) dans A

Fr(B) sur+A

(66)

Étape 4 : Collage des portions de frontière

Opérations booléennes Opérations booléennes

Fr(A) hors B

Fr(B) hors A

Fr(A) sur+ B

Fr(B) sur+A

(67)

EXERCICE :

EXERCICE : Sketchup Sketchup boolean boolean

Quelles parties de frontières sont conservées ?

A

B B

(68)

Domaine

Complétude

Propriétés

Propriétés du du modèle modèle

Complétude Unicité

Manipulation

MAYA® …

(69)

Exemples (libraires & toolkits) Exemples (libraires & toolkits)

GPL

http://www.cgal.org

Computational Geometry Algorithms Library

LGPL*

FreeCAD

LGPL*

LGPL*

http://www.opencascade.org

LGPL*

http://gts.sourceforge.net/

GNU Triangulated Surfaces Library https://www.openmesh.org/

LGPL*

(70)

Visualisation d’une triangulation (3D) : les parties cachées

1. Triangulations : structure, calcul des normales & affichage

2. Rotation et translations

3. « Backface culling »

SCILAB

Une introduction par la pratique

TP 2 : Parties cachées

4. Parties cachées : algorithme du peintre

(71)

Le

Le Clipping Clipping et le Back face et le Back face culling

culling

Face vue

Face non-vue Clipping

Face non-vue

Back plane

Front plane

Dans quel cas est-ce suffisant ?

(72)

Algorithmes à liste de priorité Algorithmes à liste de priorité (Algorithme du peintre)

(Algorithme du peintre)

Liste ordonnée de facettes

◦ trier les facettes suivant leur profondeur : Z-max

facettes (planes)

◦ afficher en Z-max décroissant

◦ ambiguïtés : problème du recouvrement cyclique…

T3

(73)

Hypothèses pour le TP Hypothèses pour le TP

Projection orthographique

Pas de recouvrement cycliques

Triplot2d(XYZcoord, itrnoe, couleur) est fournie : projection des triangles dans le plan image

Y Z

X Y

Z

X Z

Rcaméra

Rscene TODO :« Backface culling » Algorithme du peintre

Références

Documents relatifs

Si de nombreux travaux ont été consacrés au futur et / ou au conditionnel dits de conjecture (i.a. Damourette et Pichon 1911-1936, Martin 1981, Dendale 2010, Bres et Azzopardi

Nous avons démontré dans le chapitre 2 une propriété de décomposition (lemme 2.3.3) dont l’analogue sous-analytique est une conséquence de la nœthérianité de l’anneau

[r]

[r]

Pour chaque proposition, indiquer par une croix si elle est VRAIE ou FAUSSE VRAI FAUX Un nombre décimal est un rationnel.. La racine carrée d'un entier naturel est toujours un

E) Le produit de deux irrationnels est toujours

JC) savait écrire tout rationnel r strictement compris entre 0 et 1 comme somme d’inverses

— d'autre part, le coefficient de détermination (soit R2, le carré du coefficient de corrélation linéaire) permet de mesurer le Degré de Cohérence du Lien