[OpenGL] Zoom fenetre [Résolu]

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

Votre réponse

5 réponses

Meilleure réponse
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
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".

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de luhtor
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
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
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Dernière intervention
21 mars 2008
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
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Dernière intervention
21 mars 2008
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
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Dernière intervention
21 mars 2008
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.