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

Moteurs 3D Discussion :

openGL: passage coordonnées 3D a coordonnées fenetre


Sujet :

Moteurs 3D

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut openGL: passage coordonnées 3D a coordonnées fenetre
    Salut,

    J'ai bien lu la FAQ qui raconte comment on passe des coordonnées 3D aux coordonnées fenetres... mais en fait j'aurais besoin de developper une methode qui me fournisse en sortie (a moi, pas au pipeline de rendu open GL) les coordonnées fenetre2D d'un point vertex 3D.

    y'a une fonction toute faite qui donne cette information??

    Sinon, pour developper cette fonction... je me dis qu'il faudrait faire ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Vect2D conversion3D2D( Vect 3D )
    {
    convertir mon point 3D en point 4D
    [point 4D] = [matrice de projection]*[matrice modelview][point 4D]
    [point 3D] = ( ([point 4D].X)/([point 4D].W), ([point 4D].Y)/([point 4D].W), ([point 4D].Y)/([point 4D].W) )
    passer en coordonnées fenetres
    }
    du coup j'ai qques questions:
    comment je trouve ma 4eme coordonnées pour en faire une coordonnée 4D?

    au sujet de la 4eme etape de transformation du point 3D en coordonnées fenetres, la FAQ dit:

    Enfin, ces coordonnées normalisées sont décalées / ré-échelonnées afin de coller au viewport courant (-> window coordinates). Pour rappel, le viewport permet d'afficher la scène sur n'importe quel endroit de la fenêtre de rendu.
    concretement..... ca donne quoi??
    merci!

    Z.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Bon ben je crois avoir fini par trouvé: il faut se servir de la commande gluProject. apparemment il existe gluUnproject qui fait pareil dans l'autre sens.

    voila le bout de code qui fonctionne (Vf2 c'est un vecteur 2D, Vf3, un vecteur 3D)
    Vf2 GCamera::convertToScreen(Vf3 point3D)
    {
    GLdouble model[16];
    GLdouble proj[16];
    GLint view[4];
    GLdouble res[3];

    glGetDoublev(GL_MODELVIEW_MATRIX, model);
    glGetDoublev(GL_PROJECTION_MATRIX, proj);
    glGetIntegerv(GL_VIEWPORT, view);

    gluProject( point2D.x, point2D.y, 0, model, proj, view, &res[0], &res[1], &res[2] );

    Vf2 result = Vf2( res[0], res[1] ); // apparemment, res[2] ne sert a rien
    return result;

    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème lors de passage d’un système de coordonnée à un autre
    Par nectar dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 15/09/2012, 11h31
  2. Réponses: 2
    Dernier message: 13/05/2008, 11h53
  3. passage de parametre a une fenetre popup
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 02/05/2006, 09h57
  4. coordonnée spaciale et coordonnée d'écran
    Par moldavi dans le forum DirectX
    Réponses: 2
    Dernier message: 07/04/2005, 21h01
  5. Réponses: 2
    Dernier message: 24/11/2004, 10h01

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