Cesium粒子特效笔记

cesium粒子特效参数说明:


1、ParticleSystem:官网地址链接
https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/?src=Particle%20System.html
粒子系统控制着每个粒子对象随着时间的显示和变化。
粒子由粒子发射器产生,存活一段时间后消失。

2、Cesium.ParticleSystem(options)  API参数说明

options 中一些属性是动态的
如参数startColor  endColor  ,代替color使得粒子的颜色在粒子的生命过程中会在这两种颜色之间平滑地混合。

startScale   endScale 代替scale设置粒子在生命周期内显示的初始和结束尺寸,也是动态混合的作用。

 updateCallback :每帧都要调用的回调函数来更新粒子。

 emitter:粒子系统的粒子发射器;
            包括四种发射器:圆形、锥体、球体、长方体

modelMatrix: 4x4变换矩阵,将粒子系统从模型转换为世界坐标。

emitterModelMatrix:4x4变换矩阵,用于在粒子系统内部坐标系中转换粒子系统发射器。

emissionRate:每秒发射的粒子数。

bursts:粒子系统生命周期内,按照指定周期,爆发一定数量的粒子。三个参数(time,minimum,maximum)


image:实现粒子特效的粒子URI, HTMLImageElement, or HTMLCanvasElement 。
粒子系统初始化-实际是使用图片,改变图片的显示样式实现仿粒子化。

imagesize:如果设置该属性,将会覆盖 minimumImageSize和maximumImageSize属性,以像素为单位缩放image的大小

speed:粒子的速度。
minimumSpeed:设置以米/秒为单位的最小界限,超过该最小界限,随机选择粒子的实际速度。
lifetime:粒子系统会发射多久粒子,以秒为单位。默认为最大值

loop:默认为true,粒子发射系统持续存在。

particleLife:设置改值将会覆盖minimumParticleLife和maximumParticleLife
minimumParticleLife:设置粒子寿命的可能持续时间的最小界限(以秒为单位),粒子的实际寿命将随机生成

mass:设置以千克为单位的粒子的最小和最大质量。
minimumMass:设置粒子质量的最小界限(以千克为单位)。粒子的实际质量将被选择为高于此值的随机量。

var particleSystem = scene.primitives.add(new Cesium.ParticleSystem({
    image : '../../../../Apps/SampleData/fire.png',
    imageSize : new Cesium.Cartesian2(20, 20),
    startColor : Cesium.Color.RED.withAlpha(0.7),
    endColor : Cesium.Color.YELLOW.withAlpha(0.3),

    startScale : viewModel.startScale,
    endScale : viewModel.endScale,

    minimumParticleLife : viewModel.minimumParticleLife,
    maximumParticleLife : viewModel.maximumParticleLife,

    minimumSpeed : viewModel.minimumSpeed,
    maximumSpeed : viewModel.maximumSpeed,

    imageSize : new Cesium.Cartesian2(viewModel.particleSize, viewModel.particleSize),

    // Particles per second.
    emissionRate : viewModel.emissionRate,

    bursts : [
        // these burst will occasionally sync to create a multicolored effect
        new Cesium.ParticleBurst({time : 5.0, minimum : 10, maximum : 100}),
        new Cesium.ParticleBurst({time : 10.0, minimum : 50, maximum : 100}),
        new Cesium.ParticleBurst({time : 15.0, minimum : 200, maximum : 300})
    ],

    lifetime : 16.0,

    emitter: new Cesium.ConeEmitter(2.0),

    emitterModelMatrix : computeEmitterModelMatrix(),

    updateCallback : applyGravity
}));

var gravityScratch = new Cesium.Cartesian3();

function applyGravity(p, dt) {
    // We need to compute a local up vector for each particle in geocentric space.
    var position = p.position;

    Cesium.Cartesian3.normalize(position, gravityScratch);
    Cesium.Cartesian3.multiplyByScalar(gravityScratch, viewModel.gravity * dt, gravityScratch);

    p.velocity = Cesium.Cartesian3.add(p.velocity, gravityScratch, p.velocity);
}


猜你喜欢

转载自blog.csdn.net/qq_18144905/article/details/80915263