hi guys
i need to pick some point on the JOGL canvas
with gluUnproject.
i'm totally new with opengl.
first, reshape method:
1 2 3 4 5 6
| gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); glu.gluPerspective(45.0f, h, 1.0, 20.0); gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); |
display:
1 2 3 4 5 6 7 8 9 10 11
| gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glPushMatrix(); gl.glTranslatef(-1.5f, 0.0f, -6.0f); draw(gl); if(detect)performSelection(gl); gl.glPopMatrix(); gl.glFlush(); |
in draw.. i draw the point Vector3D x0: (0.6, 1, 2)
and performSelection is:
take the eye's point
1 2 3 4 5
| glu.gluUnProject(width/2, height/2, 0, mvmatrix, 0, projmatrix, 0, viewport, 0, wcoord, 0); Vector3D x1 = new Vector3D(wcoord[0], wcoord[1], wcoord[2]); |
take the mouse point on my near plane:
1 2 3 4
| glu.gluUnProject( x, realy, 1, mvmatrix, 0, projmatrix, 0, viewport, 0, wcoord, 0); Vector3D x2 = new Vector3D(wcoord[0], wcoord[1], wcoord[2]); |
make the line between x1 and x2
and do the distance between line and x0.
now, my problem is that it doesn't work.. if i mouve the mouse on the point distance is 0.2, and if i move the mouse on the bottom left cornet is 3, ok.
but if i move the mouse on the bottom (different y) but aligned with point x..
i get 0.2 too.
why??
can you help me?