【问题标题】:Math behind a 3rd person camera第三人称相机背后的数学
【发布时间】:2014-04-24 00:38:52
【问题描述】:

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

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


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

【问题讨论】:

  • 不确定你想通过制作第三人称相机来完成什么。您是否尝试根据相机的位置、视角和向上方向创建图像?
  • 我在一个 3D 世界中,试图将相机定位在我的“玩家”对象后面,我无法让相机跟随对象
  • 刚刚实现了标题所说的3D相机。意味着是第三人称相机
  • Vector3.mul 被 Vector3.scl 取代

标签: java 3d camera libgdx


【解决方案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 轴逆时针方向的度数。

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

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 2020-08-29
    相关资源
    最近更新 更多