竹笋

首页 » 问答 » 灌水 » Threejs鼠标事件封装基于Rayc
TUhjnbcbe - 2023/6/21 19:29:00

Three.js是一款开源的WebGL绘图JS引擎,可以在WEB上实现很炫酷的3D效果。

three.js过山车示例

Three.js可以方便的创建几何体,有时候我们需要对创建的几何体设置点击事件,由于我们的浏览器鼠标点击对应的是屏幕坐标(X,Y),而three.js画布是三维场景,所以绑定鼠标点击事件,需要将我们屏幕点击的坐标转到Three.js的三维坐标,确定点击的对象模型后在绑定执行的动作。Three.js类库提供了THREE.Raycaster对象用于进行鼠标拾取。

Three.js鼠标点击事件封装

关键代码:

functiongetIntersects(e){

//通过鼠标点击的位置计算出raycaster所需要的点的位置

mouse.x=(e.clientX/(app?app.clientWidth:window.innerWidth))*2-1;

mouse.y=-(e.clientY/(app?app.clientHeight:window.innerHeight))*2+1;

//计算物体和射线的焦点

raycaster.setFromCamera(mouse,camera);returnraycaster.intersectObjects(scene.children);};

代码调用:

1.对象初始化:

varevent=newEventKeeper(scene,camera,app);

scene参数为场景对象,camera参数为对象,app参数为three.js容器id

2.事件绑定:

event.addClickEventListener(object,fn)//绑定点击事件

event.addMouseoverEventListener(object,fn)//绑定鼠标滑入事件

event.addMouseoutEventListener(object,fn)//绑定鼠标滑出事件

其中object参数为要绑定事件的几何模型对象,fn对应的事件的处理函数

测试示例:点击几何体,被点击对象变成红色

three.js示例代码效果
1
查看完整版本: Threejs鼠标事件封装基于Rayc