ThreeJs入门44-绚丽的粒子系统-介绍

910 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

示例代码采用three.js-r73版本: github.com/mrdoob/thre…

在3D建模过程中,当我们需要创建很多细小的物体时,并不会一个个地创建这些物体,而是通过创建粒子,粒子可以模拟很多效果,例如烟花、火焰、雨滴、雪花、云朵等等。Three.js提供了各种的粒子系统创建方式。让我们来看看吧。

粒子系统介绍

  • ThreeJS 粒子系统中,THREE.Points是用来创建点的类,也用来批量管理粒子,基于几何体的顶点来渲染每个粒子。这个类的构造函数有两个参数,geometry(几何体)和material(材质),几何体参数用来设置粒子的位置坐标,而材质参数用来设置粒子的外观。

粒子的特性

  • 粒子非常小
  • 粒子非常多
  • 粒子有一定的运动规律

根据上面三个特性,我们就可以实现比较好看的粒子效果

人物粒子系统

实现思路

  1. 构建人型粒子:从一个人物3D模型中,取得点,由这些点构成粒子系统
  2. 为粒子染色:就是为粒子系统中每一个粒子赋予一种颜色(给粒子设置不同颜色)
  3. 让粒子运动起来:使用缓动技术,让每一个粒子随着时间运动起来
  4. 让场景旋转起来:为了从多个方向观看场景,让场景看上去更酷

搭建框架

  1. 搭建基本框架,初始化场景、相机
  2. 加载模型
  3. 将模型转换为粒子,生成粒子系统
  4. 实现粒子运动

资源准备

基础框架

  • 我们把之前的代码整理一下,保留初始化加载的视图、相机、场景、渲染器、性能监测、布控球等等逻辑代码,删除初始化物体的代码,用来开发我们的例子系统
  • codepen示例代码

obj模型

地面模型

车模型

二进制模型优缺点

  • 优点
    • 加密文件,无法随意修改,更加安全
    • 所占资源比较小
    • 不需要过多地进行字段解析,直接加载二进制代码
  • 缺点
    • 文件不易修改,需要软件重新构建资源
    • 语义不明确,不易读懂