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 :

probleme de base pour l initialisation des vues en opengl


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut probleme de base pour l initialisation des vues en opengl
    Bonjour,

    j'ai un problème sans doute basique mais que je n'arrive pas à résoudre.

    je veux simplement afficher un cube de d'arrête 1 au centre de mon image.

    Quand je me contente des réglages par défaut celui ci apparait, mais lorsque j'essaie de contrôler tout ça, plus rien n'apparait.

    voici les lignes de mon code (je fais des tests avec la projection la plus basique, la projection orthogonale) que j'ai placé dans ma fonction main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* Initialisation d'OpenGL */
    glClearColor(0.0,0.0,0.0,0.0);
    glColor3f(1.0,1.0,1.0);
    glPointSize(2.0);
    glEnable(GL_DEPTH_TEST);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(2,2,2,2,4,-4);
    glMatrixMode(GL_MODELVIEW);
    puis dans ma fonction affichage() (celle appelée par glutDisplayFunc())

    j'ai les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    glLoadIdentity();
    gluLookAt(0,0,5,0,0,0,0,1,0);
    /*vient ensuite le tracé de mon cube*/
    Chose étrange lorsque je mets gluLookAt(0,0,1,0,0,0,0,1,0);
    mon cube apparait (en revenche lorsque je le fais pivoter cette extrémité disparaissent)
    De plus lorsque mon cube s'affiche, quelque soit les modifications que j'apporte a glOrtho rien ne change.
    Si quelqu'un pouvait m'expliquer ce qui se passe je suis perdu.

    Ho et une dernière question au passage, le repère x,y,z est bien sencé être orthogonal et pourtant quand j affiche un point en x,y,z celui ci apparait en x,y,-z (si on cosidère que le repère est orthogonal)

    J'espère avoir été clair et je vous remercie par avance. ++

  2. #2
    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
    la seule difference vient du 5 qui devient 1 dans le gluLookAt ? dans ce cas la, c'est probablement que tu te drouve dans le cube non ?
    * 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

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Essaye de remplacer ton gluLookAt(0,0,5,0,0,0,0,1,0); par glTranslatef (0.0f, 0.0f, -5.0f); (ne pas oublier le - devant le 5).

    J'ai un peu de mal à comprendre la fonction gluLookAt, mais en gros ce qui est bizarre c'est que chez moi, pour avoir le même résultat qu'un glTranslatef (0.0f, 0.0f, -6.0f), il faut que j'écrives gluLookAt (0.0, 0.0, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

    Mais essaye quand même le glTranslatef

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut toujours pas
    C'est à n'y presque rien comprendre.

    En théorie, les arguments de GluLookAt sont d'abord les coordonnées du centre de la caméra puis ceux du point visé par la caméra. (reste ensuite les vecteur qui sert a orienté la caméra). Or, il semblerait qu'avec moi, les deux premiers argument soient inversés (en fait les 3 premiers avec les 3 suivants) et que je définis d'abord le point visé et ensuite le centre de la caméra.

    Je développe sous dev cpp et je commence à me demander si leur librarie opengl n'est pas un peu à l'ouest... Pourtant je n'ai pas trouvé de remarque à ce sujet sur le net. J'ajouterai que je ne sais toujours pas pourquoi le repère n'est pas direct, serait aussi une mauvaise alternative spécifique à dev cpp?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut probleme plus ou moins resolu
    Rebonjour,

    bon j'ai plus ou moins résolu mon problème.

    Tout d'abord, j'avais mal utilisé la fonction glOrtho. En effet par rapport au site sur lequel je m'étais renseigné j'avais mal interprété les arguments. Il faut en fait donner la distance de chaque bord par rapport à l'axe central de la caméra. Donc avec glOrtho(2,2... ça signifiait que le bord de gauche et de droite était confondu donc la fonction était ignorée.

    Par contre pour le problème de repère indirect, je n'ai pas vraiment compris d'ou venait le problème. j'ai juste remarqué quand changeant:
    glRotatef(-angley,1.0,0.0,0.0);
    glRotatef(-anglex,0.0,1.0,0.0);

    par
    glRotatef(angley,1.0,0.0,0.0);
    glRotatef(anglex,0.0,1.0,0.0);

    le repère devenait direct... anglex et angley sont des floatants mis en variables globales et leur valeur change en fait par action de la souris sur l'image afin de pouvoir faire pivoter ma figure. Donc si quelqu'un a l'explication de ce problème, ça m'interresse. (note: j'ai pensé à un moment qu'une rotation d'un angle -0.0 posait problème mais même en rajoutant
    glRotatef(-angley+0.1,1.0,0.0,0.0) ça ne changeait rien)

  6. #6
    Membre actif Avatar de Sixissor
    Étudiant
    Inscrit en
    Février 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 206
    Points : 242
    Points
    242
    Par défaut
    Salut.

    C'est glOrtho(aGauche, aDroite, enBas, enHaut, PLAN_CLIPPING_Z_MIN, PLAN_CLIPPING_Z_MAX);

    En inversant Zmin et Zmax, tu as aussi inversé l'axe des Z.
    L'utilisation normale de glOrtho serait glOrtho(-20, 20, -10, 10, -1, 1); par exemple: ça ferait un parallèpipède rectangle de largeur 40, de hauteur 20, et avec des plans de clipping en Z en z=-1 et z=1.

    Ha oui... Un gluLookAt ne sert à rien avec le mode de perspective orthogonale.
    Donc zappe

    ++
    • Awesome dude ! R0FLC0PT3R !!!!11!ONE!!!
    • There's no place like 127.0.0.1

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Salut,

    le gluLookAt sert à positioner et orienter la caméra, et ce quelque soit le mode de perspective adopté.

  8. #8
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Si tu veux il y a un lien vraiment bien foutu qui explique comment marche gluLookAt...

    http://www.xmission.com/~nate/tutors.html

    Tu cliques sur le premier lien (Tutors source code package (tutors-src.zip 917KB) ), puis après tu te retrouves avec plusieurs exe avec des valeurs à modifier afin de voir dans quel cas ça influence le rendu... Pour gluLookAt, lances le programme projection.exe ou lightposition.exe .

  9. #9
    Membre actif Avatar de Sixissor
    Étudiant
    Inscrit en
    Février 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 206
    Points : 242
    Points
    242
    Par défaut
    Citation Envoyé par ggwal
    Salut,

    le gluLookAt sert à positioner et orienter la caméra, et ce quelque soit le mode de perspective adopté.
    J'ai jamais dit le contraire ...

    Sauf que lorsque t'utilises glOrtho, généralement c'est pour faire de la 2D, donc tu utilises plus les fonctions de transformations... En tout cas moi je trouve ça plus utile. La caméra généralement ne l'est pas tant que ça parce que tu peux t'en passer facilement.
    • Awesome dude ! R0FLC0PT3R !!!!11!ONE!!!
    • There's no place like 127.0.0.1

  10. #10
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Sixissor
    J'ai jamais dit le contraire ...

    Sauf que lorsque t'utilises glOrtho, généralement c'est pour faire de la 2D, donc tu utilises plus les fonctions de transformations... En tout cas moi je trouve ça plus utile. La caméra généralement ne l'est pas tant que ça parce que tu peux t'en passer facilement.
    Entièrement d'accord. Généralement glTranslatef, glRotatef, gluLookAt n'ont pas vraiment leur place dans un monde Orthogonal.

    On peut le faire mais cela me semble un peu

    Mais si ton application en a besoin....

    Jc

  11. #11
    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
    ha bah si ca sert super souvent en mode ortho... pour un modeleur par exemple. bon effectivement ce n'est pas de l'ortho 2D mais de la vrai projection orthogonal 3D, mais ca sert
    * 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

  12. #12
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par bafman
    ha bah si ca sert super souvent en mode ortho... pour un modeleur par exemple. bon effectivement ce n'est pas de l'ortho 2D mais de la vrai projection orthogonal 3D, mais ca sert
    Oui j'aurais dû dire Orthogonal 2D parce qu'effectivement en 3D cela sert...


    Jc

  13. #13
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Citation Envoyé par fearyourself
    Entièrement d'accord. Généralement glTranslatef, glRotatef, gluLookAt n'ont pas vraiment leur place dans un monde Orthogonal.
    Pour le gluLookAt d'accord, c'est plutot pour une vue perspective
    mais les translations et les rotations sont pratiques en 2D vectorielle ou pour un affichage de sprites par exemple

    pour le problème, comme dit Sixissor, il y a déjà une erreur dans les paramètres de la fonction glOrtho :
    gauche = droite -> largeur de la vue : 0
    haut = bas -> hauteur de la vue : 0
    inversion des paramètres Znear et Zfar

    il aurait fallu faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glOrtho(-2, 2, 2, -2, -4, 4);
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  14. #14
    Membre actif Avatar de Sixissor
    Étudiant
    Inscrit en
    Février 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 206
    Points : 242
    Points
    242
    Par défaut
    Citation Envoyé par shenron666
    il aurait fallu faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glOrtho(-2, 2, 2, -2, -4, 4);
    Et même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glOrtho(-2, 2, -2, 2, -4, 4);
    si tu veux pas avoir la tête en bas
    • Awesome dude ! R0FLC0PT3R !!!!11!ONE!!!
    • There's no place like 127.0.0.1

Discussions similaires

  1. [RDF] Représenter une base de données par des vues RDF
    Par NOUR82 dans le forum Ontologies
    Réponses: 2
    Dernier message: 02/04/2013, 00h50
  2. [AC-2003] probleme avec Planning pour la gestion des présences en entreprise
    Par kesamba dans le forum VBA Access
    Réponses: 19
    Dernier message: 30/10/2010, 22h06
  3. [DB2] Problèmes avec une Jointure externe sur des vues
    Par treivse dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/07/2006, 11h42
  4. Taille des vues dans la base de donnée
    Par Andry dans le forum Débuter
    Réponses: 5
    Dernier message: 21/01/2005, 21h06

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