Three.js实现漫天雨滴的效果(粒子)

 时间:2024-10-14 09:07:42

  Three.js是一款开源的主流3D绘图JS引擎(名字Three就是3D的含义),用来简化WebGL编程,也提供了非常多的3D显示功能来实现很多炫酷的实例。  本文利用Three.js的粒子系统实现漫天雨滴的效果,最终效果如下图:

Three.js实现漫天雨滴的效果(粒子)

工具/原料

Sublime Tex

Chrome浏览器调试

编写静态页面

1、  html代码和css样式如下图,这一块比较简单,也不是本文重点,代码可自行查看下图。

Three.js实现漫天雨滴的效果(粒子)

实现过程

1、  声明变量,详细代码如下图,具体用途说明都已经有备注。

Three.js实现漫天雨滴的效果(粒子)

2、  新建渲染器(initRenderer)、相机(initCamera)和场景(initScene),详细代码如下图:  1.渲染器设置抗锯齿为有效(antialias: true),使物体更光滑;  2.渲染背景色设置为0x171413,模拟天气黑暗感觉;  3.PerspectiveCamera的视角一般设置45,效果比较好;  4.为了观察效果,相机的位置定位到(20,40,110),设置y轴向上(camera.up.y = 1),且焦点为(20,30 , 0)。

Three.js实现漫天雨滴的效果(粒子)

3、  新建物体(initObject),这一块比较复杂,详细分析如下:  1.先新建几何模型(geo罪焐芡拂m)和设置粒子缺省材质属性(material),里面要注意属性sizeAttenuation,设置为true的时候,雨滴会随距离而发生尺寸衰减(远小、近大),其它属性下图都有详细备注;  2.然后把5000个随机顶点位置的数据(particle)保存到数组中(geom.vertices);  3.最后新建类(cloud),里面包含5000个粒子(模型和材质为第1点设置的数据)。  Tips:velocityY和velocityX影响下落的速度。

Three.js实现漫天雨滴的效果(粒子)

4、  添加动画效果,简单说就是利用requestAnimationFrame每隔一个动画帧重新渲染一关骇脘骱次,由于设置了每个顶点位置偏移,所以会产生动画效果;详细代码如下图:  1.设置了每隔一个动画帧重新渲染的时候,改变每个顶点的坐标位置(vertices.forEach),从而产生下落的过程  2.如果单单只设置第1点的动画,雨滴的动画效果会一卡一卡,不够真实;所以利用时间差(Date.now() - startTime > 100)判断,如果达到条件就调用函数initObject,函数里面有判断如果类(cloud)存在,则删除全部雨滴,重新渲染5000个雨滴,使雨滴下落过程更加顺畅。

Three.js实现漫天雨滴的效果(粒子)
  • 诛仙强化12技巧
  • 如何用itunes同步照片
  • 江湖悠悠怎么装备武学
  • 天涯明月刀缉拿2个人能做么
  • 怎样是制作霜纹包
  • 热门搜索
    关于环保的手抄报图片 诚信的手抄报图片 六年级英语手抄报 我爱祖国手抄报图片 岭南文化手抄报 手抄报边框大全 二年级国庆节手抄报 礼仪手抄报内容 预防流感手抄报 健康知识手抄报图片