我正在开发一个使用THREE.RollControls的程序,当用户离屏幕中心太远时,它们往往会迷路,所以我正在创建一个重新定位它们的功能,面向现场的中心。
我打算做的只是致电以下内容:
camera.lookAt(scene.position)
然而,这没有任何影响。从我正在阅读的不同堆栈溢出问题具体来说: ThreeJS camera.lookAt() has no effect, is there something I'm doing wrong?
似乎他们的解决方案是使用控件更改相机位置,而不是更改相机本身。
我不相信Roll控件中有任何'Target',所以我不知道如何基于THREE.Vector3()有一个简单的方法可以重置相机在哪里重置,或者我基本上必须:
到目前为止,我已“尝试”执行以下操作: - 计算摄像机位置与场景位置的差异。 - 规范化此向量 - 从相机前方减去它 - 在controls.forward.add(thisVector)中使用此向量
但这根本不符合我的要求(可能因为我不知道我在做什么)
提前感谢您的时间!
艾萨克
答案 0 :(得分:1)
同样的事情也让我对RollControls产生了疑问,但我采取了不同的方法解决问题。由于控件位于示例代码中(在r55中),因此您可以修改控件,因为它们不是核心库的一部分。你可以在http://www.virtuality.gr/AGG/EaZD-WebGL/js/three.js/examples/js/controls/RollControls.js看到我的修改 我介绍了一个名为mouseLook的局部变量,因为我无法使用this.mouseLook。我把它初始化为假,我只在按下按钮时才这样做,即在场景中导航时。这解决了我的问题。