Niagara 概览与系统结构

自动关联目录:Niagara 概览与系统结构

1. 定位

Niagara 是 UE 的视觉特效系统:用模块化的节点图描述粒子的生成、模拟与渲染,可实时预览。

一句话定位:Niagara 的核心抽象是"Emitter(发射器)组合成 System(系统)",模块可复用、参数可外部驱动——这和旧的 Cascade 最大的区别。

2. 三层结构

Niagara System(一个特效资产)
   └── 若干 Emitter(发射器)
          └── 若干 Module(模块:生成/模拟/渲染)
                 └── 参数(可外部暴露)
概念说明
System一个可放置的特效资产,可含多个 Emitter
Emitter一类粒子的完整描述
Module可复用的功能块(生成速率、受力、颜色、渲染)
Parameter可被外部(蓝图/C++)驱动的值
Namespace参数的命名空间(User.*、Emitter.*、Particle.*、System.*)

命名空间是关键:User.* 是外部可写的用户参数,Particle.* 是每粒子数据,Emitter.* 是发射器级,System.* 是系统级。搞错命名空间是"参数传不进去"的最常见原因。

3. 生命周期阶段

阶段说明
Particle Spawn粒子生成时执行一次
Particle Update每帧更新
Emitter Update发射器级每帧
System Update系统级每帧
Simulation Stage更细粒度的模拟阶段(高级用法)
Render渲染(Sprite / Mesh / Ribbon / Light 等)

"只在生成时算一次"的东西要放 Spawn 而不是 Update——这是特效优化最基础的一条。

4. 渲染器类型

渲染器用途代价
Sprite最常见的贴图粒子低
Mesh网格粒子中—高
Ribbon条带(拖尾、轨迹)中
Light粒子光源高(每个都是光源)
Component组件渲染器视内容

粒子光源要极其谨慎——它把粒子变成了光源,会显著增加光照成本。

5. 代价与权衡

设计收益代价什么时候不该用
多 Emitter 组合复用性强每个 Emitter 都有开销简单特效别拆太碎
可复用 Module维护性好抽象层有轻微成本一次性特效不必
粒子光源气氛好极贵数量必须严格控制
Mesh 粒子立体感比 Sprite 贵大量粒子不用
Simulation Stage精细控制复杂度与成本常规特效不必

6. 踩坑与排查

坑现象怎么验证
参数传不进去外部设置了没反应检查命名空间(应为 User.*)与是否暴露
把一次性计算放 Update白付成本移到 Spawn
粒子光源太多光照成本暴涨统计粒子光源数量
Emitter 拆太碎开销增加合并
大量 Particle.* 属性内存与带宽精简属性
半透明排序问题排序错乱见 半透明与排序

7. 排查顺序

1. 参数没生效?→ 命名空间与暴露设置
2. 慢?→ 粒子数 / 渲染器类型 / 粒子光源
3. 一次性计算是否在 Update?→ 移到 Spawn

参考