[OpenGL] Zoom fenetre

Résolu
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 21 avril 2006 à 11:29
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 21 avril 2006 à 14:25
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

5 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 avril 2006 à 12:44
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".
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 avril 2006 à 12:51
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.
0
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
21 avril 2006 à 13:24
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
0
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
21 avril 2006 à 13:37
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
21 avril 2006 à 14:25
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 ...
0
Rejoignez-nous