我已经阅读了很多关于这两个控件的内容,目前我正在使用 TrackballControls。
我需要沿所有三个轴旋转对象(两个控件都已经这样做了),但是 我有时还需要手动设置一个新的相机位置/旋转 。而这真的行不通。
我的解决方法是
禁用轨迹球控件,
获取新位置的四元数对象,
将这些应用到 camera.up
然后启用相机
但如前所述,这并不能真正稳定地工作。
我读到 OrbitControls 可能是此类任务的更好解决方案。但是 OrbitControls 对对象的垂直旋转有一个“限制”,我需要无限制地旋转我的对象。
所以我的问题是:
1. 哪个控制系统更适合我的任务
2. 如果是轨迹球 - 您将如何手动设置新的相机位置和旋转?如果是轨道 - 有没有办法禁用这个垂直旋转限制?
非常感谢!!
问候 - 米莎
最佳答案
首先, TrackballControls
和 OrbitControls
旋转相机,而不是物体。
其次,OrbitControls
强制相机 up
方向,而 TrackballControls
允许相机颠倒旋转。TrackballControls
有一个 reset()
方法,将 target
(旋转中心)、相机 position
和相机 0x2314 的矢量 0x2314 恢复为原始设置。
controls.reset();
上面的代码将恢复原来的
up
、 position
和 target
向量。如果您愿意,您也可以在致电 up
之前更改这些内容。controls.position0.set( 0, 0, 10 ); // set a new desired position
controls.target0.set( 0, 0, 0 ); // set a new target
controls.up0.set( 0, 1, 0 ); // set a new up vector
controls.reset();
阅读
controls.reset()
函数源代码,了解它在做什么。编辑:
reset()
现在也有一个 OrbitControls
方法。检查源代码。三.js r.82
关于three.js - OrbitControl 或 TrackballControl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18581225/