Cesium创建火焰粒子

    xiaoxiao2022-07-04  258

    Cesium创建火焰粒子 createParticleFire: function(options) { var entity = viewer.entities.add({ position:options.position, label: { text: " '' } }); function computeModelMatrix(entity, time) { var position = Cesium.Property.getValueOrUndefined(entity.position); var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position); return modelMatrix; } function computeEmitterModelMatrix() { var hpr = Cesium.HeadingPitchRoll.fromDegrees(0, 0, 0); var trs = new Cesium.TranslationRotationScale(); trs.translation = Cesium.Cartesian3.fromElements(2.5, 4, 1); trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr); var result = Cesium.Matrix4.fromTranslationRotationScale(trs); return result; } var viewModel = { emissionRate: 5.0, gravity: 0.0, minimumParticleLife: 1.0, maximumParticleLife: 3.0, minimumSpeed: 1.0, maximumSpeed: 4.0, startScale: 1.0, endScale: 2.0, particleSize: 50.0, transX: 2.5, transY: 4.0, transZ: 1.0, heading: 0.0, pitch: 0.0, roll: 0.0, fly: true, spin: true, show: true }; var primitive = viewer.scene.primitives.add( new Cesium.ParticleSystem({ image: options.image, 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), //如果设置该属性,将会覆盖 minimumImageSize和maximumImageSize属性,以像素为单位缩放image的大小 emissionRate: viewModel.emissionRate, //每秒发射的粒子数。 bursts: [ // time:在粒子系统生命周期开始之后的几秒钟内将发生突发事件。 // minimum:突发中发射的最小粒子数量 // maximum:突发中发射的最大粒子数量 // new Cesium.ParticleBurst({ time: 5.0, minimum: 10, maximum: 100 }), // 当在5秒时,发射的数量为10-100 // new Cesium.ParticleBurst({ time: 10.0, minimum: 50, maximum: 100 }), // 当在10秒时,发射的数量为50-100 // new Cesium.ParticleBurst({ time: 15.0, minimum: 200, maximum: 300 }) // 当在15秒时,发射的数量为200-300 ], lifetime: 16.0, //多长时间的粒子系统将以秒为单位发射粒子 emitter: new Cesium.ConeEmitter(Cesium.Math.toRadians(30.0)), //此系统的粒子发射器 共有 圆形、锥体、球体、长方体 ( BoxEmitter,CircleEmitter,ConeEmitter,SphereEmitter ) 几类 modelMatrix: computeModelMatrix(entity, Cesium.JulianDate.now()), // 4x4转换矩阵,可将粒子系统从模型转换为世界坐标 emitterModelMatrix: computeEmitterModelMatrix() // 4x4转换矩阵,用于在粒子系统本地坐标系中转换粒子系统发射器 }) ); entity.remove = function() { viewer.entities.remove(entity); viewer.scene.primitives.remove(primitive); }; return entity; }
    最新回复(0)