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 CreateRain() {
  4.     var scene = viewer.scene;
  5.     scene.camera.setView({
  6.         destination: new Cesium.Cartesian3(277096.634865404, 5647834.481964232, 2985563.7039122293),
  7.         orientation: {
  8.             heading: 4.731089976107251,
  9.             pitch: -0.32003481981370063
  10.         }
  11.     });

  12.  
  13.     //雨更新函数,雪粒子受重力下落
  14.     var rainGravityScratch = new Cesium.Cartesian3();
  15.     var rainUpdate = function (particle, dt) {
  16.         rainGravityScratch = Cesium.Cartesian3.normalize(particle.position, rainGravityScratch);
  17.         rainGravityScratch = Cesium.Cartesian3.multiplyByScalar(rainGravityScratch,-1050.0,rainGravityScratch);
  18.         particle.position = Cesium.Cartesian3.add(particle.position, rainGravityScratch, particle.position);
  19.     };

  20.  
  21.     //scene.skyAtmosphere.hueShift = -0.97; //光谱颜色
  22.     //scene.skyAtmosphere.saturationShift = 0.25; //实际明暗分界线
  23.     //scene.skyAtmosphere.brightnessShift = -0.4; //颜色对比强烈
  24.     //scene.fog.density = 0.00025; //雾效果浓度
  25.     //scene.fog.minimumBrightness = 0.01; //雾效透明度
  26.     //雨粒子
  27.     var rainParticleSize = scene.drawingBufferWidth / 100.0; //粒子系统大小
  28.     var rainRadius = 100000.0; //半径
  29.     rainSystem = new Cesium.ParticleSystem({
  30.         modelMatrix: new Cesium.Matrix4.fromTranslation(scene.camera.position),
  31.         speed: -1.0,
  32.         lifetime: 15.0,
  33.         emitter: new Cesium.SphereEmitter(rainRadius),
  34.         startScale: 1.0,
  35.         endScale: 0.0,
  36.         image: "../Apps/SampleData/circular_particle.png",
  37.         emissionRate: 9000.0,
  38.         startColor: new Cesium.Color(0.27, 0.5, 0.70, 0.0),
  39.         endColor: new Cesium.Color(0.27, 0.5, 0.70, 0.98),
  40.         imageSize: new Cesium.Cartesian2(rainParticleSize, rainParticleSize * 2),
  41.         updateCallback: rainUpdate
  42.     });
  43.     scene.primitives.add(rainSystem);
  44. }
  45. CreateRain();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值