2009-10-07 6 views
0

Actuellement je développe une application dans Jogl (Ma première application en fait). Frist Je dois charger le modèle dans le canevas à partir d'un fichier .obj (j'arrive à le faire).coordonne le problème du système avec jogl

Ensuite, je dois utiliser l'événement de souris déplacé pour dessiner un trait sur les mêmes canevas et le trait doit être devant la théière. (J'utilise GL.GL_LINE_STRIP) et (glu.gluUnproject pour obtenir les coordonnées de dessiner)

Jusqu'à ce point, j'ai des problèmes. (Le modèle est simplement une tige posée horizontalement sur l'axe des x)

Les coordonnées du modèle chargé ne semblent pas identiques à celles du curseur de la souris. Par exemple: J'utilise un clic de souris pour déterminer où se trouve mon curseur et aussi je clique à la fin de mon modèle (une barre). Ceci renvoie la valeur X de 0.37599047216147075. Ensuite, j'essaie de rechercher la valeur maximale du sommet X du modèle de barre (elle devrait être le sommet le plus à droite de la barre). il me renvoie une valeur 1.xxx ... qui n'est nulle part proche de la valeur de mon curseur de souris. Et la valeur maximale que je peux cliquer est seulement 0.6xxx. Une idée pourquoi est-ce ainsi?

+0

Salut, avez-vous résolu? – elect

Répondre

0

Vous devez examiner comment transformer la coordonnée 2D "espace de vue" donnée avec l'événement souris en une coordonnée 3D "espace monde" logique à comparer avec les données de votre modèle.

This thread peut vous être utile.

0

Eh bien, j'ai essayé d'utiliser glu.gluUnproject mais je ne suis pas sûr de ce que devrait être la valeur z.

public void calObjectCoor(GL gl, float mousex, float mousey, float z) { 

    float x = mousex, y = mousey; 
    gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0); 
    gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0); 
    gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0); 

    /* note viewport[3] is height of window in pixels */ 
    realy = viewport[3] - (int) y ; 


    glu.gluUnProject((double) x, (double) realy, z, // 
      mvmatrix, 0, 
      projmatrix, 0, 
      viewport, 0, 
      wcoord, 0); 
} 
Questions connexes