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 :

Changement de repère


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut Changement de repère
    Bonjour,

    débutant en OpenGL (sous Qt), je n'arrive pas à effectuer de changement de repère.

    Pour être plus précis, j'ai créé un carré avec les coordonnées suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        glBegin(GL_QUADS);
            glColor3f(1.0f, 0.0f, 0.0f);
            glVertex3f(-2.0f, 2.0f, 0.0f);
            glVertex3f(-2.0f, 0.0f, 0.0f);
            glColor3f(0.5f, 0.5f, 0.5f);
            glVertex3f(0.0f, 0.0f, 0.0f);
            glVertex3d(0.0f, 2.0f, 0.0f);
        glEnd();
    J'ai récupéré une fonction permettant de réaliser des rotations à partir de la souris afin de pouvoir faire tourner mon carré. Par défaut, la rotation va s'effectuer sur le repère monde (0,0,0) or j'aimerais qu'elle s'effectue sur le centre du carré soit en (-1.0f, 1.0f, 0.0f).
    J'ai essayé avec glTranslatef() afin de faire translater mon repère mais ça ne fait que déplacer le carré sur ma fenêtre.

    Voici le code contenu dans paintGL() :
    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
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
     
            // Projection matrix
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
            gluPerspective(30.0f, 1.0*width()/height(), 0.1f, 1000.0f);
     
            // Model view matrix
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
     
            gluLookAt(0.0, 0.0, -distance,
                      0, 0, 0,
                      0.0, 1.0, 0.0);
     
            glRotatef(x_rot / 16.0f, 1.0f, 0.0f, 0.0f);
            glRotatef(y_rot / 16.0f, 0.0f, 1.0f, 0.0f);
            glRotatef(z_rot / 16.0f, 0.0f, 0.0f, 1.0f);
     
            //La génération de ma carré ...
    Quelle est la solution adéquate ? merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Par défaut
    Salut.

    Si tu déplaces ton répère, et que tu poses ensuite ton carré sur le repère déplacé, c'est normal que ton carré se déplace sur l'écran. Que cherches tu à faire exactement?

    Sinon je te conseil d'abandonner les GLbegin() glEnd() etc.
    Passes aux VBOs, c'est bien plus rapide

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Par défaut
    Bonjour,
    Les rotations dans OpenGl sont par défaut sur le centre (0,0,0).
    Donc tu doit procéder comme suite:
    -déplacer ton carré vers le centre (glTranslatef)
    -puis faire la rotation(glRotatef)
    -enfin faire une translation opposée de la première.
    Images attachées Images attachées  

Discussions similaires

  1. [MATH] Matrice de changement de repère.
    Par Mr Meuble dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 27/11/2008, 12h05
  2. Changement de repère
    Par Virgile le chat dans le forum 2D
    Réponses: 4
    Dernier message: 16/06/2007, 11h26
  3. Changement de repère
    Par Bloodista dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/04/2007, 00h23
  4. URGENT : Zoom et changement de repère
    Par poca10 dans le forum MFC
    Réponses: 5
    Dernier message: 28/05/2002, 14h32

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