使用OrbitControls时如何在three.js中禁用右键单击鼠标移动相机旋转?

Ind*_*ngh 1 javascript three.js

我在three.j中使用轨道控制来旋转相机。

const controls = new THREE.OrbitControls(camera, renderer.domElement);

controls.dampingFactor = 0.07;
controls.rotateSpeed = 0.07;
controls.enableZoom = false;
controls.screenSpacePanning = false;
controls.minDistance = 250;
controls.maxDistance = 350;
controls.minPolarAngle = 1.2;
controls.maxPolarAngle = 1.2;
Run Code Online (Sandbox Code Playgroud)

我正在像这样固定相机位置 -

camera.position.x = 308;
camera.position.y = 130;
camera.position.z = 135;
Run Code Online (Sandbox Code Playgroud)

当我使用鼠标左键移动时,相机在我的物体周围移动得很好。但是当我使用鼠标右键移动时,它奇怪地将我的相机从物体上移开。我需要禁用此功能,但找不到任何方法来做到这一点。我尝试在文档上使用事件侦听器来阻止和停止鼠标移动事件的传播,如果后跟右键单击但它不起作用。

document.addEventListener("mousedown", function(event){
  console.log(event.button);
  if(event.button == 2){
    rightmousemove = true;
    return false;
  //   // Right click
  } 
});
document.addEventListener("mousemove", function(event){
  if(rightmousemove === true){
    event.preventDefault();
    event.stopPropagation();
  }
});
Run Code Online (Sandbox Code Playgroud)

dan*_*ong 6

您所描述的是“平移”。您可以通过以下方式禁用此功能:

controls.enablePan = false;

https://threejs.org/docs/#examples/controls/OrbitControls.enablePan