超图地图设置移除罐体爆炸动图效果

        //设置爆炸效果
    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();
    }
posted @ 2019-12-04 15:24  MickyGirl  阅读(514)  评论(1编辑  收藏  举报