SuperMap iClient3D for WebGL教程 粒子特效-基础火焰特效

  • 粒子特效简介
  • 使用粒子特效
  • 完整代码

作者: NIck Cheng

粒子特效简介

粒子特效通常使用与要表现某些动态粒子效果的情况下(火焰,喷泉,烟雾等),这些效果通常无法通过单一图片来表示,就需要借助粒子特效来加以实现.
超图iClient3D for WebGL对原有Cesium的ParticleSystem类进行了一定的优化,使其能实现更加逼真的效果,更趋近于超图iDesktop .net中的例子特效效果,给予用户更真实的体验,可广泛用户应急演练,救灾抢险,三维管线维护等展示效果上.

使用粒子特效

这里我们要实现一个小车自燃的粒子特效效果,可以通过下面这些步骤来实现

  1. 首先我们先声明一个场景(这里不过多叙述)
let viewer = new Cesium.Viewer('cesiumContainer')
  1. 使用Entity类为我们的粒子定下一个位置
var position = Cesium.Cartesian3.fromDegrees(116.39079313032, 39.9919830785419, 0)var entity = viewer.entities.add({position: position})
  1. 添加一个小车,放在粒子的位置上
let entity2 = viewer.entities.add({name: 'text',model: {uri: '/static/Cesium_Ground.gltf',minimumPixelSize: 64},viewFrom: new Cesium.Cartesian3(-100.0, 0.0, 100.0),position: position})viewer.trackedEntity = entity2
  1. 使用粒子特效
