【问题标题】:ThreeJS: How to move the camera to the left or right independent of its rotation?ThreeJS:如何独立于其旋转将相机向左或向右移动?
【发布时间】:2021-11-10 18:01:27
【问题描述】:

我设置了一个 ThreeJS,相机可以在 3D 世界中移动,并且在移动时它会多次更改其 lookAt。所以让我们假设camera.getWorldDirection() 总是或多或少是随机的。

现在我需要相机相对于camera.getWorldDirection() 准确地向左/向右/向上/向下移动。
不能只使用camera.position.x += 1 之类的东西,因为这仅适用于Vector3(0, 0, -1) 的世界方向。如果世界方向更改为例如(1, -1, 0),向右移动相机确实需要改变X轴和Z轴。

我查看了四元数和 4D 矩阵,但我的猴脑无法绕过它们。如果有人可以帮助我,那就太好了。

这是一个演示:https://normanwink.com/demo/room/

【问题讨论】:

  • 看看这是否有帮助:stackoverflow.com/a/38341191/1461008
  • @WestLangley 感谢您的提示,但不幸的是,由于相机的旋转,它无法正常工作。例如。如果我将相机顺时针旋转 90 度,沿 Z 轴“向前”移动将导致相对于相机视角向左移动。
  • 我在上面发布的链接中的解决方案与您在下面的答案中发布的链接中的解决方案有何不同?

标签: javascript three.js


【解决方案1】:

我在未接受的答案中找到了答案here

你必须使用camera.translateX() 和类似的函数来改变它的本地位置。这样您就可以随时操纵camera.position 来移动它,并使用translate 函数来添加相对于摄像机视角的偏移量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2013-02-14
    • 2020-03-27
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多