Académique Documents
Professionnel Documents
Culture Documents
Jean-Philippe.Farrugia@LIRIS.CNRS.fr
Sources
• Présentation du problème
• Représentation des matrices
• Visualisation / Projection / Viewport
• Rotation
• TP
Présentation
• Développement d’un moteur multi
plates-formes.
• Programmation orientée composants.
• Plusieurs API sur plusieurs architecture
• Multi plates-formes => Indépendance
• API différentes...
API graphique
• Pipeline 3D :
• Traitement identique (en gros)...
• ... mais conventions différentes.
• Composants graphiques 3D :
• Stockage et utilisation des matrices.
• Transformations de visualisation.
• Transformations géométriques.
• Constitution et affichage d’une scène.
Objectifs
• Obtenir un affichage 3D indépendant de
la plate-forme.
• Moins facile que pour la 2D...
• Pouvoir spécifier :
• Matrices/Transformations.
• Caméra.
• Objets/Scène.
Plan
• Présentation du problème
• Représentation des matrices / vecteurs
• Visualisation / Projection / Viewport
• Rotation
• TP
Algèbre linéaire
• Matrice / Vecteurs :
• Éléments de base d’une scène 3D.
• Nécessité de choisir une convention :
• Vecteur ligne ou vecteur colonne ?
• =>Produit MxV ou VxM ?
• Matrice ligne ou colonne ?
• Optimisation hardware ?
• => Stockage adapté ?
Vecteurs / Matrices
• 4 possibilités :
Matrice ligne Produit VxM
M1 M2 M3 M4 MX MX MX MX
M5 M6 M7 M8 MX MX MX MX
M2 M6 M10 M14 MX MX MX MX V2
M3 M7 M11 M15 MX MX MX MX
X V3
M4 M8 M12 M16 MX MX MX MX V4
Vecteurs / Matrices
• Convention choisie :
Matrice ligne, Produit MxV
M1V1+M2V2+M3V3+M4V4
M1 M2 M3 M4 V1
M5V1+M6V2+M7V3+M8V4
M5 M6 M7 M8 V2
16 octets
Vecteurs / Matrices
• Associativité :
• A et B sont deux matrices appliquées
sur un vecteur V.
• A est appliqué en premier.
• B en deuxième.
• Dans quel ordre faut il faire le produit ?
Vecteurs / Matrices
• Solution :
• Si MxV : (BxA)xV
• Si VxM : Vx(AxB)
• Attention à l’ordre des compositions en
fonction de la convention !
Plan
• Présentation du problème
• Représentation des matrices / vecteurs
• Visualisation / Projection / Viewport
• Rotation
• TP
Visualisation
U D
• Spécification de la
caméra :
• Position E.
• Direction de
visualisation D.
• Vecteur “Up” U. R
• Vecteur “Right” R.
E
Visualisation
• Matrice correspondante :
Direct 3D :
R U D 0
T T T
-RE -UE -DE 1
Open GL :
R U -D 0
T T T
-RE -UE DE 1
Projection
D
coordonnées monde
en coordonnées dmin
image.
• Données : rmin rmax R
E
U
• Plan proche, plan
lointain. umin
E D
• Distances focales. umax
2dmin
0 0 0
umax-umin
-(rmax+rmin) -(umax+umin) dmax
dmax-dmin 1
rmax-rmin umax-umin
-dmax.dmin
0 0 dmax-dmin 0
Projection
• Matrice correspondante Open GL :
2dmin
rmax-rmin 0 0 0
2dmin
0 0 0
umax-umin
rmax+rmin umax+umin -dmax+dmin
dmax-dmin 1
rmax-rmin umax-umin
-2dmax.dmin
0 0 dmax-dmin 0
Viewport
W
x= [(Pr+Pl)+(Pr-Pl)r]
2
H
y= [(Pt+Pb)+(Pb-Pt)u]
2
Viewport Direct3D
• Origine en haut à gauche de l’écran.
• x augmente de gauche à droite.
• y augmente de haut en bas.
W
x= [(Pr+Pl)+(Pr-Pl)r] (identique)
2
H
y= [(2-Pt-Pb)+(Pb-Pt)u]
2
Plan
• Présentation du problème
• Représentation des matrices / vecteurs
• Visualisation / Projection / Viewport
• Rotation
• TP
Rotations
• Convention choisie pour le produit
matrice - vecteur : MxV
• Conventions supplémentaires :
• Dans quel sens effectuer la rotation ?
• 2 possibilités :
• Sens horaire.
• Sens anti-horaire.
• Quelle unité pour l’angle ?
Différences entre APIs
• OpenGL
• Sens anti-horaire.
• Angle en degrés.
• Direct3D
• Sens horaire
• Angle en radians.
Plan
• Présentation du problème
• Représentation des matrices / vecteurs
• Visualisation / Projection / Viewport
• Rotation
• TP