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 :

Controle de la camera : gluLookat et gluperspective


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Controle de la camera : gluLookat et gluperspective
    Bonjour a tous.

    Je croyait avoir compris le fonctionnement de gluPerspective et gluLookAt, mais la je n'arrive a rien.

    Je cherche a afficher ce triangle ( plein d'autre aussi mais c'est un exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    glVertex3f(0.329069, -0.482194, 0.906882 );
    glVertex3f( 0.292230, -0.521326, 0.906882);
    glVertex3f( 0.335056, -0.521326, 0.906882);
    mais je n'arrive a afficher que des triangles ayant des coordonnées en z negative , comme celui la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	     glVertex3f(0.9, -0.9,-10.9);
     
                 glVertex3f(-0.9, -0.9,-10.9);
     
                 glVertex3f(0.0, 0.9,-10.9);
    j'ai suivi les recommandations d'openGL pour afficher un point en particulier :
    http://www.opengl.org/resources/faq/...al/viewing.htm

    j'ai donc le code suivant :


    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
    36
    37
    38
    39
    40
    41
    42
    / S e t t h e p r o j e c t i o n t r a n s f o r m
    glMatrixMode (GL_PROJECTION ) ;
    glLoadIdentity ( ) ;
    gluPerspective( 90.0, 1,1, 100.0 ); 
     
     
    // S e t t h e camera o r i e n t a t i o n :
    glMatrixMode (GL_MODELVIEW) ;
    glLoadIdentity();
    gluLookAt(0.0, 0.0, -5,0.335056, -0.521326, 0.906882, 0, 1, 0);
     
     
    while(loop)
    {
    glBegin(GL_TRIANGLES);
    glPushMatrix();
     
                colorConvert(1001);
    glVertex3f(0.329069, -0.482194, 0.906882 );
    glVertex3f( 0.292230, -0.521326, 0.906882);
    glVertex3f( 0.335056, -0.521326, 0.906882); 
     
    glPopMatrix();
    glPushMatrix();
     
                colorConvert(101),
    	     glVertex3f(0.9, -0.9,-10.9);
     
                 glVertex3f(-0.9, -0.9,-10.9);
     
                 glVertex3f(0.0, 0.9,-10.9);
    glPopMatrix();
    glPushMatrix();
    colorConvert(4294967295),
    	     glVertex3f(-0.1, -0.99,-5);
     
                 glVertex3f(-1.1, -0.99,-5);
     
                 glVertex3f(-0.2, 0.99,-5);
    glPopMatrix();
     glEnd();
    }
    mais je ne voit toujours que le deuixieme triangle....qu'est ce que je ne comprend pas sur le fonctionnement des matrice de projection et de modelview...?

    merci

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    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 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    J'oserais dire, vous faites plein de trucs étranges. Mais bon ... c'est du détail ( c'est quoi ce colorConvert() )

    Sinon, vous ne voyez qu'un seul triangle, car vous dessiner les autres triangles derrière la camera, ou alors à la position de la caméra.

    Vous caméra est en 0 , 0 , -5 . Elle regarde devant ( enfin ça ça veut rien dire ), mais elle regarde en direction du 0 ( à peu de chose près vu que vous avez mis tout un tas de valeurs bizarres ( position du premier triangle, certes ) ).
    Et vous dessinez les deux autres triangles, sur l'axes des Z, à -10 ( la camera est à -5, et regarde vers -1 ... 0 ... etc ( je ne parle que des Z )) . Et le troisième triangle est à -5 ( sur la caméra ). Une camera ne peut pas voir, ce qu'il y a sur elle. ( même ce qui est très proche d'elle ( souvent à une distance de 0.1 , elle ne le voit pas ).

    Voilà d'ou vient votre problème.
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    merci de votre (ta?) réponse.

    Mon colorconvert convertit l'argument passé en couleur pour appeler ensuite glColor4ub.

    J'ai bien compris que il y a des triangles devant et derrière la camera.

    Le probleme c'est que je n'arriev pas a afficher le triangle que je veux et je n'affiche TOUTJOURS QUE LES AUTRES TRIANGLEs SITUE EN -5 ET EN -10 SUR L'AXE DES Z.

    impossible d'afficher le premier triangle.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    mon erreur etait du est une ligne gloadidentity qui annulait mon glullookat ( qui me semblait ne pas avoir d'effet d'ailluers..voila pourquoi)

    Je ne l'avais pas mis ici en plus...dsl d'avoir perdu ton temp pour rien.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    bonjour tout le monde,

    Je bloc sur un travail avec laquelle j'aimerai afficher plusieurs points que je trace avec glVertex3d(x,y,z);
    Mon but c'est à partir d'une image 2D, afficher tous les points de cet image dans une fenêtre 3D.
    Je rencontre un problème de bas niveaux, genre j'essaye d'afficher par exemple 10 point et j'obtiens que 4 dans la fenêtre.

    <<<<<<<<<<<<<<
    glPointSize(9);
    glEnable(GL_POINT_SMOOTH);
    glBegin(GL_POINTS);
    glColor3f(1.0,0.0,0.0);
    for(x=0; x<10; x++ )
    {
    for(y=0; y<10; y++ )
    {

    glVertex3d(x,y,1);
    }
    }
    glEnd();
    >>>>>>>>>>>>>>>>

    et voici ma fonction affichage et redim de ma fenetre
    <<<<<<<<<<

    void display()
    {

    glMatrixMode(GL_MODELVIEW);
    gluLookAt(0.0f, 0.0f, 0.0f, // position oeil
    0.0f,0.0f,1.0f, // point regardé
    0.0f,1.0f,0.0f); // vecteur haut
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    DessinerImage();
    glutSwapBuffers();
    }

    void reshape(int width,int height)
    {
    glViewport(0,0,width,height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(90.0, (GLfloat)width / (GLfloat)height, 0.1, 0.1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }
    >>>>>>>>>>>>

    Merci de votre aide

    Aplus

  6. #6
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par 3dbloc Voir le message
    Je rencontre un problème de bas niveaux, genre j'essaye d'afficher par exemple 10 point et j'obtiens que 4 dans la fenêtre.
    Je pense que ça eut été plus courtois de ne pas polluer le post de GloW_on_dub, mais bon...

    Pour ton problème, rien d'anormal... comme tu le dis toi-même, y'en a 4 dans la fenêtre. Les autres sont en dehors. Donc c'est comme quand tu fais pipi debout (en espérant que tu sois un mâle...), vise au milieu!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

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

Discussions similaires

  1. control d'une camera PTZ via un client C++
    Par Plus_plus dans le forum C++
    Réponses: 3
    Dernier message: 16/06/2010, 10h44
  2. GluLookAt() camera inversée
    Par render-nick dans le forum OpenGL
    Réponses: 4
    Dernier message: 12/03/2007, 17h11
  3. Changement angle camera avec glulookat()
    Par Despak dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/02/2007, 10h16
  4. Redefiniton de la camera avec gluLookAt();
    Par AliceD dans le forum OpenGL
    Réponses: 3
    Dernier message: 03/08/2006, 18h44
  5. Camera en opengl avec gluLookAt
    Par Happy dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/07/2005, 16h10

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