用途:管理粒子的出生、存活、死亡与重生,适合需要持续粒子效果的场景,例如火焰、烟雾、火花、爆炸等。内容围绕发射与生成、死亡条件、对象池、拖尾、淡入淡出和状态转换展开。
主要能力:
- 发射模式:连续发射(按每秒速率累积生成)、爆发发射(一次性按数量在球面随机方向生成)、形状发射(球面、盒体积、圆边、圆锥)。
- 对象池:预分配粒子避免垃圾回收,提供 spawn、kill、update、forEach、active、capacity 等方法;另有基于缓冲区的 GPU 对象池,使用 Float32Array 存储位置、速度、寿命,并用 freeIndices 管理空闲索引。
- 淡入淡出:线性淡出、淡入淡出、缓动淡出、S 曲线、闪烁,以及生命周期中的尺寸变化(先增后减、弹入后缩小)和颜色渐变(线性插值、多色标渐变,例如火焰渐变)。
- 拖尾:位置历史拖尾(保留最近若干位置并生成 BufferGeometry)、基于着色器的 GPU 拖尾(在顶点着色器中按拖尾索引插值位置并递减尺寸)、Line 拖尾。
- 状态机:Spawning、Active、Dying、Dead 四状态,按状态时间与剩余寿命切换,并为每个状态返回对应透明度。
- 子发射器:粒子死亡时生成子粒子。
使用方式:以 Three.js 与 React Three Fiber 为基础,粒子结构包含 position、velocity、life、maxLife、alive;在更新循环中递减 life,死亡后标记 alive=false,并按 age(0 到 1)计算透明度、尺寸和颜色。相关文件结构包含 SKILL.md、references/emission-patterns.md、references/easing-curves.md 以及 scripts 下的 emitters、pool.ts、trails.ts、lifecycle.ts。
适用场景:需要连续或爆发粒子效果、拖尾和淡入淡出的实时图形场景。
限制:资料未提供安装命令、具体依赖版本、性能基准、收费与价格信息;部分示例代码依赖 Three.js 和 React Three Fiber,需自行准备运行环境。