un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006
-
26 mai 2005 à 13:44
Utilisateur anonyme -
6 avril 2006 à 18:57
Bonjour a tous !
Bon je suis bien conscient que ce sujet a été traité 1000 fois mais le probleme c'est que c'est 1000 fois d'une facon differente et mes debuts en opengl ne m'autorise pas une grande comprehension....
Bref, j'ai créer un programme opengl dans lequel une animation a lieu. Mon but est de créer une camera qui fixe un objet qui se deplace (pour cela je pensais régler les parametres "eye" de glLookAt sur les coordonnées de la cible), et qui peut bouger suivant une sphere... je m'explique :
_en cliquant sur gauche, on tourne sur la gauche AUTOUR de la cible, pareil a droite
_en cliquant sur haut, on tourne sur le dessus AUTOUR de la cible...
_apres on rajoute un zoom +/- qui permet de regarder de plus pres ou non.
Si vous aviez une source facilement utilisable... ou si vous pouviez m'expliquer comment faire...
Pendant que j'y suis, un autre probleme :
Mon animation opengl fait parti d'un programme sous fenetre dos pour le moment. Ainsi elle n'est pas toujours ouverte. Je voudrais savoir comment faire pour utiliser des parametres precedemment configuré via l'utilisateur. Car moi je fais appel a ma fonction graph(...) qui lance l'openGL et qui a en entrée les dits parametres... Sauf que ces parametres vont intervenir dans la fonction Idle() et Draw()... et si je rajoute des parametres a ces fonctions alors ca ne marche plus il me sort plein d'erreur...
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 26 mai 2005 à 14:17
bon pour mon second probleme j'ai trouvé... Ca faisait une semaine que je cherchais et en fait j'avias deja trouvé la solution j'avais juste fait une faute de frappe.... rrrrr
par contre pour la camera je ne vois vraiment pas... Voila ma camera pour le moment :
//==============================================================================
void SpecTouche(int key, int,int)
//==============================================================================
{
switch (key)
{
case GLUT_KEY_LEFT : camcote-=1; break;
case GLUT_KEY_RIGHT : camcote+=1; break;
case GLUT_KEY_DOWN : camprof+=1; break;
case GLUT_KEY_UP : camprof-=1; break;
}
}
Puis dans le Dispaly() :
gluLookAt(camcote,camhauteur,camprof,Tx,Tz,Ty,0,1,0);
ici Tx, Ty, Tz sont les coordonnées de ma cible...
Ca a rien de folichon et c'est surtout pas pratique de naviguer ainsi... c'est pour ca que j'aimerais créer cette camera dans une sorte de "boule" comme decrite plus haut
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 26 mai 2005 à 18:08
Bon bon bon... J'ai ENFIN reussi a le faire seul... (apres 6h je meritais bien...) et ca marche plutot bien !
Une derniere question des fois que celle ci attire plus les foules : Comment faire poru quitter la fenetre opengl sans quitter le programme ?
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 6 avril 2006 à 12:27
salut!
Oui j'avais reussi a la créée, je n'ai pas les sources la mais je peux les reucpérer.
Qu'appelle tu le gimbal lock ?
Car ma camera avait un petit defaut, il fallait que je fasse deux tours complets sur la droite pour que les rotations deviennent fluides, sinon avant cela se faisait par saccades... Je n'ai jamais compris pourquoi, et puis je me suis pas vraiment repenché dessus (c'etait pour un projet de cours rendu il y a un an...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
En fait, quand tu essaies de lever la caméra et de tourner, ça te
génère une autre rotation en fonction d'un autre axe, comme-ci tu
penchais la tête. C'est abominable. Je suis las d'être bloqué
là-dessus. Moi je bosse sur un mini doom-like à rendre dans quelques
semaines. Si tu peux, essaie de récupérer les sources, ce serait
sympathique de ta part. Merci d'avance
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 6 avril 2006 à 16:01
C'est bon pour les sources, mais c'est tendu a comprendre hors de mon programme car je fais reference a plein de variables... Cherche "tir arc" sur le site et tu verras dans les premiers liens il y en a un qui correspond au programme que j'avais créé (tres moche et nul et mal ecrit, c'etait mes debuts...). Telecharge le programme y a toutes les sources dedans.
Tu regarde le fichier nommé "ogl.c", c'est celui qui gère l'animation OpenGL. Tu as des références à la caméra a deux endroit :
1) Definition de stouches du clavier : en appuyant sur les fleches je change une variable nommé angleXY ou angleXZ etc. en rajoutant ou enlevant 2,5°, ce qui correspond au pas de rotation que j'ai choisi (c'est relativement fluide avec)
2) Dans le "idle", y a toute une section sur la camera dynamique. Ca commence au "if camera == true", qui est en fait une verification si l'utilisateur a activé la camera rotative, ou si il prefere avoir une vue statique prédéfinie. Ensuite a l'interieur c'est que des maths... Le plus simple pour comprendre les calculs c'est de poser un petit dessin... Mais bon te casse pas la tete et copie la partie correspondante... Tu n'auras qu'a adapter les noms de variable a ton programme. De mémoire, Tx, Ty, Tz représentent la position de l'objet que je regarde à l'instant t, OeilX, OeilY et OeilZ doivent etre les variables que je mets dans le positionnement de la camera (la position de notre oeil quoi...) et puis apres je sais plus de tete... Si tu as des questions hesites surtout pas je reregarderai ca.
merci beaucoup je vais voir ça. Il me faudra expliquer tout le code que
je devrai utiliser donc je vais essayer de comprendre. Ne t'en fais
pas, je ne suis pas trop mauvais en maths. Va voir ma caméra à base de
quaternions que j'ai déposé récemment pour t'en convaincre. Elle ne
fonctionne pas totalement mais elle montre que je comprends à peu près
ce que je fais. Merci pour ton aide.