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 :

Difficultée à comprendre gluProject


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 896
    Par défaut Difficultée à comprendre gluProject
    Bonjour

    Je veux calculer les points extrêmes de ma scène sous OpenGL. J'utilise JOGL.
    Je récupère mes points en coordonnées "OpenGL" et je veux les convertir vers des coordonnées "fenêtre". Pour ce faire, j'utilise gluProject ainsi :
    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
     
        private void getCoordInRealWorld(GL gl, double x, double y, double z) {
            GLU glu = new GLU();
            int viewport[] = new int[4];
            double mvmatrix[] = new double[16];
            double projmatrix[] = new double[16];
            double wcoord[] = new double[4];// wx, wy, wz;// returned xyz coords
            //int realy = 0;// GL y coord pos
            gl.glGetIntegerv(gl.GL_VIEWPORT, viewport, 0);
            gl.glGetDoublev(gl.GL_MODELVIEW_MATRIX, mvmatrix, 0);
            gl.glGetDoublev(gl.GL_PROJECTION_MATRIX, projmatrix, 0);
     
            boolean b = glu.gluProject(x, y, z, //
                    mvmatrix, 0,//
                    projmatrix, 0, //
                    viewport, 0, //
                    wcoord, 0);
     
            System.out.println(b);
     
            for(int i=0; i<wcoord.length; i++){
                System.out.print(wcoord[i]+"\t");
            }
            System.out.println();
        }
     
        public void display(GLAutoDrawable drawable) {
            gl = drawable.getGL();
     
            // Clear the drawing area
            gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
     
            gl.glLoadIdentity();
            gl.glTranslatef(0.0f, 0.0f, zoom);
     
            gl.glColor3f(1.0f, 0.0f, 0.0f);
            gl.glBegin(gl.GL_POLYGON);
            gl.glVertex3f(-1.0f, 1.0f, 0.0f);
            getCoordInRealWorld(gl, -1.0f, 1.0f, 0.0f);
            gl.glVertex3f(1.0f, 1.0f, 0.0f);
            getCoordInRealWorld(gl, 1.0f, 1.0f, 0.0f);
            gl.glVertex3f(1.0f, -1.0f, 0.0f);
            getCoordInRealWorld(gl, 1.0f, -1.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, 0.0f);
            getCoordInRealWorld(gl, -1.0f, -1.0f, 0.0f);
            gl.glEnd();
     
            // Flush all drawing operations to the graphics card
            gl.glFlush();
        }
    De ce code, 2 remarques:
    1) Mon booléen issu de mon appel à gluProject est faux.
    2) Toutes les coordonnées que je récupère sont à 0
    Donc, je ne sais pas où j'ai bien pu planter.
    Quelqu'un aurait-il une idée ?

    Merci d'avance.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 896
    Par défaut
    Comme tout problème, la solution est toute simple, il suffisait que j'invoque ma fonction après avoir dessiné mes points:
    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
     
        public void display(GLAutoDrawable drawable) {
            gl = drawable.getGL();
     
            // Clear the drawing area
            gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
     
            gl.glLoadIdentity();
            gl.glTranslatef(0.0f, 0.0f, zoom);
     
            gl.glColor3f(1.0f, 0.0f, 0.0f);
            gl.glBegin(gl.GL_POLYGON);
            gl.glVertex3f(-1.0f, 1.0f, 0.0f);
            gl.glVertex3f(1.0f, 1.0f, 0.0f);
            gl.glVertex3f(1.0f, -1.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, 0.0f);
            gl.glEnd();
     
            getCoordInRealWorld(gl, -1.0f, 1.0f, 0.0f);
            getCoordInRealWorld(gl, 1.0f, 1.0f, 0.0f);
            getCoordInRealWorld(gl, 1.0f, -1.0f, 0.0f);
            getCoordInRealWorld(gl, -1.0f, -1.0f, 0.0f);
     
            // Flush all drawing operations to the graphics card
            gl.glFlush();
        }
    Et le tour est joué.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. Difficultés pour comprendre l'exploratieur d'objets
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/01/2015, 14h31
  2. difficulté a comprendre une fonction
    Par roubas dans le forum MATLAB
    Réponses: 11
    Dernier message: 12/02/2009, 15h54
  3. des difficultés pour comprendre une requête
    Par johnny3 dans le forum Schéma
    Réponses: 5
    Dernier message: 10/08/2008, 19h43
  4. [DF] difficulté à comprendre des corrigés
    Par johnny3 dans le forum Schéma
    Réponses: 12
    Dernier message: 10/08/2008, 03h10

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