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 :

création de simple impostor


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Par défaut création de simple impostor
    Bonjour tout le monde,

    Voila ça fait deux jours que je galère avec les impostors, je suis débutante en opengl et je veux un simple code qui crée les impostors.
    J'ai trouvé ce lien http://troylawlor.com/tutorial-imposters.html mais je veux un truc plus simple (je suis bien débutante ).

    merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Par défaut
    Désolé j'ai oublié de poster le bout code que j'ai utilisé pour la création de l'impostor :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    double modelview[16];
    double projection[16];
    GLint viewport[4];
    glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
    glGetDoublev(GL_PROJECTION_MATRIX, projection);
    glGetIntegerv(GL_VIEWPORT,viewport);
     
    VECTOR QuadSommet[4];
    double x, y, z;
     
    gluUnProject(2.0, 2.0, 0.0, modelview,projection,viewport,&x,&y,&z);
    QuadSommet[0].x = x; QuadSommet[0].y = y; QuadSommet[0].z = z;
     
    gluUnProject(-2.0, 2.0, 0.0, modelview,projection,viewport,&x,&y,&z);
    QuadSommet[1].x = x; QuadSommet[1].y = y; QuadSommet[1].z = z;
     
    gluUnProject(-2.0,-2.0, 0.0, modelview,projection,viewport,&x,&y,&z);
    QuadSommet[2].x = x; QuadSommet[2].y = y; QuadSommet[2].z = z;
     
    gluUnProject(2.0,-2.0, 0.0, modelview,projection,viewport,&x,&y,&z);
    QuadSommet[3].x = x; QuadSommet[3].y = y; QuadSommet[3].z = z;
     
    glBindTexture(GL_TEXTURE_2D, texName[i]);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0, 0.0); glVertex3f(QuadSommet[0].x, QuadSommet[0].y, QuadSommet[0].z);
    glTexCoord2f(0.0, 1.0); glVertex3f(QuadSommet[1].x, QuadSommet[1].y, QuadSommet[1].z);
    glTexCoord2f(1.0, 1.0); glVertex3f(QuadSommet[2].x, QuadSommet[2].y, QuadSommet[2].z);
    glTexCoord2f(1.0, 0.0); glVertex3f(QuadSommet[3].x, QuadSommet[3].y, QuadSommet[3].z);			
    glEnd();
    mais il m'affiche rien je n'arrive pas à trouver le problème

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 156
    Billets dans le blog
    151
    Par défaut
    Bonjour,

    Vous pouvez savoir si OpenGL lève une erreur avec: glGetError()
    Sinon le code présenté peu fonctionner, mais ce qui l'entoure causé qu'il bug (n'affiche pas). Donc je ne sais pas quoi dire dessus.
    A part de vérifié les valeurs du QuadSommet (printf ou autre)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Par défaut
    Merci LittleWhite pour votre réponse. Après la vérification de QuadSommet j'ai trouvé que la fonction "gluUnProject" me renvoi toujours les même valeurs c-a-d

    QuadSommet[0].x = QuadSommet[1].x = QuadSommet[2].x = QuadSommet[3].x
    QuadSommet[0].y = QuadSommet[1].y = QuadSommet[2].y = QuadSommet[3].y
    QuadSommet[0].z = QuadSommet[1].z = QuadSommet[2].z = QuadSommet[3].z

    si quelqu'un peuvait m'aider je serais très reconnaissante

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 156
    Billets dans le blog
    151
    Par défaut
    Je vous conseille de revoir cette page: http://www.opengl.org/sdk/docs/man/x...uUnProject.xml

    Et puis, surtout, il y a un point qui indique que la commande renvoit une valeur booleene qui indique si la tranformation reussie ou non.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Par défaut
    merci encore LittleWhite après la lecture du lien je crois que le problème vient des coordonnées
    ( 2.0, 2.0, 0.0);
    (-2.0, 2.0, 0.0);
    (-2.0,-2.0, 0.0);
    ( 2.0,-2.0, 0.0);
    se sont des object coordinates et non pas des window coordinates.
    est ce qu'il existe en opengl une commande qui transforme les object coordinates en window coordinates ?

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Par défaut
    voila j'ai changé le code, cette fois ci il m'affiche l'impostor (enfin le Billboard) car ce dernier ne suit pas le point de vue. comment ferai je ?
    voici le code
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    double modelview[16];
    double projection[16];
    GLint viewport[4];
    glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
    glGetDoublev(GL_PROJECTION_MATRIX, projection);
    glGetIntegerv(GL_VIEWPORT,viewport);
     
    VECTOR QuadSommet[4];
    double x, y, z;
    GLdouble winx, winy, winz;
     
    gluProject(2.0, 2.0, 0.0, modelview, projection, viewport, &winx, &winy, &winz);
    gluUnProject(winx, winy, winz, modelview, projection, viewport, &x, &y, &z);
    QuadSommet[0].x = x; QuadSommet[0].y = y; QuadSommet[0].z = z;
     
    gluProject(-2.0, 2.0, 0.0, modelview, projection, viewport, &winx, &winy, &winz);
    gluUnProject(winx, winy, winz, modelview, projection, viewport, &x, &y, &z);
    QuadSommet[1].x = x; QuadSommet[1].y = y; QuadSommet[1].z = z;
     
    gluProject(-2.0,-2.0, 0.0, modelview, projection, viewport, &winx, &winy, &winz);
    gluUnProject(winx, winy, winz, modelview, projection, viewport, &x, &y, &z);
    QuadSommet[2].x = x; QuadSommet[2].y = y; QuadSommet[2].z = z;
     
    gluProject(2.0,-2.0, 0.0, modelview, projection, viewport, &winx, &winy, &winz);
    gluUnProject(winx, winy, winz, modelview, projection, viewport, &x, &y, &z);
    QuadSommet[3].x = x; QuadSommet[3].y = y; QuadSommet[3].z = z;
     
    glBindTexture(GL_TEXTURE_2D, texName[i]);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0, 0.0); glVertex3f(QuadSommet[0].x, QuadSommet[0].y, QuadSommet[0].z);
    glTexCoord2f(0.0, 1.0); glVertex3f(QuadSommet[1].x, QuadSommet[1].y, QuadSommet[1].z);
    glTexCoord2f(1.0, 1.0); glVertex3f(QuadSommet[2].x, QuadSommet[2].y, QuadSommet[2].z);
    glTexCoord2f(1.0, 0.0); glVertex3f(QuadSommet[3].x, QuadSommet[3].y, QuadSommet[3].z);
    glEnd();

Discussions similaires

  1. [Sonar] Création règle simple avec XPath
    Par pip1000 dans le forum Qualimétrie
    Réponses: 1
    Dernier message: 04/07/2014, 16h05
  2. Création application simple
    Par Dae_mon dans le forum Autres EDI
    Réponses: 1
    Dernier message: 07/10/2012, 14h05
  3. Création rapport simple
    Par diabolo73 dans le forum Rave
    Réponses: 3
    Dernier message: 02/03/2011, 08h24
  4. Création liste simple sur dreamweaver
    Par Christophe29 dans le forum Débuter
    Réponses: 0
    Dernier message: 14/11/2008, 21h46
  5. Création graphique "simple"
    Par Nephyline dans le forum IHM
    Réponses: 3
    Dernier message: 03/04/2008, 19h12

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