经纬志
首页 / Cesium / 使用示例

跟随运动的粒子拖尾

一个点沿椭圆轨道飞行,身后留下一条淡蓝色光尾。 粒子生命 2.2 秒,轨迹长度由速度和生命期共同决定。

CesiumJS 1.121 · 更新 2026-10-28
源码与运行效果
运行效果

为什么不能直接移动模型矩阵

粒子的位置保存在粒子系统的局部坐标系里。如果每帧移动 modelMatrix,已经出生的粒子会跟着一起平移, 结果是一团粒子整体乱飞,留不下轨迹。

示例把矩阵固定在轨道中心,粒子出生时通过 updateCallback 把它的 position 改写到 目标此刻的局部坐标。此后粒子留在原地淡出,而目标继续前进, 轨迹就自然形成了。

世界坐标转局部坐标

目标位置由经纬高算出,属于世界坐标。示例预先求出发射矩阵的逆矩阵, 用 Matrix4.multiplyByPoint 把世界坐标换到局部坐标, 每帧算一次,供这批新粒子取用。

可调参数

位置改什么效果
轨道半径0.013 改成 0.03轨迹更长
maximumParticleLife2.4 改成 5拖尾更长更淡
emissionRate320 改成 80光点变稀疏
目标高度320 改成 1200轨道整体抬高

写位置要在粒子刚出生时。判断条件用的是 particle.age < 0.06,也就是出生后的一点时间窗内。 条件放宽会让已经在飞的粒子被反复搬运,轨迹反而断断续续。