当前位置: 首页 > news >正文

Cesium 入门教程(十三):粒子系统实例

文章目录

  • 一,Cesium 实际示例(含源代码)
      • 1. vue+cesium:粒子系统喷泉效果
      • 2. vue+cesium:粒子系统定点喷射红色烟雾效果
      • 3. vue+cesium:粒子系统实现局部下雪场景
      • 4. vue+cesium:粒子系统实现局部下雨场景
  • 二,粒子系统基础知识
      • 1. 粒子系统基本概念
      • 2. 核心组成与配置
      • 3. 常用发射器类型
      • 4. 粒子行为控制(更新器)
      • 5. 性能优化
      • 6. 高级应用
      • 7. 常见应用场景
  • 三、Cesium 入门教程 -系列文章列表

Cesium 粒子系统(Particle System)是用于创建动态视觉效果的强大工具,可模拟烟雾、火焰、雨滴、爆炸效果等自然现象或特殊视觉元素。

一,Cesium 实际示例(含源代码)

1. vue+cesium:粒子系统喷泉效果

查看源代码:https://dajianshi.blog.csdn.net/article/details/145706886
在这里插入图片描述

2. vue+cesium:粒子系统定点喷射红色烟雾效果

查看源代码:https://dajianshi.blog.csdn.net/article/details/145686424
在这里插入图片描述

3. vue+cesium:粒子系统实现局部下雪场景

查看源代码:https://dajianshi.blog.csdn.net/article/details/146007258
在这里插入图片描述

4. vue+cesium:粒子系统实现局部下雨场景

查看源代码:https://dajianshi.blog.csdn.net/article/details/146008424

在这里插入图片描述

二,粒子系统基础知识

1. 粒子系统基本概念

  • 粒子(Particle):系统中的最小单元,具有位置、速度、大小、颜色等属性。
  • 粒子发射器(Emitter):定义粒子的初始生成位置和方向(如点发射器、盒子发射器)。
  • 粒子更新器(Updater):控制粒子生命周期内的行为(如速度变化、颜色渐变、大小改变)。
  • 生命周期(Lifetime):粒子从创建到消失的时间。

2. 核心组成与配置

一个完整的粒子系统通过 ParticleSystem 类创建,主要配置参数包括:

// 创建粒子系统
const particleSystem = new Cesium.ParticleSystem({// 粒子外观(纹理)image: "path/to/particle.png",imageSize: new Cesium.Cartesian2(10, 10), // 粒子大小(宽×高)// 发射器配置(点发射器:从某点向四周发射)emitter: new Cesium.PointEmitter(),emissionRate: 50, // 每秒发射粒子数量// 粒子生命周期lifetime: 5.0, // 粒子存活时间(秒)loop: true, // 是否循环发射// 速度与方向speed: 10.0, // 初始速度velocityRandomness: 0.5, // 速度随机性(0-1)// 大小与变化startSize: 5.0,endSize: 20.0, // 生命周期结束时的大小// 颜色与透明度startColor: Cesium.Color.RED.withAlpha(0.8),endColor: Cesium.Color.YELLOW.withAlpha(0.0), // 逐渐消失// 系统位置modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(116, 40, 1000) // 北京上空1000米),// 最大粒子数量(性能控制)maximumParticles: 1000
});// 添加到场景
viewer.scene.primitives.add(particleSystem);

3. 常用发射器类型

发射器决定粒子的初始生成位置和方向:

  • PointEmitter:从点发射(默认)。
  • BoxEmitter:从立方体区域发射:
    new Cesium.BoxEmitter(new Cesium.Cartesian3(10, 10, 10)) // 10×10×10米的立方体
    
  • SphereEmitter:从球体区域发射:
    new Cesium.SphereEmitter(5.0) // 半径5米的球体
    
  • ConeEmitter:从圆锥体区域发射(有方向倾向):
    new Cesium.ConeEmitter(Cesium.Math.toRadians(30)) // 30°锥角
    

4. 粒子行为控制(更新器)

通过配置更新器可实现复杂的粒子运动效果:

  • 速度衰减
    new Cesium.VelocityOrientationProperty() // 粒子朝向运动方向
    
  • 重力影响
    new Cesium.GravityParticleUpdater({gravity: new Cesium.Cartesian3(0, 0, -9.8) // 模拟重力(向下)
    })
    
  • 风力影响
    new Cesium.WindParticleUpdater({wind: new Cesium.Cartesian3(5, 0, 0) // 沿X轴方向的风
    })
    

