Supermap iClient Webgl 粒子特效案例-消防场景

作者:Lzzzz

前言

WebGL 粒子特效的应用场景非常广泛,几乎可以在任何需要丰富视觉效果或动态表现的地方看到其身影。通过灵活运用颗粒系统,开发者可以创造出引人入胜的用户体验和视觉表现。 

一、效果展示

二、实现步骤 

1,构建粒子参数json,可以直接复制使用;
{"name": "smokeDense","id": "smokeDense","capacity": 3000,"disposeOnStop": false,"manualEmitCount": -1,"emitter": [0,20,0],"particleEmitterType": {"type": "ConeParticleEmitter","radius": 1.0,"angle": 1.05,"directionRandomizer": 0,"radiusRange": 0,"heightRange": 0,"emitFromSpawnPointOnly": true},"texture": {"tags": null,"url": "./data/particle/texture/smoke2.png","uOffset": 0,"vOffset": 0,"uScale": 1,"vScale": 1,"uAng": 0,"vAng": 0,"wAng": 0,"uRotationCenter": 0,"vRotationCenter": 0,"wRotationCenter": 0,"homogeneousRotationInUVTransform": false,"isBlocking": true,"name": "rain/smoke.png","hasAlpha": false,"getAlphaFromRGB": false,"level": 1,"coordinatesIndex": 0,"coordinatesMode": 0,"wrapU": 1,"wrapV": 1,"wrapR": 1,"anisotropicFilteringLevel": 4,"isCube": false,"is3D": false,"is2DArray": false,"gammaSpace": true,"invertZ": false,"lodLevelInAlpha": false,"lodGenerationOffset": 0,"lodGenerationScale": 0,"linearSpecularLOD": false,"isRenderTarget": false,"animations": [],"invertY": true,"samplingMode": 3,"_useSRGBBuffer": false},"isLocal": false,"animations": [],"startDelay": 0,"renderingGroupId": 0,"isBillboardBased": true,"billboardMode": 2,"minAngularSpeed": 0,"maxAngularSpeed": 0,"minSize": 0.8,"maxSize": 1,"minScaleX": 1,"maxScaleX": 1,"minScaleY": 1,"maxScaleY": 1,"minEmitPower": 0.2,"maxEmitPower": 0.4,"minLifeTime": 6,"maxLifeTime": 8,"emitRate": 500,"gravity": [0,0.3,0],"noiseStrength": [10,10,10],"color1": [1,1,1,1],"color2": [1,1,1,1],"colorDead": [1,1,1,0],"updateSpeed": 0.034,"targetStopDuration": 0,"blendMode": 1,"preWarmCycles": 50,"preWarmStepOffset": 1,"minInitialRotation": 0,"maxInitialRotation": 0,"startSpriteCellID": 0,"spriteCellLoop": true,"endSpriteCellID": 3,"spriteCellChangeSpeed": 0,"spriteCellWidth": 128,"spriteCellHeight": 512,"spriteRandomStartCell": true,"isAnimationSheetEnabled": true,"colorGradients": [{"gradient": 0,"color1": [1,1,1,0.3],"color2": [1,1,1,0.3]},{"gradient": 1,"color1": [1,1,1,0.3],"color2": [1,1,1,0.3]}],"textureMask": [1,1,1,1],"customShader": null,"preventAutoStart": true
}
2,动态修改粒子对象,这里以火焰粒子为例
    function initFire(SuperMap3D, scene) {var multiFireUrl = './data/particle/Fire.json';let modelMatrix = new SuperMap3D.Matrix4();let posFire = SuperMap3D.Cartesian3.fromDegrees(116.458832, 39.907549, 8);SuperMap3D.Transforms.eastNorthUpToFixedFrame(posFire, undefined, modelMatrix);loadParticleFile(multiFireUrl);// 加载粒子文件function loadParticleFile(url) {SuperMap3D.ParticleHelper.fromJsonUrl(url, scene).then(function(particleSystem){fireParticleSystem = particleSystem;//发射速度(每帧发射的粒子数)particleSystem.emitRate=5;//最小发射速度particleSystem.minEmitPower=2;//最大发射速度particleSystem.maxEmitPower=3;//最小生命周期particleSystem.minLifeTime=3;//最大生命周期particleSystem.maxLifeTime=4;//最小粒子大小particleSystem.minSize=2;//最大粒子大小particleSystem.maxSize=4;particleSystem.updateSpeed=0.01;particleSystem.modelMatrix = modelMatrix;particleSystem.start();});}}

同时,也可以动态修改粒子发射器

//修改粒子发射器为点发射器
var direction1 = new SuperMap3D.Cartesian3(0, 1, 1);
var direction2 = new SuperMap3D.Cartesian3(0, 1, 1);
waterParticleSystem.createPointEmitter(direction1, direction2);

3,水粒子特效加载完成后,逐渐减弱火粒子和烟粒子数量和发射速度,直至关闭
    async function extinguish() {while(smokeParticleSystem.emitRate >0){smokeParticleSystem.emitRate -= 1;fireParticleSystem.emitRate = smokeParticleSystem.emitRate/100;fireParticleSystem.minEmitPower=smokeParticleSystem.emitRate/250;fireParticleSystem.maxEmitPower=smokeParticleSystem.emitRate/200;await sleep(20);if(smokeParticleSystem.emitRate < 200 && fireParticleSystem.isAlive()){fireParticleSystem.stop(true);}}smokeParticleSystem.stop();fireParticleSystem.stop();await sleep(3000);waterParticleSystem.stop();}function sleep(ms) {return new Promise(resolve => setTimeout(resolve, ms));}

三、源码下载

https://gitee.com/liuyabo/particle

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse常用快捷键详解

文章目录 Eclipse常用快捷键详解一、引言二、编辑快捷键三、选择和移动快捷键四、行操作快捷键五、搜索和导航快捷键六、调试快捷键七、重构快捷键八、其他快捷键九、使用案例场景一&#xff1a;代码编写代码示例 场景二&#xff1a;代码调试场景三&#xff1a;代码重构代码示例…

【MATLAB】股票(和指数)数据下载--雅虎财经

文章目录 一、构建请求二、响应解读及整理2.1 响应2.2 数据提取和保存 三、通用函数3.1 函数3.2 调用示例 四、雅虎财经股票、指数代码4.1 指数4.2 股票 五、GUI界面、可执行程序 雅虎2021年就退出中国了&#xff0c;你懂的。 能下载股票等数据的财经网站、软件也很多。我写着玩…

Unity 使用UGUI制作卷轴开启关闭效果

视频效果 代码 using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options;public class JuanZhou : MonoBehaviour {[SerializeField]private …

Bash 脚本教程

注&#xff1a;本文为 “Bash 脚本编写” 相关文章合辑。 BASH 脚本编写教程 as good as well于 2017-08-04 22:04:28 发布 这里有个老 American 写的 BASH 脚本编写教程&#xff0c;非常不错&#xff0c;至少没接触过 BASH 的也能看懂&#xff01; 建立一个脚本 Linux 中有…

NPM组件包 vant部分版本内嵌挖矿代码

Vant 是一个轻量、可定制的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 Vant 2 版本&#xff1a;https://vant-ui.github.io/vant/v2/#/zh-CN/home V…

在基于Centos7的服务器上启用【Gateway】的【Clion Nova】(即 ReSharper C++ 引擎)

1. 检查启动报错日志&#xff0c;目录在 ~/.cache/JetBrains/CLion202x.x.x/log/backend.202x-xx-xx_xxxx.xxxx-err.log 2. 大致可能有两种报错 a. Process terminated. Couldnt find a valid ICU package installed on the system. 这个报错只需要装一下 libicu-devel 包即可…

Spring-Mybatis 2.0

前言&#xff1a; 第一点&#xff1a;过于依赖代码生成器或AI&#xff0c;导致基于mybaits的CRUD通通忘了&#xff0c;所以为了找回遗忘的记忆&#xff0c;有了该系列内容。 第二点&#xff1a;通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能…

Cypress测试框架详解:轻松实现端到端自动化测试

端到端自动化测试工具市场中&#xff0c;Cypress正以其易用性和强大功能&#xff0c;迅速成为开发者和测试人员的首选工具之一。无论是前端开发还是测试&#xff0c;Cypress都能在性能和效率上脱颖而出。 那么&#xff0c;Cypress具体能为端到端测试带来哪些便利&#xff1f;它…

ArrayList 和LinkedList的区别比较

前言 ‌ArrayList和LinkedList的主要区别在于它们的底层数据结构、性能特点以及适用场景。‌ArrayList和LinkedList从名字分析&#xff0c;他们一个是Array&#xff08;动态数组&#xff09;的数据结构&#xff0c;一个是Linked&#xff08;链表&#xff09;的数据结构&#x…

WebRTC:实现浏览器与移动应用的实时通信

1.技术简介 &#xff08;Web Real-Time&#xff09;是一种开放式实时通信技术&#xff0c;旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输&#xff0c;而无需安装插件或额外软件。它支持网络应用中的点对点通信&#xff0c;例如视频聊天、语音通话…

Microsoft word@【标题样式】应用不生效(主要表现为在导航窗格不显示)

背景 随笔。Microsoft word 2013基础使用&#xff0c;仅做参考和积累。 问题 Microsoft word 2013&#xff0c;对段落标题文字应用【标题样式】不生效&#xff08;主要表现为在导航窗格不显示&#xff09;。 图1 图2 观察图1和图2&#xff0c;发现图1的文字在应用【标题一】样…

kafka开机自启失败问题处理

前言&#xff1a;在当今大数据处理领域&#xff0c;Kafka 作为一款高性能、分布式的消息队列系统&#xff0c;发挥着举足轻重的作用。无论是海量数据的实时传输&#xff0c;还是复杂系统间的解耦通信&#xff0c;Kafka 都能轻松应对。然而&#xff0c;在实际部署和运维 Kafka 的…

WPF 绘制过顶点的圆滑曲线 (样条,贝塞尔)

在一个WPF项目中要用到样条曲线&#xff0c;必须过顶点&#xff0c;圆滑后还不能太走样&#xff0c;捣鼓一番&#xff0c;发现里面颇有玄机&#xff0c;于是把我多方抄来改造的方法发出来&#xff0c;方便新手&#xff1a; 如上图&#xff0c;看代码吧&#xff1a; ----------…

国产数据库TiDB从入门到放弃教程

国家层面战略&#xff0c;安全的角度&#xff0c;硬件、软件国产化是趋势&#xff0c;鸿蒙电脑操作系统、鸿蒙手机操作系统…数据库也会慢慢国产化&#xff0c;国产数据库TiDB用起来比OceanBase丝滑&#xff0c;本身没有那么重。 从入门到放弃 1. 介绍1.1 TiDB 的主要特点1.2 T…

基于STM32单片机矿井矿工作业安全监测设计

基于STM32单片机矿井矿工作业安全监测设计 目录 项目开发背景设计实现的功能项目硬件模块组成设计思路系统功能总结使用的模块技术详情介绍总结 1. 项目开发背景 随着矿井矿工作业环境的复杂性和危险性逐渐增加&#xff0c;矿井作业安全问题引起了社会各界的广泛关注。传统的…

单片机与MQTT协议

MQTT 协议简述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布 / 订阅&#xff08;publish/subscribe&#xff09;模式的 “轻量级” 通讯协议&#xff0c;该协议构建于 TCP/IP 协议上&#xf…

C#中相等比较 == 和 Equal函数 对比

1. 运算符 是一个运算符&#xff0c;用于比较两个值是否相等。对于值类型&#xff08;如 int、float、double 等&#xff09;&#xff0c; 直接比较两个值是否相同。对于引用类型&#xff08;如类和数组&#xff09;&#xff0c; 比较两个引用是否指向内存中的同一个对象。 2.…

Java 处理base64文件上传

场景&#xff1a; 在系统内有一个类似于公告的模块&#xff0c;如果里面添加的文章不是选择富文本上传图片的方式&#xff0c;而是选择复制别的文章直接粘贴到系统内的富文本&#xff0c;里面的图片就不会是url&#xff0c;而是图片的base64格式&#xff0c;这样会导致数据库存…

【行业发展报告】2024大数据与智能化行业发展浅析

回首 2024&#xff0c;大数据智能化浪潮汹涌。海量数据宛如繁星&#xff0c;在智能算法的苍穹下汇聚、碰撞&#xff0c;释放出洞察市场与用户的强大能量&#xff0c;精准勾勒出商业新航线。我们精心雕琢技术架构&#xff0c;从数据存储的坚固基石到处理分析的高效引擎&#xff…

项目基本配置

总说 本节主要记录修改配置文件、连接mysql数据库、git连接 一、配置文件的修改 1.1 配置pom.xml 由于我们要连接mysql数据库&#xff0c;需要在pom.xml中添加相关依赖 这里给出一个网站&#xff0c;可以找到各种依赖Maven Repository: Search/Browse/Explore 添加一个my…