1
Venceslas BIRIVenceslas BIRIIGMIGMUniversité de Marne La ValléeUniversité de Marne La Vallée
Synthèse d'images ISynthèse d'images I
63
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. ModélisationModélisation
III.III. Rendu & affichageRendu & affichage
Fabriquer une image de synthèse :Fabriquer une image de synthèse :
Venceslas BIRIVenceslas BIRIIGMIGMUniversité de Marne La ValléeUniversité de Marne La Vallée
Synthèse d'images ISynthèse d'images I
II. ModélisationII. Modélisation
65
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. ModélisationModélisation
A.A. L’espace 3DL’espace 3D
B.B. Les objetsLes objets
C.C. La scèneLa scène
D.D. La lumière et la matièreLa lumière et la matière
III.III. Rendu & affichageRendu & affichage
Venceslas BIRIVenceslas BIRIIGMIGMUniversité de Marne La ValléeUniversité de Marne La Vallée
Synthèse d'images ISynthèse d'images I
II. ModélisationII. Modélisation
B. ObjetsB. Objets
67
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. ModélisationModélisation
A.A. L’espace 3DL’espace 3D
B.B. Les objetsLes objets
1.1. Lignes & Courbes Lignes & Courbes
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes
C.C. La scèneLa scène
D.D. La lumière et la matièreLa lumière et la matière
III.III. Rendu & affichageRendu & affichage
2
68
Plan du coursPlan du cours
II.II. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes et courbesLignes et courbes
1.1. Modèles mathématiquesModèles mathématiques
a.a. DroitesDroites
b.b. Courbes paramétriquesCourbes paramétriques
c.c. SplinesSplines
2.2. Modèles informatiqueModèles informatique
a.a. Modélisation par segmentModélisation par segment
b.b. BressenhamBressenham
c.c. AntialiasingAntialiasing
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes
69
Droites en 2DDroites en 2D
Droites affines 2DDroites affines 2D
–– ÉquationÉquation
Coordonnées polaires d’une droiteCoordonnées polaires d’une droite
–– En polaire 2 paramètres suffisent égalementEn polaire 2 paramètres suffisent également
•• Mais équation plus générale, représente toutes les Mais équation plus générale, représente toutes les droitesdroites
ρρ
θθ
0 cbyax bxay ouou
0)sin()cos(
0
yx
cbyax
70
Droites en 2DDroites en 2D
Transformée de HoughTransformée de Hough
–– But : à partir d’un ensemble de pixels d’une But : à partir d’un ensemble de pixels d’une
image, retrouver la droite qui les relieimage, retrouver la droite qui les relie
–– En chaque point (x,y) passent une infinité de En chaque point (x,y) passent une infinité de
droite. droite.
•• Mais elles vérifient toute l’équation :Mais elles vérifient toute l’équation :
–– Espace de Hough :Espace de Hough :
•• Matrice NxN de valeurs des paramètres Matrice NxN de valeurs des paramètres ρ et θρ et θ
•• Discrétisation de l’espace de HoughDiscrétisation de l’espace de Hough
)sin()cos( yx
71
Droites en 2DDroites en 2D
Transformée de HoughTransformée de Hough
–– Méthode : Méthode :
•• Chaque pixel (x,y) créé une courbe dans l’espace de Chaque pixel (x,y) créé une courbe dans l’espace de Hough. Hough.
•• Chaque case de la matrice représentant l’espace de Chaque case de la matrice représentant l’espace de Hough s’incrémente de 1Hough s’incrémente de 1
•• La case ayant la plus grande valeur représente la La case ayant la plus grande valeur représente la droite qui représente le mieux les pixelsdroite qui représente le mieux les pixels
)sin()cos( yx
72
DroitesDroites
Droites 3DDroites 3D
–– Représentation cartésienne :Représentation cartésienne :
•• Une ligne en dimension est l’intersection de 2 plansUne ligne en dimension est l’intersection de 2 plans
–– Représentation paramétrique :Représentation paramétrique :
0
0
2222
1111
dzcybxa
dzcybxa
OO uu
zz
yy
xx
utOz
utOy
utOxPP
PP
avecavec
avecavec
z
y
x
P
z
y
x
O
O
O
O
z
y
x
u
u
u
u
etet
Attention : il est souvent intéressant de choisir u unitaireAttention : il est souvent intéressant de choisir u unitaire
ouou
73
DroitesDroites
Distance d d’un point à une droite D ?Distance d d’un point à une droite D ?
OO
uu
PP
On cherche la longueur bleue :On cherche la longueur bleue :
1.1. Calculer la projection de P sur DCalculer la projection de P sur D2.2. Calculer PP’Calculer PP’3.3. Prendre sa normePrendre sa norme
P’P’
uuOPOP ).(' Calcul de P’ :Calcul de P’ :
DD
Calcul de PP’ :Calcul de PP’ :
Calcul de d :Calcul de d :
uuOPPOPuuOPOPPPP ).().(''
'PPd
3
74
DroitesDroites
Autres problèmes :Autres problèmes :
–– Distance entre deux droites DDistance entre deux droites D11 et Det D22 ::
–– Intersection droite et planIntersection droite et plan
–– Point moyen de 2 droites, de 3 droites...Point moyen de 2 droites, de 3 droites...
OO11
uu11 PP22
PP11
DD11
uu22
OO
22
DD22
Résolution du système linéaire :Résolution du système linéaire :
0.
0.
221
121
uPP
uPP
avecavec
2222
1111
utOP
utOP
75
CourbesCourbes
Comment représenter les courbes ?Comment représenter les courbes ?
–– A l’aide de fonction pour les trois coordonnéesA l’aide de fonction pour les trois coordonnées
–– Représentation paramétrique :Représentation paramétrique :
)(
)(
)(
),,(
tfz
tfy
tfx
zyxP
z
y
x
y = sin(x)y = sin(x)x = r cos(x = r cos(θ)θ)
y = yy = y00 + r sin(θ)+ r sin(θ)
z = z = r cos(r cos(θ/16)θ/16)
76
CourbesCourbes
Comment représenter les courbes ?Comment représenter les courbes ?
–– A l’aide de conditionA l’aide de conditionss (3d) sur les coordonnées(3d) sur les coordonnées
–– Représentation cartésienne :Représentation cartésienne :
0),,(
0),,(),,(
2
1
zyxf
zyxfzyxP
y y -- sin(x) = 0sin(x) = 0
z = 0z = 0??????
77
Courbes paramétriquesCourbes paramétriques
Exemple : trajectoireExemple : trajectoire
–– Particule soumise à accélération a, munie d’une Particule soumise à accélération a, munie d’une
vitesse initiale Vvitesse initiale V00 et situé à l’origine.et situé à l’origine.
VV00
dtvdzga
accélération de la particule :accélération de la particule :
dtdPvztgv 0
vitesse de la particule :vitesse de la particule :
position de la particule :position de la particule : 0
2
2vtztgOP
z
y
x
vttgz
vtyvtx
0
20
0
2
78
Courbes paramétriquesCourbes paramétriques
TangenteTangente
–– Définie en tout point de paramètre t de la courbe Définie en tout point de paramètre t de la courbe
par le vecteur :par le vecteur :
Repère de Fresnet :Repère de Fresnet :
–– Base orthonormaleBase orthonormale
directedirecte
)(
)(
)(
)(
tdtdf
tdtdf
tdtdf
dttdM
v
z
y
x
vvT
N
79
Courbes paramétriquesCourbes paramétriques
Rayon de courbure :Rayon de courbure :
–– courbure algébrique courbure algébrique ::
–– Calcul de Calcul de ::
–– Rayon de courbure :Rayon de courbure :
)()( tNtdtdT car T est un vecteur unitairecar T est un vecteur unitaire
)(.)()( tNtdtdTt avec avec >0>0 positifpositif
)(1)(t
t
4
80
Courbes libresCourbes libres
81
Courbes libresCourbes libres
Courbes définies par des pointsCourbes définies par des points–– ApproximationApproximation
•• Guidée par les pointsGuidée par les points
–– InterpolationsInterpolations•• Passe par les pointsPasse par les points
InterpolationInterpolation–– Linéaire, parabole,Linéaire, parabole,
Spline CatmullSpline Catmull--rom…rom…
ApproximationApproximation–– Bézier, BBézier, B--spline,spline,
ββ--Spline…Spline…
82
Courbes : famillesCourbes : familles
BézierBézier
SplineSpline
BB--SplineSpline
Natural cubique SplineNatural cubique Spline
CatmulCatmul--rom Splinerom Spline
nonperiodic Bnonperiodic B--splinespline
uniform Buniform B--splinespline
NURBSNURBS
KochanekKochanek––Bartels splineBartels spline
ApproximationApproximation
InterpolationInterpolation83
Courbes de BézierCourbes de Bézier
Courbes de Bézier : Courbes de Bézier :
–– Courbes paramétriques épousant la forme d’une Courbes paramétriques épousant la forme d’une
ligne brisée joignant des points prédéfinisligne brisée joignant des points prédéfinis
•• La courbe paramétrique est définie par des polynômesLa courbe paramétrique est définie par des polynômes
Cas particulier avec 3 points : Cas particulier avec 3 points :
bb00
bb
11
bb22
bb0011
bb1111
bb0022
10
1
0 )1()( btbttb
21
1
1 )1()( btbttb
Les points de la courbe sont alors définis par :Les points de la courbe sont alors définis par :
)()()1()( 1
1
1
0
2
0 tbttbttb avecavec 1..0t
84
Courbes de BézierCourbes de Bézier
Algorithme général :Algorithme général :
–– Algorithme de De Casteljau :Algorithme de De Casteljau :
•• Soit m+1 points bSoit m+1 points b00,b,b11, ... , b, ... , bm m et t et t Є Є [0..1][0..1]
)()()1()(],..0[],..1[1
1
1tbttbttbrmimr
r
i
r
i
r
i
iibtbmi )(],..0[
0
bb00mm(t) est le point de paramètre t sur la courbe de Bézier (de degré m)(t) est le point de paramètre t sur la courbe de Bézier (de degré m)
bb00mm(t)(t)
bb00mm--11(t)(t) bb11
mm--11(t)(t)
bbmm00(t)(t)bbmm--11
00(t)(t)bbi+1i+100(t)(t)bbii
00(t)(t)bb1100(t)(t)bb00
00(t)(t)
22mm évaluations !évaluations !
85
Courbes de BézierCourbes de Bézier
Définitions :Définitions :–– Point bPoint bii : point de contrôle ou de Bézier: point de contrôle ou de Bézier
–– Polygone formé des bPolygone formé des bii : polygone de contrôle ou : polygone de contrôle ou de Bézierde Bézier
Propriétés :Propriétés :–– Invariant par transformation affineInvariant par transformation affine
•• On a besoin que de transformer les points de contrôleOn a besoin que de transformer les points de contrôle
–– Invariant par transformation affine du paramètre Invariant par transformation affine du paramètre de parcours tde parcours t
–– Passe par les points bPasse par les points b00 et bet bmm et courbe tangente et courbe tangente au polygone de contrôle en ces pointsau polygone de contrôle en ces points
–– Enveloppe convexeEnveloppe convexe
On peut rajouter des poids associés à chaque point de contrôleOn peut rajouter des poids associés à chaque point de contrôle
5
86
Courbes de BéziersCourbes de Béziers
Forme de BernsteinForme de Bernstein
–– Les polynômes de Berstein sont définis par :Les polynômes de Berstein sont définis par :
•• Satisfont l’équation de récurrence :Satisfont l’équation de récurrence :
–– Les points de la courbe de Bézier peuvent aussi Les points de la courbe de Bézier peuvent aussi
s’écrire :s’écrire :
imim
itt
i
mtB
)1()(
)()()1()(1
1
1tBttBttB
m
i
m
i
m
i
m
i
i
imim btti
mtb
0
)1()(
87
Courbes de BézierCourbes de Bézier
Exemple de courbe de degré 1Exemple de courbe de degré 1
Exemple de courbe de degré 2Exemple de courbe de degré 2
]1...0[)()()1()()(0
1
0
0
1
0 ttbttbttbtB
]1...0[)1()(10
tbtbttBsoitsoit
]1...0[)1(2)1()(2
2
10
2 tbtbttbttB
88
SplinesSplines
Défaut des courbes de BézierDéfaut des courbes de Bézier
–– M points M points polynômes de degré Mpolynômes de degré M--11
–– Si on modifie un point, toute la courbe est Si on modifie un point, toute la courbe est
modifiéemodifiée
•• Impossible de modifier des comportements locaux Impossible de modifier des comportements locaux
sans changer l’ensemble de la courbesans changer l’ensemble de la courbe
Idée : relier des courbes entre des groupes Idée : relier des courbes entre des groupes
de pointsde points
–– Plusieurs possibilitésPlusieurs possibilités
•• Approximation : BApproximation : B--splines …splines …
•• Interpolation : CatmullInterpolation : Catmull--rom …rom …
89
SplinesSplines
Définition :Définition :
–– Soit n+1 valeurs dans [a,b] avec :Soit n+1 valeurs dans [a,b] avec :
on définit la fonction spline de degré mon définit la fonction spline de degré m
par S : R par S : R RR
si :si :
–– C’est le cas général ...C’est le cas général ...
bttttann
110...
),( baS1-mC
]1...0[,],[1
nittSii mP
PPmm est l’ensemble des polynômes de degré mest l’ensemble des polynômes de degré m
Attention : spline d’ordre m = spline de degré mAttention : spline d’ordre m = spline de degré m--11
90
Courbes splinesCourbes splines
DéfinitionDéfinition
–– On a donc :On a donc :
•• N+1 points et N+1 nœudsN+1 points et N+1 nœuds
•• N intervallesN intervalles
•• Des polynômes de degré m sur chaque intervalleDes polynômes de degré m sur chaque intervalle
Une Une courbe splinecourbe spline est définie par est définie par nn+1 points de contrôle et +1 points de contrôle et nn+1 fonctions de+1 fonctions de
pondération :pondération :
-- Les fonctions de pondérations sont définies sur des intervalles [Les fonctions de pondérations sont définies sur des intervalles [ttkk, , ttk+1k+1]. ].
TT=(=(tt00, , tt11,..., ,..., ttnn+1+1) est appelé ) est appelé vecteur de points nodauxvecteur de points nodaux..
-- Les fonctions de pondération sont des Les fonctions de pondération sont des splines d'ordre splines d'ordre mm (des polynômes par(des polynômes par
morceaux continus d'ordre morceaux continus d'ordre mm--1 aux noeuds)1 aux noeuds)
)()(00 tRPtRPP nn
91
BB--SplinesSplines
6
92
BB--SplinesSplines
Cas des BCas des B--Splines :Splines :
–– Les Les ttii s’appellent des nœudss’appellent des nœuds
–– On se donne doncOn se donne donc
•• des polynômes à définition récursive de degré mdes polynômes à définition récursive de degré m
•• n+1 points de contrôles Pn+1 points de contrôles Pkk
•• n intervalles [tn intervalles [t00,t,t11] , [t] , [t11,t,t22] ... [t] ... [tnn--11,t,tnn] et donc n+1 nœuds] et donc n+1 nœuds
En fait on aura besoin de n+m+1 nœudsEn fait on aura besoin de n+m+1 nœuds
–– Polynôme : fonction de pondérationPolynôme : fonction de pondération
93
BB--SplinesSplines
Équations dans le cas généralÉquations dans le cas général
110 ... mnmn tttt
]...[)()( 1
0
nm
n
i
i
i
m tttPtbtS
oùoù
sinontb
tttttsitbi
iiii
i
0)(
&1)(
0
110
etet )()()(1
111
11
tbtt
tttb
tt
tttb
i
kiki
kii
kiki
ii
k
Avec pour convention, si un des dénominateur est nul (nœud multiple)Avec pour convention, si un des dénominateur est nul (nœud multiple)
d’annuler le facteur correspondantd’annuler le facteur correspondant
94
BB--SplinesSplines
Exemple des fonctions de pondération des Exemple des fonctions de pondération des
BB--SplinesSplines
Ordre 1Ordre 1
Degré 0Degré 0
Ordre 2Ordre 2
Degré 1Degré 1
Ordre 3Ordre 3
Degré 2Degré 2
95
BB--SplinesSplines
Différents types de BDifférents types de B--SplineSpline
–– Lorsque les tLorsque les tii sont uniformément répartis, alors sont uniformément répartis, alors
la Bla B--Spline est dite uniformeSpline est dite uniforme
–– Dans certains cas, des tDans certains cas, des tii consécutifs sont égauxconsécutifs sont égaux
•• Les points associés sont identiques égalementLes points associés sont identiques également
•• Appelés nœuds multiplesAppelés nœuds multiples
–– BB--Spline non périodiqueSpline non périodique
•• Nœuds placés au début et à la finNœuds placés au début et à la fin
96
BB--SplinesSplines
Équations dans le cas uniforme :Équations dans le cas uniforme :
–– On peut prendre :On peut prendre :
]1...0[, mniiti
]1...[)()(0
nmtPtbtSn
i
i
i
m
oùoù
sinontb
itisitbi
i
0)(
11)(
0
0
etet )(1
)()(1
11tb
ktki
tbkit
tbi
k
i
k
i
k
97
BB--SplinesSplines
Degré d’une BDegré d’une B--Spline :Spline :
–– Degré commun à chaque courbe de BézierDegré commun à chaque courbe de Bézier
–– Degré 1 : BDegré 1 : B--Spline linéaire CSpline linéaire C00 (m = 1) (m = 1)
•• Chaque courbe de Bézier est une droite. La courbe Chaque courbe de Bézier est une droite. La courbe BB--Spline est le polygone formé des points de contrôleSpline est le polygone formé des points de contrôle
•• La BLa B--Spline est CSpline est C00 partout (continue)partout (continue)
•• Chaque début et fin de courbe de Bézier est relié à Chaque début et fin de courbe de Bézier est relié à
l’autre. Points de jonction = points de contrôlel’autre. Points de jonction = points de contrôle
PP00
PP11
PP22
PP33
7
98
BB--SplinesSplines
–– Degré 2 : BDegré 2 : B--Spline Spline
quadratique Cquadratique C11 (m = 2)(m = 2)
•• Équivalence courbe de Équivalence courbe de Bézier / SplineBézier / Spline
•• Chaque courbe de Bézier Chaque courbe de Bézier sera définie par :sera définie par :
L’intervalle [ tL’intervalle [ ti i ; t; ti+1 i+1 ]]
2 points de Bézier interne 2 points de Bézier interne
bb2i2i et bet b2i+22i+2
1 point de contrôle 1 point de contrôle
bb2i+12i+1 = P= Pi+1i+1
1211
112
11
12
iii
iii
ii
iii
btt
ttb
tt
ttb
avec bavec b--11 = P= P00 et bet b2n+12n+1 = P= Pn+2n+299
BB--SplinesSplines
–– Degré 3 : BDegré 3 : B--Spline cubique CSpline cubique C22 (m = 3)(m = 3)
•• On se donne n+3 points de contrôleOn se donne n+3 points de contrôle
On a 3n+1 points de jonctionOn a 3n+1 points de jonction
•• Chaque courbe cubique sera définie par :Chaque courbe cubique sera définie par :
L’intervalle [ tL’intervalle [ ti i ; t; ti+1 i+1 ]]
2 points interne b2 points interne b3i+13i+1 et bet b3i+23i+2
2 points de contrôle b2 points de contrôle b3i3i = P= Pii et bet b3i+33i+3 = P= Pi+1i+1
3312
113
12
1223
3312
13
12
213
iii
iii
ii
iii
iii
iii
ii
iii
btt
ttb
tt
ttb
btt
ttb
tt
ttb
100
NURBSNURBS
NonUniform Rational BNonUniform Rational B--SplineSpline
–– On rajoute des poids aux nœuds (Rational)On rajoute des poids aux nœuds (Rational)
–– L’équation devient :L’équation devient :
]...[
)(
)(
)( 1
0
0
nmn
i
i
i
m
n
i
ii
i
m
ttt
wtb
Pwtb
tS
Interpolation Interpolation SplineSpline
Famille des Famille des splinessplines d’interpolationd’interpolation–– Cette fois on demande explicitement que la Cette fois on demande explicitement que la
courbe passe par les pointscourbe passe par les points•• Exemple : BExemple : B--SplineSpline linéaire ok (ordre 2 / degré 1)linéaire ok (ordre 2 / degré 1)
–– Soit Soit n+1n+1 nœuds nœuds ttii, on a S défini par, on a S défini par
],[
],[
],[
)(
)(
)(
)(
1
21
10
1
1
0
nnn ttt
ttt
ttt
tS
tS
tS
tS
Interpolation Interpolation SplineSpline
On veut rajouter des conditionsOn veut rajouter des conditions–– Interpolation Interpolation SS((xxii)=)= PPii
•• n+1n+1 conditionsconditions
–– Continuité, Continuité, SSii--11((xxii) = ) = SSii((xxii), ), i i =1,...,=1,...,nn--1 1 •• nn--11 conditionsconditions
–– Dérivable 2 fois, Dérivable 2 fois, SS''ii--11((xxii) = ) = SS''ii((xxii) & ) & SS''''ii--11((xxii) = ) = SS''''ii((xxii))
•• 2*(n2*(n--1)1) conditionsconditions
Impose, au minimum, des polynômes de Impose, au minimum, des polynômes de degréedegrée 33–– CubicCubic interpolation interpolation splinespline
Total : 4n Total : 4n –– 2 conditions2 conditions
–– pour 4n inconnuespour 4n inconnues
–– On a 2 choixOn a 2 choix
102 103
Natural cubic splineNatural cubic spline
Défini parDéfini par
Calcul par résolution de système linéaireCalcul par résolution de système linéaire
0)(''
0)('' 0
nxS
xS
8
104
Spline cubique hermitienneSpline cubique hermitienne
Définition succincte :Définition succincte :
–– Définie à partir de deux points pDéfinie à partir de deux points p00, p, p11 et deux et deux
tangentes mtangentes m00 et met m11
105
Catmull Rom SplineCatmull Rom Spline
Très utilisées en synthèse d’imagesTrès utilisées en synthèse d’images
106
CatmullCatmull Rom Rom SplineSpline
Tangente mTangente m00 et met m11 choisie telle quechoisie telle que
–– Parallèle au segment [PParallèle au segment [Pkk--11 PPk+1k+1]]
–– Chaque tronçon dépend de 4 pointsChaque tronçon dépend de 4 points
D’autres choix possiblesD’autres choix possibles
–– Différence finieDifférence finie
–– Cardinal splineCardinal spline
–– KochanekKochanek––Bartels splineBartels spline
•• Avec 3 paramètres : tension, biais et continuitéAvec 3 paramètres : tension, biais et continuité
2
11 kk
k
ppm
107
Plan du coursPlan du cours
III.III. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes et courbesLignes et courbes
1.1. Modèles mathématiquesModèles mathématiques
a.a. DroitesDroites
b.b. Courbes paramétriquesCourbes paramétriques
c.c. SplinesSplines
2.2. Modèles informatiqueModèles informatique
a.a. Modélisation par segmentModélisation par segment
b.b. BressenhamBressenham
c.c. AntialiasingAntialiasing
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes
108
Modélisation de courbeModélisation de courbe
On travaille sur une imageOn travaille sur une image
–– Espace discret de valeurEspace discret de valeur
–– Comment représenter les courbes ?Comment représenter les courbes ?
•• DéformationsDéformations
Un espace discret ne peut rendre compte d’un espace Un espace discret ne peut rendre compte d’un espace
continucontinu
•• Calcul de chaque pixel, pour chaque petit déplacement Calcul de chaque pixel, pour chaque petit déplacement de la courbe ?de la courbe ?
109
Modélisation par segmentModélisation par segment
Travailler pixel / pixel : trop cherTravailler pixel / pixel : trop cher
–– Discrétisation de la courbeDiscrétisation de la courbe
•• Travailler avec des segmentsTravailler avec des segments
–– Segments :Segments :
•• Facile à dessiner sur une imageFacile à dessiner sur une image
•• Souple, permet d’affiner uniformément, choix du Souple, permet d’affiner uniformément, choix du nombre de segment ...nombre de segment ...
•• Exemple avec le cercleExemple avec le cercle
9
110
Modélisation par segmentModélisation par segment
Algorithme :Algorithme :
fonctionfonction dessine(dessine(C courbe paramétrique, C courbe paramétrique,
réel tinit, réel tinit,
réel tfin, réel tfin,
int nb_segmentint nb_segment););
débutdébut
réel réel t;t;
réelréel pas = (tfin pas = (tfin –– tinit)/nb_segment;tinit)/nb_segment;
for(t=tinit;t<tfin;t+=pas) {for(t=tinit;t<tfin;t+=pas) {
segment(C(t),C(t+pas));segment(C(t),C(t+pas));
}}
finfin
111
BresenhamBresenham
Un algorithme optimisé de tracé de droiteUn algorithme optimisé de tracé de droite
–– Créé en 1961 par Jack BresenhamCréé en 1961 par Jack Bresenham
–– Répond à la question :Répond à la question :
•• Algorithme rapide pour allumer les pixels d’un Algorithme rapide pour allumer les pixels d’un segment (x1,y1) segment (x1,y1) –– (x2,y2)(x2,y2)
112
BresenhamBresenham
Approche naïve :Approche naïve :
–– Cas 0 < dy < dxCas 0 < dy < dx
–– Pour chaque colonnePour chaque colonne
•• Calculer son ordonnée avec :Calculer son ordonnée avec :
•• Prendre la valeur entière la plus proche de yPrendre la valeur entière la plus proche de y
–– Défauts :Défauts :
•• Calcul de la valeur entièreCalcul de la valeur entière
•• Calcul en nombres rationnelsCalcul en nombres rationnels
•• 1 pixel par colonne ?1 pixel par colonne ?
)(1
12
121
xxxx
yyyy
113
BresenhamBresenham
–– Algorithme approche naïve :Algorithme approche naïve :
fonctionfonction tracerSegment(tracerSegment(entierentier xx11,,entierentier yy11,,entierentier xx22,,entierentier yy22))
entierentier x, y, dx, dy ; x, y, dx, dy ;
réelréel err, decal, incr; err, decal, incr;
// Erreurs et increments // Erreurs et increments
dy := ydy := y22 -- yy11 ; ;
dx := xdx := x22 -- xx11 ; ;
y := yy := y11 ; ;
err := 0 ; err := 0 ;
incr := dy / dx ; incr := dy / dx ;
decal := decal := --1.0 ; 1.0 ;
pourpour x x variant devariant de xx11 jusqu’àjusqu’à xx22 par incrément depar incrément de 1 1 fairefaire
tracerPixel(x, y); tracerPixel(x, y);
sisi (err := err + incr) ≥ 0,5 (err := err + incr) ≥ 0,5 alorsalors
y := y + 1 ; y := y + 1 ;
err := err + decal ; err := err + decal ;
finfin
fin fin
fin fin
114
BresenhamBresenham
Optimisation par BresenhamOptimisation par Bresenham
–– MéthodeMéthode
•• Équation :Équation :
•• F(x,y) : distance, erreur entre la droite et un point (x,y)F(x,y) : distance, erreur entre la droite et un point (x,y)
•• Si on calcule F(x+1,y+0.5), on sait quel pixel allumerSi on calcule F(x+1,y+0.5), on sait quel pixel allumer
•• De plus on a la nouvelle erreur pour la prochaine foisDe plus on a la nouvelle erreur pour la prochaine fois
0),( 11 xdyxdyydxydxyxF
dyxFyxF )1()5.0,2(
dxdyxFyxF )1()5.1,2(
Si on allume le pixel du basSi on allume le pixel du bas
Si on allume le pixel du hautSi on allume le pixel du haut
115
BresenhamBresenham
•• Première erreur :Première erreur :
–– Optimisation :Optimisation :
•• Prendre que des valeurs entièresPrendre que des valeurs entières
•• Pas de problème pour les incrémentsPas de problème pour les incréments
Reste la valeur initial Reste la valeur initial
On multiplie tout par 2On multiplie tout par 2
dydxyxF 2
)5.0,1(
10
116
BresenhamBresenham
–– AlgorithmeAlgorithme
fonctionfonction bresenham(bresenham(entierentier xx11,,entierentier yy11,,entierentier xx22,,entierentier yy22))
entierentier x, y, dx, dy ; x, y, dx, dy ;
entierentier err; err;
// Erreurs et increments // Erreurs et increments
x = xx = x11;;
y = yy = y11;;
dy := ydy := y22 -- yy11 ; ;
dx := xdx := x22 -- xx11 ; ;
tracerPixel(x, y); tracerPixel(x, y);
err := err := --dx ; dx ;
pourpour x x variant devariant de xx11+1 +1 jusqu’àjusqu’à xx22 par incrément depar incrément de 1 1 fairefaire
err += 2*dy;err += 2*dy;
sisi (err ≥ 0) (err ≥ 0) alorsalors
y := y + 1 ; y := y + 1 ;
err err --= 2*dx ; = 2*dx ;
fin sifin si
tracerPixel(x, y); tracerPixel(x, y);
fin pour fin pour
finfin
117
BresenhamBresenham
Bien vu mais ...Bien vu mais ...
–– Tout les calculs en valeur entièreTout les calculs en valeur entière
•• Efficace mais maintenant tous les calculs se font en Efficace mais maintenant tous les calculs se font en flottants sur les cartes graphiquesflottants sur les cartes graphiques
Coût de la conversionCoût de la conversion
•• Problème pour gérer l’antialiasing...Problème pour gérer l’antialiasing...
118
AntialiasingAntialiasing
AntiAnti--crénelagecrénelage
–– Les droites discrètes sont peu esthétiques ...Les droites discrètes sont peu esthétiques ...
119
AntialiasingAntialiasing
120
AntialiasingAntialiasing
Allumer les pixels Allumer les pixels
–– suivant leur distance au segment à tracersuivant leur distance au segment à tracer
–– On joue sur l’illuminationOn joue sur l’illumination
AlgorithmeAlgorithme
functionfunction drawLine(x1,y1,x2,y2) { drawLine(x1,y1,x2,y2) {
dx = x2 dx = x2 -- x1; // On suppose x2 > x1x1; // On suppose x2 > x1
dy = y2 dy = y2 -- y1; // On suppose y2 > y1y1; // On suppose y2 > y1
gradient = dy / dx;gradient = dy / dx;
// Gérer le premier point // Gérer le premier point
xend = round(x1);xend = round(x1);
yend = y1 + gradient * (xend yend = y1 + gradient * (xend -- x1);x1);
xgap = (1 xgap = (1 –– partie_rationnelle(x1 + 0.5));partie_rationnelle(x1 + 0.5));
xpxl1 = xend; // premier point entier proche de xendxpxl1 = xend; // premier point entier proche de xend
ypxl1 = partie_entiere(yend); ypxl1 = partie_entiere(yend);
plot(xpxl1, ypxl1, (1 plot(xpxl1, ypxl1, (1 –– partie_rationnelle(yend)) * xgap); partie_rationnelle(yend)) * xgap);
plot(xpxl1, ypxl1 + 1, partie_rationnelle(yend) * xgap); plot(xpxl1, ypxl1 + 1, partie_rationnelle(yend) * xgap);
next_y = yend + gradient; // Premier point d’intersection pour y next_y = yend + gradient; // Premier point d’intersection pour y
......
121
AntialiasingAntialiasing
functionfunction drawLine(x1,y1,x2,y2) { drawLine(x1,y1,x2,y2) {
......
// gerer le second point // gerer le second point
xend = round(x2) xend = round(x2)
yend = y2 + gradient * (xend yend = y2 + gradient * (xend -- x2) x2)
xgap = fpart(x2 + 0.5) xgap = fpart(x2 + 0.5)
xpxl2 = xend // this will be used in the main loop xpxl2 = xend // this will be used in the main loop
ypxl2 = ipart(yend) ypxl2 = ipart(yend)
plot(xpxl2, ypxl2, rfpart(yend) * xgap) plot(xpxl2, ypxl2, rfpart(yend) * xgap)
plot(xpxl2, ypxl2 + 1, fpart(yend) * xgap) plot(xpxl2, ypxl2 + 1, fpart(yend) * xgap)
// main loop // main loop
forfor x x fromfrom xpxl1 + 1 xpxl1 + 1 toto xpxl2 xpxl2 -- 1 1 dodo
plot(x, ipart(intery), rfpart(intery)) plot(x, ipart(intery), rfpart(intery))
plot(x, ipart(intery) + 1, fpart(intery)) plot(x, ipart(intery) + 1, fpart(intery))
intery = intery + gradient intery = intery + gradient
donedone
}}
11
122
AntialiasingAntialiasing
123
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes & Courbes Lignes & Courbes
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
IV.IV. Rendu & affichageRendu & affichage
124
Plan du coursPlan du cours
III.III. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes et courbesLignes et courbes
2.2. SurfacesSurfaces
1.1. Modèles mathématiquesModèles mathématiques
a.a. Objets géométrique simpleObjets géométrique simple
b.b. Surfaces implicitesSurfaces implicites
2.2. Modèles informatiquesModèles informatiques
a.a. Soupe de trianglesSoupe de triangles
b.b. Ensemble de points, surfelsEnsemble de points, surfels
c.c. Marching cubesMarching cubes
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes125
Objets géométriquesObjets géométriques
Plan :Plan :–– Équation cartésienne :Équation cartésienne :
•• Normale du plan :Normale du plan :
–– Équations paramétriques :Équations paramétriques :•• Soit O un point du plan, u et v deux vecteurs du plan Soit O un point du plan, u et v deux vecteurs du plan
non colinéairesnon colinéaires
•• Normale :Normale :
0 dzcybxa
zzz
yyy
xxx
vtusOz
vtusOy
vtusOx
vun
Tcban ),,(
126
Cartésien / paramétrique ?Cartésien / paramétrique ?
Différents type de coordonnéesDifférents type de coordonnées
Deux formes distinctesDeux formes distinctes
–– Une représentation fondée sur une Une représentation fondée sur une
paramètrisation des coordonnéesparamètrisation des coordonnées
–– Une représentation fondée sur une contrainte Une représentation fondée sur une contrainte
liée aux coordonnéesliée aux coordonnées
–– Deux façons de voir les courbes, les surfaces ...Deux façons de voir les courbes, les surfaces ...
127
Objets géométriquesObjets géométriques
Sphère :Sphère :
–– Centre C et rayon RCentre C et rayon R
–– Équation cartésienne :Équation cartésienne :
•• Normale en P :Normale en P :
–– Équations Équations
paramétriques ?paramétriques ?
0)()()(2222 Rzzyyxx
CCC
CP
12
128
Objets géométriquesObjets géométriques
Cylindre :Cylindre :
–– Axe (Oy), rayon R, hauteur h à partir de l’origineAxe (Oy), rayon R, hauteur h à partir de l’origine
hy
Rzx
0
0222
Équation cartésienneÉquation cartésienne
Équations paramétriques ?Équations paramétriques ?
129
Différentes coordonnéesDifférentes coordonnées
Coordonnées cartésiennesCoordonnées cartésiennes
–– Celles que l’on vient de voirCelles que l’on vient de voir
–– Utile très souvent mais ... Utile très souvent mais ...
... pour se déplacer sur une sphère ?... pour se déplacer sur une sphère ?
On a défini aussi 2 autres types de On a défini aussi 2 autres types de
coordonnéescoordonnées
–– Coordonnées cylindriques Coordonnées cylindriques
–– Coordonnées sphériquesCoordonnées sphériques
130
Coordonnées cylindriquesCoordonnées cylindriques
θθ
rr
MM
PPzz
zyx
M coordonnéescoordonnées
cartésiennescartésiennes
z
rM coordonnéescoordonnées
cylindriquescylindriques
zzryrx
)(sin)(cos
131
Coordonnées sphériquesCoordonnées sphériques
MM
PP
φφ
θθ
rr
zyx
M coordonnéescoordonnées
cartésiennescartésiennes
r
M coordonnéescoordonnées
sphériquessphériques
)cos()sin()(sin)sin()(cos
rzryrx
132
TrigonométrieTrigonométrie
DéfinitionDéfinition
–– Étude des rapports de distances et d’angle dans Étude des rapports de distances et d’angle dans
les triangles ainsi que les fonctionsles triangles ainsi que les fonctions
trigonométriquestrigonométriques
–– Triangle rectangle en CTriangle rectangle en C
θθ
cb)cos(
ca)sin(
ba)tan(
1)(sin)(cos 22
Par pythagore :Par pythagore :
133
TrigonométrieTrigonométrie
Identités trigonométriques (cf. wikipedia)Identités trigonométriques (cf. wikipedia)
ParitéParité
Addition et soustractionAddition et soustraction
SymétrieSymétrie
DuplicationDuplication
13
134
Trigonométrie : cosinus & sinusTrigonométrie : cosinus & sinus
135
Trigonométrie : table de valeursTrigonométrie : table de valeurs
136
Trigonométrie et vecteursTrigonométrie et vecteurs
Formule avec les vecteursFormule avec les vecteurs
–– Soit u et v deux vecteurs :Soit u et v deux vecteurs :
θθ
u
v
)cos(. vuvu
nvuvu
)sin(
Pour le cosinus :Pour le cosinus :
Pour le sinus :Pour le sinus :
Manière de calculer les fonctions trigonométriques très efficaceManière de calculer les fonctions trigonométriques très efficace
(si on peut éviter les racines carrées)(si on peut éviter les racines carrées)
avec n vecteur normal à u et vavec n vecteur normal à u et v
137
Objets géométriquesObjets géométriques
Cône :Cône :
–– Axe (Oy), pointe en 0, angle Axe (Oy), pointe en 0, angle αα
)()(cot2222zxy
)sin(
)cot(
)cos(
z
y
x
Équation cartésienneÉquation cartésienne
Équations paramétriquesÉquations paramétriques
138
Objets géométriquesObjets géométriques
EllipsoïdesEllipsoïdes
–– Sorte de triple ellipse, un axe pour chaque Sorte de triple ellipse, un axe pour chaque
directiondirection
•• Grand axe a, axe moyen b, petit axe cGrand axe a, axe moyen b, petit axe c
–– Équation cartésienne :Équation cartésienne :
–– Équations Équations
paramétriques :paramétriques :
12
2
2
2
2
2
cz
b
y
ax
)sin(
)sin()cos(
)cos()cos(
cz
by
ax
139
Surfaces implicitesSurfaces implicites
Définir une surface comme un potentielDéfinir une surface comme un potentiel
–– Se munir d’une fonction de potentielSe munir d’une fonction de potentiel
–– La surface S représente tous les points ayant un La surface S représente tous les points ayant un
potentiel précis :potentiel précis :
•• ff peut être une fonction analytiquepeut être une fonction analytique
•• Le plus souvent est défini à partir de squeletteLe plus souvent est défini à partir de squelette
On fixe un squelette (point, ligne ou forme)On fixe un squelette (point, ligne ou forme)
Le potentiel «Le potentiel « irradieirradie » à partir de ce squelette» à partir de ce squelette
0),,( zyxf
isozyxfzyxPSiso
),,(),,(
14
140
Surfaces implicitesSurfaces implicites
Fonction de potentiel par squeletteFonction de potentiel par squelette
–– Soit Soit nn formes de baseformes de base
•• ffii est la fonction de potentiel relative à la iest la fonction de potentiel relative à la ièmeème formeforme
–– La fonction de potentiel est :La fonction de potentiel est :
–– Choix desChoix des ffii
n
ii
zyxfzyxf1
),,(),,(
141
Surfaces implicitesSurfaces implicites
Quelques exemples :Quelques exemples :
142
Plan du coursPlan du cours
III.III. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes et courbesLignes et courbes
2.2. SurfacesSurfaces
1.1. Modèles mathématiquesModèles mathématiques
a.a. Objets géométrique simpleObjets géométrique simple
b.b. Surfaces implicitesSurfaces implicites
2.2. Modèles informatiquesModèles informatiques
a.a. Soupe de triangles, de polygonesSoupe de triangles, de polygones
b.b. Ensemble de points, surfelsEnsemble de points, surfels
c.c. Marching cubesMarching cubes
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes143
Modèles de surfacesModèles de surfaces
5 grandes familles5 grandes familles
–– BB--RepRep
–– Modélisation par point Modélisation par point
–– Marching cubesMarching cubes
–– CSGCSG
–– Modèles paramétriquesModèles paramétriques
–– L systèmes / FractalesL systèmes / Fractales
Prochaine partieProchaine partie
144
BB--RepRep
Philosophie : BPhilosophie : B--reprep
–– Pour Pour Boundary RepresentationBoundary Representation
–– Modélisation des objets par leur limite, leur bordModélisation des objets par leur limite, leur bord
–– BB--reprep
•• Géométrie + Topologie (souvent absente)Géométrie + Topologie (souvent absente)
Origine :Origine :
–– Logiciel de CAO / CADLogiciel de CAO / CAD
•• Maillages très fournis, très complexeMaillages très fournis, très complexe
Exemple : Airbus, Voiture…Exemple : Airbus, Voiture…
–– Logiciel de création : 3DSMax, Maya …Logiciel de création : 3DSMax, Maya …
145
BB--Rep : Soupe de polygonesRep : Soupe de polygones
Objets complexe représentés par un Objets complexe représentés par un
ensemble de polygones (triangles) reliésensemble de polygones (triangles) reliés
–– Exemple : Cube = 12 trianglesExemple : Cube = 12 triangles
–– Autres exemples :Autres exemples :
15
146
BB--Rep : MaillagesRep : Maillages
Maillage = soupe de polygones + adjacenceMaillage = soupe de polygones + adjacence–– Ensemble connecté de polygone (triangles)Ensemble connecté de polygone (triangles)
–– Incorpore la topologie : modèle riche !Incorpore la topologie : modèle riche !
–– Affichage facile en OpenGLAffichage facile en OpenGL•• Mais mauvais choix pour les surfaces courbes...Mais mauvais choix pour les surfaces courbes...
–– D’autres calculs possiblesD’autres calculs possibles•• Courbure, normales, paramétrisationCourbure, normales, paramétrisation
•• Simplification, raffinementSimplification, raffinement
–– Édition difficileÉdition difficile
Modèles disponibles ?Modèles disponibles ?–– Souvent entre la soupe de polygone et le Souvent entre la soupe de polygone et le
maillagemaillage
147
BB--Rep : MaillagesRep : Maillages
Sommet (Vertex / Vertices)Sommet (Vertex / Vertices) : position (et autres données) : position (et autres données)
Arête (Edge)Arête (Edge) : connexion entre 2 sommets: connexion entre 2 sommetsFace (Face)Face (Face) : Ensemble fini et fermé d’arête (cycle): Ensemble fini et fermé d’arête (cycle)-- Triangle : Face à 3 arêtesTriangle : Face à 3 arêtes
-- Quads : Face à 4 arêtesQuads : Face à 4 arêtesPolygone (Polygon)Polygone (Polygon) : Ensemble de faces: Ensemble de facesSurfaceSurface : regroupe des faces (polygones) représentant surface : regroupe des faces (polygones) représentant surface
courbecourbe
Note : Dans les représentations supportant des faces à nombre arbitraire Note : Dans les représentations supportant des faces à nombre arbitraire
d’arêtes, faces et polygones sont identiquesd’arêtes, faces et polygones sont identiques
148
BB--Rep : MaillagesRep : Maillages
Plusieurs représentation Plusieurs représentation
–– VertexVertex--Vertex MeshesVertex Meshes
–– FaceFace--Vertex MeshesVertex Meshes
–– WingedWinged--Edge MeshesEdge Meshes
–– Render Dynamic MeshesRender Dynamic Meshes
Différentes façons de définir /coder la Différentes façons de définir /coder la
topologietopologie
149
BB--Rep : MaillagesRep : Maillages
✔✔ CompactCompact
✘✘ExtractionExtraction
d’informationd’information
difficiledifficile
✘✘ Pas dePas de
représentationreprésentation
directe de ladirecte de la
surfacesurface
150
BB--Rep : MaillagesRep : Maillages
✔✔ SommetsSommets
et face en accèset face en accès
directdirect
✔✔ Utilisation Utilisation
par les pipelinepar les pipeline
graphiquegraphique
✘✘Accès difficileAccès difficile
aux arêtesaux arêtes
✘✘Accès difficileAccès difficile
aux faces aux faces
voisinesvoisines
d’une faced’une face
151
BB--Rep : MaillagesRep : Maillages
✔✔ Topologie expliciteTopologie explicite
✔✔ Utilisation par les Utilisation par les
logiciels de modélisationlogiciels de modélisation
✔✔ SplitSplit et et mergemerge rapidesrapides
✘✘ Taille mémoire Taille mémoire
importanteimportante
✘✘ Complexité à maintenirComplexité à maintenir
16
152
BB--Rep : MaillagesRep : Maillages
✔✔ Utilisation par Utilisation par
pipeline pipeline
graphiquegraphique
✔✔ Topologie Topologie
expliciteexplicite
✔✔Accès directsAccès directs
✘✘ Taille mémoire Taille mémoire
importanteimportante
✘✘ Complexité à Complexité à
maintenirmaintenir
153
BB--Rep : MaillagesRep : Maillages
154
MaillagesMaillages
Quelques algorithmes…Quelques algorithmes…–– Subdivision de surface :Subdivision de surface :
•• Créer des maillages plus lisseCréer des maillages plus lisse
•• Loop, CatmullLoop, Catmull--Clark, Modified butterfly, Clark, Modified butterfly, KobbeltKobbelt
•• Naïvement, pas de respect des arêtes vivesNaïvement, pas de respect des arêtes vives
–– Simplification de maillageSimplification de maillage•• Minimiser le nombre de trianglesMinimiser le nombre de triangles
•• Plusieurs critères importantsPlusieurs critères importants Conservation de la topologieConservation de la topologie
Continuité entre maillagesContinuité entre maillages
Orientation budget ou erreurOrientation budget ou erreur
Propriétés sur sommetsPropriétés sur sommets
155
Algorithme de subdivisionAlgorithme de subdivision
Algorithme de CatmullAlgorithme de Catmull--clarkclark
–– Sur maillage quelconqueSur maillage quelconque
–– Produit un maillage de quadrilatèreProduit un maillage de quadrilatère
–– Schéma d'approximationSchéma d'approximation
–– Peut gérer les bordsPeut gérer les bords
Algorithme de LoopAlgorithme de Loop
–– Sur maillage triangulaireSur maillage triangulaire
–– Schéma d'approximationSchéma d'approximation
–– Simple d'utilisationSimple d'utilisation
–– Gère les bords, les arêtes vivesGère les bords, les arêtes vives
156
n
ivn
f1
1
FACE
4
2121 ffvve
ARETE
SOMMET
j
jj
jii fn
vn
vnnv 221
112
CatmullCatmull--clark (78)clark (78)
157
Loop (87)Loop (87)
8
3
8
1
8
3
8
1
n
n
n1
n
n
n
n
n
n
n
n
n
n
2
2cos2340
64
1
nn
17
158
Loop: Gestion des bordsLoop: Gestion des bords
Masque spécifiqueMasque spécifique
2
1
2
1
8
1
8
1
8
6
Loi d’arêteLoi d’arête Loi de sommetLoi de sommet
159
Algorithme de simplificationAlgorithme de simplification
Algorithme statique (précalculs)Algorithme statique (précalculs)
–– Décimation de sommet : Décimation de sommet : decimationdecimation
•• Conserve topologie et propriété de sommetConserve topologie et propriété de sommet
•• LongLong
–– Regroupement de sommet : Regroupement de sommet : vertex clusteringvertex clustering
•• Simple et rapideSimple et rapide
•• Moche, ne conserve pas la topologieMoche, ne conserve pas la topologie
–– Surface enveloppante : Surface enveloppante : simplification envelopessimplification envelopes
•• Maîtrise de l'erreur, de la distorsionMaîtrise de l'erreur, de la distorsion
•• Très long et peu robusteTrès long et peu robuste
Problème de Problème de poppingpopping !!
160
Algorithme de simplificationAlgorithme de simplification
Algorithme dynamique (maillages continus)Algorithme dynamique (maillages continus)
–– Principe :Principe :
•• Simplification avec préservation de l'apparenceSimplification avec préservation de l'apparence
Maillage + Maillage + normal mapsnormal maps + texture / peu de réduction+ texture / peu de réduction
•• Maillages progressifs (Maillages progressifs (progressive meshesprogressive meshes) de Hoppe ) de Hoppe
Le plus rapide (TR) / peu de réductionLe plus rapide (TR) / peu de réduction
161
Modélisation par pointsModélisation par points
Des points ?Des points ?
–– Objets de plus en plus complexeObjets de plus en plus complexe
•• Triangles de plus en plus petitsTriangles de plus en plus petits
Si le modèle est vu de loin, ils se projettent sur 0,1 voire Si le modèle est vu de loin, ils se projettent sur 0,1 voire
2 pixels2 pixels
Beaucoup de travail inutile : interpolation (couleurs, Beaucoup de travail inutile : interpolation (couleurs,
normales, textures) et rasterisation.normales, textures) et rasterisation.
•• Maillage inefficaceMaillage inefficace
–– Idée : représentation par points de la surfaceIdée : représentation par points de la surface
•• Rendu plus efficace, possibilité de rendu de beaucoup Rendu plus efficace, possibilité de rendu de beaucoup de pointsde points
•• Rajout de propriétés (couleur, texture) aux pointsRajout de propriétés (couleur, texture) aux points
162
Modélisation par pointsModélisation par points
OrigineOrigine
–– Acquisition scannerAcquisition scanner
–– Génération automatique de géométrie (LGénération automatique de géométrie (L--system)system)
ExemplesExemples
163
Modélisation par pointsModélisation par points
Qsplat :Qsplat :
–– Les points sont projetés sur l’écranLes points sont projetés sur l’écran
–– Contribuent à plusieurs pixelsContribuent à plusieurs pixels
•• Suivant leur éloignementSuivant leur éloignement
•• Filtre gaussien, masque pour chaque pointFiltre gaussien, masque pour chaque point
•• RenduRendu
Point OpenGL (un carré)Point OpenGL (un carré)
Cercle (un Quad avec une texture)Cercle (un Quad avec une texture)
Un point flou (un bilboard avec une texture gaussiène)Un point flou (un bilboard avec une texture gaussiène)
18
164
QSplatQSplat
Résultats :Résultats :
A.A.
PointsPoints
(qsplat)(qsplat)
B.B.
PolygonesPolygones
même nombremême nombre
de polygones qu’en A.de polygones qu’en A.
même tempsmême temps
C.C.
PolygonesPolygones
même nombremême nombre
de sommets qu’en A.de sommets qu’en A.
temps x2temps x2
165
Modélisation par pointsModélisation par points
Surfel : Surfel : surface elementsurface element
–– Construits directement à partir d’une surfaceConstruits directement à partir d’une surface
–– Rajoute des informations par rapport aux QsplatRajoute des informations par rapport aux Qsplat
•• TexturesTextures
•• Profondeur, positionProfondeur, position
•• NormalesNormales
–– On utilise ces informations pour projeter le On utilise ces informations pour projeter le
«« pointpoint »»
•• Notamment de coordonnées de texture et les normalesNotamment de coordonnées de texture et les normales
–– Plus long que les QSplatPlus long que les QSplat
166
Modélisation par pointsModélisation par points
IntérêtsIntérêts–– Pas de conservation de la topologie. Données Pas de conservation de la topologie. Données
libreslibres
–– Possibilité de rendu efficace de modèles Possibilité de rendu efficace de modèles complexescomplexes
DéfautsDéfauts–– Problème lors d’un zoom trop importantProblème lors d’un zoom trop important
–– Difficulté de remplir les trousDifficulté de remplir les trous•• Coûte cherCoûte cher
–– Encore peu temps réelEncore peu temps réel•• Sauf si on rend un modèle précisSauf si on rend un modèle précis
•• Applicable néanmoins en hiérarchie de points...Applicable néanmoins en hiérarchie de points...
167
QSplat et GPU...QSplat et GPU...
Gaël Guennebaud, Loïc Gaël Guennebaud, Loïc
Barthe and Mathias Paulin,Barthe and Mathias Paulin,
Deferred SplattingDeferred Splatting
Eurographics 2004, Eurographics 2004,
Grenoble, FranceGrenoble, France
168
Marching cubesMarching cubes
Origine :Origine :
–– Modélisation de surfaces implicitesModélisation de surfaces implicites
–– Données volumiquesDonnées volumiques
Surface définie par Surface définie par
–– Point (x,y,z) a l’intérieur ou à l’extérieurPoint (x,y,z) a l’intérieur ou à l’extérieur
Données d’entréesDonnées d’entrées
–– Ensemble d’échantillons ponctuels organisés en Ensemble d’échantillons ponctuels organisés en
cubescubes
–– Voxels avec 8 sommetsVoxels avec 8 sommets
169
Marching cubesMarching cubes
Principe de base :Principe de base :–– Détermination des Détermination des
éléments interneséléments internes
–– Calcul des bordsCalcul des bords
–– Construction du Construction du contourcontour
19
170
Marching cubesMarching cubes
Sélection des cubes qui intersectent l'isoSélection des cubes qui intersectent l'iso--surface :surface :
–– Au moins un sommet dedans, au moins un sommet Au moins un sommet dedans, au moins un sommet dehorsdehors
Classification des cubes :Classification des cubes :
–– 8 sommets, 2 états (dedans, dehors) 8 sommets, 2 états (dedans, dehors) = 256 possibilités= 256 possibilités
–– Symétrie des 2 états : 128 possibilitésSymétrie des 2 états : 128 possibilités
–– Symétries par rotation : 15 possibilitésSymétries par rotation : 15 possibilités
–– Pour chaque possibilité, une seule triangulation possiblePour chaque possibilité, une seule triangulation possible
–– De 1 à 4 triangles par cubeDe 1 à 4 triangles par cube
171
Marching cubesMarching cubes
Les 15 combinaisons :Les 15 combinaisons :
172
Marching cubes : Calcul des Marching cubes : Calcul des
normalesnormales Les normales sont calculées indépendammentLes normales sont calculées indépendamment
–– Lisser la surface obtenueLisser la surface obtenue
–– Une normale par triangleUne normale par triangle
Calcul :Calcul :
–– Gradient de la fonction : normal à l'isoGradient de la fonction : normal à l'iso--surfacesurface
–– Calcul du gradient aux sommets du cubeCalcul du gradient aux sommets du cube
–– Normalisation : normale aux sommets du cubeNormalisation : normale aux sommets du cube
–– Interpolation linéaire : normales aux sommets des Interpolation linéaire : normales aux sommets des trianglestriangles
–– Interpolation linéaire : normales sur les trianglesInterpolation linéaire : normales sur les triangles
173
Marching cubesMarching cubes
Gradient au sommets Gradient au sommets
–– Estimation par différences centrales :Estimation par différences centrales :
ykjiDkjiD
kjiG
xkjiDkjiD
kjiG
zkjiDkjiD
kjiG
y
x
z
),1,(),1,(),,(
),,1(),,1(),,(
)1,,()1,,(),,(
174
Marching cubesMarching cubes
Exemples :Exemples :
175
Marching cubesMarching cubes
Beaucoup de polygones :Beaucoup de polygones :
–– Même ordre de grandeur que le nombre de Même ordre de grandeur que le nombre de
voxelsvoxels
–– Stockage, affichage…Stockage, affichage…•• Parfois plus cher de stocker les polygones que de stocker le Parfois plus cher de stocker les polygones que de stocker le
volume !volume !
Gros problèmes liés à la précisionGros problèmes liés à la précision
–– SousSous--échantillonnageéchantillonnage
–– ArtefactsArtefacts
20
176
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes & Courbes Lignes & Courbes
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
IV.IV. Rendu & affichageRendu & affichage
177
Plan du coursPlan du cours
I.I. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes & Courbes Lignes & Courbes
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
1.1. Modèles procédurauxModèles procéduraux
2.2. CSGCSG
3.3. SkinningSkinning
4.4. VolumesVolumes
178
Objets complexesObjets complexes
On a déjà vu des surfaces complexes :On a déjà vu des surfaces complexes :
–– Modélisation par pointsModélisation par points
–– Certaines soupes de polygonesCertaines soupes de polygones
Leur construction est :Leur construction est :
–– Soit fait par acquisition directeSoit fait par acquisition directe
•• LaserLaser
–– Soit utilise des techniques spécifiques :Soit utilise des techniques spécifiques :
•• Solide de révolutionSolide de révolution
•• ExtrusionExtrusion
179
Modèles procédurauxModèles procéduraux
Primitives géométriques créées par une Primitives géométriques créées par une
procédureprocédure
–– Croissance progressive de la formeCroissance progressive de la forme
Utile pour des objets structurésUtile pour des objets structurés
–– Ex : plante, paysage, villes ...Ex : plante, paysage, villes ...
Plusieurs approches :Plusieurs approches :
–– FractalesFractales
–– LL--systemssystems
–– Système de particulesSystème de particules
180
FractalesFractales
Très mathématique !Très mathématique !
–– autosimilaritéautosimilarité
3 catégories3 catégories
–– Fonctions itéréesFonctions itérées
–– Relation de récurrenceRelation de récurrence
des pointsdes points
–– Fractales stochastiquesFractales stochastiques
MandelbrotMandelbrot 181
LL--systemssystems
Grammaire décrivant la croissanceGrammaire décrivant la croissance
21
182
Systèmes de particulesSystèmes de particules
Peuvent être utilisés pour décrire des Peuvent être utilisés pour décrire des
surfacessurfaces
–– Enveloppe d’un feuEnveloppe d’un feu
–– Surface d’un tas de sable ...Surface d’un tas de sable ...
Problème de connexion entre les particulesProblème de connexion entre les particules
–– Pour avoir des surfaces correctesPour avoir des surfaces correctes
183
Modèles procédurauxModèles procéduraux
Création d’objets complexesCréation d’objets complexes
–– Difficile à créer à la mainDifficile à créer à la main
–– Souvent pour des «Souvent pour des « objetsobjets » naturels» naturels
Problème de l’inversionProblème de l’inversion
–– Non connaissance des effets des paramètresNon connaissance des effets des paramètres
RenduRendu
–– Contraigne à des algorithmes spécifiquesContraigne à des algorithmes spécifiques
AnimationAnimation
–– Grammaire temporelleGrammaire temporelle
–– Système de particulesSystème de particules
184
Plan du coursPlan du cours
I.I. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes & Courbes Lignes & Courbes
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
1.1. Modèles procédurauxModèles procéduraux
2.2. CSGCSG
3.3. SkinningSkinning
4.4. VolumesVolumes
185
CSGCSG
CSG : CSG : Constructive Solid GeometryConstructive Solid Geometry
Processus de construction d’objets Processus de construction d’objets
complexescomplexes
–– A partir de forme de base 3D «A partir de forme de base 3D « simplesimple » »
(analytiques)(analytiques)
•• Cubes, Sphère, Cylindre ...Cubes, Sphère, Cylindre ...
–– Utilisant des opérations ensemblistesUtilisant des opérations ensemblistes
•• Unions, Intersections, DifférencesUnions, Intersections, Différences
19821982
186
CSGCSG
Exemple de constructionExemple de construction
187
CSGCSG
Représentation parReprésentation par
–– Une grammaireUne grammaire
–– Un arbreUn arbre
Rendu parRendu par
–– Ray tracingRay tracing
–– OpenGL ?OpenGL ?
Très intuitif pour modéliserTrès intuitif pour modéliser
–– Utilisé dans le Utilisé dans le builderbuilder de Unrealde Unreal
LimitéLimité
–– Dépend du choix des primitives de baseDépend du choix des primitives de base
Applicable à des modélisation par pointsApplicable à des modélisation par points
exp := prim | transf prim | op exp expexp := prim | transf prim | op exp exp
prim := cube | sphere | cone | …prim := cube | sphere | cone | …
transf := translation | homothétie | transf := translation | homothétie |
rotationrotation
op := union | intersection | differenceop := union | intersection | difference
22
188
Plan du coursPlan du cours
I.I. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes & Courbes Lignes & Courbes
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
1.1. Modèles procédurauxModèles procéduraux
2.2. CSGCSG
3.3. SkinningSkinning
4.4. VolumesVolumes
189
SkinningSkinning
Et pour les humains ?Et pour les humains ?
–– Représentation à base de squelette articuléReprésentation à base de squelette articulé
Michel RogerMichel Roger
http://mr2k.3dvf.net/http://mr2k.3dvf.net/
190
SkinningSkinning
A partir du squelette :A partir du squelette :
191
SkinningSkinning
Un objet autour de chaque «Un objet autour de chaque « osos » :» :
© 1998, Darwin 3D
TrouTrou
192
SkinningSkinning
Joindre les objets :Joindre les objets :
ÉtirementÉtirement
© 1998, Darwin 3D193
SkinningSkinning
Sommets intermédiairesSommets intermédiaires
© 1998, Darwin 3D
•• 50/50 pour chaque os50/50 pour chaque os
•• Pincement visiblePincement visible
23
194
SkinningSkinning
Sommets intermédiairesSommets intermédiaires
© 1998, Darwin 3D
Poids :Poids :
33/66, 50/50 et 33/66, 50/50 et
66/33 66/33
195
Skinning: les mathsSkinning: les maths
Modèle 3D plus squeletteModèle 3D plus squelette
Chaque sommet est attaché à un ou Chaque sommet est attaché à un ou
plusieurs osplusieurs os
–– Somme des poids = 1Somme des poids = 1
Pose «Pose « au reposau repos »»
–– Modèle non déforméModèle non déformé
Pose «Pose « animéeanimée »»
–– Position squelette donnéePosition squelette donnée
–– trouver position des sommetstrouver position des sommets
196
Comment ça marche (1)Comment ça marche (1)
Sommet v, attaché à l’os JSommet v, attaché à l’os J11. Au repos :. Au repos :
J1
J0
y
x
v
© J. Gregory, 2003 197
Comment ça marche (2)Comment ça marche (2)
Nouvelle position du squeletteNouvelle position du squelette
–– Trouver nouvelle position du sommetTrouver nouvelle position du sommet
y
x
v'
v
© J. Gregory, 2003
198
Comment ça marche (3)Comment ça marche (3)
On a v en coordonnées «On a v en coordonnées « absolueabsolue »»
–– Espace du modèleEspace du modèle
On transforme le sommet On transforme le sommet vv ::
–– De l’espace du modèle (espace global)De l’espace du modèle (espace global)
–– Dans l’espace lié à l’osDans l’espace lié à l’os
Le sommet est Le sommet est fixefixe par rapport à l’ospar rapport à l’os
–– Donc on peut bouger le squeletteDonc on peut bouger le squelette
ReRe--transformation dans l’espace du modèletransformation dans l’espace du modèle
–– Donne nouvelles coordonnées du sommet : Donne nouvelles coordonnées du sommet : v’v’
199
Comment ça marche (4)Comment ça marche (4)
Sommet, dans l’espace lié à l’os :Sommet, dans l’espace lié à l’os :
© J. Gregory, 2003
J1
J0
y
x
v
24
200
Comment ça marche (5)Comment ça marche (5)
Sommet toujours dans la même position, Sommet toujours dans la même position,
quelle que soit la position du squelettequelle que soit la position du squelette
© J. Gregory, 2003
y
x
v'
v
201
Comment ça marche (6)Comment ça marche (6)
Retour à l’espace du modèle, position du Retour à l’espace du modèle, position du
sommetsommet
y
x
v'
v
© J. Gregory, 2003
202
Avec des mathsAvec des maths
XXii position de la base de l’os position de la base de l’os ii (translation)(translation)
X0
y
x
X1
v
© J. Gregory, 2003 203
Avec des maths (2)Avec des maths (2)
QQii rotation de l’os rotation de l’os ii
Q0
y
x
Q1
v
© J. Gregory, 2003
204
Avec des maths (3)Avec des maths (3)
Position à l’équilibre de l’os JPosition à l’équilibre de l’os Ji i
–– Produit matriciel des translations et rotations Produit matriciel des translations et rotations
depuis la racine :depuis la racine :
j
i
iij
0
QXB
205
Avec des maths (4)Avec des maths (4)
On déplace le squelette (animation) :On déplace le squelette (animation) :
J1
J0
y
x
v'
© J. Gregory, 2003
25
206
Avec des maths (5)Avec des maths (5)
TTii la translation pour l’os la translation pour l’os ii, , RRii sa rotation :sa rotation :
T0
y
x
T1
R0
R1
v'
© J. Gregory, 2003 207
Avec des maths (6)Avec des maths (6)
Pose Pose actuelleactuelle décrite par matrice :décrite par matrice :
similaire à la matrice de la pose similaire à la matrice de la pose au reposau repos ::
j
i
iij
0
RTP
j
i
iij
0
QXB
208
Avec des maths (7)Avec des maths (7)
Multiplication de Multiplication de vv par par BBjj--11 pour se ramener pour se ramener
dans l’espace lié à l’os (au repos)dans l’espace lié à l’os (au repos)
–– Une fois pour toutesUne fois pour toutes
Puis multiplication du résultat par Puis multiplication du résultat par PPjj pour pour se ramener dans l’espace du modèle, dans se ramener dans l’espace du modèle, dans
la pose actuellela pose actuelle
209
Avec des maths (8)Avec des maths (8)
Ce qui nous donne :Ce qui nous donne :
vBBPPv
vBPv
vBPv
1
0
1
110
1
1
ij
jj
210
Avec des maths (9)Avec des maths (9)
Calculs effectués pour chaque sommet du Calculs effectués pour chaque sommet du
modèlemodèle
–– Tracé des sommets obtenusTracé des sommets obtenus
Interpolation des positions pour les Interpolation des positions pour les sommets qui dépendent de plusieurs ossommets qui dépendent de plusieurs os
–– Chaque sommet partagé par plusieurs os Chaque sommet partagé par plusieurs os
possède un poids pour chaque ospossède un poids pour chaque os
211
Avec des maths (10)Avec des maths (10)
Interpolation pour les sommets qui Interpolation pour les sommets qui
dépendent de plusieurs os :dépendent de plusieurs os :
kkjj
jii
j
iik
j
ii
j
iij
ww '''
'
'
01
0
0
1
0
vvv
vBPv
vBPv
26
212
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
1.1. Lignes & Courbes Lignes & Courbes
2.2. SurfacesSurfaces
3.3. Objets complexes, humainsObjets complexes, humains
4.4. VolumesVolumes
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
IV.IV. Rendu & affichageRendu & affichage
213
Modélisation des volumesModélisation des volumes
Problème difficileProblème difficile
–– Passer de la 2D à la 3D demande :Passer de la 2D à la 3D demande :
•• Plus de mémoire :Plus de mémoire :
Exemple : un plan discrétisé en 10*10 fait 200 triangles, Exemple : un plan discrétisé en 10*10 fait 200 triangles,
un espace discrétiser en 10*10*10 fait 1000 cubes soit un espace discrétiser en 10*10*10 fait 1000 cubes soit
12 000 triangles12 000 triangles
•• Plus de temps de calculPlus de temps de calcul
Origine :Origine :
–– Calcul scientifiqueCalcul scientifique
–– Gaz et fluides Gaz et fluides
214
Modélisation des volumesModélisation des volumes
Trois schémas de modélisation :Trois schémas de modélisation :
–– Par système de particulesPar système de particules
•• Adapté pour le feu, la fumée, la pluie, la neige ...Adapté pour le feu, la fumée, la pluie, la neige ...
–– Par fonction implicitePar fonction implicite
•• Pour modéliser des zones homogènes Pour modéliser des zones homogènes
•• Couche de brume ...Couche de brume ...
–– Par projection dans une base de fonctionPar projection dans une base de fonction
•• Adapté pour des milieux recouvrant l’ensemble de la Adapté pour des milieux recouvrant l’ensemble de la
scènescène
215
Modélisation des volumesModélisation des volumes
Modélisation par nature d’élémentModélisation par nature d’élément
–– Brouillard :Brouillard :
•• Homogène ou hétérogèneHomogène ou hétérogène
Calcul direct par la carte graphiqueCalcul direct par la carte graphique
Calcul indirect par la carte graphiqueCalcul indirect par la carte graphique
216
Modélisation des volumesModélisation des volumes
Feux et fuméesFeux et fumées
–– A coder : densité du milieu dans l’airA coder : densité du milieu dans l’air
–– Très souvent modélisé par des systèmes de Très souvent modélisé par des systèmes de
particulesparticules
•• Bon rendu et avantage de la rapiditéBon rendu et avantage de la rapidité
•• On peut faire un équivalent de fonctions implicites (3D)On peut faire un équivalent de fonctions implicites (3D)
Venceslas BIRIVenceslas BIRIIGMIGMUniversité de Marne La ValléeUniversité de Marne La Vallée
Synthèse d'images ISynthèse d'images I
III. ModélisationIII. Modélisation
B. ScènesB. Scènes
27
218
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
IV.IV. Rendu & affichageRendu & affichage
219
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
B.B. ScènesScènes
1.1. Les Les objets et leur positionnementobjets et leur positionnement
2.2. Graphes de scènesGraphes de scènes
C.C. Lumière et matièreLumière et matière
IV.IV. Rendu & affichageRendu & affichage
220
Objets canoniquesObjets canoniques
Construction d’une scène complexe :Construction d’une scène complexe :
–– Tout est lié à un référentiel uniqueTout est lié à un référentiel unique
•• Pour conserver les positions relatives des éléments Pour conserver les positions relatives des éléments entre euxentre eux
•• Pour conserver les tailles des éléments entre euxPour conserver les tailles des éléments entre eux
–– Mais tout construire depuis ce référentiel unique Mais tout construire depuis ce référentiel unique
est pénibleest pénible
•• Stratégie : Stratégie :
construire un objet dans un repère local propre à lui construire un objet dans un repère local propre à lui
le déplacer et l’orienter dans le référentiel généralle déplacer et l’orienter dans le référentiel général
221
Objets canoniquesObjets canoniques
Construction d’un objetConstruction d’un objet–– Constitué d’objets canoniquesConstitué d’objets canoniques
•• Brique de base. Pas forcément des primitives Brique de base. Pas forcément des primitives géométrique type cube, sphère. Peut être plus géométrique type cube, sphère. Peut être plus complexecomplexe
•• Ne doivent pas être constitués d’éléments en Ne doivent pas être constitués d’éléments en déplacement les uns par rapport aux autresdéplacement les uns par rapport aux autres
•• Muni de repères propresMuni de repères propres
PositionnementPositionnement–– Déplacer et orienter les repères propres par Déplacer et orienter les repères propres par
rapport :rapport :
•• A d’autres repères propresA d’autres repères propres
•• Au référentiel globalAu référentiel global
222
Objets canoniquesObjets canoniques
Exemple de construction : le bras articuléExemple de construction : le bras articulé
223
PositionnementPositionnement
Positionner les repères propres :Positionner les repères propres :
: rotation du bras par rapport à la tige: rotation du bras par rapport à la tige
: rotation de l’arbre par rapport au bras: rotation de l’arbre par rapport au bras
28
224
Pour bien comprendrePour bien comprendre
X0
y
x
X1
v
y
x
Q1
v
XX00 : translation = Matrice de : translation = Matrice de
passage du repère Rpassage du repère R00 au repère Rau repère R11
R0
R1
R1
R3
R2 R3
R4
R2
Q0
XX11 : translation = Matrice de : translation = Matrice de
passage du repère Rpassage du repère R22 au repère Rau repère R33
QQ00 : rotation = Matrice de passage : rotation = Matrice de passage
du repère Rdu repère R11 au repère Rau repère R22
QQ11 : rotation = Matrice de passage : rotation = Matrice de passage
du repère Rdu repère R33 au repère Rau repère R44
j
i
iij
0
QXB
11001QXQXB
40433221101 RRRRRRRRRR MMMMMB
225
Pour bien comprendrePour bien comprendre
v a 2 «v a 2 « ensemblesensembles » de coordonnées :» de coordonnées :
•• celles du repère propres liées à Jcelles du repère propres liées à J11
•• celles du référentiel initialcelles du référentiel initial
y
x
v
J1J
0
4Rproprevv
0Rrefvv
4400 RRRRvMv
40 1100 RRvQXQXv
Q1
Q0
X1
X0
226
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
B.B. ScènesScènes
1.1. L’espace homogèneL’espace homogène
2.2. Les Les objets et leur positionnementobjets et leur positionnement
3.3. Graphes de scènesGraphes de scènes
C.C. Lumière et matièreLumière et matière
IV.IV. Rendu & affichageRendu & affichage
227
Graphes de scènesGraphes de scènes
Idée : organiser les objets en hiérarchieIdée : organiser les objets en hiérarchie
–– Qui est «Qui est « contenucontenu » dans quoi ?» dans quoi ?
–– A quel repère un objet estA quel repère un objet est--il lié?il lié?
–– Arborescence ... grapheArborescence ... graphe
228
Modèle hiérarchiqueModèle hiérarchique
Modèle divisé en morceauxModèle divisé en morceaux
Relations entre les morceauxRelations entre les morceaux
Paramètres pour :Paramètres pour :–– Forme des morceaux (écrasement)Forme des morceaux (écrasement)
–– Position des morceaux (inclinaison)Position des morceaux (inclinaison)
Hiérarchie du modèle : exempleHiérarchie du modèle : exemple–– Base se déplace : tout suitBase se déplace : tout suit
–– Torse se déplace : Torse se déplace : boutons et tête suiventboutons et tête suivent
–– Tête se déplace : Tête se déplace : yeux et nez suiventyeux et nez suivent
229
Hiérarchie de nœudsHiérarchie de nœuds
Chaque nœud :Chaque nœud :
–– Transformation en coordonnées localesTransformation en coordonnées locales
–– Modèle simple en coordonnées localesModèle simple en coordonnées locales
–– Dessin des enfants (qui héritent des Dessin des enfants (qui héritent des
coordonnées locales)coordonnées locales)
Après le nœud :Après le nœud :
–– Retour aux coordonnées locales précédentesRetour aux coordonnées locales précédentes
–– Couleur, matériau, style, etc. ?Couleur, matériau, style, etc. ?
•• Pas fixéPas fixé
29
230
Bonhomme de neigeBonhomme de neige
Base
Torse
Bouton3Bouton1 Bouton2 Tête
Œil2Œil1Nez
231
PersonnagePersonnage
© 1998, Darwin 3D
232
Graphes de scènesGraphes de scènes
Différents types de noeuds :Différents types de noeuds :
–– Maillages, objets ...Maillages, objets ...
–– Matériaux, ApparencesMatériaux, Apparences
–– Nœuds de transformationNœuds de transformation
–– Noeuds camérasNoeuds caméras
–– Nœuds de groupesNœuds de groupes
•• Notamment des nœuds switch permettant de choisir un objet Notamment des nœuds switch permettant de choisir un objet
ou un autre par rapport à une variableou un autre par rapport à une variable
–– Nœuds LODNœuds LOD
•• Géométrie choisie par rapport à la distance à l’observateurGéométrie choisie par rapport à la distance à l’observateur
–– Nœuds action, événementNœuds action, événement
•• Déclenchent des comportements, font l’animation...Déclenchent des comportements, font l’animation...
233
Graphes de scènesGraphes de scènes
Intérêts :Intérêts :–– Culling (automatique)Culling (automatique)
–– HiérarchieHiérarchie
•• Imposé par le cullingImposé par le culling
•• Pour la dynamique des Pour la dynamique des objetsobjets
–– CollisionCollision•• Bounding box sur Bounding box sur
chaque nœudchaque nœud
–– Optimisation de renduOptimisation de rendu
•• En fixant des états En fixant des états (matériaux, texture) sur (matériaux, texture) sur chaque nœudchaque nœud
–– FactorisationFactorisation
Des nœuds «Des nœuds « maillagemaillage » » peuvent être communspeuvent être communs
234
Graphes de scènesGraphes de scènes
Existe (notamment) Existe (notamment)
–– OpenSGOpenSG
–– OpenSceneGraphOpenSceneGraph
•• Le plus complet ... très bon rapport qualité/prix !Le plus complet ... très bon rapport qualité/prix !
–– X3DX3D
•• Commercial. Tentative de standardisation Commercial. Tentative de standardisation
industrielleindustrielle
–– Java 3DJava 3D
–– Gizmo3DGizmo3D
–– Open(gl)PerformerOpen(gl)Performer
–– VirtoolsVirtools
235
Graphe de scène OpenInventorGraphe de scène OpenInventor
30
236
Graphe de scène Java3DGraphe de scène Java3D
237
Alias|Wavefront «Alias|Wavefront « SBDSBD »»
238
OpenSceneGraphOpenSceneGraph
Une API C++ fondée sur OpenGL pourUne API C++ fondée sur OpenGL pour
–– Le management de scènesLe management de scènes
–– L’optimisation du rendu de scènesL’optimisation du rendu de scènes
CrossCross--platformplatform
Windowing system agnostiqueWindowing system agnostique
Open SourceOpen Source
239
OpenSceneGraphOpenSceneGraph
ComposantsComposants
OSG
Scene Graph
Rendering Elements
OSGDB
Data Base Loading
Plug-in Management
OSGUtil
Traversers
Enhancements
OSGText OSGSim Node Kits…
Plug-Ins
240
OpenSceneGraphOpenSceneGraph
Formats de fichier supportésFormats de fichier supportés
–– Formats de fichier 3D Formats de fichier 3D
•• 3dc, 3ds, ac3, dw, flt, freetype3dc, 3ds, ac3, dw, flt, freetype
•• Iv, ive, logo, lwo, md2, objIv, ive, logo, lwo, md2, obj
•• osg, osgtgz, tgz, txp, directX, ziposg, osgtgz, tgz, txp, directX, zip
–– Formats de fichier imageFormats de fichier image
•• bmp, dds, pic, pngbmp, dds, pic, png
•• pnm, qt, rgb, tgapnm, qt, rgb, tga
241
Autres représentations de scèneAutres représentations de scène
Quadtree / OctreeQuadtree / Octree
–– + souvent quadtree (plus léger)+ souvent quadtree (plus léger)
–– Partition de l'espace en quatre / huit suivantPartition de l'espace en quatre / huit suivant
•• Quadtree : les coordonnées x,y relative au solQuadtree : les coordonnées x,y relative au sol
•• Octree : les coordonnées x,y,z dans l'espaceOctree : les coordonnées x,y,z dans l'espace
–– Permet de séparer les données en zonesPermet de séparer les données en zones
•• Plus il y a de données dans un endroit, plus la Plus il y a de données dans un endroit, plus la décomposition est fortedécomposition est forte
31
242
Autres représentations de scèneAutres représentations de scène
Les portesLes portes
–– Les scènes complexes sont organisées en Les scènes complexes sont organisées en
différentes sectionsdifférentes sections
–– Chaque section est séparée de la suivante par Chaque section est séparée de la suivante par
une zone de transfertune zone de transfert
–– D'une section, on ne voit pas l'autre sectionD'une section, on ne voit pas l'autre section
•• Par un jeu de visibilitéPar un jeu de visibilité
Autre section trop loinAutre section trop loin
Autre section cachée par des éléments de décorsAutre section cachée par des éléments de décors
–– Permet le chargement de quelques sectionsPermet le chargement de quelques sections
•• Chacune peut avoir une représentation de scène à Chacune peut avoir une représentation de scène à
l'aide des structures vues précédemmentl'aide des structures vues précédemment Venceslas BIRIVenceslas BIRIIGMIGMUniversité de Marne La ValléeUniversité de Marne La Vallée
Synthèse d'images ISynthèse d'images I
III. ModélisationIII. Modélisation
C. Lumière et matièreC. Lumière et matière
244
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
IV.IV. Rendu & affichageRendu & affichage
245
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
1.1. Les énergies de la lumièreLes énergies de la lumière
2.2. Les yeux : la photométrieLes yeux : la photométrie
3.3. Les matériauxLes matériaux
IV.IV. Rendu & affichageRendu & affichage
246
La lumièreLa lumière
Lumière :Lumière :–– Une onde électromagnétiqueUne onde électromagnétique
•• Phénomène ondulatoire, diffractionPhénomène ondulatoire, diffraction
–– Porté par des photonsPorté par des photons•• Phénomène particulairePhénomène particulaire
–– A une longueur d’ondeA une longueur d’onde
En synthèse d’imagesEn synthèse d’images–– Peu de travail sur l’aspect Peu de travail sur l’aspect
ondulatoireondulatoire
–– On s’intéresse au comportement On s’intéresse au comportement du photondu photon
•• Les photons ont une longueur d’ondeLes photons ont une longueur d’onde
247
La lumièreLa lumière
Grandeurs physiquesGrandeurs physiques
–– Flux énergétique Flux énergétique ee
•• Valeur instantanée d’un débit de rayonnementValeur instantanée d’un débit de rayonnement
•• Puissance (en Watt)Puissance (en Watt)
–– Intensité énergétique Intensité énergétique IIee•• Puissance émise par unité d’angle solide (W/sr)Puissance émise par unité d’angle solide (W/sr)
–– Angle solide ?Angle solide ?
d
dI ee
rS
unité : stéradian (sr)unité : stéradian (sr)
32
248
La lumièreLa lumière
–– Éclairement énergétique Éclairement énergétique EEee
•• Quantité de flux reçu par unité de surface (W/m²)Quantité de flux reçu par unité de surface (W/m²)
•• Une valeur analogue, appelé radiosité ou exitance, Une valeur analogue, appelé radiosité ou exitance, indique la quantité de flux émis par unité de surfaceindique la quantité de flux émis par unité de surface
–– Luminance LLuminance Lee
•• flux d’énergie quittant une surface dans une direction flux d’énergie quittant une surface dans une direction donnéedonnée
dS
dE ee
)cos(
2
dSd
dL ee
angle solide angle solide
projetéprojeté
249
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
1.1. Les énergies de la lumièreLes énergies de la lumière
2.2. Les yeux : la photométrieLes yeux : la photométrie
3.3. Les matériauxLes matériaux
IV.IV. Rendu & affichageRendu & affichage
250
Le système visuel humainLe système visuel humain
Iris + corné + cristallinIris + corné + cristallin
–– Appareil optiqueAppareil optique
Rétine :Rétine :
–– C'est la pellicule !C'est la pellicule !
–– Cônes Cônes
•• Sensibilité différente suivant les Sensibilité différente suivant les
longueur d’onde : pour les couleurslongueur d’onde : pour les couleurs
•• Peu sensible à l’intensité lumineusePeu sensible à l’intensité lumineuse
–– Bâtonnets : Bâtonnets :
•• Sensible à l'intensité lumineuseSensible à l'intensité lumineuse
Étude de la sensibilité de l’œil :Étude de la sensibilité de l’œil :
Domaine de la Domaine de la photométriephotométrie !!
251
PhotométriePhotométrie
Vision de nuit : domaine Vision de nuit : domaine
scotopiquescotopique
–– Bâtonnets principalement Bâtonnets principalement sollicitéssollicités
Vision de jour : domaine Vision de jour : domaine
photopiquephotopique
–– Cônes principalement Cônes principalement sollicitéssollicités
Étude de la réponse de Étude de la réponse de
l’œill’œil
–– Fonction d’efficacité Fonction d’efficacité
spectralespectrale
252
Grandeurs photométriquesGrandeurs photométriques
RadiométrieRadiométrie PhotométriePhotométrie
FluxFlux ee Watt(W)Watt(W) vv Lumen (lm)Lumen (lm)
IntensitéIntensité IIee W/srW/sr IIvvCandela Candela
(cd = lm/sr)(cd = lm/sr)
ÉclairementÉclairement EEee W/m²W/m² EEvvLux Lux
(lx = lm/m²)(lx = lm/m²)
LuminanceLuminance LLee W/m² srW/m² sr LLvv cd/m²cd/m²
Conversion :Conversion :
vD,ev
dVXKX
domaine de sensibilité de l'oeildomaine de sensibilité de l'oeilconstante = 683 lm/Wconstante = 683 lm/W
grandeur radiométrique spectralegrandeur radiométrique spectrale
253
ColorimétrieColorimétrie
Espace des couleurs CIE XYZEspace des couleurs CIE XYZ
–– Les couleurs peuvent être reproduites par Les couleurs peuvent être reproduites par
combinaison linéaire de 3 couleurs combinaison linéaire de 3 couleurs
monochromatiquesmonochromatiques
•• Ce sont les couleurs primairesCe sont les couleurs primaires
–– Décomposition de toute couleur C(Décomposition de toute couleur C( ))
dzCZ
dyCY
dxCX
)(
)(
)(
33
254
ColorimétrieColorimétrie
Espace LxyEspace Lxy
–– Dissocier la teinte de la luminosité :Dissocier la teinte de la luminosité :
–– D'autres espacesD'autres espaces
•• LuvLuv
•• LabLab
ZYXYy
ZYXXx
YL
255
ColorimétrieColorimétrie
Espace dépendant du matérielEspace dépendant du matériel
–– Passage des couleurs RGB à XYZ par une Passage des couleurs RGB à XYZ par une
matricematrice
•• Matrice donnée par le fabriquantMatrice donnée par le fabriquant
–– Autre jeux de couleurAutre jeux de couleur
•• CMYKCMYK
256
Plan du coursPlan du cours
I.I. IntroductionIntroduction
II.II. Les mathématiques de l'imageLes mathématiques de l'image
III.III. ModélisationModélisation
A.A. ObjetsObjets
B.B. ScènesScènes
C.C. Lumière et matièreLumière et matière
1.1. Les énergies de la lumièreLes énergies de la lumière
2.2. Les yeux : la photométrieLes yeux : la photométrie
3.3. Les matériauxLes matériaux
IV.IV. Rendu & affichageRendu & affichage
257
MatériauxMatériaux
3 comportements des matériaux3 comportements des matériaux
–– AbsorptionAbsorption
•• Très peu utilisée en synthèse d’imagesTrès peu utilisée en synthèse d’images
–– ÉmissionÉmission
•• Peu de dépendance à la températurePeu de dépendance à la température
–– RéflexionRéflexion
•• Capacité de la matière de réfléchir, d’une direction Capacité de la matière de réfléchir, d’une direction donnée vers une autre direction donnée, une partie de donnée vers une autre direction donnée, une partie de
la lumière reçuela lumière reçue
),,( uTa
),,( uT
''cos)',,(
),,()',,,(
dudSL
udSLuudS
e
ebd
258
MatériauxMatériaux
La réflexion LambertienneLa réflexion Lambertienne
–– La réflexion ne dépend pas de l’angle La réflexion ne dépend pas de l’angle
d’incidence, ni de l’angle de réflexiond’incidence, ni de l’angle de réflexion
–– Matériaux isotropeMatériaux isotrope
–– Réflexion Lambertienne ou réflexion diffuseRéflexion Lambertienne ou réflexion diffuse
),()',,,( dSuudSdbd
259
MatériauxMatériaux
Réflexion spéculaire pureRéflexion spéculaire pure
–– Propre aux surfaces très réfléchissantesPropre aux surfaces très réfléchissantes
–– Induit une réflexion de lumière symétrique par Induit une réflexion de lumière symétrique par
rapport à la normale de la surfacerapport à la normale de la surface
–– Seule une proportion est réfléchie indiquée par Seule une proportion est réfléchie indiquée par
le coefficient de réflexion spéculaire le coefficient de réflexion spéculaire
NNII RR Calculez R !Calculez R !
),( dSs
34
260
Matériaux : FDRBMatériaux : FDRB
FDRB (BRDF) :FDRB (BRDF) :
–– Fonction de répartition spatiale de l’énergie Fonction de répartition spatiale de l’énergie
reçue en fonction de son angle d’incidencereçue en fonction de son angle d’incidence
–– Indique une proportion (entre 0 et 1)Indique une proportion (entre 0 et 1)
•• Obéi aux lois de réciprocité d’HelmholtzObéi aux lois de réciprocité d’Helmholtz
•• L’intégrale doit être égale à 1L’intégrale doit être égale à 1-- absorptionabsorption
)',,,( uudSbd
position invariantposition invariant )',,( uubd
261
Matériaux : FDTBMatériaux : FDTB
FDTB (BTDF) :FDTB (BTDF) :
–– Même chose mais pour la transmissionMême chose mais pour la transmission
–– C’est l’hémisphère «C’est l’hémisphère « soussous » la surface concerné» la surface concerné
•• A l’opposé de la normaleA l’opposé de la normale
–– Transmission pure :Transmission pure :
•• Obéi aux lois de DescartesObéi aux lois de Descartes
)sin()sin( 2211 nn
262
Matériaux : texturesMatériaux : textures
Certains détails complexes à représenter Certains détails complexes à représenter
géométriquement et radiométriquementgéométriquement et radiométriquement
–– FissuresFissures
–– SalissureSalissure
–– Détails de revêtementDétails de revêtement
Utilisation d’une image «Utilisation d’une image « plaquéeplaquée » sur la » sur la
surfacesurface
–– Représente la couleurReprésente la couleur
–– Peut représenter aussi des déformations Peut représenter aussi des déformations
géométriquesgéométriques
263
Matériaux : texturesMatériaux : textures
PrincipePrincipe
–– Chaque sommet est associé à une position dans Chaque sommet est associé à une position dans
l’imagel’image
•• Ce sont les coordonnées de texture (2D)Ce sont les coordonnées de texture (2D)
–– La partie de l’image correspondant aux La partie de l’image correspondant aux
sommets est appliquée sur la surfacesommets est appliquée sur la surface
264
Matériaux : texturesMatériaux : textures
Application des texturesApplication des textures
–– Peuvent se combiner avec la couleur déterminée Peuvent se combiner avec la couleur déterminée
par l’éclairementpar l’éclairement
–– Peuvent se combiner entre ellesPeuvent se combiner entre elles
La plupart du temps : réutilisation ...La plupart du temps : réutilisation ...
QuakeQuake
Id SoftwareId Software 265
Matériaux : texturesMatériaux : textures
Autres types de texture :Autres types de texture :
–– Bump mappingBump mapping : rajouter de la granularité: rajouter de la granularité
•• Réalisé avec une textureRéalisé avec une texture
•• On souhaite conserver une surface simpleOn souhaite conserver une surface simple
++ =>=>
35
266
Matériaux : texturesMatériaux : textures
Bump MappingBump Mapping : algorithme initial: algorithme initial
–– A l'aide de la carte de A l'aide de la carte de bumpbump
•• En chaque point, perturber la normale suivant la En chaque point, perturber la normale suivant la "hauteur" du point et de ses voisins sur la carte de "hauteur" du point et de ses voisins sur la carte de
bumpbump
–– Équation de perturbation de la normale :Équation de perturbation de la normale :
–– Avant : Fonctionnalité dépendante de la carteAvant : Fonctionnalité dépendante de la carte
–– Maintenant : Utilisable directement via un "pixel Maintenant : Utilisable directement via un "pixel
shader"shader"
FF : bump map: bump map
PP : surface: surface
N : normaleN : normale
267
Documentation technique MatroxDocumentation technique Matrox
http://www.matrox.com/mga/francais/products/te ch_info/http://www.matrox.com/mga/francais/products/te ch_info/
Matériaux : texturesMatériaux : textures
Exemple de Exemple de bump mappingbump mapping
MarekMarek MizaninMizanin :: httphttp:://www//www..zanirzanir..szmszm..sksk
268
Matériaux : texturesMatériaux : textures
Cartes de normales (Cartes de normales (normal mapsnormal maps))
–– Similaire au Similaire au bump mappingbump mapping ... en plus simple... en plus simple
–– La texture code directement la variation de la La texture code directement la variation de la
normale en chaque point : normale en chaque point : offset vectoroffset vector DD
DNN '
Autre stratégie : Autre stratégie : rotation vectorrotation vector
269
Matériaux : texturesMatériaux : textures
Cartes de déplacement (Cartes de déplacement (displacement displacement
mappingmapping))
–– A priori peu utilisées encoreA priori peu utilisées encore
–– Permet de «Permet de « décalerdécaler » la géométrie suivant une » la géométrie suivant une
texturetexture
•• Création de nouveaux pointsCréation de nouveaux points
•• Devient envisageable grâce aux Devient envisageable grâce aux geometry shadergeometry shader
Top Related