Niagara - UE5中的粒子系统

以前对Niagara的一些学习笔记,整理归档,并更新为UE5.0.1版本;文中所有案例都来自官方的ContentExample中的Niagara_Particles关卡;

Niagara系统是新一代特效工具,具有完全的可编程性,与其它模块可充分的互动;

比起上一代粒子系统Cascade,Emitter是完全独立出来的,需要Niagara System作为“容器”把各个Emitter整合起来:

Niagara System里所引用的各个Emitter是继承关系,可以在Niagara System修改Emitter的各个参数而不影响原版;

新建一个空的Niagara Emitter之后,不像Cascade有默认粒子生成,而是需要一些基础的模块来支撑,比如一个简单的Sprite粒子Emitter:

模块中的参数高度灵活,比如可以在通过Scale Sprite Size模块修改Particles.Initial.SpriteSize的Scale Factor参数的时候,使用Sine函数来计算数值:

可以从Window中的Attribute Spreadsheet中查看相关参数:

0~1的区间正好能使用Sin运算达到特定的效果:

发射器所生成的其实是带有各种参数的“点(Point)”,以及其各种属性参数(速度、大小、旋转等等),通过模块改变其初始或过程中的各个参数,最后把不同参数绑定到不同的属性上,渲染成Sprite或Mesh等成为可见的粒子(方便起见,本文中对概念不做区分,统称为粒子):

Niagara同样像Cascade Intro一样,也支持GPU粒子,只是比起CPU粒子,Renderer有所限制,比如不支持Light Renderer和Ribbon Renderer;还有就是Particle Spawn和Particle Update的逻辑会在GPU上运行,Emitter相关模块栏是在CPU上运行(由于CPU的局限,因此对于贴图取样或获取距离场信息等操作不能在Emitter模块栏中进行):

以下是一些参数的基础计算方法和思路:

。。。。。。。。。。。。

完整文章发表在知乎:Niagara - UE5中的粒子系统 - 知乎


猜你喜欢

转载自blog.csdn.net/DoomGT/article/details/125901481