我有一个包含多个网格的场景,每个网格都与不同的 transformControl 相关联;为了选择不同的对象,我使用了光线投射技术。我还使用轨道摄像机来导航场景。
每当我使用变换控件修改所选对象的位置/旋转/比例时,我都想禁用轨道相机,因为有时当我点击选择器时,我也在选择场景的背景,所以轨道相机移动。
我想停止这种行为,并且我已经尝试使用光线投射技术来处理它,但它不起作用。
我有一个包含多个网格的场景,每个网格都与不同的 transformControl 相关联;为了选择不同的对象,我使用了光线投射技术。我还使用轨道摄像机来导航场景。
每当我使用变换控件修改所选对象的位置/旋转/比例时,我都想禁用轨道相机,因为有时当我点击选择器时,我也在选择场景的背景,所以轨道相机移动。
我想停止这种行为,并且我已经尝试使用光线投射技术来处理它,但它不起作用。
偶然发现了这一点,并认为看到答案会有所帮助(归功于 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 编辑器的代码:
var orbitControls= new THREE.EditorControls(camera, renderer.domElement);
orbitControls.addEventListener('change', render);
var transformControls = new THREE.TransformControls(camera, renderer.domElement);
transformControls.addEventListener('change', render);
transformControls.attach(mesh);
transformControls.addEventListener('mouseDown', function () {
orbitControls.enabled = false;
});
transformControls.addEventListener('mouseUp', function () {
orbitControls.enabled = true;
});