Vous êtes sur la page 1sur 26

API graphiques

UE Programmation - Parcours Dev

Jean-Philippe.Farrugia@LIRIS.CNRS.fr
Sources

• Cours précédent de J.C


Iehl.
• “3D Game Engine
Design”, David Eberly,
2ème édition, Morgan
Kaufmann.
Plan

• 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

M9 M10 M11 M12


V1 V2 V3 V4 X MX MX MX MX

M13 M14 M15 M16 MX MX MX MX

Matrice colonne Produit MxV


M1 M5 M9 M13 MX MX MX MX V1

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

M9 M10 M11 M12


X V3
=
M9V1+M10V2+M11V3+M12V4
M13 M14 M15 M16 V4

Bonus : directement aligné sur M13V1+M14V2+M15V3+M16V4

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

• Transforme les dmax

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

• Ouverture. dmin dmax


Projection
• Matrice correspondante Direct 3D :
2dmin
rmax-rmin 0 0 0

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

• Transformation des coordonnées images


en coordonnées écran.
• Dépend de la résolution de l’écran, de sa
taille, de la position de l’origine...
• Différences de convention entre
OpenGL et Direct3D.
Viewport
y
• Paramètres : H
u
• Largeur min et max du
viewport : Pr, Pl. Pt.H
r
• Hauteur min et max du
viewport : Pb, Pt.
Pb.H
• Dimensions de l’écran,
en pixels : W, H.
x
(0,0) W
Pl.W Pr.W
Viewport OpenGL
• Origine en bas à gauche de l’écran.
• x augmente de gauche à droite.
• y augmente de bas en haut.

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

Vous aimerez peut-être aussi