【发布时间】:2017-08-22 16:51:39
【问题描述】:
我正在尝试在threejs 中设置TracballControls 以仅在两个轴上移动,仅平移和倾斜,没有滚动。有没有可能实现它? 我的代码:http://360.art.pl/experimental/2/ 鼠标移动应该是这样的:http://360.art.pl/experimental/1/
【问题讨论】:
标签: javascript three.js
我正在尝试在threejs 中设置TracballControls 以仅在两个轴上移动,仅平移和倾斜,没有滚动。有没有可能实现它? 我的代码:http://360.art.pl/experimental/2/ 鼠标移动应该是这样的:http://360.art.pl/experimental/1/
【问题讨论】:
标签: javascript three.js
我认为这会对您有所帮助:(解决了我的问题)
查看您的 TrackballControl.js 文件并更改第 148 行
来自:
_this.object.up.applyQuaternion( quaternion );
到:
_this.object.up.applyQuaternion( new THREE.Vector4(0,0,0,1) );
//更新 仅适用于旧版本
【讨论】:
我意识到这已经很老了,但由于它仍然是谷歌的主要结果,我将描述我是如何做到这一点的。
为了防止滚动(锁定 z 轴),您可以防止 rotateCamera() 更改相机的 Up 向量。
注释掉该行(~第 200 行)
_this.object.up.applyQuaternion(quaternion);
如果您愿意,也可以锁定相机的旋转矢量,添加任一
_this.object.rotation.z = 0;
或
_this.object.rotation.set(0, 0, 0);
到函数的末尾。但是在实践中我发现这并没有太大区别,因为大部分旋转是由相机相对于它的lookAt目标(trackballControls.js文件中的_this.target)的移动引起的。
【讨论】:
我只是改变了变量
this.noPan
在第 26 行设置为 false。 未注释
_this.object.up.applyQuaternion( quaternion );
并增加了
this.dynamicDampingFactor = 0.2;
到 0.8。
【讨论】: