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 :

[OpenGL][Debutant]bouger la caméra


Sujet :

OpenGL

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut [OpenGL][Debutant]bouger la caméra
    Bonjour, je suis en train de faire mumuse avec l'openGL/Glut et il y a un truc que je comprends pas. La fonction gluLookAt(...) est censée me permettre de définir mon point de vue dans l'affichage 3D, non?
    Si oui, et bien j'y arrive pas.

    Voici comment je m'y prend:

    J'initialise OpenGL et en dernier lieu, je met gluLookAt().
    Pour avoir un effet de déplacement, à chaque fois que je redessine, je fais:

    glLoadIdentity();
    gluLookAt(0,x,y,0,0,0,0,1,0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_QUADS);
    glColor3f(1.0f,0.0f,0.0f);
    glVertex3i(-1,1,0);
    glVertex3i(1,1,0);
    glVertex3i(1,-1,0);
    glVertex3i(-1,-1,0);
    glEnd();

    mais mon rectangle reste toujours au centre de la fenêtre, et ne bouge pas.
    Il doit donc avoir quelque chose que je n'ai pas compris... mais quoi?

    Au cas ou vous vous demandez où sont changées les valeurs de x et y, elle sont changées dans une autre fonction afin d'avoir une distinction entre la partie graphique et mise à jour des informations. C'est pas vraiment utile pour ce prog, mais autant prendre tout de suite des bonnes habitudes, non?

  2. #2
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    Vire ca des glBegin et glEnd pour commencer. Faut le mettre au debut de ta frame pour effacer les buffer et pas au milieu de glbegin,glend.

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    ... je comprends pas.

    glClear( ...) est avant glBegin(); ... glEnd();

  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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    T'as un glBegin() tout seul qui traîne au dessus. Sûrement une faute en recopiant le code sur le forum, parce que tel quel ça ne compilerait pas.

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut

    en effet, faute lors du recopiage... faute corrigée sur le post, mais j'ai toujours pas d'idée de comment ça se fait que ça marche pas.

    Lorsque l'on met les glVertex, ça les positionne quand même bien avec des coordonées absolue, pas relative à la caméra quand même, non?

    dire que j'ai du mal avec juste une rotation de caméra, qu'est-ce que ça va être si je veux faire des trucs plus compliqués...

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    tu est sure que les valeurs de x et y changent bien ? car la, vu ton code, le quad devrait bouger
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  7. #7
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Oui, à chaque mise à jour de la fenêtre, il y a un appel à la fonction render() qui fait ce qui est noté ci dessus, et un autre à update() qui change les valeurs pour x et y. Et en même temps, je calcule combien de temps j'ai mis, et alors soit j'attends le temps qui reste, ou si j'ai débordé, je fais plusieurs appels à update() pour récupérer le temps perdu.

    Voilà le code pour l'initialisation d'openGL. Peut-être que mon erreur se situe là...

    Code java lwjgl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
          Display.setVSyncEnabled(false);
          GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
          GL11.glClearDepth(1.0f);
          GL11.glEnable(GL11.GL_DEPTH_TEST);
          GL11.glDepthFunc(GL11.GL_LEQUAL);
          GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
          GL11.glMatrixMode(GL11.GL_PROJECTION);
          GL11.glLoadIdentity();
          GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
          GLU.gluPerspective(FOVY,(float) displayMode.getWidth() / (float) displayMode.getHeight(),NEAR_VIEW_DISTANCE,FAR_VIEW_DISTANCE);
          GL11.glMatrixMode(GL11.GL_MODELVIEW);
          GL11.glLoadIdentity();
          GLU.gluLookAt(EYE_X, EYE_Y, EYE_Z, AT_X, AT_Y, AT_Z, UP_X, UP_Y, UP_Z);

  8. #8
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    honte sur moi et mes enfants pendant 5 génération...
    J'ai fait une méga-boulette... j'utilisais la fonction gluLookAt() via une fonction. Et je faisais mes initialisations dans le mauvais sens:
    valeurFonction = valeurDansMaClasse;


    ...
    Mais comment j'ai pu faire une boulette pareille...

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 22/07/2005, 21h53
  2. debuter avec opengl
    Par osykomantis dans le forum OpenGL
    Réponses: 2
    Dernier message: 15/03/2005, 11h45
  3. [Debutant] C++ Builder vs OpenGL
    Par Tanahjampea dans le forum OpenGL
    Réponses: 1
    Dernier message: 17/09/2004, 10h36
  4. Réponses: 2
    Dernier message: 14/04/2004, 19h37
  5. [Debutant] Sdl & OpenGl link ne marche pas
    Par Riko dans le forum OpenGL
    Réponses: 9
    Dernier message: 18/02/2004, 16h13

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