three.js 粒子特效

JavaScript013

three.js 粒子特效,第1张

通过粒子特效,实现动态背景或其它效果。

我们使用的是Points和PointsMaterial创建粒子的,需要确定的是粒子数量、粒子颜色、透明度、是否随离相机的远近调整大小、粒子的贴图等信息。

接下来根据粒子的数量,循环设置粒子的位置,并保存到定义的Geometry对象的vertices顶点队列中。

最后创建点类,并添加到场景中。

有些场景需要创建动态背景或者模仿雨雪天气,就需要让粒子无规则的运动。我们需要在创建粒子位置的时候给粒子增加一个随机的方向向量,在render循环渲染场景的函数中,改变每一个粒子的位置,并且需要更新顶点队列的数据,这样粒子才能无规则的运动。

有些场景需要粒子位置变化为另一个几何体(该几何体必须有顶点集合vertices),我们需要使用Tween平滑动画来改变每个粒子的位置,此处需要注意的是变化前后的模型顶点的数量相等和不等的情况。

threejs本身就是3D引擎,最核心的几套算法都已经实现了(向量,矩阵建模等)

如果你要再在threejs之上做一些工作,我个人认为应该是这几个方面

首先是场景生产器,需要对模型的加载进行优化,例如场景的依赖加载,近景优先加载,远景采用模糊的建模节省资源,等完全加载之后再展示,具体你可以看看低网速一些3D游戏的做法,自适应分辨率等等等,通过算法压缩模型构建的三维点坐标等

然后就是抗锯齿算法,碰撞算法等,另外还有内存优化等(c++必做的工作,案例就是暴雪经典的HASH算法等)

然后就是材质的集成和优化,例如一些光照特效等

1.检查npm -v版本和使用对应的vite安装vue3项目

需要安装依赖:npm install

运行:npm run dev

目录结构:

2.threejs官网:

3.安装threejs

4.准备3D模型素材(我这里使用glb格式)和HDR图片,素材网上可以找有免费的。

5.在App.vue中绑定id,挂载,实例化使用

6.在项目中的src目录下创建utils目录,在utils目录下创建Base3d.js脚本

效果展示:手机模型已经加载至场景中,背景是hdr图。

功能展示:用户可以滑动滚轮将模型进行放大缩小,场景360度无死角旋转。