IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

trouver un point 3d a partir de la souris


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut trouver un point 3d a partir de la souris
    voici mon problème : je souhaiterais trouver la position d'un point en 3d sur mon terrain à l'endroit exacte où je clique dessus, sachant que ma caméra tourne et bouge sur le terrain

    mon terrain :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    glBegin(GL_QUADS);
     
    glTexCoord2d(0,20); glVertex3f(-10, -2, 10);
    glTexCoord2d(0,0); glVertex3f(10, -2, 10);
    glTexCoord2d(20,0); glVertex3f(10,  -2, -10);
    glTexCoord2d(20,20); glVertex3f(-10,  -2, -10);
     
    glEnd();
    posx et posz sont la position du centre de rotation de la camera

    ma caméra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    x=10*((cos(angle/45*3.14)/2)+0.5);
    z=10*((sin(angle/45*3.14)/2)+0.5);
     
    glRotatef(13, 1.0, 0.0, 0.0);
    glRotatef(angle*4 +90, 0.0, 1.0, 0.0);
    glTranslated(posx+x,0,posz+z);

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Alors, tu prends la position 2D de ta souris.
    Grace à la configuration de ta perspective, tu peux trouver facilement les coordonnées de ta souris sur le plan proche de caméra.
    Tu obtiens ainsi aisément l'équation de la droite entre la position et ta caméra et ton point 3D.
    Et tu prends le point pour Y=-2...

    Voilà, c'est tout..

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Sinon, il y la fonction gluUnProject qui peut peut-être t'aider. Voici une fonction que j'ai faite il y a un petit moment (code surement horrible) qui me servait à récupérer les coordonnées d'un click de souris sur un terrain 3D :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void Terrain::calcul_souris(FreeFlyCamera * camera)
    {
        GLint viewport[4];
        GLdouble modelview[16];
        GLdouble projection[16];
        GLfloat winX, winY, winZ;
        GLdouble posX, posY, posZ;
     
        glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
        glGetDoublev( GL_PROJECTION_MATRIX, projection );
        glGetIntegerv( GL_VIEWPORT, viewport );
     
        winX = (float)camera->get_posX_souris_clik();
        winY = (float)viewport[3] - (float)camera->get_posY_souris_clik();
        glReadPixels( (int)winX, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );
     
    	gluUnProject(winX,winY,winZ,modelview,projection,viewport,&posX,&posY,&posZ);
     
        posX_souris_terrain = (float)posX;
        posY_souris_terrain = (float)posY;
        posZ_souris_terrain = (float)posZ;

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/09/2013, 11h41
  2. Trigonométrie : trouver deux points à partir d'un premier
    Par zazaraignée dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 02/02/2011, 12h35
  3. DLL en C: Impossible de trouver le point d'entrée
    Par cyrille37 dans le forum C++/CLI
    Réponses: 1
    Dernier message: 27/03/2008, 17h48
  4. trouver les points x et y de la cellule "a1"
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 12/02/2008, 20h27
  5. trouver ligne et colonne a partir d'un indice
    Par Kangourou dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 26/10/2006, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo