Mode d'emploi et manuel de référence

Previous Up Next

3.2  La caméra

ePiX décrit un monde cartésien en le projetant mathématiquement sur un plan écran puis en faisant une mise à l'échelle affine vers la page imprimée. La caméra, qui réalise la projection du monde sur l'écran, est constitué d'un corps (données qui déterminent la position et l'orientation de la caméra) et d'un objectif (la projection effective sur le plan de l'écran).

Le corps

L'orientation spatiale de la caméra est décrite par un triplet de vecteurs unitaires mutuellement orthogonaux. En souvenir de jours heureux à la plage, les vecteurs sont appelés sea (mer), sky (ciel) et eye (½il). Le plan de l'écran est parallèle au plan mer-ciel ; le vecteur mer pointe horizontalement vers la droite, le ciel pointe verticallement vers le haut. L'½il en est le produit vectoriel3 qui pointe directement vers le spectateur.

La base mer-ciel-½il est placée sur la cible qui est donc l'origine du plan de l'écran. Le point de vue est sur la droite passant par la cible et dirigée par le vecteur ½il et est le centre de projection de l'objectif par défaut. La distance du point de vue à la cible est la plage4. L'orientation, le point de vue, la cible et la plage définissent complètement (et de manière redondante) la situation géométrique de la caméra dans le monde.

L'objectif

L'objectif est une application du monde sur l'écran. ePiX est fournit avec trois objectifs : ombre (shadow, par défaut), grand angulaire (fisheye) et bulle (bubble). Chaque objectif simule l'apparence des objets du monde tels qu'ils seraient vus par un observateur placé au point de vue. L'objectif ombre est une projection conique du point de vue sur l'écran. Les autres objectifs réalisent une projection radiale sur une sphère centrée au point de vue puis projette la sphère sur le plan de l'écran ; le grand angulaire fait une projection orthogonale (de telle sorte que l'image toute entière tient à l'intérieur du disque et que les positions derrière la caméra sont inversées) tandis que l'objectif bulle fait une projection stéréographique depuis le point directement derrière le point de vue.

On peut définir d'autres objectifs ; on pourra consulter le fichier camera.cc comme gabarit. Syntactiquement, un objectif est une fonction d'un seul argument P à valeur pair. Pour assurer le comportement attendu un objectif devrait respecter la signification du corps de la caméra.

Manipulation de la caméra

La caméra est une classe C++ manipulée par des fonctions membres. La commande begin() initialise la caméra aussi toute modification de la caméra doit apparaitre dans le corps de la figure. Par défaut, le point de vue est à une grande distance sur la partie positive de l'axe des z, regardant vers le bas le plan (x,y). Cela fournit le comportement attendu pour les figures en dimension 2.

On peut fixer séparément le point de vue et la cible. En général, une telle opération modifie la direction du vecteur ½il ce qui oblige ePiX a redéterminer le vecteur ciel. Si possible, l'axe des z se projette vers le ciel, sinon on utilise l'axe des y. Le point de vue et la cible peuvent bouger le long de l'axe de l'½il, ce qui modifie la plage en conservant l'orientation : range() fixe la cible et focus() fixe le point de vue. Chaque commande redimentionne l'image : notez qu'augmenter la distance focale (focus) augmente la taille de l'image.

La caméra peut pivoter autour de chacun de ses axes. Les axes de rotation passent par la cible donc les rotations autour des vecteurs mer ou ciel modifie le point de vue. Pour mieux controller la caméra on fixera d'abord la cible puis le point de vue. Si on le veut on finira par les rotation de l'½il.


3
Note du TdS : N'y a-t'il pas quelque poésie à voir un ½il comme le produit vectoriel de la mer et du ciel ?
4
Note du TdS : En anglais range est l'étendue ou la plage et il m'a semblé plaisant de rester au bord de la mer.

Previous Up Next