【问题标题】:camera.lookAt not called when THREE controls are being used使用三个控件时未调用 camera.lookAt
【发布时间】:2013-01-29 15:24:27
【问题描述】:

我正在开发一个使用 THREE.RollControls 的程序,当用户离屏幕中心太远时,他们往往会迷路,所以我正在创建一个重新定向他们的函数,面向场景中心。

我原本打算做的只是简单地调用以下代码:

camera.lookAt(scene.position)

但是,这没有影响。从我正在阅读的关于不同堆栈溢出问题的内容来看: ThreeJS camera.lookAt() has no effect, is there something I'm doing wrong?

他们的解决方案似乎是使用控件更改相机位置,而不是更改相机本身。

我不相信滚动控件中有任何“目标”,所以我不知道如何根据 THREE.Vector3() 重置相机正在查看的位置是否有一种简单的方法可以做到这一点,或者我基本上必须:

到目前为止,我已“尝试”执行以下操作: - 计算相机位置与场景位置的差异。 - 标准化这个向量 - 从相机前方的方向减去它 - 在controls.forward.add(thisVector)中使用这个向量

但这根本不是我想要的(可能是因为我不知道自己在做什么)

提前感谢您的宝贵时间!

艾萨克

【问题讨论】:

    标签: controls three.js


    【解决方案1】:

    同样的事情也让我对 RollControls 感到烦恼,但我采取了不同的方法来解决问题。由于控件在示例代码中(在 r55 中),因此您可以修改控件,因为它们不是核心库的一部分。你可以在http://www.virtuality.gr/AGG/EaZD-WebGL/js/three.js/examples/js/controls/RollControls.js看到我的修改 我引入了一个名为 mouseLook 的局部变量,因为我无法使用 this.mouseLook。我将其初始化为 false,并且仅在按下按钮时(即在场景中导航时)才将其设为 true。这解决了我的问题。

    【讨论】:

    • 绝对出色的解决方案!
    猜你喜欢
    • 2013-01-12
    • 2017-01-16
    • 1970-01-01
    • 2020-07-19
    • 2014-12-20
    • 2021-03-08
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多