[英]Move an object in a threejs scene with mouse
我需要在Threejs场景中移动一个对象,但是当我用鼠标单击时我无法选择一个对象。 我尝试为我的应用程序修改此代码( https://github.com/mrdoob/three.js/blob/master/examples/webgl_interactive_draggablecubes.html ),但在我的情况下不起作用。
这个功能正确吗?
摄像机的位置和旋转是否正确(请参阅完整的代码)?
function onDocumentMouseDown(event) {
console.log("function onDocumentMouseDown");
console.log(mouse.x, mouse.y);
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObjects( objetos );
if (intersects.length > 0) {
alert("finalmente");
console.log(intersects[0]);
intersects[0].object.material.transparent = true;
intersects[0].object.material.opacity = 0.1;
SELECTED = intersects[0].object;
var intersects = raycaster.intersectObject( plane );
if ( intersects.length > 0 ) {
offset.copy( intersects[ 0 ].point ).sub(plane.position);
}
}
}
引起该问题的原因是我在页面中使用了其他DIV,因此要解决此问题,必须将clientX和clientY转换为DIV的相对坐标。
我更改了更新变量mouse.x和mouse.y的行。
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
为了这:
mouse.x = ( (event.clientX - event.target.getBoundingClientRect().left) /event.currentTarget.width ) * 2 - 1;
mouse.y = - ( (event.clientY - event.target.getBoundingClientRect().top) / event.currentTarget.height ) * 2 + 1;
这对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.