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

3D Java Discussion :

[JOGL] Problème avec glTranslatef(x, y, z)


Sujet :

3D Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut [JOGL] Problème avec glTranslatef(x, y, z)
    Bonjour à tous,

    J'ai un petit problème de compréhension au niveau de la méthode glTranslatef(x, y, z) sur l'axe des z.

    En effet, je dessine 2 rectangles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    gl.glBegin(GL2.GL_QUADS);
    	gl.glColor3ub((byte)255, (byte)225, (byte)12);
    	gl.glVertex3f(-1, -1, 0);
    	gl.glVertex3f(-1, 1, 0);
    	gl.glVertex3f(1, 1, 0);
    	gl.glVertex3f(1, -1, 0);
     
    	gl.glColor3ub((byte)255, (byte)0, (byte)12);
    	gl.glVertex3f(-0.9f, -0.9f, 0);
    	gl.glVertex3f(-0.9f, 0.9f, 0);
    	gl.glVertex3f(0.9f, 0.9f, 0);
    	gl.glVertex3f(0.9f, -0.9f, 0);
    gl.glEnd();
    Ils s'affichent bien et remplissent la totalité de l'écran.

    Lorsque j'ajoute la méthode gl.glTranslatef(0, 0, -10.0f), je m'attends à ce que mes 2 rectangles soit 10 fois plus petit (puisque 10 fois plus loin du point d'observation), mais ils disparaissent carrément de l'écran et je me retrouve avec une fenêtre noire.

    Voici mon code complet :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    private GLU glu = new GLU();
     
    @Override
    public void init(GLAutoDrawable gLDrawable) {
    	GL2 gl = gLDrawable.getGL().getGL2();
     
    	gl.glShadeModel(GL2.GL_SMOOTH);
    	gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
     
    	gl.glClearDepthf(1.0f);
    	gl.glEnable(GL2.GL_DEPTH_TEST);
    	gl.glDepthFunc(GL2.GL_LEQUAL);
    }
     
    @Override
    public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {
    	GL2 gl = gLDrawable.getGL().getGL2();
    	if(height <= 0) {
    		height = 1;
    	}
    	gl.glViewport(0, 0, width, height); 
     
    	gl.glMatrixMode(GL2.GL_PROJECTION);
    	gl.glLoadIdentity();
    	glu.gluPerspective(0.0f, width/height, 0.0f, 11.0f);
     
    	gl.glMatrixMode(GL2.GL_MODELVIEW);
    	gl.glLoadIdentity();
    }
     
    @Override
    public void display(GLAutoDrawable gLDrawable) {
    	GL2 gl = gLDrawable.getGL().getGL2();
    	gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
    	gl.glLoadIdentity();
     
    	// Si je commente cette ligne, ça fonctionne
    	gl.glTranslatef(0, 0, -10.0f);
     
    	gl.glBegin(GL2.GL_QUADS);
    		gl.glColor3ub((byte)255, (byte)225, (byte)12);
    		gl.glVertex3f(-1, -1, 0);
    		gl.glVertex3f(-1, 1, 0);
    		gl.glVertex3f(1, 1, 0);
    		gl.glVertex3f(1, -1, 0);
     
    		gl.glColor3ub((byte)255, (byte)0, (byte)12);
    		gl.glVertex3f(-0.9f, -0.9f, 0);
    		gl.glVertex3f(-0.9f, 0.9f, 0);
    		gl.glVertex3f(0.9f, 0.9f, 0);
    		gl.glVertex3f(0.9f, -0.9f, 0);
    	gl.glEnd();
    }
    Quelqu'un peut-il m'expliquer pourquoi ???

    D'avance un grand merci !

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 980
    Points
    7 980
    Par défaut
    Et si tu translate de 0,0,-1 ou 0,0,-5 même phénomène ?
    J'aurais pensé au fait que tu sort de la zone zNear, zFar configuré a 11 dans le gluperspective. Mais je dis ca sans plus de conviction.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Et si tu translate de 0,0,-1 ou 0,0,-5 même phénomène ?
    Si je translate de 0,0,-1 mes 2 rectangles apparaissent mais continuent à prendre tout l'espace de la fenêtre. Et dès que je suis plus haut que -1 (même -1.1f), mes formes géométriques disparaissent

    Et même si j'augmente le zfar à 20 dans le gluperspective, rien n'est affiché.

  4. #4
    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
    Salut

    Citation Envoyé par VonDriguen Voir le message
    Lorsque j'ajoute la méthode gl.glTranslatef(0, 0, -10.0f), je m'attends à ce que mes 2 rectangles soit 10 fois plus petit (puisque 10 fois plus loin du point d'observation)
    L'axe Z n'est pas orienté positif vers la caméra? Si c'est le cas, avec cette translation tu passes derrière tes rectangles, donc normal qu'ils disparaissent.

    Teste un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gl.glTranslatef(0, 0, 10.0f)
    pour voir...

    [PS] personne n'a encore râlé qu'il ne fallait plus utiliser le "vieil" opengl?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gl.glTranslatef(0, 0, 10.0f)
    Ne fonctionne pas non plus...

    J'ai un peu regardé du côté de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glu.gluPerspective(0.0f, width/height, 0.1f, 20.0f);
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glu.gluPerspective(43.0f, width/height, 0.1f, 20.0f);
    alors ça fonctionne. Le problème, c'est que je n'ai plus le rapport 1/10 que je voulais. Mais bon, je peux toujours le calculer autrement...

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 980
    Points
    7 980
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glu.gluPerspective(0.0f, width/height, 0.1f, 20.0f);
    C'est sure qu'avec 0.0 pour le fovy ca risque pas de marcher
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par wax78 Voir le message
    C'est sure qu'avec 0.0 pour le fovy ca risque pas de marcher
    Effectivement... En fait, je n'avais pas vraiment compris comment fonctionnait le fovy...

    Bon ben, problème résolu (et vive les math que je vais devoir me taper )

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

Discussions similaires

  1. [OpenGL 3.x] [JOGL] Problème de multi-thread avec les VBO
    Par darksamus1 dans le forum OpenGL
    Réponses: 4
    Dernier message: 02/07/2013, 12h47
  2. Problème avec la lumière (jogl:opengl)
    Par Alays dans le forum OpenGL
    Réponses: 4
    Dernier message: 31/10/2012, 13h12
  3. Problème avec la lumière (jogl:opengl)
    Par Alays dans le forum Général Java
    Réponses: 2
    Dernier message: 29/10/2012, 17h48
  4. [jogl]Problème avec glReadPixels
    Par GLDavid dans le forum OpenGL
    Réponses: 8
    Dernier message: 13/01/2009, 15h20
  5. [jogl]Problème avec TextRenderer
    Par Knightmare dans le forum 3D
    Réponses: 4
    Dernier message: 01/06/2007, 09h52

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