如何防止OrbitControl导致相机跳转?

时间:2017-07-11 23:29:44

标签: javascript three.js

我有一个包含用户可以使用TransformControls移动的对象的场景。不幸的是,当用户将TransformControls拖动到画布的边缘时,OrbitControls会使相机从其当前位置跳转。

我相信这是因为TransformControls阻止默认鼠标事件冒泡,但是当鼠标被拖向屏幕边缘时,TransformControls首先停止处理鼠标移动,然后OrbitControls开始处理它。我可以用以下代码来隔离这种情况:

this.orbitControls = new OrbitControls(this, canvas);
this.lastCameraAngle = this.rotation.toVector3();
this.orbitControls.addEventListener('change', (e) => {
  if (this.lastCameraAngle) {
    const angleDifference = this.rotation.toVector3().angleTo(this.lastCameraAngle);
    if (angleDifference > 1) {
      // Occurs when user drags TransformControls to edge of canvas
      console.log('Error occurred!'); 
    }
  }
  this.lastCameraAngle = this.rotation.toVector3();
});

问题是,我怎样才能真正解决问题呢?我非常喜欢不需要编辑ObjectControls.js或TransformControls.js

的解决方案

0 个答案:

没有答案