5. 性能优化

  • 限制最大粒子数:通过 maximumParticles 控制,避免过多粒子导致卡顿。
  • 简化纹理:使用小尺寸、低复杂度的粒子纹理(如256×256以下)。
  • 合理设置生命周期:避免过长的 lifetime 导致粒子堆积。
  • 视距剔除:当粒子系统远离相机时自动隐藏:
    particleSystem.distanceDisplayCondition = new Cesium.DistanceDisplayCondition(0, 5000);
    

6. 高级应用

  • 动态参数调整:在运行时修改粒子属性实现交互效果:
    // 点击时增加发射速率
    viewer.screenSpaceEventHandler.setInputAction(() => {particleSystem.emissionRate = 200;// 3秒后恢复setTimeout(() => particleSystem.emissionRate = 50, 3000);
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    
  • 粒子系统跟随实体:将粒子绑定到移动的实体(如飞机尾迹):
    particleSystem.modelMatrix = entity.computeModelMatrix(viewer.clock.currentTime);
    

7. 常见应用场景

  • 自然现象:雨滴、雪花、烟雾、火焰、喷泉。
  • 特殊效果:爆炸、尾气、光晕、魔法效果。
  • 交互反馈:点击位置的粒子效果、路径轨迹标记。

通过灵活配置粒子系统的参数,可在 Cesium 场景中创建丰富的动态视觉效果,增强场景的沉浸感和表现力。

三、Cesium 入门教程 -系列文章列表

  • Cesium 入门教程(一):应该如何学习Cesium
  • Cesium 入门教程(二):界面的基础配置
  • Cesium 入门教程(三):加载不同的地图底图
  • Cesium 入门教程(四):利用entity显示图形
  • Cesium 入门教程(五):利用Primitive生成图形
  • Cesium 入门教程(六):不同的材质设置
  • Cesium 入门教程(七):加载、导出2D文件数据
  • Cesium 入门教程(八):加载3D瓦片及模型
  • Cesium 入门教程(九):通过鼠标绘制图形
  • Cesium 入门教程(十):利用shader、后处理重构图形
  • Cesium 入门教程(十一):camera相机功能展示
  • Cesium 入门教程(十二):时间动画实例
  • Cesium 入门教程(十三):粒子系统实例
  • Cesium 入门教程(十四):鼠标键盘交互
http://www.dtcms.com/a/356777.html

相关文章:

  • 无人机中的坐标系理解:机体坐标系,东北天(NED)坐标系,世界大地(WGS84)坐标系
  • Python的一次实际应用:利用Python操作Word文档的页码
  • AI 与脑机接口的交叉融合:当机器 “读懂” 大脑信号,医疗将迎来哪些变革?
  • CPP学习之map和set
  • 渗透测试学习笔记
  • 【论文阅读】SegCLIP:用于高分辨率遥感图像语义分割的多模态视觉语言和快速学习
  • Minio临时地址访问资源提示SignatureDoesNotMatch问题记录
  • gdb打印长字符产变量信息
  • TypeScript的Type
  • Linux(0)|梦开始的地方:xshell下载
  • MAC spotlight 搜不到应用程序和 tags 生效
  • 五、Callable 接口
  • Spring为什么需要三级缓存
  • 海康相机开发---设备布防(Setup Alarm)
  • 数据库Mysql
  • 微积分 | 积分代换
  • 如何将iPhone日历传输到电脑
  • 内置高压MOS的智能调光方案:AP5126 LED降压恒流驱动芯片
  • 深度拆解判别式推荐大模型RankGPT!生成式精排落地提速94.8%,冷启动效果飙升,还解决了传统推荐3大痛点
  • 评价指标FID/R Precision
  • 《R for Data Science (2e)》免费中文翻译 (第6章) --- scripts and projects
  • 学习游戏制作记录(音频的制作和使用)8.28
  • 算法题打卡力扣第169题:多数元素(easy)
  • 【二叉树(DFS)- LeetCode】124. 二叉树中的最大路径和
  • 考民航安检员证需要具备哪些技能和知识?
  • 卷积神经网络为什么要填充(Padding)
  • Python爬虫实战:研究Pyplot模块,构建IMDb数据采集和分析系统
  • 【Tools】C#文件自动生成UML图
  • Vue3 全面介绍
  • ArcGIS Pro 地图打包与解包