hi guys
i need to pick some point on the JOGL canvas
with gluUnproject.
i’m totally new with opengl.
first, reshape method:
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:
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glPushMatrix();
gl.glTranslatef(-1.5f, 0.0f, -6.0f); // WHY THIS???
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
glu.gluUnProject(width/2, height/2, 0,
mvmatrix, 0, projmatrix, 0, viewport, 0, wcoord, 0);
//System.out.println("World coords at z=0.0 are ( "+ wcoord[0] + ", " + wcoord[1] + ", " + wcoord[2]+ ")");
Vector3D x1 = new Vector3D(wcoord[0], wcoord[1], wcoord[2]);
take the mouse point on my near plane:
glu.gluUnProject( x, realy, 1, //
mvmatrix, 0, projmatrix, 0, viewport, 0, wcoord, 0);
//System.out.println("World coords at z=1.0 are ("+ wcoord[0] + ", " + wcoord[1] + ", " + wcoord[2]+ ")");
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?