数学背后的第三人称相机

时间:2014-04-24 00:38:52

标签: java 3d camera libgdx

我已经尝试了很长一段时间,我似乎无法找到关于第三人称相机的任何信息。我只是想制作一个简单的第三人称相机,但它变得困难,因为我在3d。到目前为止,我可以在1架飞机上做相机,但之后就搞砸了。如果有人知道libgdx,我正在使用带有ModelInstances的libgdx。

我不需要你把代码交给我,我只需要帮助我如何用我的信息写出来。我知道x y和z中的速度,对象的x y z中的旋转,以及它在x y z中的位置。我可以让相机看着物体,所以我所要做的就是将它放在后面和上面,无论物体的方向是什么。非常感谢任何链接或解释:)


解决方案:
Xoppa在评论中发布了一个链接到他的chaseCam,它扩展了透视凸轮,令人惊叹。由于这不是一个答案,我可以将其标记为已被接受,但它确实做到了我所需要的。继承人链接chaseCamera.java所有归功于Xoppa的答案,只是让它更容易找到。

1 个答案:

答案 0 :(得分:1)

我会在更新玩家位置后对每一帧进行操作:

camera.up.set(0,1,0); //Not sure if this is necessary. 
                      //Making sure up is always up after 
                      //last frame's lookAt() call.
camera.postion.set(player.position)
    .add(-UNITS_BACK, UNITS_UP, 0)
    .rotate(Vector3.UP, player.angle);
camera.lookAt(player.position);
camera.update();

其中player.angle是玩家从X轴逆时针方向的度数。

这是一个简单的起点。您可能希望通过限制摄像机可以移动的速度或使其向目标位置和方向进行二阶插值移动来平滑移动。