九游官网在前期关于Unreal 4 引擎的技术推文中,UWA重点介绍了粒子系统的重点模块和高级功能。本文将进行介绍Unreal 4引擎中的新粒子系统:Niagara。需要说明的是,目前的Niagara粒子系统仍处于测试阶段,并非最终完成版。
这是UWA发布的第10篇Unreal 4技术文章,之前我们已经详细介绍过渲染系统动画系统以及部分粒子系统的功能介绍,详情请转至UWA博客(。同时,特别感谢Unreal中国团队对于本篇文章中Unreal引擎相关内容的审核,并在UWA团队学习其引擎的道路上提供的大力支持。
在最新的Unreal 4引擎中,Niagara模块已经被加入到引擎的插件中。需要使用时,只需通过菜单Edit-Plugin打开Plugin窗口,搜索”Niagara”并选择Enabled即可,如下图所示:
然后,在Content Browser中点击鼠标右键会出现新的菜单选项FX,该子菜单中包含了Niagara的各种资源选项,如下图所示:
在目前最新的4.18.3版本中,新创建的Niagara Emitter会出现一系列报错信息。上图红色框显示了错误信息。同时打开Selected Emitter Graph窗口会发现Emitter的节点图默认情况下为空。此时可先点击上图中的一系列Fix Error按钮,引擎会自动添加相应的Module,并生成相应的节点图。添加完成后如果发现还有错误提示,可先关闭Emitter编辑器界面,重新打开,错误提示便会消失,如下图所示:
其中,上图中Emitter的Module设置界面中显示了6种不同类型的Module。设计者在这6种类型中添加不同的Module可以实现不同的粒子效果,其操作方式与Cascade中的Emitter添加Module非常相似。但与Cascade最大的不同点在于,Niagara中的这些Module除了可以使用引擎内置的之外,还可以使用设计者通过节点图编辑的自定义Module。而用户自定义节点图即为Niagara Script,本文将在后续内容中进行说明。
打开Selected Emitter Graph窗口可以看到此时引擎已经自动生成了节点图,并且节点图分为上述不同类型,如下图所示:
其中,上图红色框显示了Set Particle Position节点,绿色框显示了该节点是用于在Particle Spawn时执行并输出结果。
由此可见,Niagara的总体结构与Cascade十分相似,都是分为两层:单个Particle System可包含多个不同的Emitter,通过设置不同Emitter以及参数可实现不同效果。但Niagara比Cascade更为强大的是,它能让设计者自定义Module,其编辑方式为节点图。
Niagara Script在目前4.18.3版本中直接通过右键菜单创建会导致编辑器崩溃。绕开该问题的一个方式是先打开一个引擎内置的Script,然后将其另存为新的脚本,再进行编辑。为了使Emitter每帧都发射粒子,我们可以在Emitter Update中添加Spawn Rate Module,如下图所示:
其中,红色框显示了Spawn Rate Module,绿色框显示了目前发射的粒子数、Emitter的耗时以及所占用内存,通过该数据,设计者可以控制粒子的性能。双击红色框内的Spawn Rate即可打开该Script,如下图所示:
然后,将其另存为新的名字,即可创建出一个Niagara Script。在Niagara Script详细信息界面中可选择不用Usage来实现不同用途,其中包括:Module、Function以及Dynamic Input。分别表示该Script是用作Module,函数以及输入参数,如下图所示:
Module Usage Bitmask参数表示如果该Script是当作Module使用,其使用的类型是哪些。该设置能够在Module设置时根据归类进行提示,并提供快速选择。Category参数方便对Script进行分类,在设置时可根据分类快速查找。
此时,我们虽然添加了Spawn Rate Module,使得场景中出现了粒子,但是默认情况下粒子为灰色,难以分辨。因此,我们将Render中的材质修改一下,便可看到预览场景中出现了该材质的粒子,如下图所示:
其中,上图红色方框显示了修改粒子材质为M_Spark。于是可在左图预览界面中看到粒子。为了让粒子动起来,我们还需在Particle Update类型中添加Update Velocity Module:
我们用上述方法实现了简单的粒子移动,但Niagara提供的功能和节点远不止如此。通过编辑节点图,设计者可以控制粒子发射以及运动的整个过程,从而可以实现任意想要的粒子效果。
总体来说,UWA认为Niagara粒子系统在功能方面的优势主要有以下两种:
(1) Niagara提供了类似于BluePrint的编辑方式,从而使粒子系统的制作更加方便、更加灵活;
(2) 不光对粒子发射器可以进行控制,同时让用户可以对粒子也可以进行控制,从而可以让用户自定义粒子的运动状态,进而制作出更为复杂的粒子特效。
当然,老版本Cascade粒子系统已经包含了大量常用的粒子系统效果。UWA认为,如果Cascade能够满足您的需求,则直接使用Cascade进行编辑即可,毕竟使用已有功能可以节省开发时间。而当Cascade中提供的功能无法满足需求时,则可考虑使用Niagara。设计者可以通过Niagara实现更加符合项目需求的、特殊的粒子效果。