虚幻引擎学习之路:粒子系统篇(二)

简介:

一、Module 功能

1.1 Required
Required Module是粒子系统Emitter中默认添加且不能删除的Module。它包含了Emitter以及时间、渲染相关的设置,例如:材质、发射器的位置和朝向等,如下图所示:
请输入图片描述
设置不同的粒子系统材质能够渲染出不同颜色以及纹理的粒子。通常粒子系统材质采用的Blend Mode是Translucent。并且在编辑材质时,需要用到Particle Color节点来修改粒子颜色,如下图所示:
请输入图片描述
其中,上图红色框显示了材质设置中Blend Mode的设置,绿色框显示了使用Particle Color节点获取并修改粒子颜色。最终渲染结果如下图所示:
请输入图片描述

1.2 Light
类似于Unity引擎中粒子系统的Lights组件,Unreal 4引擎粒子系统同样支持为粒子系统添加光源来照亮场景,如下图所示:
请输入图片描述
其中,左图红框显示了Unreal 4引擎中Light Module的设置,右图红框显示Unity引擎中Light Module的设置。下图显示了具有光源属性的粒子系统渲染结果图:
请输入图片描述
需要说明的是,在Unreal 4引擎中,Light Module只能用于CPU粒子。GPU粒子暂时还不支持光源的功能。

1.3 Collision
类似于Unity引擎粒子系统中的Collision组件,Unreal 4引擎同样支持粒子的碰撞检测,如下图所示:
请输入图片描述
其中,左图红框显示了Unreal 4引擎粒子系统的碰撞设置,右图显示了Unity引擎粒子系统的碰撞设置。下图显示了带碰撞检测的粒子渲染结果:
18.gif
其中,绿色粒子被发射出之后碰撞到地面和Box后会产生反弹。

1.4 Event
类似于Unity引擎中的粒子系统事件处理,Unreal 4引擎同样支持触发事件以及事件响应的功能,如下图所示:
请输入图片描述
其中,左图红色框显示了Unreal 4引擎中粒子系统触发事件的设置界面,右图红框显示了Unity引擎中粒子系统触发事件的设置界面。Unreal 4引擎支持不同类型的粒子事件,包括:粒子生成、发射、消失、碰撞时触发以及在Blueprint脚本中响应等,可以在左图中Type参数中设置。并且,可以通过Custom Name参数设置事件名称。在Event Receiver中可根据事件名称对不同事件进行处理。

左图中绿色框显示了粒子系统发射器中接收并处理事件的两个Module。其中,Event Receiver Kill All是用于在接收到事件时删除该Emitter的所有粒子,Event Receiver Spawn则是用于在接收到事件时生成新的粒子。其设置界面如下图所示:
请输入图片描述
其中,在Source参数列表中可设置事件的类型和名称,用于响应指定类型和名称的事件。一个Event Generator可以生成多个事件,一个Event Receiver只能处理一个事件。但一个Emitter支持添加多个Event Receiver来处理不同的事件,如下图所示:
请输入图片描述
Unity引擎也同样提供了三种事件响应类型:Kill,Ignore,Callback。其中,Kill表示事件触发时删除粒子,Ignore表示忽略该事件,Callback表示在C#脚本中对该事件进行处理。

1.5 Camera Offset
Unreal 4引擎中Camera Offset Module可以实现将粒子根据相机位置进行位移的功能。其设置界面如下图所示:
请输入图片描述
其渲染效果如下图所示:
请输入图片描述
其中,红色和绿色粒子大小相同,但红色粒子距离相机距离增加了30个单位。

1.6 Vector Field
Unreal 4引擎支持使用向量场驱动粒子运动。向量场由一组在空间中分布的向量表示粒子在该位置时的速度或加速度。Unreal 4引擎采用体素表示向量场,每个体素中保存了向量的x,y,z分量。引擎支持在Maya中制作向量场并导出成.FGA格式文件然后进行导入。FGA文件为纯文本文件,如果不想用Maya制作,仅仅做为测试使用,也可利用Github上的开源工具【1】自动生成。下图显示了将向量场导入Unreal 4引擎后的可视化结果:
请输入图片描述
其中,红色细线表示了空间中向量的方向。

Unreal 4引擎中向量场仅支持GPU粒子,因此在创建粒子系统时需将Emitter的Type Data设置为GPU Sprites。向量场的类型有两种,局部和全局。局部向量场只影响该Module所在的粒子系统,而全局向量场则会影响空间中所有粒子系统。本文以局部向量场为例,可在Emitter中添加Local Vector Field Module,如下图所示:
请输入图片描述
其中,上图红色框显示了对向量场资源文件的设置。对于全局向量场,需要将资源作为Actor放入场景中。上图绿色框中的两个参数:Intensity和Tightness分别用于控制向量场对粒子作用的强度和方式。其中,Tightness取值为[0, 1]之间。当取值为0时,向量场表示了对粒子施加的力,它会将其中保存的向量值累加到粒子速度。当取值为1时,向量场表示粒子的速度,它会将其中保存的向量值赋值给粒子速度。此外,还可通过VF Init Rotation、VF Rotation Rate、Vector Field Scale以及VF Scale/Life等Module对向量场的旋转和缩放进行调整。下图显示了向量场中粒子系统渲染结果:
请输入图片描述


