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 :

Déplacement dans la scéne


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Déplacement dans la scéne
    Bonjour,
    Débutant en Opengl j'essaie de déplacer un cube sur la droite et ensuite de me déplacer pour le visualiser au centre de l'écran.
    Si l'exemple n'a aucun intérêt c'est que d'autre objets sont sensé être traiter entre ces 2 opérations.

    Le code est simpliste mais je ne comprend pas pourquoi je n'obtiens pas le résultat attendu. Je vous met juste la boucle d'affichage la projection Conique ne posant pas de soucis.
    Je pense que le problème vient du dernier glTranslated (le remplacer par un gluLookAt ne change rien).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //vidage de l'ecran
    glClear(GL_COLOR_BUFFER_BIT);
    //on rend active la matrice de visualisation
    glMatrixMode(GL_MODEVIEW);
    // on déplace le cube
    glTranslated(-pX, 0, 0);
    // on dessine le cube
    glutWireCube(1.0);
    // on repositionne le cube au centre de l'écran
    glTranslated(pX, 0, 0);
    // on échange les 2 tampons (double buffering)
    glutSwapBuffers();
    Merci

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 869
    Points : 219 096
    Points
    219 096
    Billets dans le blog
    121
    Par défaut
    Bonjour,

    Au lieux de faire l'operation inverse de votre déplacement, vous devriez mieux réinitialisé les matrices à chaque affiche (avec glLoadIdentity()).
    De plus, peut être que vous devriez vous pencher sur glPopMatrix() et glPushMatrix() qui stocke la matrice actuelle en mémoire (dans une pile). Ce qui permet de remettre aux valeurs précédentes la matrice (donc enlever les transformations) avec une simplicité inouïe.
    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.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    J'ai essayé de réinitialiser la matrice seulement dans mon cas cela force la matrice a la position 0 hors les sommets du cube ayant été décaler par le déplacement cela ne centre pas le cube.
    En ce qui concerne le Push/Pop de matrice c'est la même histoire puisque je me retrouverais aussi avec la camera a l'origine après le pop.

    J'en profite pour préciser que j'ai tester les 2 alternatives que vous proposez sans sucées.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 869
    Points : 219 096
    Points
    219 096
    Billets dans le blog
    121
    Par défaut
    Peut on avoir le vrai code, car là il y a une faute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glMatrixMode(GL_MODEVIEW);
    Et je ne comprend absolument pas:
    J'ai essayé de réinitialiser la matrice seulement dans mon cas cela force la matrice a la position 0 hors les sommets du cube ayant été décaler par le déplacement cela ne centre pas le cube.
    Débutant en Opengl j'essaie de déplacer un cube sur la droite et ensuite de me déplacer pour le visualiser au centre de l'écran.
    Si vous voulez vous déplacer vous, utilisez gluLookAt()
    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.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    C'est le vrai code, toutefois uniquement de la fonction affichage() référencer par glut.
    Concernant le gluLookAt j'ai précisé que j'avais essayer de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTranslated(pX, 0, 0);
    par gluLookAt sans obtenir un meilleur résultat.

    Je pense que je me méprend sur l'utilisation des fonctions de modification de la position (glTranslated...) dans le sens ou l'effet de ces fonctions est de modifier la matrice qui s'applique a chaque sommet lors de la création d'objet.

    Donc gluLookAt ne peut probablement être appeler qu'avant la création des objets (puisque l'on déplace les objets par rapport au point de vue et pas l'inverse).

    Enfin concernant glMatrixMode(GL_MODEVIEW); il est présent pour éviter de modifier la matrice de projection active au premier appel d'affichage (initialiser par une autre fonction).

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 869
    Points : 219 096
    Points
    219 096
    Billets dans le blog
    121
    Par défaut
    Citation Envoyé par Dualite2 Voir le message
    Enfin concernant glMatrixMode(GL_MODEVIEW); il est présent pour éviter de modifier la matrice de projection active au premier appel d'affichage (initialiser par une autre fonction).
    Cela ... je sais ... sauf que c'est GL_MODELVIEW);

    Sinon ... si je commence à comprendre, vous essayez de déformé le cube ? et non de le déplacer ?
    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.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Effectivement le code n'est pas sur la même machine j'ai fait une faute de frappe en recopiant.

    J'essaye bien de le déplacer toutefois je voulais réussir a annuler le déplacement en effectuant la translation inverse.
    C'est assez inutile j'en conviens, mais l'objectif et juste de déterminer comment effectuer cette action pour l'utiliser ensuite dans un autre cadre.

    Si vous préférez posons la question autrement:
    Comment déplacer la camera a un endroit particulier après le dessin du cube ou simuler ce déplacement ?

    Note: En théorie glulookat devrais permettre cette action hors le résultat que j'obtiens semble indiquer que l'on ne peut déplacer la camera qu'avant de plaquer un objet.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    J'ai inversé le raisonnement pour déplacer toute la scène autour de la camera et maintenant ca fonctionne.

    Merci d'avoir pris de ton temps pour m'aider.

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 21/01/2009, 17h45
  2. Déplacement / zoom dans une scène
    Par foruma dans le forum Flash
    Réponses: 4
    Dernier message: 15/11/2006, 10h57
  3. [Raccourci clavier] Déplacement dans les onglets
    Par ZeKiD dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/04/2006, 16h09
  4. Déplacement dans une page sans recharge
    Par EpOnYmE187 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/08/2005, 16h17
  5. Réponses: 1
    Dernier message: 11/05/2005, 17h28

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