当前位置: 首页 > 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.xdnf.cn/news/1391977.html

相关文章:

  • 2025年03月 Scratch 图形化(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • springboot中循环依赖的解决方法-使用反射
  • mysql双机热备(主主模式)
  • Java项目实现【记录系统操作日志】功能
  • 基于FPGA的DDR3读写实验学习
  • 《ArkUI 记账本开发:状态管理与数据持久化实现》
  • el-table合并列实例
  • 光谱相机多层镀膜技术如何提高透过率
  • (二)Python语法基础(下)
  • 响应式编程框架Reactor【2】
  • Redis开发06:使用stackexchange.redis库结合WebAPI对redis进行增删改查
  • Vue3 全面介绍
  • 技术SEO修复ROI最大化:有限资源下的优先排序策略
  • 【笔记】Linux高性能网络详解之DPDK
  • uni-app 常用钩子函数:从场景到实战,掌握开发核心
  • 算法题打卡力扣第169题:多数元素(easy)
  • 单点登录(SSO)前端(Vue2.X)改造
  • MYSQL-索引(上)
  • week5-[二维数组]对角线
  • 平安健康平安芯医AI解析:7×24小时问诊+95%诊断准确率,人文温度短板与医生效能提升引热议
  • DNS域名系统
  • Less嵌套写法
  • 无人机中的坐标系理解:机体坐标系,东北天(NED)坐标系,世界大地(WGS84)坐标系
  • 换公司如何快速切入软件项目工程
  • 在 Ubuntu 24.04 Linux 上安装 Basemark GPU Benchmark 的步骤
  • PCIe 6.0配置与地址空间架构:深入解析设备初始化的核心机制
  • 零知开源——基于STM32F407VET6和ADXL345三轴加速度计的精准运动姿态检测系统
  • Vibe Coding、AI IDE/插件
  • Vue3 + TS + MapboxGL.js 三维地图开发项目
  • 前端缓存问题详解