三.js - 对象跟随鼠标位置
Three.js - Object follows mouse position
我正在Three.js
创建一个球体,每当鼠标移动时,它都必须跟随鼠标,如本例所示。处理鼠标移动的函数如下:
function onMouseMove(event) {
// Update the mouse variable
event.preventDefault();
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;
// Make the sphere follow the mouse
mouseMesh.position.set(event.clientX, event.clientY, 0);
};
我附加了一个JSFiddle,里面有完整的代码,你可以看到根据DOM mouseMesh
是未定义的。你知道我做错了什么吗?
提前感谢您的回复!
要使球体跟随鼠标,您需要将屏幕坐标转换为 threejs 世界位置。参考链接。
更新的小提琴
var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5);
vector.unproject( camera );
var dir = vector.sub( camera.position ).normalize();
var distance = - camera.position.z / dir.z;
var pos = camera.position.clone().add( dir.multiplyScalar( distance ) );
你应该使用 THREE。雷卡斯特为此。当您设置相交对象列表时,您将能够获得与光线相交的对象数组。因此,您可以从返回的列表中的"单击"对象中获取位置
基本上,您需要从3D世界空间和2D屏幕空间进行投影。渲染器使用 projectVector 将 3D 点转换为 2D 屏幕。unprojectVector基本上用于执行反向操作,将2D点取消投影到3D世界中。对于这两种方法,您都会通过摄像机查看场景。因此,在此代码中,您将在 2D 空间中创建归一化向量。
相关文章:
- 跟踪jqplot垂直折线图的鼠标位置
- Javascript-在视频中跟踪鼠标位置
- 打开相对于鼠标位置的CSS3/HTML5模式对话框
- 如何控制quadraticCurve使用鼠标位置控制位置
- Javascript如何在不使用画布的情况下获取鼠标位置
- jQuery根据鼠标位置计算DIV偏移量和边界
- 在火狐浏览器的画布上获取鼠标位置
- 尝试绘制从鼠标位置工具栏中选择的形状 - HTML5 CANVAS
- 添加视图框时更改鼠标位置
- 如何在鼠标位置获取所有元素
- Three.js 3D缩放到鼠标位置
- 将鼠标位置(0,0)设置为画布的中心
- Unity 2d实例化鼠标位置问题,请告知
- 在原生JavaScript中获取画布中鼠标位置的最现代方法
- 如何在 Javascript 中正确获取鼠标位置
- 如何将元素移动到鼠标位置
- 使用 JavaScript 跟踪 Adobe Air 中的鼠标位置
- 三.js - 对象跟随鼠标位置
- 绘制在鼠标位置折叠的水平线和垂直线
- 在鼠标按下期间获取鼠标位置