# 前言

现在 Niagara 虽然正式版虽然已经过了两个版本,由于 niagara 是设计是在程序与美术之间做取舍而设计出来的,他的本质是个 computer shader,所以出现要是美术用的话,入门有点难,不像级联那样入门那么简单,因为他存在属性与绑定这程序上的东西。然后我也看到很多人总是问一些很简单而常见的问题,所以我决定写一遍文章做个收集,方便更多使用新手使用 niagara 的时候不用四处找资料。

# 问题与技巧收集

# 定义粒子的轴向


图中 alignment 是粒子的朝向,facing mode 是面向,更方便点的理解就是

这两个属性是可以自定义的,需要在他们的模式改为自定义

# 模型定义轴向


当你改为速度朝向时候,会把模型的 x 轴朝向你速度方向
正因如此,我们可以修改这个速度绑定来达到我们的指哪打哪,也许你会问,修改了速度的绑定,那我速度怎么办,其实是这样的,mesh render 的速度绑定其实就是为了定义模型速度朝向,然后真正的速度在解算模块时候(solve Force and Velocity)就控制了粒子的位置

那么说完简单的模型朝向,接下来就说稍微深入一点的模型旋转,其实修改模型旋转的还有个属性就是

Mesh Orientation,这是个四元数,那么什么是四元数,四元数怎么旋转一个模型,本文就不讨论,我们只需要知道怎么用他

find quat between 是个非常好用的函数,其中 from 和 to 两个值的意思是指你要把模型的那一条轴(from)转到那个方向(to)。这样同样实现了指哪打哪的操作。

# 蓝图修改粒子材质

新建个 material interface 然后放入粒子材质绑定就可以

# niagara 时间轴消失或者过长


时间轴有个小蓝点报错,为 bug,不影响使用,4.27 以上版本修复,(ue5EA 是 4.27 以下版本),要是觉得不舒服就把 timeline 关掉,特效师都是去场景调特效。

# 级联的 pivot offset

# 设置 niagara 的时间膨胀

在特效经常用到子弹时间的效果,因为 niagara 设计原因,并没有直接像级联那样暴露一个参数来设置时间膨胀,可能暂时吧,这时候需要用到蓝图修改一下模拟 tick


其中修改 Advance Simulation 里的 Tick Delta second 就可以设置时间膨胀了,他的原理就是你冻结当前渲染流程,进入一个新的渲染流程并且 tick 使用你的设置的 deltatime,完了后在解冻。听不懂这句话没关系,用就行。

还有一个方法就是修改 emitter 里面的 deltatime 属性,乘一个你自己的数,但这样涉及到缩放或者其他那些你都要自己再弄一个 delta 去乘一个数,有点麻烦

# 读取某一个粒子的属性


新建一个 attribute read input,打 read 就可以搜到,拉引脚搜你想获得的粒子属性类型,然后在 attribute 上打属性的名字,注意大小写。attribute reader 是读取哪一个发射器,particle index 是想读这个发射器的哪一个粒子。execution index 是本发射器当前执行的粒子的序号,注意这个 index 不等同 id 和 uniqueID。index 在不同模拟中对应的东西也不同,例如在 grid 2d 中是当前对应的网格 index。

当然也通过 id 获取另一个发射器粒子的属性,搜 get 什么什么 by id 就行。

# 空格键重新播放 niagara

选中 niagara 窗口按空格键可以重新播放 niagara,在场景中选中 niagara,按?也可以

# 自定义事件

创建一个结构体,然后在里面添加一些自己想发送的变量

在项目设置添加上自己的结构体,当然也可以添加一个数据类型,就是上面 parameter types 设置。


接收也要自己写 module 并放到事件中,不写的话数据不会有任何变化。

# 4.27 module 里的 If 换成了 Select

# 半透明粒子闪烁问题

很大概率是粒子半透明排序问题,半透明排序一直是实现渲染很大的一个问题,其中常用的解决方案是距离排序和 index 排序,在 niagara 同一 emitter 也有这个选项

在 sprite render 下面有个这个排序。

view depth:根据深度(是根据 camera vectro dot camera direction 的值进行排,并不是 gbuffer 的深度)

view distance:距离相机的距离排序

custom Ascending: 根据 id 排序,越小的 id 在前面

custom Decending: 也是根据进行排序,大的排在前面

越高的数字越靠前,同一数字的话会根据首次排序进行排序,首次排序是根据在创建发射器的时候,就是说这系统里有 2 个发射器,你复制一个或者新建一个发射器那这个发射器就是排序最前的,数字最大的(首次排序)

更新于

请我喝[茶]~( ̄▽ ̄)~*

Natsuneko 微信支付

微信支付

Natsuneko 支付宝

支付宝

Natsuneko 贝宝

贝宝