超图地图设置移除罐体爆炸动图效果
//设置爆炸效果
app.setFireModel = function(x, y, z) {
var start = Cesium.JulianDate.fromDate(new Date(2015, 2, 25, 16));
var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; //Loop at the end
viewer.clock.multiplier = 1;
var viewModel = {
rate: 5,
gravity: 0, //重力
minimumLife: 2.0,
maximumLife: 6.0,
minimumSpeed: 5.0,
maximumSpeed: 5.0,
startScale: 6.0,
endScale: 6.0,
particleSize: 8.0,
transX: 2.5,
transY: 4.0,
transZ: 1.0,
heading: 0.0,
pitch: 0.0,
roll: 0.0,
fly: false,
spin: false,
show: true
};
Cesium.knockout.track(viewModel);
var emitterModelMatrix = new Cesium.Matrix4();
var translation = new Cesium.Cartesian3();
var rotation = new Cesium.Quaternion();
var hpr = new Cesium.HeadingPitchRoll();
var trs = new Cesium.TranslationRotationScale();
function computeEmitterModelMatrix() {
hpr = Cesium.HeadingPitchRoll.fromDegrees(viewModel.heading, viewModel.pitch, viewModel.roll, hpr);
trs.translation = Cesium.Cartesian3.fromElements(viewModel.transX, viewModel.transY, viewModel.transZ, translation);
trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr, rotation);
return Cesium.Matrix4.fromTranslationRotationScale(trs, emitterModelMatrix);
}
mapapp.FireparticleSystem = scene.primitives.add(new Cesium.ParticleSystem({
image: '/images/ParticleSystem/fire.png',
startColor: new Cesium.Color(1, 1, 1, 1),
endColor: new Cesium.Color(1, 0, 0, 0),
startScale: viewModel.startScale,
endScale: viewModel.endScale,
minimumLife: viewModel.minimumLife,
maximumLife: viewModel.maximumLife,
minimumSpeed: viewModel.minimumSpeed,
maximumSpeed: viewModel.maximumSpeed,
minimumWidth: viewModel.particleSize,
minimumHeight: viewModel.particleSize,
maximumWidth: viewModel.particleSize,
maximumHeight: viewModel.particleSize,
rate: viewModel.rate,
bursts: [
new Cesium.ParticleBurst({ time: 5.0, minimum: 300, maximum: 500 }),
new Cesium.ParticleBurst({ time: 10.0, minimum: 50, maximum: 100 }),
new Cesium.ParticleBurst({ time: 15.0, minimum: 200, maximum: 300 })
],
lifeTime: 6.0,
emitter: new Cesium.ConeEmitter(Cesium.Math.toRadians(45.0)),
emitterModelMatrix: computeEmitterModelMatrix(),
forces: [applyGravity]
}));
function applyGravity(p, dt) {
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);
}
var gravityScratch = new Cesium.Cartesian3();
viewer.scene.preRender.addEventListener(function(scene, time) {
mapapp.FireparticleSystem.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(x, y, z));;
mapapp.FireparticleSystem.emitterModelMatrix = computeEmitterModelMatrix();
// Spin the emitter if enabled.
if (viewModel.spin) {
viewModel.heading += 1.0;
viewModel.pitch += 1.0;
viewModel.roll += 1.0;
}
});
}
//移出所有的实体
app.removeAllEntity = function() {
if (mapapp.FireparticleSystem) {
scene.primitives.remove(mapapp.FireparticleSystem);//移除罐体爆炸效果
}
viewer.scene.scanEffect.show = false;
viewer.entities.removeAll();
}