首页 / Cesium / 使用示例
粒子雨雪
两套粒子系统:雨是快速下落的细长条,雪是缓慢飘落的小圆点。 发射盒跟着相机走,所以无论拖到哪里,画面里都下雨。
源码与运行效果
发射盒为什么要跟着相机
粒子的位置在世界坐标里,一旦离开镜头范围就看不见了。如果发射区固定在某座城市,
用户拖走之后画面里只剩一片空白。示例在 scene.preUpdate 里
每帧把发射盒的矩阵设成「相机位置沿视线方向偏移 220 米」,粒子始终填满前向视域。
矩阵用的是 eastNorthUpToFixedFrame,发射盒的局部 Z 轴朝上,
与盒子的高度方向一致。
重力的方向
世界坐标里的「下」不是固定的 (0,0,-1),而是指向地心。示例在更新回调里对 粒子的位置向量取单位化,再乘上负的重力加速度,得到逐粒子的重力方向。 跨纬度效果都正确,这是 Cesium 粒子系统里唯一通用的写法。
可调参数
| 位置 | 改什么 | 效果 |
|---|---|---|
emissionRate | 雨 900 改成 1800 | 雨更密,粒子多时会掉帧 |
imageSize | (2.5, 20) 改成 (6, 40) | 雨滴更粗更长 |
minimumSpeed | 26 改成 8 | 雨变成缓慢落下的水雾 |
emitterBox | 700 改成 1600 | 覆盖范围更大,粒子更稀疏 |
雨的 startColor | 换成暖色 | 可以当火星、灰烬等效果 |
粒子看不见。三个原因最常见:lifetime 小于粒子寿命导致系统提前结束、
发射盒尺寸为 0、modelMatrix 没有设置(默认单位矩阵,把粒子放到了地心)。
lifetime 设成 60 秒以上,粒子寿命控制在 1 到 7 秒,画面上才持续有东西。
性能
粒子是纯 GPU 渲染,但每个粒子占一个四边形,雨量开到每秒几千粒时,
中低端显卡的填充率会被吃满。移动端把 emissionRate 控制在 200 以内、
imageSize 保持小尺寸即可。