帖子详情 您在阅读帖子内容并对帖子进行投票之后,可发表回复。

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

作者:虎啸山林    阅读数:23    评论数:0   
创建时间:2019-10-19 19:40:51    更新时间:2019-11-21 00:29:14   
之前UWA已经完整介绍了Unreal 4引擎中渲染模块和动画模块,现在我们将介绍粒子系统的相关功能。本文将分两部分介绍Unreal 4引擎的粒子系统,其中包括:粒子系统的创建、类型和特殊功能。

 

 

 
 
在此,特别感谢Unreal中国团队对于本篇文章中Unreal引擎相关内容的审核,并在UWA团队学习其引擎的道路上提供的大力支持。

 


基础功能

 

本节将介绍Unreal 4引擎中粒子系统的基础功能,主要分为两个部分,其中包括:粒子系统的结构和使用以及不同类型模块的介绍。

 

1.1 粒子系统结构和使用

 

Unreal 4引擎的粒子系统一共包含了4个层次结构:Emitter Actor、Particle System(资源)、Emitter以及Module。

 

Emitter Actor是场景中摆放的粒子系统对象。它默认具有粒子系统组件,在该组件中的Template参数中可以引用创建好的Particle System资源进行渲染:

 

 

 

其中,上图黄色框显示了场景中的Emitter Actor对象以及其组件,红色框显示了其粒子系统组件Template参数中引用的Particle System资源,绿色框显示了已创建好的Particle System资源。编辑场景时,只需将Particle System资源拖入场景,引擎便会自动创建对应的Emitter Actor对象。

 

Emitter和Module分别是Particle System资源中包含的两种结构。其中,一个Particle System资源可以包含多个Emitter,一个Emitter中可以包含多个不同的Module。它们与Unity引擎中的ParticleSystem和Module的结构和概念相似。下图显示了Unreal4和Unity引擎中粒子系统编辑器的截图:

 

 

在Unreal 4引擎中的粒子系统编辑器截图中,红色框显示了粒子系统资源中一个Emitter,绿色框显示了Emitter中的一个Module。下图显示了Unity引擎中粒子系统编辑器截图,红色框显示了粒子系统中的一个Particle System,绿色框显示了Particle System中的一个Module。在Unreal 4引擎粒子系统中有一个比较特殊的Module—Required。这个Module是每个Emitter默认包含并且无法关闭的,它类似于Unity引擎粒子系统中自带的参数设置,如上图中黄色框显示的部分。

 

Unreal 4引擎粒子系统中的Module计算顺序是从上至下,Module对于最终效果的影响也是在已执行的Module基础上进行累加。因此,在编辑Emitter时可以将重要的Module放在优先级更靠前的位置。Module前后顺序可以在Emitter界面通过鼠标拖拽进行调整。对于Module中参数的修改,Unity引擎是直接在Module的下拉列表中进行设置,Unreal 4引擎则是选中需要修改的Module,在编辑器的Details面板中进行设置,如下图所示:

 

 

 

其中,左图红框显示了Unity引擎粒子系统中Module参数的设置界面,右图红框显示了Unreal 4引擎粒子系统中Module参数的设置界面。

 

Unity与Unreal 4引擎粒子系统结构并不完全相同。其不同点在于,在Unity引擎中只有粒子系统组件,而没有粒子系统资源。因此,在Unity引擎中创建粒子系统需要先创建Game Object并添加粒子系统组件后才可将其保存成Prefab资源。

 

1.2 Module

 

Unreal 4引擎粒子系统支持多种不同类型的Module。在编辑粒子系统的发射器时可以任意添加和删除Module,从而开启和关闭Module中的功能。不同的Module组合和参数设置能够实现丰富的粒子特效,例如:修改粒子的数量、速度、旋转、颜色以及生命周期等。在接下来的内容中,本节将介绍几种比较特殊的Module。

 

1.2.1 Type Data

 

Type DataModule实现了不同类型的粒子系统。
 
 
 
 
 
 
在创建粒子系统时,默认情况下使用的是Sprite类型。该类型为CPU计算模拟粒子运动,并使用Billboard面片渲染的粒子。下图显示了该种类型粒子实现的烟雾效果:

 

 

 

上图中的左图显示了该粒子系统渲染时所使用的面片可视化信息,中图显示了渲染结果,右图显示了Emitter的设置。该种类型的粒子系统是最普通也使用最多的一种,它可用于模拟各种烟雾、火焰以及火花粒子等效果。

 

