Visualisation d`une scène

publicité
Visualisation d’une scène
glViewPort
Il ne faut pas confondre la fenêtre d’affichage (définie par le système de fenêtrage qui est
indépendant d’OpenGL) et le cadre (partie de fenêtre) dans lequel on veut visualiser la scène.
De même que l’on colle une photo sur un poster, on va positionner l’image de la scène dans la
fenêtre en la déformant éventuellement pour la faire rentrer dans un cadre (il faut conserver le
ratio largeur/hauteur pour obtenir une image non « déformée »). C’est le rôle de la fonction
glViewport .
glViewport(GLint x0, GLint y0, GLint largeur, GLint hauteur)
gluLookAt
gluLookAt( GLdouble Px, GLdouble Py, GLdouble Pz,
GLdouble Cx, GLdouble Cy, GLdouble Cz,
GLdouble Hx, GLdouble Hy, GLdouble Hz)
// position de l’appareil
// point visé dans la scène
// haut de l’appareil
void afficheMaScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity() ;
gluLookAt(0,0,5, 0,0,0, 0,1,0) ;
construire la scene
glutSwapBuffers();
}
Le mode projection
Lorsqu’une scène est construite, sa visualisation nécessite deux types de transformation :
1. des transformations dans l’espace 3D qui permettent de positionner le point de vue et
les éventuels éclairages si l’on veut obtenir un rendu réaliste,
o matrice de modélisation GL_MODELVIEW
o les lumières et le point de vue sont positionnés comme les autres acteurs de la
scène.
2. la transformation qui consiste à projeter cette scène 3D sur une fenêtre 2D et qui
caractérise les propriétés de la prise de vue.
o matrice de projection GL_PROJECTION
Frame buffer




Espace mémoire dont le contenu est une représentation logique de ce qui apparaît à
l’écran
Deux dimensions définissent la résolution spatiale de l’image et forment un plan
Une troisième dimension appelée “profondeur” spécifie le nombre de bits utilisés pour
représenter un pixel
Intermédiaire entre l’écran et la bibliothèque graphique
OpenGL
Bibliothèque (API) multi-plateforme (portable) de fonctions graphiques permettant de réaliser
des scènes réalistes en 2D ou en 3D
 Tracé de figures géométriques
 Rendu par projection orthogonale ou perspective
 Placage de texture
 Simulation d'éclairages réalistes
 Effet de brouillard, de flou
 …
Glut
(OpenGL Utility Toolkit)
Système de fenêtrage simple et portable basé sur la programmation évènementielle.
Gère les interactions avec le système d'exploitation
 Multi fenêtrage
 Gestion interruptions (clavier, souris, …)
 Gestion de menus
SDL offre également ces fonctionnalités.
GLU (OpenGL Utility Library)
Librairie standard proposant des commandes bas-niveau écrites en GL:
 certaines transformations géométriques
 triangulation des polygones
 rendu des surfaces paramétriques et quadriques
Quand rien ne se passe

glutIdleFunc
o pas bien

glutTimerFunc
o bien
Utilité d’une représentation en coordonnées homogènes
des transformations géométriques
Représenter les transformations sous forme matricielle.
Composer ces transformations par des multiplications de matrices.
VRAI INTERET D’UTILISER glMultMatrix
Pour chaque objet, garder sa matrice de transformation
 glLoadMatrix : charger la matrice dans la pile MODL_VIEW
 glMultMatrix : multiplication de la matrice sur la pile avec la matrice choisie
En multipliant les deux matrices, on a la transformation voulue sur l’objet auquel on a affecté
la matrice.
Modifier le contraste d’une image
Expansion dynamique
Contraste par saturation
Seuillage ?
ZBuffer



Le contexte graphique doit prévoir l’utilisation du ZBuffer
o glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH)
Initialiser le ZBuffer
o glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
Activer le ZBuffer
o glEnable (GL_DEPTH_TEST)
Lumières
Couleurs
Saturation de lumière : blanc
Absence de lumière : noir
Lumière issue
 source active : lampe, soleil
 source passive : restitue une partie de la lumière reçue
La perception de la couleur dépend de
 la distribution des longueurs d’onde de la source lumineuse
 des caractéristiques physiques de l’objet
 des positions de la source, l’objet et l’observateur
Eclairage
Un rayon lumineux sur une surface
 Une partie est absorbée (filtrage)
 Une autre est réfléchie (lois de la normale) : réflexion spéculaire
 Le reste est diffusé dans toutes les directions : réflexion diffuse
Les réflexions multiples sur les objets génèrent la lumière ambiante qui n’a pas d’orientation
privilégiée et éclaire les zones d’ombre.
Position de l’éclairage
Les matériaux
Cuivre, argent, …
Etat de la surface
Mat,brillant, …
Brouillard (fog)
Perte d’information, c’est à l’utilisateur de se reconstruire mentalement la partie de la scène
Sensation de profondeur
Estompe les objets en fonction de leur distance au point de vue
Extrapolation
Pour lisser, plutôt que d’avoir des étages à différents niveaux, on fait une espèce de moyenne
(cf analyse numérique)
Textures / images
Textures
Tableau de données, de texels
Définir une texture (image, niveaux de gris, etc.)
Activer le placage de texture
Définir comment la texture est appliquée aux objets
Afficher la scène
Images
Prend la forme d’un tableau rectangulaire
Formats : PBM, PGM, PPM
Matrice de projection
 gluOrtho2D(xmin, xmax, ymin, ymax)
 Concordance pixel image / coordonnée fenêtre
Simuler la complexité des détails sur une surface
 augmenter le nombre de polygones définissant la surface mais augmentation de la
complexité de la modélisation (taille de l’objet, coût de génération, etc.) et du rendu
(visibilité, illumination, ....)
 Apposer une texture sur une surface tel du papier peint
Texture mapping
technique consistant à appliquer une texture sur une surface
Texture map
texture apposée sur une surface
Texel
élément de base d’une texture, analogue au pixel d’une image
L’histogramme
Donner la fréquence d’apparition des différents niveaux de gris qui composent une image
But : optimiser la dynamique des événements à analyser
 Modification de la dynamique des luminances par une fonction f croissante
conservation des contrastes relatifs
 Pour la suite, on supposera que f est défini de l’espace des luminances dans l’intervalle
[0, 255]
Egalisation d’histogramme



Rendre les niveaux de gris équiprobables
On part du niveau le plus bas et on calcule la valeur cumulée des niveau jusqu’à une
valeur moyenne
Parfois, on utilise une distribution de référence (spécification d’histogramme)
Histogramme cumulé
Seuillage
Ne conserver que les pixels dont l’intensité est au-dessus d’un seuil t
Expansion dynamique
Téléchargement