用鼠标在threejs场景中移动对象
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);
}
}
}
对于完整的代码访问https://github.com/lohmanndouglas/Simulador.git
这个问题是因为我在页面中使用了其他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;
这适用于我
相关文章:
- 在javascript中移动对象内部的元素
- 使用Keydown事件移动对象
- 用鼠标在threejs场景中移动对象
- 在画布上移动对象
- HTML5画布距离和移动对象
- Javascript 无法访问 HTML(左右移动对象)
- 如何在三.js中向前移动对象
- 如何使用文本输入在HTML5画布中移动对象
- 在 HTML5 画布中沿路径旋转移动对象
- 从左到右移动对象
- 在 threejs 中沿路径或样条移动对象
- 多个移动对象,每个对象附加了文本
- 如何沿多边形移动对象
- 在矩形中移动对象
- JavaScript / ThreeJS - 围绕中心Y轴(在3D空间中)在圆圈中移动对象的方程式
- 织物.js - 在不按住鼠标按钮的情况下移动对象
- 三个 JS - 如何缩放移动对象
- 通过单击另一个对象来移动对象
- 在浏览器中移动对象
- 在画布上移动对象