Gestion caméras

La gestion des caméras a été difficile. En effet, nous avons souvent buté sur une erreur de nombre de caméras : nous devions en créer plusieurs, afin d'avoir différents points de vue, malheureusement, nous ne pouvions pas.
C'est d'abord ce que nous nous sommes dits. Cependant, en réalité, nous ne créons pas les caméras, nous changeons seulement la vue (direction et position) de la caméra. Il était donc impossible de créer une vue de caméra sans la séparer des autres par un switch, par exemple, sinon la probabilité de tomber sur le cas où l'on se retrouverai avec deux vues de caméras à deux endroits différents pourrait arriver. Et évidemment, pour une caméra donnée, on ne peut pas regarder à deux endroits différents à la fois.
Nous avons donc eu le choix entre simplement séparer les vues, et créer des viewports, afin de contenir les vues de chaque caméra. Cela nous permettait, par exemple, de voir différentes vues de caméras, en une seule et même fois.
Exemple de viewports sur une autre application Raydium :

Cela aurait donc pu se faire en faisant simplement plusieurs viewports secondaires qui prendraient toute la taille de la fenêtre, et, en cliquant sur les boutons, nous aurions pu choisir le viewport que l'on souhaiterait regarder.
Etant donné que notre but était de changer complètement la vue, nous avons décidé de simplement utiliser une seule et unique caméra, dans la vue principale (que l'on pourrait logiquement appeler viewport principal).
Ainsi, lorsque l'on clique sur les touches pour changer de vue, la caméra principale change de position et de direction de vue (l'endroit qu'elle regarde), mais reste la même, cela étant possible grâce à un simple switch qui, en fonction de la touche sur laquelle on clique, qui concerne le choix des caméras, on peut changer la valeur vérifiée, et ainsi appliquer une vue différente.
Voici les vues possibles de la caméra :
Vue avant (la caméra est positionnée à l'endroit où le potentiel pilote devrait se trouver : dans la nacelle du support) :

Vue côté droit :

Vue côté gauche :

Vue à la 3ème personne (la caméra est placée derrière l'hélicostat, légèrement en hauteur, tout en gardant une vue d'ensemble de devant) :

Caméra en "freemove" : La caméra est déplaçable comme on le souhaite (avec les touches aux flèches directionnelles du clavier) et on peut regarder dans la direction que l'on veut (grâce à la souris) :

Pour cela, nous avons utilisé plusieurs façon de faire :

La fonction raydium_camera_look_at() qui permet de simplement placer une caméra à une position, et de lui attribuer une direction de vue. Elle ne peut pas se déplacer et reste bloquer sur la direction qu'on lui a donné.

La fonction raydium_camera_freemove(), qui va permettre, grâce aux touches directionnelles du clavier, de se déplacer dans l'espace de la simulation, et de regarder dans la direction donnée par la position du pointeur de la souris.

Enfin, la fonction raydium_ode_element_camera_inboard_name(), qui va permettre à la caméra, en donnant le nom d'un objet, de se déplacer en fonction de la position de ce dernier. La seule chose à ajouter, sera la poisition même de la caméra par rapport à l'objet (en arrière par exemple), et la direction dans laquelle la caméra devra regarder (derrière l'objet, par exemple).

Camera2HeliPetit.png (281 KB) Kevin Jabaud, 03/19/2015 04:06 PM

Camera1HeliPetit.png (343 KB) Kevin Jabaud, 03/19/2015 04:06 PM

Camera3HeliPetit.png (288 KB) Kevin Jabaud, 03/19/2015 04:06 PM

Camera4HeliPetit.png (376 KB) Kevin Jabaud, 03/19/2015 04:06 PM

Camera5HeliPetit.png (348 KB) Kevin Jabaud, 03/19/2015 04:06 PM

viewportsPetit.png (270 KB) Kevin Jabaud, 03/19/2015 04:59 PM