我有一个包含多个网格的场景,每个网格都与不同的变换控件相关联;为了选择不同的对象,我使用光线投射技术。我还使用轨道相机来导航场景。
每当我使用变换控件修改所选对象的位置/旋转/比例时,我想禁用轨道相机,因为有时当我单击选择器时,我也会选择场景的背景,所以轨道相机移动。
我想阻止这种行为,并且我已经尝试使用光线投射技术来处理它,但它不起作用。
偶然发现了这一点,并认为看到答案会很有帮助(归功于 BuildingJarl):
// if youre definition is like
var controls = new THREE.OrbitControls( camera );
// you can easily disable it by using
controls.enabled = false;
就我而言,我使用的是 UI 覆盖层,但在将焦点集中到它上面时遇到了问题。禁用控件解决了我的问题。
问候垫
取自Three.js编辑器的示例代码,当使用transformControls时,您可以禁用orbitControls:
let orbitControls= new THREE.OrbitControls(camera, renderer.domElement);
orbitControls.addEventListener('change', render);
let transformControls = new THREE.TransformControls(camera, renderer.domElement);
transformControls.addEventListener('change', render);
transformControls.attach(targetObject);
transformControls.addEventListener( 'dragging-changed', function ( event ) {
orbitControls.enabled = ! event.value;
} );
每次拖动控件时,都会设置 OrbitControls
orbitControls.enabled = false
。