# 相关概念

一个粒子系统可以模拟并渲染许多称为粒子的小图像或网格以产生视觉效果。系统中的每个粒子代表效果中的单个图形元素。系统共同模拟每个粒子以产生完整效果的印象。需要创建诸如火、烟或液体之类的动态对象时，由于很难用网格 (3D) 或精灵 (2D) 描绘这种对象，因此粒子系统非常有用。网格和精灵更适合于描绘诸如房屋或汽车之类的实体对象。

::: tip WebGPU 引擎
粒子系统在 `render: { engine: "webgpu" }` 时会自动切换为 TSL 材质实现（含 billboard / 拉伸 / mesh / 拖尾等渲染模式与软粒子），**用法不变**；仅序列帧的帧间混合（`blendTiles`）暂未实现。详见 [WebGPU 渲染引擎](../advance/webgpu.md)。
:::


## 粒子系统（ParticleSystem）

**概念：** [ParticleSystem](https://vjmap.com/map3d/api/classes/ParticleSystem.html) 用于模拟大量微小图形（粒子）的行为，以创造出复杂的动态效果。它通过模块化的方式工作，允许开发者调整粒子的发射、运动、生命周期、外观等多个方面，从而实现高度自定义的视觉效果。

**核心功能：**

- **主模块**：控制粒子的基本属性，如发射持续时间、速度、数量等。
- **发射模块**：决定粒子如何被发射，包括发射速率、突发发射等。
- **形状模块**：定义粒子从哪里发射以及如何分布。
- **动画模块**：管理粒子的生命周期内的变化，如大小、颜色的变化。
- **碰撞模块**：使粒子能与场景中的其他对象交互，如反弹或销毁。
- **力模块**：应用额外的力场影响粒子运动，如风力、重力。

## 粒子发射器（ParticleEmitter）

**概念：** [ParticleEmitter](https://vjmap.com/map3d/api/classes/ParticleEmitter.html) 是一个单独的组件，用于控制粒子的发射。

## 粒子渲染器 particleRenderer 

**概念：** 一个场景中只有一个`particleRenderer`，它记录了的所有加的粒子系统的引用，更多地涉及到的渲染优化。
应用中通过 [app.particleRenderer](https://vjmap.com/map3d/api/classes/App.html#particleRenderer)获取.

|方法|描述|
|:---|:---|
|addSystem|增加粒子系统|
|deleteSystem|删除粒子系统|
|updateSystem|更新粒子系统|
|update|渲染更新|


## 粒子 Particle
**概念：** [Particle](https://vjmap.com/map3d/api/interfaces/Particle.html) 是指一个单独的粒子，包括他的大小、颜色、生命周期等属性.

## 粒子行为模拟 Simulation 

**概念：** 在的粒子系统上下文中， [Simulation](https://vjmap.com/map3d/api/interfaces/Simulation.html) 通常指的是通过脚本对粒子系统进行扩展和控制的方式。例如，可以通过编写脚本来改变粒子的颜色、大小、速度等属性，或者根据游戏状态动态调整粒子系统的参数。这使得粒子效果能够响应游戏逻辑，增加互动性。
