SphereEmitter是一个Cesium模拟器,可以在三维场景中创建以球体中心为起点的点状粒子流,并在场景的任意位置显示。
var particleSystem = new Cesium.ParticleSystem(scene.context);
var emitter = particleSystem.createSphereEmitter(400.0);
emitter.radius = 2000.0;
emitter.minimumSpeed = 500.0;
emitter.maximumSpeed = 1000.0;
particleSystem.addEmitter(emitter);
var emitter = particleSystem.createSphereEmitter(radius);
Number
(以米为单位) - 球体半径。radius: Number
(以米为单位) -球体半径。
rate: Number
- 一秒钟创建的粒子数。
modelMatrix: Matrix4
- 设置矩阵来改变发射器的位置、方向和缩放。
show: Boolean
-确定发射器是否显示。
update(time): void
-修改发射器的状态。一般来说,不需要调用此方法,发射器会自动更新。
isStartComplete(time):Boolean - 指示发射器是否可以正常开始生成粒子。
isEndComplete(time):Boolean - 指示发射器是否已经停止生成粒子。
shouldEmit(event):Boolean - 每帧在发射器中创建粒子之前调用这个函数,用于确定是否应该创建一个新的粒子。该函数应该返回true或false。
updateParticle(event):void - 在每帧处理该发射器中的每个粒子时,该函数被调用以更新它们的位置、速度等。
particleLifetime(event):Number - 确定每个粒子的生命周期是多少秒。
finish():void - 停止发射器继续发射粒子。
reset():void - 重新设置发射器的状态为初始值。
var particleSystem = new Cesium.ParticleSystem(scene.context);
var emitter = particleSystem.createSphereEmitter(1000.0);
emitter.radius = 1000.0;
emitter.shouldEmit = function (particle, dt, time) {
return true;
};
emitter.updateParticle = function (particle, dt, time) {
particle.position = particle.position.add(particle.velocity.multiplyByScalar(dt, new Cesium.Cartesian3()));
var distance = Cesium.Cartesian3.distance(particle.position, Cesium.Cartesian3.ZERO);
if (distance > 3000.0) {
particle.endColor.alpha = 0.0;
particle.life = 0.0;
} else {
particle.velocity = particle.velocity.add(sampleTerrain(scene.terrainProvider, 5, [particle.position.x, particle.position.y]).multiplyByScalar(500.0 * dt, new Cesium.Cartesian3()));
}
};
emitter.particleLifetime = 10.0;
particleSystem.addEmitter(emitter);