HTML界面
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Weather</title>
- <script src="../Build/Cesium/Cesium.js"></script>
- <style>
- @import url(../Build/CesiumUnminified/Widgets/widgets.css);
- html,
- body,
- #cesiumContainer {
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
- overflow: hidden;
- }
- </style>
- </head>
- <body>
- <div id="cesiumContainer"></div>
- <script src="nineparticle.js"></script>
- </body>
- </html>
JavaScript代码
- viewer = new Cesium.Viewer('cesiumContainer')
- //创建雪花
- function CreateSnow() {
- var scene = viewer.scene;
- //设置相机视角位置
- scene.camera.setView({
- destination : new Cesium.Cartesian3(277096.634865404, 5647834.481964232, 2985563.7039122293),
- orientation : {
- heading : 4.731089976107251,
- pitch : -0.32003481981370063
- }
- });
- //雪更新函数,雪粒子受重力下落
- var snowGravityScratch = new Cesium.Cartesian3();
- var snowUpdate = function (particle, dt) {
- snowGravityScratch = Cesium.Cartesian3.normalize(particle.position, snowGravityScratch);
- snowGravityScratch = Cesium.Cartesian3.multiplyByScalar(snowGravityScratch,
- Cesium.Math.randomBetween(-30.0, -300.0),
- snowGravityScratch);
- particle.velocity = Cesium.Cartesian3.add(particle.velocity, snowGravityScratch, particle.velocity);
- //雪花粒子到相机的距离
- var distance = Cesium.Cartesian3.distance(scene.camera.position, particle.position);
- if (distance > (snowRadius)) {
- particle.endColor.alpha = 0.0;
- } else {
- particle.endColor.alpha = snowSystem.endColor.alpha / (distance / snowRadius + 0.1);
- }
- };
- //scene.skyAtmosphere.hueShift = -0.8; //光谱颜色
- //scene.skyAtmosphere.saturationShift = -0.7; //实际明暗分界线
- //scene.skyAtmosphere.brightnessShift = -0.33; //颜色对比强烈
- //scene.fog.density = 0.001; //雾效果浓度
- //scene.fog.minimumBrightness = 0.8; //雾效透明度
- //雪花粒子
- var snowParticleSize = scene.drawingBufferWidth / 100.0;//粒子系统大小
- var snowRadius = 100000.0;//半径
- var snowSystem = new Cesium.ParticleSystem({
- modelMatrix: new Cesium.Matrix4.fromTranslation(scene.camera.position),
- minimumSpeed: -1.0,
- maximumSpeed: 0.0,
- lifetime: 15.0,
- emitter: new Cesium.SphereEmitter(snowRadius),
- startScale: 0.5,
- endScale: 1.0,
- image: '../Apps/SampleData/snowflake_particle.png',
- //image : '../Apps/SampleData/fire.png',
- emissionRate: 7000.0,
- startColor: Cesium.Color.WHITE.withAlpha(0.0),
- endColor: Cesium.Color.WHITE.withAlpha(1.0),
- minimumImageSize: new Cesium.Cartesian2(snowParticleSize, snowParticleSize),
- maximumImageSize: new Cesium.Cartesian2(snowParticleSize * 2.0, snowParticleSize * 2.0),
- updateCallback: snowUpdate,
- //forces:snowUpdate(snowSystem),
- });
- scene.primitives.add(snowSystem);
- }
- CreateSnow();