首页 / Cesium / 使用示例
跟随运动的粒子拖尾
一个点沿椭圆轨道飞行,身后留下一条淡蓝色光尾。 粒子生命 2.2 秒,轨迹长度由速度和生命期共同决定。
源码与运行效果
为什么不能直接移动模型矩阵
粒子的位置保存在粒子系统的局部坐标系里。如果每帧移动
modelMatrix,已经出生的粒子会跟着一起平移,
结果是一团粒子整体乱飞,留不下轨迹。
示例把矩阵固定在轨道中心,粒子出生时通过
updateCallback 把它的 position 改写到
目标此刻的局部坐标。此后粒子留在原地淡出,而目标继续前进,
轨迹就自然形成了。
世界坐标转局部坐标
目标位置由经纬高算出,属于世界坐标。示例预先求出发射矩阵的逆矩阵,
用 Matrix4.multiplyByPoint 把世界坐标换到局部坐标,
每帧算一次,供这批新粒子取用。
可调参数
| 位置 | 改什么 | 效果 |
|---|---|---|
| 轨道半径 | 0.013 改成 0.03 | 轨迹更长 |
maximumParticleLife | 2.4 改成 5 | 拖尾更长更淡 |
emissionRate | 320 改成 80 | 光点变稀疏 |
| 目标高度 | 320 改成 1200 | 轨道整体抬高 |
写位置要在粒子刚出生时。判断条件用的是
particle.age < 0.06,也就是出生后的一点时间窗内。
条件放宽会让已经在飞的粒子被反复搬运,轨迹反而断断续续。