我正在使用TrackballControls
使用鼠标在场景中旋转相机,但也需要能够使用鼠标旋转场景中的各个对象。我希望能够打开/关闭TrackballControls
来实现这一目标。但是,到目前为止,我尝试过的所有内容都存在问题。这就是我的控件的定义方式:
var controls; // global
在init()
内:
controls = new THREE.TrackballControls( camera );
controls.addEventListener( 'change', render );
最后在animate()
:
controls.update();
到目前为止,我已经尝试过了:
删除事件监听器,如下所示:controls.removeEventListener( 'change', render );
没有改变任何内容; controls
的工作方式与以往一样。
有条件地更新控件,如下所示:
(全局)
var enableControls = true;
(在animate
)
if (enableControls == true) {
controls.update();
}
然后使用enableControls
事件切换KeyDown
。这似乎有效,因为当enableControls
为假时,我可以在不移动相机的情况下旋转对象。但是,当我再次update
时,相机会显着移动(它会移动到基于我在未更新时单击/拖动的位置)。
我分别尝试了这两个并且没有运气相互结合。
答案 0 :(得分:5)
要停用TrackballControls
,您只需设置
controls.enabled = false;
此外,由于您在动画循环中调用controls.addEventListener( 'change', render );
,因此可能不需要controls.update()
。
three.js r.67