begin process at 2012 05 29 07:16:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

OpenGL

 > 

glReadPixels et gluUnProject


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

glReadPixels et gluUnProject

mardi 24 avril 2007 à 22:26:44 | glReadPixels et gluUnProject

Seboo

Bonjours,
J ai un probleme pour utiliser ces deux fonctions.

Enfaite j ai un cube et avec un mouvement sur ce cube j'essaye de connaitre le vecteur sense (vecteur dessiner par la mouvement de souris)
Bien place dans la fonction clique square j'ai ecrit :

                GLint viewport[4];
                GLdouble modelview[16];
                GLdouble projection[16];

                glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
                glGetDoublev( GL_PROJECTION_MATRIX, projection );
                glGetIntegerv( GL_VIEWPORT, viewport );

                glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_INT,&z);
                gluUnProject(x, y, z, modelview, projection, viewport, (double *)&sourisXY[1], (double *)&sourisXY[2], (double *)&sourisXY[3]);

Enfaite x et y sont les variables de la position de la souris.
sourisXY de 1 a 3 (tableau de 4 variables) est une variable global contenant la possition du point sur le cube cliqué.



Maintenant, bien placé dans la fonction de mouvement de la souris, j'ai ecrit le code suivant :
            GLint viewport[4];
            GLdouble modelview[16];
            GLdouble projection[16];

            glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
            glGetDoublev( GL_PROJECTION_MATRIX, projection );
            glGetIntegerv( GL_VIEWPORT, viewport );

            glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_INT,&z);
            gluUnProject(x, y, z, modelview, projection, viewport, (double *)&X, (double *)&Y, (double *)&Z);

            vectSouris.xyz[0] = X-sourisXY[1];
            vectSouris.xyz[1] = Y-sourisXY[2];
            vectSouris.xyz[2] = Z-sourisXY[3];

avec vectSouris le vecteur correspondant au vecteur de deplacement de la souris.

Enfaite par la suite j'utilise ce vecteur mais j'ai l impression que tous ce que j ai ecrit est faux. Pouvez vous confirmer SVP  et me corriger .

Merci



mercredi 25 avril 2007 à 00:16:01 | Re : glReadPixels et gluUnProject

luhtor

Réponse acceptée !
Faut se méfier des coordonnées de souris. Dans la fonction gluUnProject, ca doit pas etre (x,y) mais (x, hauteur_fenetre - y). Enfin ya un pb sur l'origine de la fenetre. Sous glut, ca doit etre en haut a gauche et pour glu, en bas a gauche (ou inversement :) ).

Mais pour savoir si ce que tu fais est juste, il suffit d'afficher une petite sphère à la position obtenu avec ta fonction, si elle est bien sous le curseur de a la souris et suit bien son mouvement. Alors ta fonction est correct.
mercredi 25 avril 2007 à 00:18:38 | Re : glReadPixels et gluUnProject

Seboo

Oue nikel :) j'avait pas penssé a cette astuce merci :)


Cette discussion est classée dans : projection, gl, viewport, modelview, sourisxy


Répondre à ce message

Sujets en rapport avec ce message

pb de recuperation de ProjectionMatrix & ModelViewMatrix [ par serialtom ] bonjour a tous, je suis debutant en openGL je suis en train de me construire un viewer 3D j'ai fait ca dans une application basée sur MFC. Je rencon Application 3D et performance OpenGL [ par bathof ] Bonjour,Je suis en train de développer une opengl : lumière, fog pose problème quand picking [ par kortin ] Bonjour,j'aimerais ajouté le fog et la lumière dynamique dans mon projet openGL.Tout fonctionne bien, mais lors de la sélection d'un objet(picking), l Picking opengl [ par gillescpp ] Bonjour,Voila un ceratint temps que j'essaie de maitriser le picking et jusqu'a présent, c'est sans success.Le code suivant comporte deux fonctions : effacement viewport [ par vladisback ] je réalise actuellement un logiciel de modelisation 3d, j'ai donc plusieurs viewports mais lorsque j'efface avec glClear(GL_COLOR_BUFFER_BIT | GL_DEPT Lumiere [ par Ensias ] Salut tous le monde, je viens de commencer Opengl et j'ai ecris un petit programme qui dessine un cube qui est en rotation autour de lui meme et qui e OpenGL map blending [ par dletozeun ] bonjour, Dans mon projet je genere un terrain sur lequel j'applique une texture (roche par exemple) avec opengl. Maintenant je voudrais gerer le mult Glut et Open GL [ par Fireflect ] Bonsoir ou bonjours ;) Vous allez rire mais je suis encore un *** de plus qui va croire qu'il est cappable de faire un moteur 3D de qualité enfin j'a Je ne comprends plus rien aux lumieres [ par Ensias ] Salut tous le monde, je viens de debuter Opengl et je gallere avec les lumieres.J'ai cree une petite scene qui comporte 2 cubes, l'un des deux est fix image non chargée [ par aurelivs ] bonjourje cherche a faire une appli en C++ et OpenGL pour charger une image et afficher cette image (puis la transformer). cependant je n'arrive pas à


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales