next_inactive up previous


UJF - M1 Informatique 2005-2006 : Infographie
TP5 : Modèle de caméra - Perspective



pdf, sources
Aujourd'hui nous allons étudier le modèle de caméra perspective en openGL.

1 Définition de la caméra perspective

Pour l'instant nous ne nous intéresserons qu'aux parties du programme définies par ''type == CUBE''.

La procédure display du le fichier main.cpp est appellée à chaque fois que le fenêtre openGL doit être redessinée, c'est-à-dire en permanence dans notre cas (cf. glutIdleFunc dans la procédure main).

Après avoir effacé le contenu de la fenêtre précédente, elle appelle la fonction definirCamera(w/h) et placerCamera :

Voici un schéma du frustum en openGL :

Image camera

Le paramètre left de la procédure glFrustum, par exemple, définit la position en X dans le repère de la caméra du plan gauche du frustum (à une distance znear du centre optique).

Il faut voir le plan near comme le plan image, c'est-à-dire la pellicule dans un appareil photo.

1.1 Aspect

Le programme dessine en fils de fer un cube centré à l'origine (après placement de la caméra en arrière) et de côté 2 (donc qui va de (-1,-1,-1) à (1,1,1)).

  1. Redimensionnez la fenêtre, qu'observez vous et pourquoi ?
  2. Lorsque vous redimensionnez la fenêtre, c'est la procédure reshape du main.cpp qui est appellée. Sachant que le paramètre aspect de la procédure definirCamera représente le rapport entre la largeur et la hauteur de la fenêtre, comment remédier à ce ''problème'' ? Quels paramètres pour glFrustum faut-il changer ?

1.2 Clipping et perspective

Voici l'utilisation des touches du clavier (cf. procédure keyboard appelée après chaque appui de touche) :

Rappelez vous que ce que vous observez dans votre fenêtre openGL est le ''contenu'' de la projection de la scène sur le plan near coupé par les plans gauche, droite, bas et haut.

  1. Rapprochez le plan far, qu'observez vous, pourquoi et comment s'appelle ce phénomène ?
  2. Eloignez le plan near jusq'à la valeur 2 (cf. sortie du programme sur le terminal), où se trouve t-il dans le repère monde ?
  3. Rapprochez le plan near au plus près et rapprochez le centre optique de la caméra. Observez vous le même cube qu'initialement et pourquoi (faites le schéma de la projection dans ce cas et le cas initial) ?

2 Visualisation du frustum

Nous désirons maintenant visualiser la caméra de la première partie (que nous nomerons virtuelle) depuis un autre point de vue (en fait une autre caméra) sous une forme similaire au schéma du frustum présenté plus haut. Nous allons utliser le programme avec le second type : NAVIGATION (''-t 1'' ou la touche 't' pour changer de type en cours d'éxécution). Ce type éxécute le programme comme nous l'avons toujours fait dans les TP précédents, c'est-à-dire avec la possibilité de tourner autours de la scène avec la souris.

Le but de cette partie est de réussir à placer correctement et de la manière la plus simple la caméra virtuelle dans l'espace.

  1. Il est facile de repérer le centre optique de la caméra virtuelle dans l'espace, ce n'est qu'un point. Quelles sont ses coordonnées ? Pour dessiner un point, vous pouvez utiliser le rendu GL_POINTS (n'oubliez pas le S). Pour changer le taille du point : avant glBegin utilisez la procédure glPointSize(int).
  2. Dessinez le reste du frustum en fonction des autres paramètres de la caméra virtuelle (znear et zfar).
  3. Utilisez les touches (qui modifient toujours ces paramètres) pour modifier la caméra virtuelle et vérifiez en repassant dans le point de vue de cette dernière (en changeant de ''type'') que vous obtenez bien le résultat escompté (largeur de la boîte, profondeur, distance focale, etc.).

2.1 Caméra totalement manipulable et caméra orthographique

Ajoutez quelques objets (teapot, sphere) à différents endroits.

  1. Essayez la projection orthographique en décommentant les lignes contenant ''glOrtho'' dans la procédure definirCamera. Qu'observez vous dans les 2 types différents ? Et pourquoi le zoom (bouton du milieu) ne ''fonctionne t-il plus'' en type navigation ?
  2. Otez le mode projection orthographique. Ajoutez d'autres variables pour mieux manipuler la caméra virtuelle (bouger en X et en Y, rotations), vérifiez la correction de votre méthode par la visualisation de la caméra virtuelle.

About this document ...

UJF - M1 Informatique 2005-2006 : Infographie
TP5 : Modèle de caméra - Perspective

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 TP5.tex

The translation was initiated by Mathieu Coquerelle on 2005-11-04


next_inactive up previous
Mathieu Coquerelle 2005-11-04