内容示例中有展示粒子特效的场景: 目标是观察场景中几个范例想要展示的是粒子系统的哪个功能,并尝试了解如何操作。需要注意的是:由于并没有实际用资源复现一遍,所以很可能有疏漏之处,即有些效果的实现还需要做其他操作。本篇的目标并不是完全学会操作实现这些功能,而是使自己对这些功能有个大致的印象,我相信这有助于后续对更复杂粒子系统的学习。
展示了GPU粒子可以比CPU支持更多的粒子数目。
详见《GPUSprites类型数据 | Unreal Engine Documentation》 概括讲:GPU粒子可以支持更多的粒子数目(能高效地模拟和渲染数十万颗粒子)。然而不支持传统CPU粒子的所有功能。
如果模块有GPU粒子所不支持的,则会有错误提示:
图中的粒子将朝着一个圆锥方向的速度发射。
Velocity Cone模块是一种速度方面的模块,它定义了一种圆锥形状的速度分布,其他速度方面的模块见 《Velocity 模块 | Unreal Engine Documentation》
添加模块: 随后在细节面板里编辑属性:
图中小型粒子的发射位置将由大球粒子的位置决定。
用一个发射器中的粒子作为另一个发射器中粒子的初始位置。更多关于位置的模块详见《Location 模块 | Unreal Engine Documentation》
添加模块: 编辑Emitter Initial Location模块的属性,将目标发射器的名字写到Emiiter Name中。
图中粒子将受到引力
Point Gravity让粒子受一个“中心点”吸引。更多关于吸引力的模块详见《Attractor 模块 | Unreal Engine Documentation》(GPU粒子的吸引力模块似乎只有一个Point Attractor)
添加模块: 编辑属性:
图中的粒子将会与场景中的其他物体有碰撞。
更多碰撞相关的模块详见《Collision 模块 | Unreal Engine Documentation》
添加模块: 编辑参数:
粒子的启动由蓝图控制(蓝图中的逻辑是用一个随机的时间来启动粒子系统)
其中Effect是ParticleSystemComponent。
添加模块: 编辑参数: 需要注意的是Skel Mesh Actor Param Name是BoneSocketActor,这个参数将帮助粒子系统和实际场景中的Actor联系起来。 在发射器Actor的细节面板,可以看到Instance Parameters参数,添加一项,将名字设置为BoneSocketActor,类型是Actor,随后选择场景中想联系的Actor。
发射器Actor的Cast Shadow必须是true。 除此之外粒子的材质中也有相关参数需要调整 关于粒子的阴影相关的内容,应该还和很多方面有牵连,之后应该需要更详细的研究。
向量场将施加一个“力”来影响粒子的运动。
除效率之外,GPU粒子最有趣的特性是向量场。向量场是一个由影响粒子运动的向量组成的统一网格。关于向量场的介绍见《向量场 | Unreal Engine Documentation》。
添加模块: 随后编辑这个模块的属性,包括向量场资源是什么: 关于向量场资源如何制作,有待后续研究。
添加模块: 编辑属性: 不过这里只是一个全局向量场影响的缩放值。真正向量场的数据在场景的Actor中: 参数中指定了向量场资源是什么,同时Actor自身的位置也表示了向量场的位置。
随着火焰的生命时间的前进,动态地改变了材质中“温度”参数,而它又影响了最终材质的效果。
材质中可以添加“动态”参数,随后粒子系统可以改变这些“动态”参数的值。详见《Parameter 模块 | Unreal Engine Documentation》。
首先,粒子的材质中需要有动态参数的节点,例如这里的参数名分别为temperature、Param2、Param3、Param4(后三个是为了测试而增加的,不影响实际效果): 粒子系统中添加模块: 然后编辑参数的变化,例如temperature:
粒子的死亡触发了另外发射器的粒子的出生
可以通过Event Generator来定义一些事件,之后通过EventReceiver Spawn来接收这个事件来生成粒子。关于事件的模块详见《事件模块 | Unreal Engine Documentation》
添加事件生成模块: 编辑参数,例如这里事件类型是Death,而事件名是First 随后,可以添加事件接收并生成的模块: 在属性中指定事件的类型和名字: 例如,这里实现的逻辑就是:第一个发射器的粒子的死亡触发了第二个发射器粒子的出生,而第二个发射器粒子的死亡触发了第三个发射器粒子的出生:
拖尾效果
详见《条带类型数据 | Unreal Engine Documentation》
首先将“类型数据”变为Ribbon 随后可以添加模块: 在这个模块中指定源头的发射器是哪个: 随后可以添加模块: 这将基于“距离”(默认是基于“时间”)来生成粒子,在做类似轨迹的效果中很有用。
粒子会受到光照的效果。 不过和材质的Shading Model有关,至少不能是Unlit,Default Lit可以。 关于粒子的受光,应该还和很多方面有牵连,之后应该需要更详细的研究。
粒子可以作为光源
详见《粒子光源 | Unreal Engine Documentation》。不过只能用在CPU粒子上。另外要注意的是——性能成本。
添加模块:
使用光束种类的发射器,并且使用“噪声”形成一种电流激变的效果。
详见《光束类型数据 | Unreal Engine Documentation》
首先将“类型数据”变为Beam 随后可以添加光束相关的模块: Source和Target分别指定了光束的头与尾 而Noise提供一种噪声的效果。