Vous avez dû vous rendre compte que les coins et arêtes vives des objets, en openGL, apparaissent crénelés, ceci s'appelle l'aliasing. Dans notre cas, ceci provient du fait que la ''projection'' des objets sur le plan image en 3D est en fait répercuté sur une grille : l'image en pixels. Ces pixels sont des valeurs entières. Si l'arête d'un objet ''tombe'' à l'intérieur d'un certain pixel, OpenGL n'en sait absolument rien et ne dessine qu'un côté ou l'autre de cette arête.
La procédure definirCamera prend maintenant trois paramètres, intéressons nous aux deux premiers : le nombre de pixels (attention c'est un réel, on peut donc ici parler de un demi pixel) en x et le nombre de pixels en y pour lesquels il faut décaler l'image. Si ils valent (0.5,0), cela signifie que l'on décale le plan image (via le frustum) de 0.5 pixels vers la droite et de 0 pixel vers le haut, dans l'espace.
Si l'on dessine plusieurs fois la scène en décalant à chaque fois la caméra via ces paramètres et en mélangeant les images obtenues, cela aura un effet de floutage, d'antialising. L'utilisation d'un autre buffer que le buffer d'image, le buffer d'accumulation, permet de mélanger plusieurs images en les ajoutant.
En voici le principe :
Un appareil photo possède un système de mise au point automatique ou pas : le focus (d'où '' l'autofocus'') qui permet de régler le plan de mise au point. Les objets plus loin ou plus proche d'une certaine distance (la distance de mise au point) apparaissent flous.
Il est possible de simuler naïvement un tel rendu simplement en déplaçant le frustum ET la position dans l'espace de la caméra.
Le type d'éxécution ''DOF'' (pour Depth Of Field, profondeur de champ) permet d'obtenir ce résultat en se basant sur la méthode d'antialiasing précédente (vous n'avez rien à changer dans le code à part mettre un facteur ''0.01'' devant les deux premiers paramêtres donnés à definirCamera).
Pour changer la distance de mise au point (le focus), utilisez les touches 'f' et 'F'.
En dessin, un pochoir est (par exemple) une feuille découpée d'un motif ; pour reproduire ce motif sur une toile, il suffit alors de poser le pouchoir aux endroits désirés et de peindre par dessus.
En OpenGL, le stencil buffer permet d'effectuer des opérations similaires. Executez le programme avec le type ''STEN'' : vous devriez voir dessinés la même scène qu'avant, mais comme vue à travers un objectif d'appareil photo, comprennant ici 2 cercles où le petit comprend la scène zoomée en plus petit et une croix noire au milieu.
Pour effectuer cette manip', il a suffit de dessiner deux cercles et une croix dans le stencil buffer et ensuite d'indiquer (cf. display) à openGL quoi dessiner dans quel cercle (la création du pochoir est effectuée dans definirPochoir, jetez-y un oeil si vous voulez voir plus en détail comme il est fait).
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 -show_section_numbers TP6.tex
The translation was initiated by Mathieu Coquerelle on 2005-11-15