gpt4 book ai didi

three.js - OrbitControl 或 TrackballControl

转载 作者:行者123 更新时间:2023-12-04 02:48:05 25 4
gpt4 key购买 nike

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

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

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

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

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

所以我的问题是:

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

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

非常感谢!!

问候 - 米莎

最佳答案

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

二、OrbitControls强制摄像头 up方向,和 TrackballControls允许相机倒置旋转。
TrackballControls有一个 reset()方法,恢复 target (旋转中心),相机 position , 和相机 up矢量到其原始设置。

controls.reset();

以上代码将恢复原来的 position , target , 和 up向量。如果您愿意,您也可以在调用 controls.reset() 之前更改这些设置。 .
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();

阅读 reset()函数源代码,以便您了解它在做什么。

编辑: OrbitControls现在有一个 reset()方法也是。检查源代码。

三.js r.82

关于three.js - OrbitControl 或 TrackballControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com