Java 等轴测视图中类似RTS的鼠标(LWJGL)

Java 等轴测视图中类似RTS的鼠标(LWJGL),java,mouse,lwjgl,isometric,Java,Mouse,Lwjgl,Isometric,我确实对等距视图中的鼠标点击有问题。 简单地说,我有一张平面图,就像我说的,还有一个等轴测视图中的相机。现在,当我在窗口中单击时,我想得到我在地图上单击的坐标。有什么帮助吗?事实上,我知道了 int winX = ... //the x coordinate of the Click, given Parameter int winY = ... //the y Coordinate of the Click, given Parameter FloatBuffer winZ = Buffer

我确实对等距视图中的鼠标点击有问题。
简单地说,我有一张平面图,就像我说的,还有一个等轴测视图中的相机。现在,当我在窗口中单击时,我想得到我在地图上单击的坐标。有什么帮助吗?

事实上,我知道了

int winX = ...  //the x coordinate of the Click, given Parameter
int winY = ... //the y Coordinate of the Click, given Parameter
FloatBuffer winZ = BufferUtils.createFloatBuffer(1); //the x coordinate of the click, will be calculated
FloatBuffer pos = BufferUtils.createFloatBuffer(3); // the final position of the click
FloatBuffer modelview = BufferUtils.createFloatBuffer(16); 
FloatBuffer projection = BufferUtils.createFloatBuffer(16); 
IntBuffer viewport = BufferUtils.createIntBuffer(16); 

GL11.glGetInteger(GL11.GL_VIEWPORT, viewport);
GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelview);
GL11.glGetFloat(GL11.GL_PROJECTIONMATRIX, projection);

GL11.glReadPixels(winX, winY, 1,1, GL11._GL_DEPTH_COMPONENT, GL11.GL_FLOAT, winZ) //calculate the Z Coordinate of the Click
GLU.gluUnProject((float)(winX), (float)(winY), (float)(winZ.get(0)), modelview, projection, viewport, pos); //Calculating the 3D Position of the click, saved in pos

现在,由于您有了3D坐标,您可以进行一些简单的矢量计算和碰撞检测,以获得单击的点

您不需要使用glReadPixels,只需假设Z分量为0.5左右(即近剪裁平面和远剪裁平面之间的一半),就可以得到相同的结果。