我已经阅读了很多关于这两个控件的内容,目前我正在使用 TrackballControls。

我需要沿所有三个轴旋转对象(两个控件都已经这样做了),但是 我有时还需要手动设置一个新的相机位置/旋转 。而这真的行不通。

我的解决方法是
禁用轨迹球控件,
获取新位置的四元数对象,
将这些应用到 camera.up
然后启用相机

但如前所述,这并不能真正稳定地工作。

我读到 OrbitControls 可能是此类任务的更好解决方案。但是 OrbitControls 对对象的垂直旋转有一个“限制”,我需要无限制地旋转我的对象。

所以我的问题是:

1. 哪个控制系统更适合我的任务

2. 如果是轨迹球 - 您将如何手动设置新的相机位置和旋转?如果是轨道 - 有没有办法禁用这个垂直旋转限制?

非常感谢!!

问候 - 米莎

最佳答案

首先, TrackballControlsOrbitControls 旋转相机,而不是物体。

其次,OrbitControls 强制相机 up 方向,而 TrackballControls 允许相机颠倒旋转。
TrackballControls 有一个 reset() 方法,将 target(旋转中心)、相机 position 和相机 0x2314 的矢量 0x2314 恢复为原始设置。

controls.reset();

上面的代码将恢复原来的 uppositiontarget 向量。如果您愿意,您也可以在致电 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/

10-13 03:46