[AllegroGl]GluLookAt

walfrat Messages postés 2 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 17 février 2008 - 14 févr. 2008 à 10:50
walfrat Messages postés 2 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 17 février 2008 - 17 févr. 2008 à 18:01
Bonjour


Voila mon problème : j'affiche des point de coordonnées allant de -1 a
1 en x et y (1 point tout les 0.1), ce qui créé donc la diagonale qui
part en bas a droite et remonte en haut a gauche avec z=0;


Le but de mon projet étant de gérer un nuage de point (affichage,zoom,
faire tourner la caméra), avec comme contrainte de rester sous
allegro_gl (qui gère quasiment tout ce qui n'est pas affichage)


Ce que j'aimerais c'est comprendre comment puis-je zoomer et faire
tourner une scène avec uniquement gluLookAt, normalement cela est
possible d'apres ce que j'en est compris.

Si possible j'aimerais une procédure plutot qu'un pan de code afin de
mieux comprendre , c'est a dire que faut il initialiser au début avant
tout appel a glulookAt, comment les initialiser, et ou dois je placer
glulookAt : avant tout affichage ?


PS : j'ai deja parcouru de nombreux tutoraiux mais rien ne m'avait
comblé ce manque, je sais gérer les volume,les couleurs, les rotation
et translations mais avec les modes de vue, dont j'ai retenu gluLookAt
afin de pouvoir gerer tout (zoom et rotation pour ce dont j'ai besoin)
a l'aide d'une seule fonction, je n'arrive pas a trouver d'exemple qui
me convienne...


Merci de vos réponses


En espérant avoir reussi a me faire comprendre...

3 réponses

acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
14 févr. 2008 à 12:25
salut

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(....);
// crée une matrice permettant de voir la scène projetée avec comme point de vue 1,0,0 vers 0,0,0, verticale 0,0,1 (je crois)
// la matrice projection on y touche plus !

draw_loop() {
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  gluLookAt(...);
  // crée une matrice qui fixe un nouveau point de vue, direction et verticale

  glBegin(GL_TRIANGLES);
   ...
  glVertex3f(x,y,z);
  // pour être affiché (c'est ça qu'il faut comprendre)
  // en gros: le vecteur  x,y,z sera multiplié par la matrice modelview, puis par la matrice projection 
  // ce qui donnera un point en coordonnées 2d sur l'écran,
  // si ces coordonnées 2d ne sont pas hors de l'écran alors le pixel est affiché
  glEnd();

}

- si tu veux bouger le point de vue il suffit d'appeler glulookat avec des paramètres qui changent en fonction des événements dans la draw_loop
- comme on reste tout le temps en mode Modelview on peut mettre l'appel de glMatrixMode(GL_MODELVIEW);
dans le main (appelé qu'une fois)
0
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
14 févr. 2008 à 12:28
si tu as un problème avec les paramètres de glulookat (en quoi ils permettent de bouger dans la scène, tourner, zoomer...) dis nous
0
walfrat Messages postés 2 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 17 février 2008
17 févr. 2008 à 18:01
Pas de probleme avec glulookat mais c'est ce qui l'entoure qui me genais ;)
Si je me trompe pas : coor caméra, coor vers ou elle regarde et enfin 0,1,0 pour avoir un écran droit

Par contre gluPerspective fonctionne comment ?

Sinon par exemple si j'ai la caméra en 3,1,2 , qui regarde en 0,0,0 et un point en 1,0,0 le verrai-je ? S'il y a des condition supplémentaire(un angle d'ouverture par exemple) comment les gerer ?
0
Rejoignez-nous