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 :

tourner un cube dans son repère (avec des callbacks) ?


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 39
    Points
    39
    Par défaut tourner un cube dans son repère (avec des callbacks) ?
    Bonjour,

    j'ai un petit problème en OpenGL. J'essaie de faire tourner un cube avec la souris, ce qui est géré par des callbacks GLU.

    Le problème est que je n'arrive pas à tourner ce cube .... sans tourner son repère avec !! Je pense qu'il faut utiliser des glPushLMAtrix() et des glPopMatrix() mais je n'y arrivep pas ...d'ailleurs je ne sais pas si c'est gérable avec des callbacks ?

    merci par avance

  2. #2
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Salut,

    Si j'ai bien compris, cela dépends de comment est dessiné le cube, au milieu de la scène, ou à partir de zéro vers un axe?
    Je me souviens dans mes débuts j'avais fais un cube qui tournais sur lui même, dans tous les sens (le code est tout en bas ), si ça peut aider:
    http://developpez.net/forums/showthread.php?t=40266

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Happy Voir le message
    Salut,

    Si j'ai bien compris, cela dépends de comment est dessiné le cube, au milieu de la scène, ou à partir de zéro vers un axe?
    Je me souviens dans mes débuts j'avais fais un cube qui tournais sur lui même, dans tous les sens (le code est tout en bas ), si ça peut aider:
    http://developpez.net/forums/showthread.php?t=40266
    salut,

    merci pour ta réponse je vais regarder le code mais je n'utilise pas la SDL.
    en fait mon cube est placé à l'origine et je déplace la caméra en 15 suivant l'axe des z. Je dessine le cube avec une fonction du style :

    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
     
     
    void CubeDisplay(void) {
     
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     
        //sets the viweport and the projection
        my_viewport(S,S,Proj);
     
        //Maj position camera 
        CameraView();
     
        //opérations de translations et rotation
        glMatrixMode(GL_MODELVIEW);
     
        glPushMatrix();
     
        glTranslatef	(-cube.x, -cube.y, -cube.z ) ; //3 
        glRotatef 		(cube.angle_y, 0, 1, 0); //2 
        glRotatef 		(cube.angle_x, 1, 0, 0); //1 
     
        //vertices
        glBegin(GL_QUADS);
     
        //on dessine le cube ...
        ...
        glEnd();
     
        glPopMatrix(); //restore camera matrix 
     
        /********************/
        glFlush();
        glutSwapBuffers ();
     
    }
    pour le reste, c'est géré avec des callback. Cependant mon push/pop a zéro effet et je sais pas comment faire ....

  4. #4
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Et ceci ça donne quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glTranslatef    (0,0, 0 ) ; //3 
        glRotatef           (cube.angle_y, 0, 1, 0); //2 
        glRotatef           (cube.angle_x, 1, 0, 0); //1
    glTranslatef    (-cube.x, -cube.y, -cube.z ) ; //3

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Happy Voir le message
    Et ceci ça donne quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glTranslatef    (0,0, 0 ) ; //3 
        glRotatef           (cube.angle_y, 0, 1, 0); //2 
        glRotatef           (cube.angle_x, 1, 0, 0); //1
    glTranslatef    (-cube.x, -cube.y, -cube.z ) ; //3
    salut,
    ça change la manière dont le cube tourne (je pense que c'est la caméra qui bouge ???) mais c'est toujours le même problème

Discussions similaires

  1. [SQL] Requête dans une requête...avec des INNER JOIN!
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 06/04/2006, 08h26
  2. [VB6] Scrollbar dans une frame avec des textbox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 44
    Dernier message: 01/03/2006, 08h16
  3. rollover dans une image avec des zones cliquables
    Par brasco06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/02/2006, 11h15
  4. Réponses: 4
    Dernier message: 07/11/2005, 15h54
  5. Réponses: 3
    Dernier message: 15/09/2004, 15h01

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