我想知道如何使用ThreeJs放大鼠标选择,我正在使用raycaster选择模型区域,但当我单击区域时,有些东西不起作用-正如你在My Example中看到的(感谢Mugen87),我的目标是当我点击它们时放大它们……我添加了以下函数:
function onClick(event) {
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
intersects = raycaster.intersectObject( mesh, false, intersects );
if(mesh.type!= 'Mesh' || !intersects.length){
return
}
var n = intersects[ 0 ].face.normal.clone();
n.multiplyScalar(30);
n.add(intersects[ 0 ].point);
var p = intersects[ 0 ].point;
camera.position.copy(n);
camera.lookAt(p);
}
当我在模型外部单击时-它没有保持位置,它在旋转...
发布于 2020-11-06 01:14:54
这是因为您使用的是OrbitControls
,它几乎接管了您的摄影机,并在每帧中指定其位置和旋转一次。当您尝试手动设置其位置时,OrbitControls
将覆盖您所做的任何操作。
解决方案是使您的controls
变量成为全局变量。然后,当您准备接管相机位置时,在onClick()
函数中设置controls.enabled = false;
。然后,当您准备好返回到常规控件时,设置controls.enabled = true;
https://threejs.org/docs/#examples/en/controls/OrbitControls.enabled
https://stackoverflow.com/questions/64707263
复制