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

GLUT Discussion :

tetris 3d: rotation scene + souris


Sujet :

GLUT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut tetris 3d: rotation scene + souris
    Bonjour, je développe actuellement un tetris en 3d et je débute en c++/openGL/glut/tout ^^
    j'arrive a utiliser la fonction glutMotionFunc (quand même pas mauvais a ce point là ^^) mais, pas comme je le voudrait, je m'explique :

    mon but est de faire tourner la scène dans le sens de la souris...
    pour faire tourner ma scene, j'utilise un
    et voici ma fonction pour la souris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void mouse(int x, int y){
     
         if(x>400){
         a+=1;
         }
         else if(x<400){
         a-=1;
         }
     
    }
    seulement, ce code ne vas pas ... en effet, ce que j'aimerai c'est que, selon le déplacement de la souris la scène bouge ==> la souris bouge vers la droite, la scene tourne vers la droite , pareil pour la gauche ...

    je ne voit pas comment faire ...

    tant que j'y suis, je vais pas faire 20 sujet, j'enchaine sur un autre problème :

    je déplace mes pieces en incrémentant/décrémentant la valeur x,y ou z de chacune des faces bon, ça marche très bien ... un seul problème :

    quand la scène tourne, le repère tourne avec >< ce qui fait que les pieces ne se déplacent plus par rapport au repère de départ ...
    (je fait tourner la scene avec un glRotated(a,0,1,0); )
    comment puis-je faire pour faire tourner la scène sans le repère ?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    seulement, ce code ne vas pas ... en effet, ce que j'aimerai c'est que, selon le déplacement de la souris la scène bouge ==> la souris bouge vers la droite, la scene tourne vers la droite , pareil pour la gauche ...
    Il faut bouger selon le déplacement relatif de la souris (position actuelle moins position précédente).

    quand la scène tourne, le repère tourne avec >< ce qui fait que les pieces ne se déplacent plus par rapport au repère de départ ...
    (je fait tourner la scene avec un glRotated(a,0,1,0); )
    comment puis-je faire pour faire tourner la scène sans le repère ?
    Il suffit d'utiliser correctement les empilements / dépilement de matrices, avec glPushMatrix et glPopMatrix.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    ok, pour la souris c'est bon, merci

    Il suffit d'utiliser correctement les empilements / dépilement de matrices, avec glPushMatrix et glPopMatrix.
    alors la par contre >< a rien compris ... à quoi servent glPushMatrix et glPopMatrix ? et comment les utiliser ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    glPushMatrix permet d'empiler (-> sauvegarder) la matrice de transformation (modelview ou projection) courante. glPopMatrix permet de dépiler (-> restaurer) la dernière matrice qui a été empilée.

    Donc, si tu places un certain nombre de transformations entre un glPushMatrix et un glPopMatrix, celles-ci n'auront aucun effet sur ce qui se trouve après.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    euh ok, mais je ne voit pas du tout comment l'utiliser dans mon cas

    parceque ... si je fait tourner, même entre un glPushMatrix et un glPopMatrix, le repère tourne avec ... ah moins que je ne comprenne rien du tout

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glPushMatrix();
        // Tourne ta scène
        // Affiche ta scène
    glPopMatrix();
        // Déplace tes objets : ici le repère sera bien l'identité
        // Tourne tes objets si besoin
        // Affiche tes objets
    Par contre je ne comprends pas pourquoi, si tu tournes la scène entière, tu ne voudrais pas qu'une translation de tes pièces prenne en compte cette rotation

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

Discussions similaires

  1. [Java][3D][Souris] rotation du SimpleUniverse
    Par CinErarY dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 28/09/2007, 18h51
  2. Rotation selon position de la Souris.
    Par nodragem dans le forum 2D
    Réponses: 1
    Dernier message: 26/08/2007, 22h09
  3. [DX9][C#]Rotation de la scene non fluide
    Par OpenGG dans le forum DirectX
    Réponses: 2
    Dernier message: 20/08/2006, 13h45
  4. rotation autour d'un objet scene OpenGL
    Par hysah dans le forum OpenGL
    Réponses: 1
    Dernier message: 01/05/2006, 17h31
  5. Manipulation de la souris hors de la scene
    Par magnus2005 dans le forum Flash
    Réponses: 4
    Dernier message: 12/10/2005, 15h53

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