Cesium基础知识-粒子基础属性

  1. viewer = new Cesium.Viewer('cesiumContainer');
  2. //创建粒子
  3. function CreateParticles() {
  4.     var particleSystem = viewer.scene.primitives.add(new Cesium.ParticleSystem({
  5.         image : '../Apps/SampleData/smoke.png',
  6.         imageSize : new Cesium.Cartesian2(20, 20),
  7.         startScale : 1.0,
  8.         endScale : 4.0,
  9.         particleLife : 1.0,
  10.         speed : 5.0,
  11.         emitter : new Cesium.CircleEmitter(0.5),
  12.         emissionRate : 5.0,
  13.         modelMatrix : entity.computeModelMatrix(viewer.clock.startTime, new Cesium.Matrix4()),
  14.         lifetime : 16.0,
  15.         bursts : [
  16.             new Cesium.ParticleBurst({time : 5.0, minimum : 300, maximum : 500}),
  17.             new Cesium.ParticleBurst({time : 10.0, minimum : 50, maximum : 100}),
  18.             new Cesium.ParticleBurst({time : 15.0, minimum : 200, maximum : 300})
  19.         ],
  20.         lifetime : 16.0,
  21.         loop: false,
  22.         minimumParticleLife: 5.0,
  23.         maximumParticleLife: 10.0,
  24.         startColor : Cesium.Color.LIGHTSEAGREEN.withAlpha(0.7),
  25.         endColor : Cesium.Color.WHITE.withAlpha(0.0),
  26.         minimumImageSize : new Cesium.Cartesian2(30.0, 30.0),
  27.         maximumImageSize : new Cesium.Cartesian2(60.0, 60.0),
  28.         minimumSpeed: 5.0,
  29.         maximumSpeed: 10.0,
  30.        
  31.     }));
  32. }
  33. //CreateParticles();
  34. //盒型发射器
  35. function BoxEmitterParticles() {
  36.     var particleSystem = scene.primitives.add(new Cesium.ParticleSystem({
  37.         image : '../Apps/SampleData/smoke.png',
  38.         color: Cesium.Color.MAGENTA,
  39.         emissionRate: 5.0,
  40.         emitter: new Cesium.BoxEmitter(new Cesium.Cartesian3(5.0, 5.0, 5.0)),
  41.         imageSize : new Cesium.Cartesian2(25.0, 25.0),
  42.         modelMatrix : entity.computeModelMatrix(viewer.clock.startTime, new Cesium.Matrix4()),
  43.         lifetime : 16.0
  44.     }));
  45.     
  46. }
  47. //BoxEmitterParticles();
  48. //圆形发射器
  49. function CircleEmitterParticles() {
  50.     var particleSystem = scene.primitives.add(new Cesium.ParticleSystem({
  51.         image : '../Apps/SampleData/smoke.png',
  52.         color: Cesium.Color.MAGENTA,
  53.         emissionRate: 5.0,
  54.         emitter: new Cesium.CircleEmitter(5.0),
  55.         imageSize : new Cesium.Cartesian2(25.0, 25.0),
  56.         modelMatrix : entity.computeModelMatrix(viewer.clock.startTime, new Cesium.Matrix4()),
  57.         lifetime : 16.0
  58.     }));
  59.     viewer.zoomTo(viewer.particleSystem);
  60. }
  61. //CircleEmitterParticles();
  62. //球形发射器
  63. function SphereEmitterParticles(params) {
  64.     var particleSystem = scene.primitives.add(new Cesium.ParticleSystem({
  65.         image : '../Apps/SampleData/smoke.png',
  66.         color: Cesium.Color.MAGENTA,
  67.         emissionRate: 5.0,
  68.         emitter: new Cesium.SphereEmitter(5.0),
  69.         imageSize : new Cesium.Cartesian2(25.0, 25.0),
  70.         modelMatrix : entity.computeModelMatrix(viewer.clock.startTime, new Cesium.Matrix4()),
  71.         lifetime : 16.0
  72.     }));
  73. }
  74. //SphereEmitterParticles();
  75. //锥形发射器
  76. function ConeEmitterParticles() {
  77.     var particleSystem = scene.primitives.add(new Cesium.ParticleSystem({
  78.         image : '../Apps/SampleData/smoke.png',
  79.         color: Cesium.Color.MAGENTA,
  80.         emissionRate: 5.0,
  81.         emitter: new Cesium.ConeEmitter(Cesium.Math.toRadians(30.0)),
  82.         imageSize : new Cesium.Cartesian2(25.0, 25.0),
  83.         modelMatrix : entity.computeModelMatrix(viewer.clock.startTime, new Cesium.Matrix4()),
  84.         lifetime : 16.0,
  85.     }));
  86. }
  87. //ConeEmitterParticles();
  88. //回调
  89. function CallBack() {
  90.     var gravityVector = new Cesium.Cartesian3();
  91.     var gravity = -(9.8 * 9.8);
  92.     function applyGravity(p, dt) {
  93.         // Compute a local up vector for each particle in geocentric space.
  94.         var position = p.position;
  95.         Cesium.Cartesian3.normalize(position, gravityVector);
  96.         Cesium.Cartesian3.multiplyByScalar(gravityVector, gravity * dt, gravityVector);
  97.         p.velocity = Cesium.Cartesian3.add(p.velocity, gravityVector, p.velocity);
  98.     }
  99.     updateCallback: applyGravity
  100. }
  101. //CallBack();
  102. //粒子特效位置
  103. function computeModelMatrix(entity, time) {
  104.     var position = Cesium.Property.getValueOrUndefined(entity.position, time, new Cesium.Cartesian3());
  105.     if (!Cesium.defined(position)) {
  106.         return undefined;
  107.     }
  108.     var orientation = Cesium.Property.getValueOrUndefined(entity.orientation, time, new Cesium.Quaternion());
  109.     if (!Cesium.defined(orientation)) {
  110.         var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position, undefined, new Cesium.Matrix4());
  111.     } else {
  112.         modelMatrix = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromQuaternion(orientation, new Cesium.Matrix3()), position, new Cesium.Matrix4());
  113.     }
  114.     return modelMatrix;
  115.  }
  116. //模型平移矩阵
  117.  function computeEmitterModelMatrix() {
  118.     hpr = Cesium.HeadingPitchRoll.fromDegrees(0.0, 0.0, 0.0, new Cesium.HeadingPitchRoll());
  119.     var trs = new Cesium.TranslationRotationScale();
  120.     trs.translation = Cesium.Cartesian3.fromElements(2.5, 4.0, 1.0, new Cesium.Cartesian3());
  121.     trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr, new Cesium.Quaternion());
  122.     return Cesium.Matrix4.fromTranslationRotationScale(trs, new Cesium.Matrix4());
  123. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值