Ich versuche gerade Ray-Picking zu implementieren.und stecke leider schon bei gluUnproject fest. Dieses habe ich wie hier verwendet. Beim Click berechne ich mir die Position in Weltkoordinaten für 2 verschiedene Z Werte (near und far plane) um daraus dann einen Vektor zu erstellen.
Mein Code sieht so aus:
Die ausgegebenen Weltkoordianten kommen mir aber etwas seltsam vor. Für die Objekte die auf den Z Positionen liegen müssten doch eigentlich die korrekten x und y Werte rauskommen, oder nicht? Ich habe ein Element bei -1/-1/1, wenn ich dieses anklicke liefert gluUnProject mit Z Wert 1 die Koordinaten -0.2/-0.2/3.9
Das kommt mir etwas seltsam vor. Läuft da etwas falsch oder verstehe ich da nur etwas falsch?
Mein Code sieht so aus:
Java:
public void picking(GL gl,int mouseX, int mouseY){
gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0);
gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0);
realY = viewport[3] - (int) mouseY - 1;
System.out.println("Coordinates at cursor are (" + mouseX + ", " + realY);
glu.gluUnProject((double) mouseX, (double) realY, 1.0,
mvmatrix, 0,
projmatrix, 0,
viewport, 0,
worldCoord, 0);
System.out.println("World coords at z=1.0 are ( "
+ worldCoord[0] + ", " + worldCoord[1] + ", " + worldCoord[2]
+ ")");
glu.gluUnProject((double) mouseX, (double) realY, 20.0,
mvmatrix, 0,
projmatrix, 0,
viewport, 0,
worldCoord, 0);
System.out.println("World coords at z=20.0 are ("
+ worldCoord[0] + ", " + worldCoord[1] + ", " + worldCoord[2]
+ ")");
.........
.........
}
Die ausgegebenen Weltkoordianten kommen mir aber etwas seltsam vor. Für die Objekte die auf den Z Positionen liegen müssten doch eigentlich die korrekten x und y Werte rauskommen, oder nicht? Ich habe ein Element bei -1/-1/1, wenn ich dieses anklicke liefert gluUnProject mit Z Wert 1 die Koordinaten -0.2/-0.2/3.9
Das kommt mir etwas seltsam vor. Läuft da etwas falsch oder verstehe ich da nur etwas falsch?