Cesium基础知识-天气-雪粒子应用

HTML界面

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Weather</title>
  6.     <script src="../Build/Cesium/Cesium.js"></script>
  7.     <style>
  8.         @import url(../Build/CesiumUnminified/Widgets/widgets.css);
  9.         html,
  10.         body,
  11.         #cesiumContainer {
  12.             width: 100%;
  13.             height: 100%;
  14.             margin: 0;
  15.             padding: 0;
  16.             overflow: hidden;
  17.         }
  18.     </style>
  19. </head>
  20. <body>
  21.     <div id="cesiumContainer"></div>
  22.     <script src="nineparticle.js"></script>
  23. </body>
  24. </html>

JavaScript代码

  1. viewer = new Cesium.Viewer('cesiumContainer')
  2. //创建雪花
  3. function CreateSnow() {
  4.     var scene = viewer.scene;
  5. //设置相机视角位置
  6.       scene.camera.setView({
  7.             destination : new Cesium.Cartesian3(277096.634865404, 5647834.481964232, 2985563.7039122293),
  8.             orientation : {
  9.                 heading : 4.731089976107251,
  10.                 pitch : -0.32003481981370063
  11.             }
  12.         });
  13.     //雪更新函数,雪粒子受重力下落
  14.     var snowGravityScratch = new Cesium.Cartesian3();
  15.     var snowUpdate = function (particle, dt) {
  16.         snowGravityScratch = Cesium.Cartesian3.normalize(particle.position, snowGravityScratch);
  17.         snowGravityScratch = Cesium.Cartesian3.multiplyByScalar(snowGravityScratch,
  18.             Cesium.Math.randomBetween(-30.0, -300.0),
  19.             snowGravityScratch);
  20.         particle.velocity = Cesium.Cartesian3.add(particle.velocity, snowGravityScratch, particle.velocity);
  21. //雪花粒子到相机的距离        
  22. var distance = Cesium.Cartesian3.distance(scene.camera.position, particle.position);
  23.         if (distance > (snowRadius)) {
  24.             particle.endColor.alpha = 0.0;
  25.         } else {
  26.             particle.endColor.alpha = snowSystem.endColor.alpha / (distance / snowRadius + 0.1);
  27.         }
  28.     };

  29.  
  30.     //scene.skyAtmosphere.hueShift = -0.8; //光谱颜色
  31.     //scene.skyAtmosphere.saturationShift = -0.7; //实际明暗分界线
  32.     //scene.skyAtmosphere.brightnessShift = -0.33; //颜色对比强烈
  33.     //scene.fog.density = 0.001; //雾效果浓度
  34.     //scene.fog.minimumBrightness = 0.8; //雾效透明度
  35.     //雪花粒子
  36.     var snowParticleSize = scene.drawingBufferWidth / 100.0;//粒子系统大小
  37.     var snowRadius = 100000.0;//半径
  38.     var snowSystem = new Cesium.ParticleSystem({
  39.         modelMatrix: new Cesium.Matrix4.fromTranslation(scene.camera.position),
  40.         minimumSpeed: -1.0,
  41.         maximumSpeed: 0.0,
  42.         lifetime: 15.0,
  43.         emitter: new Cesium.SphereEmitter(snowRadius),
  44.         startScale: 0.5,
  45.         endScale: 1.0,
  46.         image: '../Apps/SampleData/snowflake_particle.png',
  47.         //image : '../Apps/SampleData/fire.png',
  48.         emissionRate: 7000.0,
  49.         startColor: Cesium.Color.WHITE.withAlpha(0.0),
  50.         endColor: Cesium.Color.WHITE.withAlpha(1.0),
  51.         minimumImageSize: new Cesium.Cartesian2(snowParticleSize, snowParticleSize),
  52.         maximumImageSize: new Cesium.Cartesian2(snowParticleSize * 2.0, snowParticleSize * 2.0),
  53.         updateCallback: snowUpdate,
  54.        
  55.         //forces:snowUpdate(snowSystem),
  56.     });
  57.     scene.primitives.add(snowSystem);
  58. }
  59. CreateSnow();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值