[OpenGL] Zoom fenetre [Résolu]

Signaler
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
-
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
-
Bonjour,

Je cherche a faire un Zoom (par une fenetre définie par deux point cliqués à l'écran) sur une scene OpenGL.
Comment faire ?

J'ai commencé par cherché la position cliqué avec gluProject ou gluUnProject. Pour gluProject pas de problème particulier mais pour gluUnProject déjà un problème comment donner winx, winy, winz les coordonnées windows ( récupéré au moyen de getcursorpos ) en ayant finalement que X et Y ?

Enfin bref je patauge un peu .

Merci de me donner une piste
A voir également:

5 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Tu veux faire du gluUnProject pour faire quoi ?

Bon sinon voila la fonction qui marche:

void mouse_pos(point &p) // point 3D dans lequel on stocke la position du curseur dans l'espace objet.

{

winX = (float)mouse.x;

winY = (float)viewport[3]-winY; // <= ici ca dépend comment sont lues tes coordonnes de souris



glReadPixels( (int)winX, (int)winY, 1, 1,
GL_DEPTH_COMPONENT, GL_FLOAT, &winZ ); // on lit dans le Zbuffer

gluUnProject( winX, winY, winZ, modelview,
projection, viewport, &posX, &posY, &posZ); // on récupère
les données

p.x = (float)posX;

p.y = (float)posY;

p.z = (float)posZ;

}

Tu dois évidemement au préalable avoir stocké les matrices dans "modelview", "projection" et "viewport".
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Mais t'as pas essayé de faire en zoom en modifiant seulement la matrice
de projection ? Mais c'est vrai que tout le pb va etre de régler les
paramètres pour que ca colle bien à la selection.
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
merci luthor, J'ai pas encore testé ton code mais ca semble bon ... il me manquait glReadPixels pour le Z.

Et ton deuxième commentaire est très exactement celui que j'aurais pu écrire ...> "Mais c'est vrai que tout le pb va etre de régler les paramètres pour que ca colle bien à la selection."

Si tu as une idée Merci
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
bon ben c'est pas encore pour cette fois ...
glReadPixels( (int)winX, (int)winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ ); // on lit dans le Zbuffer

WinZ me retourne toujours la même valeur -> 5.25 E-315 ca marche pas
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
J'ai testé avec :
GL_RED, GL_FLOAT
GL_GREEN, GL_FLOAT
GL_BLUE, GL_FLOAT
et ca semble bon je récupère bien les couleurs sur la position mais Z ...