walfrat
Messages postés2Date d'inscriptionjeudi 14 février 2008StatutMembreDernière intervention17 février 2008
-
14 févr. 2008 à 10:50
walfrat
Messages postés2Date d'inscriptionjeudi 14 février 2008StatutMembreDernière intervention17 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...
acx01b
Messages postés280Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention 8 juillet 20146 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)
walfrat
Messages postés2Date d'inscriptionjeudi 14 février 2008StatutMembreDernière intervention17 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 ?