Threejs 在使用变换控制时禁用轨道相机

问题描述 投票:0回答:2

我有一个包含多个网格的场景,每个网格都与不同的变换控件相关联;为了选择不同的对象,我使用光线投射技术。我还使用轨道相机来导航场景。

每当我使用变换控件修改所选对象的位置/旋转/比例时,我想禁用轨道相机,因为有时当我单击选择器时,我也会选择场景的背景,所以轨道相机移动。

我想阻止这种行为,并且我已经尝试使用光线投射技术来处理它,但它不起作用。

javascript three.js transformation raycasting
2个回答
28
投票

偶然发现了这一点,并认为看到答案会很有帮助(归功于 BuildingJarl):

// if youre definition is like
var controls = new THREE.OrbitControls( camera );

// you can easily disable it by using
controls.enabled = false;

就我而言,我使用的是 UI 覆盖层,但在将焦点集中到它上面时遇到了问题。禁用控件解决了我的问题。

问候垫


4
投票

取自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

© www.soinside.com 2019 - 2024. All rights reserved.