java - 第三人称相机背后的数学

标签 java 3d camera libgdx

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

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

<小时/>

解决方案:
Xoppa 在评论中发布了他的 chaseCam 的链接,该链接扩展了透视摄像头,这真是太棒了。由于这不是答案,我可以将其标记为已接受,但它满足了我的需要。链接如下 chaseCamera.java全部归功于 Xoppa 的答案,只是让它更容易找到。

最佳答案

更新玩家位置后,我会在每一帧上执行以下操作:

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 轴的逆时针角度。

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

关于java - 第三人称相机背后的数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23257757/

相关文章:

wpf - WPF中的滚动学分屏幕...想法?

CSS3 变换 : rotateY a div to counter the rotateY of the parent

c++ - 是什么导致我的光线追踪器中出现伪影?

android - 图像在相机预览中失真

swift - 在 AVCapture Swift 中仅捕获相机预览

java - 一个 log4j.xml - 许多脚本

java - Kotlin Guava Cache 未显示正确的 hitCount

java - 将现有泛型转换为菱形语法

java - java中读取属性文件时出错

ios - 相机方向没有改变