我正在与LWJGL合作,我希望在缩放投影矩阵后选择瓷砖,但我不确定如何。我正在使用JOML作为线性代数库。投影矩阵首先应用正交变换,然后将其平移到玩家的位置,最后进行缩放。当我缩放投影矩阵时,因为所有的东西都被放大了,所以鼠标不再选择正确的平铺。这是我尝试纠正鼠标位置的方法:
float cursorX = input.getCursorPosX() + getX();
float cursorY = input.getCursorPosY(true) + getY();
cursorX *= (1/cameraScalar);
cursorY *= (1/cameraScalar);前两行从GLFW获取光标,并向其添加球员位置。第三行和第四行只是乘以相机比例的倒数。
发布于 2017-04-19 02:46:47
我不熟悉JOML,但是你想要做什么的一般方法是这样的:
float screenX = 2.0f * mouseX / screenWidth - 1.0f; float screenY = 1.0f - 2.0f * mouseY / screenHeight;
proj)将带有坐标(screenX,screenY,1)的屏幕矢量投影到世界上:Vector3 screen = new Vector3(screenX, screenY, 1); Vector3 world = proj.inverse().mul(screen);
world.x和world.y包含正确的世界坐标发布于 2017-04-20 23:37:32
JOML提供了GLU的"unproject“功能和一个额外的"unprojectRay”。
https://stackoverflow.com/questions/43478176
复制相似问题