二、LOD 功能

Unreal 4引擎粒子系统提供了LOD功能。当粒子系统距离相机较远时,可通过LOD降低渲染的开销。在Unreal 4引擎中创建粒子系统的LOD比较方便,只需先将LOD0的粒子系统制作好,然后点击工具栏中的Regenerate Lowest LOD,引擎便会自动创建最低级的粒子系统。默认情况下创建的LOD1粒子系统的所有设置都继承自LOD0,但发射粒子个数被降低到1/10,如下图所示:
请输入图片描述
其中,左图为粒子系统LOD0设置及渲染结果,右图为引擎自动生成的LOD1设置及渲染结果。默认情况下,LOD1中除了Spawn之外的其他Module都不能被修改。如果需要修改,则需通过右键->Duplicate from Higher菜单将其设置为可修改,然后即可进行编辑,如下图所示:
请输入图片描述
其中,红框显示了RequiredModule的Details面板为灰色不可编辑状态。绿色框显示了通过右键菜单可将其变为可修改。如果需要添加更多LOD层级,可点击工具栏Add LOD按钮,引擎会在LOD0和已生成的最低级LOD(LOD1)之间生成新的LOD。新的LOD会复制LOD0的设置,但可通上述右键菜单进行编辑。

然后,在粒子系统的LOD设置中,可设置不同距离使用不同的LOD,如下图所示:
请输入图片描述
其中,上图红框显示了LODDistance的设置,在距离相机[0, 500]范围使用LOD0,距离相机500以上使用LOD1,渲染结果如下图所示:
请输入图片描述
其中,场景中使用了两个相同的粒子系统。近处的粒子系统渲染出红色粒子表明其使用了LOD0进行渲染,远处的粒子系统渲染出绿色粒子表明其使用了LOD1进行渲染。

此外,Unreal4引擎对粒子系统半透明渲染的Overdraw做了优化。在ProjectSetting->Rendering > Optimization中有一个渲染Enable Particle Cutouts by Default选项,如下图所示:
请输入图片描述
开启该选项后,引擎会自动根据粒子纹理可见部分生成相应的几何面片,从而减少透明度为0的像素浪费情况,如下图所示:

请输入图片描述
上图取自Unreal 4引擎官方文档【2】

其中,上图左图红线为粒子系统原始面片,右图红线为开启优化选项后的面片。


三、小结

以上,则为Unreal 4引擎粒子系统学习系列中的第二部分,重点介绍了Unreal 4引擎中粒子系统的重点模块和高级功能。在后续的文章中,我们就Unreal 4引擎中的新粒子系统Niagara进行详细的介绍。






原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
8月前
|
人工智能 测试技术
「化腐朽为神奇」:Stability AI又出新工具,草图瞬间精致,不同风格随心选
「化腐朽为神奇」:Stability AI又出新工具,草图瞬间精致,不同风格随心选
|
11月前
|
安全 程序员 PHP
为拯救童年回忆,开发者决定采用古法编程:用Flash高清重制了一款游戏(二)
为拯救童年回忆,开发者决定采用古法编程:用Flash高清重制了一款游戏
|
11月前
|
XML 存储 JavaScript
为拯救童年回忆,开发者决定采用古法编程:用Flash高清重制了一款游戏(一)
为拯救童年回忆,开发者决定采用古法编程:用Flash高清重制了一款游戏
|
11月前
|
算法 图形学 开发者
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen(1)
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen
109 0
|
11月前
|
存储 缓存 算法
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen(3)
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen
|
11月前
|
存储 数据挖掘 开发者
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen(2)
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen
|
11月前
|
存储 数据挖掘 开发者
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen
超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen
|
算法 C++
【硬核教程】,如何摆脱黑白框编程,1小时学会用c++做一个飞机大战
【硬核教程】,如何摆脱黑白框编程,1小时学会用c++做一个飞机大战
|
前端开发 C# vr&ar
Unity实战问题-WebGL问题集锦-下篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
251 0
|
人工智能
带你读《少儿人工智能趣味入门动画与游戏编程一本通》之二:角色的基础:“运动”“外观”“声音”模块
Scratch是图形化的编程语言,它具有学习环境趣味性强、操作简单且直观等特点,很好适合6-12岁的孩子学习。本书是立足于Scratch 3.0版本的少儿编程入门书,能让孩子轻松愉快地掌握编程技能,锻炼和提高思维能力和创造力,为迎接人工智能时代的到来做好准备。本书以对Scratch中积木块的分类讲解作为主线,并将编程的核心思想融入大量精心设计的案例,让孩子在实际动手操作中更直观、更深刻地理解不同积木块的运用。本书对积木块的功能和用法解释详尽,语言通俗易懂,能够减少孩子对编程的畏惧心理,没有编程基础的家长也能陪伴孩子一起阅读,在融洽的亲子互动氛围中,自信、愉快地完成学习。