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.rhkb.cn/news/498246.html

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

相关文章

使用MFC编写一个paddleclas预测软件

目录 写作目的 环境准备 下载编译环境 解压预编译库 准备训练文件 模型文件 图像文件 路径整理 准备预测代码 创建预测应用 新建mfc应用 拷贝文档 配置环境 界面布局 添加回cpp文件 修改函数 报错1解决 报错2未解决 修改infer代码 修改MFCPaddleClasDlg.cp…

【MySQL】搞懂mvcc、read view:MySQL事务原理深度剖析

前言&#xff1a;本节内容是事务里面最难的一部分&#xff0c; 就是理解mvcc快照读和read view。这两个部分需要了解隔离性里面的四种隔离级别。 博主之前讲过&#xff0c;但是担心友友们不了解&#xff0c; 所以这里开头进行了复习。 下面开始我们的学习吧&#xff01; ps&…

数据库概念(MySQL第一期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 数据库就是管理数据的仓库 数据库&#xff1a;DataBase(DB)&#xff0c;是存储数据的仓库&#xff0c;数据是有组织的进行存储 数据库管理系统&#xff1a;DataBase Management S…

python蓝桥杯刷题4

1.好数 题解&#xff1a;首先分析题目要求奇数位上的数字是奇数&#xff0c;偶数位上的数字是偶数。开始解题&#xff0c;定义一个count变量为0&#xff0c;输入一个数字&#xff0c;for循环从1开始遍历到n1&#xff0c;定义一个x作为一会的判断条件&#xff0c;将数字转换为字…

自动驾驶新纪元:城区NOA功能如何成为智能驾驶技术的分水岭

目录 一、NOA 的定义 二、NOA 的主要特点 导航集成 场景覆盖 智能决策 高级感知能力 驾驶员参与 三、NOA 的优势 四、NOA的衡量指标 定性评价指标 安全性评价指标定义 可靠性评价指标定义 舒适性评价指标定义 通行效率评价指标 定量评价指标 五、代表厂商的实测…

【技术实战】R语言统计分析与可视化从入门到精通

前言 随着大数据时代的到来&#xff0c;数据分析已经成为各行各业的重要技能。R语言作为一种强大的统计分析和数据可视化工具&#xff0c;广泛应用于科学研究、数据分析和商业决策支持。 本文将带领读者从入门到精通&#xff0c;掌握R语言在统计分析和数据可视化方面的核心技…

电脑中缺失的nvrtc64_90.dll文件如何修复?

一、文件丢失问题 案例&#xff1a;nvrtc64_90.dll文件缺失 问题分析&#xff1a; nvrtc64_90.dll是NVIDIA CUDA Runtime Compilation库的一部分&#xff0c;通常与NVIDIA的CUDA Toolkit或相关驱动程序一起安装。如果该文件丢失&#xff0c;可能会导致基于CUDA的应用程序&…

【交叉编译】sysstat 离线编译

1、下载源码 首先从下载&#xff1a; https://github.com/sysstat/sysstat/tags &#xff0c;我直接下载最新的 2、配置交叉编译链 快速的方法就是把整个编译包全部放在Linux &#xff0c;然后编辑~/.zshrc或者~/.bashrc,在最后加入&#xff1a; export PATH$PATH:/opt/arm-so…

如何利用无线路由器实现水泵房远程监测管理

水泵站广泛部署应用在工农业用水、防洪、排涝和抗旱减灾等方面&#xff0c;如果水泵站发生异常&#xff0c;往往会对生产生活造成诸多损失&#xff0c;甚至引发安全事故。因此&#xff0c;建立一套高效、可靠的泵站远程监测管理系统至关重要。 方案背景 目前&#xff0c;我国大…

教程:从pycharm基于anaconda构建机器学习环境并运行第一个 Python 文件

1. 安装 PyCharm 访问 PyCharm 官方网站&#xff1a;https://www.jetbrains.com/pycharm/。下载社区版&#xff08;免费&#xff09;或专业版&#xff08;收费&#xff0c;提供更多功能&#xff09;。按照操作系统的安装指导安装 PyCharm。安装后打开 PyCharm&#xff0c;并根…

2024.12.30(多点通信)

作业&#xff1a; 1、将广播发送和接收端实现一遍&#xff0c;完成一个发送端发送信息&#xff0c;对应多个接收端接收信息实验。 发送端 #include <myhead.h>#define PORT 8888 #define IP "192.168.124.255"int main(int argc, const char *argv[]) {//1、…

Python爬虫 - 豆瓣电影排行榜数据爬取、处理与存储

文章目录 前言一、使用版本二、需求分析1. 分析要爬取的内容1.1 分析要爬取的分类1.2 分析要爬取的单个电影的数据1.3 分析如何获取单个电影数据1.3.1 预览数据1.3.2 查看请求网址、方法及请求头信息1.3.3 查看请求参数 2. 数据用途2.1 统计分析2.2 探索性数据分析 (EDA)2.3 高…

爬虫后的数据处理与使用(处理篇)

紧接上文爬虫&#xff0c;我们获取到了一些数据&#xff0c;接下来就是使用和分析了~爬虫阶段式教学——从数据获取到格式化存储&#xff08;附代码与效果图&#xff09;_爬虫网页数据格式化-CSDN博客 为保证数据的正确性和有效性需要对数据进行筛选&#xff0c;保存有效信息&a…

模电面试——设计题及综合分析题0x01(含答案)

1、已知某温控系统的部分电路如下图&#xff08;EDP070252&#xff09;&#xff0c;晶体管VT导通时&#xff0c;继电器J吸合&#xff0c;压缩机M运转制冷&#xff0c;VT截止时&#xff0c;J释放&#xff0c;M停止运转。 &#xff08;1&#xff09;电源刚接通时&#xff0c;晶体…

基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 2ASK调制解调 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 设置SNR8db 设置SNR20db 整体波形效果&…

学习笔记:使用 pandas 和 Seaborn 绘制柱状图

学习笔记&#xff1a;使用 pandas 和 Seaborn 绘制柱状图 前言 今天在使用 pandas 对数据进行处理并在 Python 中绘制可视化图表时&#xff0c;遇到了一些关于字体设置和 Seaborn 主题覆盖的小问题。这里将学习到的方法和注意事项做个总结&#xff0c;以便之后的项目中可以快…

【算法day27】动态规划:基础2

题目引用 不同路径不同路径II整数拆分不同的二叉搜索树 1. 不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Fin…

大数据技术-Hadoop(四)Yarn的介绍与使用

目录 一、Yarn 基本结构 1、Yarn基本结构 2、Yarn的工作机制 二、Yarn常用的命令 三、调度器 1、Capacity Scheduler&#xff08;容量调度器&#xff09; 1.1、特点 1.2、配置 1.2.1、yarn-site.xml 1.2.2、capacity-scheduler.xml 1.3、重启yarn、刷新队列 测试 向hi…

Vscode左大括号不另起一行、注释自动换行

参考大佬的博客VSCode 格式化 cpp 文件时配置左大括号不换行_vscode大括号不换行-CSDN博客 Clang_format_style {BasedOnStyle: Chromium, IndentWidth: 4}

12.30 Redis网络模型基础 IO NIO多路复用

图片引用自黑马程序员redis 网络模型 上图引用自java guide javaguide NIO