LastProject : ODFAEG
Les vues
Orientation, perspective et origine de la vue par défaut.
Chaque application ainsi que chaque composant de rendus de ODFAEG possède plusieurs propriétés dont :
-Une vue
-Un gestionnaire d'événement comme vu dans le tutoriel précédent.
Tandis que le gestionnaire d'événement permet de définir de nouveau événements pour l'application ou un composant.
La vue permet de définir la zone d'affichage dans la fenêtre ou le composant, la perspective (2D ou bien 3D),
la position de la caméra ainsi que l'orientation de la caméra dans le monde.
Par défaut, la perspective est en 2D (orthographique), le centre de la caméra se situe en 0, 0 (au milieu de la fenêtre),
La tête de la caméra pointe vers le bas et la caméra regarde vers vous.
Et la zone d'affichage à l'écran va de 0 à la largeur de la fenêtre pour x, 0 à la hauteur de la fenêtre pour y et
-hauteur de la fenêtre -100 à hauteur de la fenêtre + 100 pour z.
Les plans de coupe near et far sont situés entre -hauteur de la fenêtre -100 et hauteur de la fenêtre + 100 par défaut.
Ce qui veut dire que tout point n'étant pas compris entre ces deux plans ne sera pas dessiné!
Il faudra donc penser à déplacer la vue également en Z qui en 2D, défini la profondeur de vos objets ainsi que de la vue.
Cela permet à ODFAEG de savoir si un objet est devant ou derrière un autre objet, les pixels des objets sont ainsi triés grâce aux
per pixel linked lists.
Système de coordonnées par défaut.
Etant donné que la caméra se trouve au centre et qu'elle regarde vers vous en pointant la tête vers le bas;
en partant du coin supérieur gauche de la fenêtre les coordonnées en x vont de -largeur*0.5 à + largeur*0.5 tantis que
celles de y vont de -hauteur*0.5 à hauteur*0.5 et celles de z de -hauteur-100 à hauteur+100.
Changer de vue et de viewport.
La classe odfaeg::graphic::view permet de gérer des vues et elle possède également deux constructeurs :
Le premier permet de créer une vue en 2D (orhtographique), celui-ci prend quatre paramètres qui sont la taille de la largeur
de la vue, la hauteur de la vue, la position du plan de coupe le plus proche de la caméra et la position du plan de coupe
le plus éloigné de la caméra.
Le second constructeur permet de créer une vue en 3D (perspective), celui-ci prend cinq paramètres qui sont la taille de la vue,
la hauteur de la vue, l'angle de vue (le fovy), la position du plan de coupe le plus proche de la caméra et la position du plan de coupe
le plus éloigné de la caméra.
Pour la vue en perspective, étant donné que les objets sont plus grand lorsqu'il sont proche de la caméra, les coordonnées en partant du coin
inférieur gauche de l'écran varient de -1 à 1 en x et de -1 à 1 en y sur le plan le plus proche de la caméra, comme on est en vue 3D, les coordonnées
ne varient pas de la même façon sur le plan le plus éloigné de la caméra et donc elles vont toujours varier de -largeur*0.5 à largeur*0.5 en x t et de
-hauteur * 0.5 à hauteur * 0.5 en y! (Car en 3D les coordonnées en x et en y dépendent des coordonnées en z)
Pour changer de viewport, vous devez appeler la méthode setViewport de la classe odfaeg::graphic::view!
A l'inverse de la vue en 2D, en vue 3D la caméra à la tête qui pointe vers le haut et regarde vers vous!
L'axe z définit la profondeur des objets.
Jouer avec la vue.
Pouvoir définir la vue s'est bien mais ça serait mieux de pouvoir déplacer la vue, la faire regarder vers un point bien
précis, zoomer, la déplacer ou encore la faire tourner autour d'un axe!
Sachez que c'est tout à fait possible de le faire avec ODFAEG!
Déplacements.
Pour déplacer la vue il suffit d'appeler la méthode move de la classe odfaeg::graphic::View, celle-ci attends trois paramètres,
les déplacements en x, y et z.
Vous pouvez aussi déplacer la vue dans une direction quelconque en utilisant l'autre méthode qui attend deux paramètres : un vecteur et un scalaire.
Rotations.
Pour effectuer une rotation, il y a plusieurs méthodes :
La première méthode rotate attend un angle et un axe quelconque autour duquel se fera la rotation.
Par defaut la rotation s'effectue autour de l'axe z c'est à dire celui qui pointe vers vous.
La seconde méthode effectue une rotation à partir de coordonnées polaire, et attend deux angles : têta et phi.
Et la troisième méthode lookAt fait tourner la caméra pour la faire regarder vers un point précis, elle attend
trois paramètres, les coordonnées du point vers lequel regarder.
Zoom.
Pour zoomer il suffit d'appeler la méthode setScale, celle-ci attend 3 paramètres : les facteurs d'échelle en x, y et z.
Voilà, maintenant vous savez définir les vues pour vos applications et vos composants et les déplacer dans votre monde!