GPU Sprite类型的粒子与Sprite类型效果类似,只是将模拟粒子运动的计算放在GPU端执行。相比CPU端模拟粒子运动,它的优势是减少了CPU端的开销,借助GPU的高性能并行计算,能够支持更多的粒子数目。其添加方式是在Emitter上点击右键,在Type Data菜单中选择New GPU Sprite即可,如下图所示:

 

 

 

其中,红框显示了Smoke和Sparks两个Emitter中使用了GPU Sprite,其主要原因是这两个Emitter中的粒子数目较多。GPU Sprite目前在PC端都支持,在中高端Mobile机型中也同样支持,即只要设备支持MRT功能即可。

 

Mesh类型支持了使用网格来渲染粒子。其添加方式与其他类型一样,Mesh模型的设置是在Mesh Module的Details面板中。Unity引擎中也同样支持类似功能,设置方式是在Render Module中,如下图所示:

 

 

 

左图是Unreal 4引擎中Mesh粒子的设置界面,右图是Unity引擎中Mesh粒子的设置界面。其中,Mesh设置为Chair模型,下图显示了该粒子系统的渲染结果:

 

 

 

Beam类型粒子是一种可实现在两个物体之间连线的粒子,并且可随着两物体之间距离变化进行拉伸或缩短,其效果类似于连接友军的灵魂链,或是带跟踪的激光束。Unity引擎也同样支持该效果,但是实现并不在粒子系统中,而是单独作为一种渲染效果,叫做LineRenderer,如下图所示:

 

 

 

其中,左图显示了Unreal 4引擎的Beam类型粒子特效设置界面,右图显示了Unity引擎中Line Renderer的设置界面。其渲染效果如下图所示:

 

 

 

上图效果是采用固定长度渲染的Beam粒子特效,如果需要将Beam粒子两端分别挂接到两个Actor上,则还需添加Source和TargetModule,并做相应设置:

 

 

 

上图中,左图红色方框显示了在Emitter中添加Source和TargetModule,中图绿色方框显示了将Beam Data Module中Beam Method修改为Target以便挂接到物体上,右图显示了在Source Module中修改Source Method和Source Name参数为设置挂接点使用。下图显示了渲染效果:

 

 

 

其中,EmitterActor的Details界面中红色方框显示了将Beam Source和Beam Target挂接点分别设置到Cube和Sphere物体上。

 

Ribbon类型粒子可以用于实现飘带的效果,其原理是将粒子之间用飘带连接起来。Unity引擎也支持类似效果,但是实现并不在粒子系统中,而是单独作为一种渲染效果,叫做TrailRenderer:

 

 

 

左图显示了Unreal 4引擎中Ribbon粒子设置界面,右图显示了Unity引擎中Trail Renderer的设置界面。下图显示了Ribbon粒子渲染结果:

 

 

 

其中,在场景移动该粒子时,粒子飘带会跟随着轨迹飘动并逐渐消失。

 

AnimTrail类型粒子也是模拟拖尾效果。它可以挂接到角色动画的骨骼上,跟随挂接骨骼的运动轨迹形成拖尾效果。下图显示了AnimTrail类型粒子的设置界面:

 

 

 

通过在骨骼动画的Notifies Timeline上添加Trail Notify,并设置好PSTemplate和挂接骨骼即可看到动画播放过程中骨骼上的拖尾特效:

 

 

 

上图红色框显示了在Walk动画中添加了Trail Notify。Trail Notify的长度表示了Trail粒子播放的时间。绿色框显示了将PSTemplate参数设置为创建好的粒子系统PS_AnimTrail,以及将挂接骨骼设置为calf_l和foot_l,即左腿。View视图中白色拖尾即为腿部运动过程中的AnimTrail特效。
 
 
 
 
 
 
 
小结

 

以上,则为Unreal 4引擎粒子系统学习系列中的第一部分,重点介绍了Unreal 4引擎中粒子系统的使用和操作。下周,我们就Unreal 4引擎中粒子系统的更多功能进行更为详细的讲解。
投票人名称 是否原创
虎啸山林
虚幻引擎群组的头像

虚幻引擎群组

虚幻引擎是最热门的开源游戏开发引擎。

用户投票结果

内容是否原创:0%

0% Complete (success)

内容是否有价值:100%

100% Complete

内容是否有素质:100%

100% Complete (warning)

内容是否合法:100%

100% Complete