zoukankan      html  css  js  c++  java
  • Cesium 实现粒子效果贴地(伪)

    有时我们面对这样的需求,需要在地面上放一个周期性放大缩小的标记,可以使用粒子效果实现,但是粒子效果图片很难贴地(如果你知道怎么做,欢迎分享,期待有人打我脸),我只能变通实现一个看似贴地但实际没有贴地的效果。原理就是粒子图像的长度随着摄影机角度变化而变化,而宽度不变,这样当角度接近垂直时,图像就会更“圆”,接近平行时则更“扁”,看似贴到了地表上。

    不多说 看代码

     1 var viewModel = {
     2             height : 20,
     3             width : 20
     4         };
     5         var particleSystem = scene.primitives.add(new Cesium.ParticleSystem({
     6             image : '<粒子图像>',
     7             startScale : 1.0,
     8             endScale : 10.0,
     9             minimumLife : 2.0,
    10             maximumLife : 1.0,
    11             speed : 0.0,
    12             width : viewModel.width,
    13             height : viewModel.height,
    14             lifeTime : 1.0,
    15             // 主模型参数(位置)
    16             modelMatrix : modelMatrix,
    17             // 发射器参数
    18             emitter : new Cesium.CircleEmitter(0.5),
    19             rate : 1,
    20             // 颜色
    21             startColor: Cesium.Color.WHITE.withAlpha(0.7),
    22             endColor: Cesium.Color.RED.withAlpha(0.01),
    23             forces: [applyGravity]
    24         }));
    25         // 伪贴地
    26         viewer.camera.moveStart.addEventListener(function(){
    27             var pitch = viewer.camera.pitch;
    28             var verticalView = Cesium.Math.toRadians(-90.0);
    29             // 1.25是个比例参数,我觉得看上去更真实
    30             particleSystem._maximumHeight = viewModel.width * 1.25 * ( pitch / verticalView );
    31             particleSystem._minimumHeight = viewModel.width * 1.25 * ( pitch / verticalView );
    32         });
    33         viewer.camera.moveEnd.addEventListener(function(){
    34             var pitch = viewer.camera.pitch;
    35             var verticalView = Cesium.Math.toRadians(-90.0);
    36             particleSystem._maximumHeight = viewModel.width * 1.25 * ( pitch / verticalView );
    37             particleSystem._minimumHeight = viewModel.width * 1.25 * ( pitch / verticalView );
    38         });
  • 相关阅读:
    AD7606笔记
    转Keil 中使用 STM32F4xx 硬件浮点单元
    旋转编码器
    PT100/PT1000
    电压跟随器
    段式液晶驱动方法
    物联网的架构
    物联网的操作系统
    C8051开发环境
    解决time命令输出信息的重定向问题
  • 原文地址:https://www.cnblogs.com/Ghost-In-Shell/p/9644954.html
Copyright © 2011-2022 走看看