似乎无法找到解决我以下问题的方法。我在libGDX中设置了一个透视凸轮。我使用.rotateAround例程来旋转我的相机。这在绕低坐标旋转时非常有效。但是绕轴旋转的坐标越高,旋转变得越多。
在我的CameraInputController类中:
@Override
protected boolean process(float deltaX, float deltaY, int button) {
if (button == Buttons.LEFT) {
// DRAG CAMERA
} else if (button == Buttons.RIGHT) {
// ROTATE CAMERA
perspectiveCam.rotateAround(new Vector3(clickedX, clickedY, 0), Vector3.Z, deltaX * -100);
}
return true;
}
这有效:
perspectiveCam.rotateAround(new Vector3(0f, 0f, 0f), Vector3.Z, deltaX * -100)
以下代码导致拖动小部分,然后突然旋转,然后再拖动等等:
perspectiveCam.rotateAround(new Vector3(100000f, 100000f, 0f), Vector3.Z, deltaX * -100)
我知道它的工作原理是翻译,然后旋转凸轮,然后翻转相机。谁能指出我正确的方向?它是半径/浮点值的东西吗?
提前致谢!
编辑: 在这里查看'bug': rotating gif
答案 0 :(得分:0)
我在这里找到了答案:https://gamedev.stackexchange.com/questions/57547/vertices-shaking-with-large-camera-position-values
我不知道这是件事。高位置值的浮点精度。答案是将我的网格移近(0,0,0)。