let viewModel = {emissionRate: 200,minimumParticleLife: 1.5,maximumParticleLife: 1.8,minimumSpeed: 7.0,maximumSpeed: 9.0,startScale: 3.0,endScale: 1.5,particleSize: 1}
particleSystem = scene.primitives.add(new Cesium.ParticleSystem({// 粒子的图片image: '/static/fire.png',// 起始颜色startColor: new Cesium.Color(1, 1, 1, 1),// 结束颜色endColor: new Cesium.Color(1, 0, 0, 0),// 开始大小比例startScale: this.viewModel.startScale,// 结束大小比例endScale: this.viewModel.endScale,// 最小生命周期minimumParticleLife: this.viewModel.minimumParticleLife,// 最大生命周期maximumParticleLife: this.viewModel.maximumParticleLife,// 最小速度minimumSpeed: this.viewModel.minimumSpeed,// 最大速度maximumSpeed: this.viewModel.maximumSpeed,// 粒子大小imageSize: new Cesium.Cartesian2(this.viewModel.particleSize, this.viewModel.particleSize),// 粒子数量emissionRate: this.viewModel.emissionRate,lifetime: 16,// 循环是否开启loop: true,// 粒子的释放方向emitter: new Cesium.ConeEmitter(Cesium.Math.toRadians(45.0)),// 是否以米为单位sizeInMeters: true}))viewer.scene.preUpdate.addEventListener(function (scene, time) {particleSystem.modelMatrix = computeModelMatrix(entity, time)// Account for any changes to the emitter model matrix.particleSystem.emitterModelMatrix = computeEmitterModelMatrix()})function computeModelMatrix (entity, time) {return entity.computeModelMatrix(time, new Cesium.Matrix4())}var emitterModelMatrix = new Cesium.Matrix4()var translation = new Cesium.Cartesian3()var rotation = new Cesium.Quaternion()var hpr = new Cesium.HeadingPitchRoll()var trs = new Cesium.TranslationRotationScale()// 改变粒子系统的位置function computeEmitterModelMatrix () {hpr = Cesium.HeadingPitchRoll.fromDegrees(0.0, 0.0, 0.0, hpr)trs.translation = Cesium.Cartesian3.fromElements(-2, 0, 2, translation)trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr, rotation)return Cesium.Matrix4.fromTranslationRotationScale(trs, emitterModelMatrix)}

然后我们就可以在场景中浏览我们的粒子特效的效果了

完整代码

这里我使用vue框架并且使用element-ui及css-sass实现了一个较为完整的demo,大家可以参考一下
代码在我的csdn的资源中,欢迎大家浏览借鉴(仅供借鉴的渣代码 )
效果截图

SuperMap iClient3D for WebGL教程 粒子特效-基础火焰特效相关推荐

  1. SuperMap iClient3D for WebGL教程 粒子特效-扩展喷泉特效

    SuperMap iClient3D for WebGL教程 粒子特效-扩展喷泉特效 扩展喷泉特效 喷泉特效实现 完整代码 作者: NIck Cheng 扩展喷泉特效 之前的博客已经讲过了如何去生成一 ...

  2. SuperMap iClient3D for WebGL教程(Entity)-ModelGraphics

    作者:为梦齐舞 本文同步更新于简书文章[https://www.jianshu.com/p/bdf397685e8b] ModelGraphics类是隶属于实体对象的一个类型,主要用于创建模型图形,加 ...

  3. SuperMap iClient3D for WebGL教程 Camera

    SuperMap iClient3D for WebGL教程 Camera WuYK 在WebGL场景里,有一类很重要的对象,那就是我们的相机Camera对象.这里的Camera相当于人的眼睛,从坐标 ...

  4. SuperMap iClient3D for WebGL教程 Primitive

    SuperMap iClient3D for WebGL教程 Primitive WuYK 在Webgl中,实体对象主要由两大类组成,一类是Entity对象,还有一类就是Primitive对象.那么有 ...

  5. SuperMap iClient3D for WebGL教程(空间分析)- 地表开挖及修改

    地表开挖主要是为了显示出地下的场景,比如地下管网,而地形修改通常是为了让地表平整,便于跟模型匹配,接下来我们分别说说如何实现地表开挖和地形修改. 地表开挖 1.引用核心样式文件和库文件 <scr ...

  6. SuperMap iClient3D for WebGL教程(影像篇)-Mapbox

    作者:为梦齐舞 本文同步更新于简书文章https://www.jianshu.com/p/e19129908252 Mapbox 是一个可以创建各种自定义地图的网站,如 foursquare.Pint ...

  7. SuperMap iClient3D for WebGL教程(特效)- 扫描线

    WebGL带有许多特效效果,本文给大家讲讲怎么实现扫描线的效果.当需要实现事故影响范围的传播,可以使用这个功能. 一.开启特效 扫描线特效的功能主要的接口是new Cesium.ScanEffect( ...

  8. SuperMap iClient3D for WebGL教程-管线流动特效

    作者:Volare 随着目前在WebGl中展示管线的项目越来越多,但大多是直接展示的管线,其中没有水流流动的效果,而在本文中将为大家介绍如何在WebGl中展示管线中水流流动的效果,目前在WebGl中用 ...

  9. SuperMap iClient3D for WebGL教程(特效)- 聚光源

    作者:Volare 在上一篇的博客中为大家讲解了如何在WebGl中制作点光源,在这篇博客中小编再来为大家讲述一下在WebGl中如果制作聚光源的效果. 一.同样的大家先一起来了解聚光源接口中的参数说明 ...

最新文章

  1. 送书 | 经典框架Kaldi配套的语音识别实战
  2. linux usb 触摸屏驱动,请教大家一个linux下的usb触摸屏驱动的问题
  3. matlab画图模糊,[转载]matlab中模糊工具箱的使用
  4. angular4设置全局变量_angularjs 设置全局变量的7种方法
  5. 如何保证战略落地_如何让战略落地:流程管理的道法术器让战略落地提升竞争力...
  6. 用python玩转数据慕课答案第三周_大学慕课用Python玩转数据答案公众号
  7. Python 学习手记 pt5 模块
  8. 【Kafka】Kafka Leader:none ISR 为空 消费超时
  9. MAC系统关闭IPV6命令
  10. Android -- SEGV_MAPERR,SEGV_ACCERR
  11. 173.二叉搜索树迭代器
  12. 只需2行代码,1分钟教你实现微信多开
  13. 4针串口线接法图_RS232串口线接口及接法(串口通信RS232的基本接法)
  14. 《Predicting Loose-Fitting Garment Deformations Using Bone-Driven Motion Networks》Reading Notes
  15. crate部署(crateDB)
  16. Prophet(预言者)facebook时序预测----论文总结以及调参思路
  17. 深度挖坑系列之三:人脸识别,角度空间,欧氏空间,margin
  18. Android对未签名的apk进行签名
  19. 基于动态手势识别的酷狗音乐播放器控制
  20. Shell脚本三种循环

热门文章

  1. H5手绘地图(自定义栅格图层)踩坑
  2. Python变量与字符串操作
  3. 我们都没有迎来决赛---Leo读 不是孙振耀写的职场感言 1
  4. ps入门第9天_ps色阶ps曲线 案例:ps照片校正
  5. 机器学习中的数据泄露(Data Leakage)
  6. 记录Android Killer反编译时遇到的异常
  7. java医院门诊预约挂号排班系统ssm
  8. tushare使用教程(附代码)
  9. 2020CCFBDCI训练赛之通用音频分类baseline
  10. jdk动态代理proxy