[OpenGL] Zoom fenetre [Résolu]

cuq 345 Messages postés mardi 3 juin 2003Date d'inscription 21 mars 2008 Dernière intervention - 21 avril 2006 à 11:29 - Dernière réponse : cuq 345 Messages postés mardi 3 juin 2003Date d'inscription 21 mars 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 21 avril 2006 à 12:44
3
Merci
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".

Merci luhtor 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de luhtor
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 21 avril 2006 à 12:51
0
Merci
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.
Commenter la réponse de luhtor
cuq 345 Messages postés mardi 3 juin 2003Date d'inscription 21 mars 2008 Dernière intervention - 21 avril 2006 à 13:24
0
Merci
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
Commenter la réponse de cuq
cuq 345 Messages postés mardi 3 juin 2003Date d'inscription 21 mars 2008 Dernière intervention - 21 avril 2006 à 13:37
0
Merci
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
Commenter la réponse de cuq
cuq 345 Messages postés mardi 3 juin 2003Date d'inscription 21 mars 2008 Dernière intervention - 21 avril 2006 à 14:25
0
Merci
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 ...
Commenter la réponse de cuq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.