LibGDX相机围绕轴高坐标旋转

时间:2017-01-04 19:34:20

标签: camera libgdx rotation

似乎无法找到解决我以下问题的方法。我在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

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案:https://gamedev.stackexchange.com/questions/57547/vertices-shaking-with-large-camera-position-values

我不知道这是件事。高位置值的浮点精度。答案是将我的网格移近(0,0,0)。