学习Cascade粒子系统:观察内容示例所展示的特性

目标

学习Cascade粒子系统:观察内容示例所展示的特性
内容示例中有展示粒子特效的场景:
学习Cascade粒子系统:观察内容示例所展示的特性
目标是观察场景中几个范例想要展示的是粒子系统的哪个功能,并尝试了解如何操作。需要注意的是:由于并没有实际用资源复现一遍,所以很可能有疏漏之处,即有些效果的实现还需要做其他操作。本篇的目标并不是完全学会操作实现这些功能,而是使自己对这些功能有个大致的印象,我相信这有助于后续对更复杂粒子系统的学习。

1.1 GPU粒子

学习Cascade粒子系统:观察内容示例所展示的特性
展示了GPU粒子可以比CPU支持更多的粒子数目。

特性

详见《GPUSprites类型数据 | Unreal Engine Documentation》
概括讲:GPU粒子可以支持更多的粒子数目(能高效地模拟和渲染数十万颗粒子)。然而不支持传统CPU粒子的所有功能。

使用

学习Cascade粒子系统:观察内容示例所展示的特性
如果模块有GPU粒子所不支持的,则会有错误提示:
学习Cascade粒子系统:观察内容示例所展示的特性

1.2 圆锥形速度分布模块

学习Cascade粒子系统:观察内容示例所展示的特性
图中的粒子将朝着一个圆锥方向的速度发射。

特性

Velocity Cone模块是一种速度方面的模块,它定义了一种圆锥形状的速度分布,其他速度方面的模块见
《Velocity 模块 | Unreal Engine Documentation》

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
随后在细节面板里编辑属性:
学习Cascade粒子系统:观察内容示例所展示的特性

1.3 使用发射器位置作为初始位置

学习Cascade粒子系统:观察内容示例所展示的特性
图中小型粒子的发射位置将由大球粒子的位置决定。

特性

用一个发射器中的粒子作为另一个发射器中粒子的初始位置。更多关于位置的模块详见《Location 模块 | Unreal Engine Documentation》

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
编辑Emitter Initial Location模块的属性,将目标发射器的名字写到Emiiter Name中。
学习Cascade粒子系统:观察内容示例所展示的特性

1.4 点状引力

学习Cascade粒子系统:观察内容示例所展示的特性
图中粒子将受到引力

特性

Point Gravity让粒子受一个“中心点”吸引。更多关于吸引力的模块详见《Attractor 模块 | Unreal Engine Documentation》(GPU粒子的吸引力模块似乎只有一个Point Attractor

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
编辑属性:
学习Cascade粒子系统:观察内容示例所展示的特性

1.5 碰撞

学习Cascade粒子系统:观察内容示例所展示的特性
图中的粒子将会与场景中的其他物体有碰撞。

特性

更多碰撞相关的模块详见《Collision 模块 | Unreal Engine Documentation》

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
编辑参数:
学习Cascade粒子系统:观察内容示例所展示的特性

1.6 与蓝图交互

学习Cascade粒子系统:观察内容示例所展示的特性
粒子的启动由蓝图控制(蓝图中的逻辑是用一个随机的时间来启动粒子系统)

使用

学习Cascade粒子系统:观察内容示例所展示的特性
其中EffectParticleSystemComponent

1.7 从骨骼发射粒子

学习Cascade粒子系统:观察内容示例所展示的特性

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
编辑参数:
学习Cascade粒子系统:观察内容示例所展示的特性
需要注意的是Skel Mesh Actor Param NameBoneSocketActor,这个参数将帮助粒子系统和实际场景中的Actor联系起来。
在发射器Actor的细节面板,可以看到Instance Parameters参数,添加一项,将名字设置为BoneSocketActor,类型是Actor,随后选择场景中想联系的Actor。
学习Cascade粒子系统:观察内容示例所展示的特性

1.8 粒子的影子

学习Cascade粒子系统:观察内容示例所展示的特性

使用

发射器Actor的Cast Shadow必须是true。
学习Cascade粒子系统:观察内容示例所展示的特性
除此之外粒子的材质中也有相关参数需要调整
学习Cascade粒子系统:观察内容示例所展示的特性
关于粒子的阴影相关的内容,应该还和很多方面有牵连,之后应该需要更详细的研究。

2.1 局部向量场

学习Cascade粒子系统:观察内容示例所展示的特性
向量场将施加一个“力”来影响粒子的运动。

特性

除效率之外,GPU粒子最有趣的特性是向量场。向量场是一个由影响粒子运动的向量组成的统一网格。关于向量场的介绍见《向量场 | Unreal Engine Documentation》

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
随后编辑这个模块的属性,包括向量场资源是什么:
学习Cascade粒子系统:观察内容示例所展示的特性
关于向量场资源如何制作,有待后续研究。

2.2 全局向量场

学习Cascade粒子系统:观察内容示例所展示的特性

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
编辑属性:
学习Cascade粒子系统:观察内容示例所展示的特性
不过这里只是一个全局向量场影响的缩放值。真正向量场的数据在场景的Actor中:
学习Cascade粒子系统:观察内容示例所展示的特性
参数中指定了向量场资源是什么,同时Actor自身的位置也表示了向量场的位置。

2.3 动态改变材质中的参数

学习Cascade粒子系统:观察内容示例所展示的特性
随着火焰的生命时间的前进,动态地改变了材质中“温度”参数,而它又影响了最终材质的效果。

特点

材质中可以添加“动态”参数,随后粒子系统可以改变这些“动态”参数的值。详见《Parameter 模块 | Unreal Engine Documentation》

使用

首先,粒子的材质中需要有动态参数的节点,例如这里的参数名分别为temperatureParam2Param3Param4(后三个是为了测试而增加的,不影响实际效果):
学习Cascade粒子系统:观察内容示例所展示的特性
粒子系统中添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
然后编辑参数的变化,例如temperature
学习Cascade粒子系统:观察内容示例所展示的特性

2.4 事件驱动的出生

学习Cascade粒子系统:观察内容示例所展示的特性
粒子的死亡触发了另外发射器的粒子的出生

特性

可以通过Event Generator来定义一些事件,之后通过EventReceiver Spawn来接收这个事件来生成粒子。关于事件的模块详见《事件模块 | Unreal Engine Documentation》

使用

添加事件生成模块:
学习Cascade粒子系统:观察内容示例所展示的特性
编辑参数,例如这里事件类型是Death,而事件名是First
学习Cascade粒子系统:观察内容示例所展示的特性
随后,可以添加事件接收并生成的模块:
学习Cascade粒子系统:观察内容示例所展示的特性
在属性中指定事件的类型和名字:
学习Cascade粒子系统:观察内容示例所展示的特性
例如,这里实现的逻辑就是:第一个发射器的粒子的死亡触发了第二个发射器粒子的出生,而第二个发射器粒子的死亡触发了第三个发射器粒子的出生:
学习Cascade粒子系统:观察内容示例所展示的特性

2.5 带状拖尾

学习Cascade粒子系统:观察内容示例所展示的特性
拖尾效果

特性

详见《条带类型数据 | Unreal Engine Documentation》

使用

首先将“类型数据”变为Ribbon
学习Cascade粒子系统:观察内容示例所展示的特性
随后可以添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
在这个模块中指定源头的发射器是哪个:
学习Cascade粒子系统:观察内容示例所展示的特性
随后可以添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性
这将基于“距离”(默认是基于“时间”)来生成粒子,在做类似轨迹的效果中很有用。

2.6 粒子受光

学习Cascade粒子系统:观察内容示例所展示的特性
粒子会受到光照的效果。
不过和材质的Shading Model有关,至少不能是UnlitDefault Lit可以。
学习Cascade粒子系统:观察内容示例所展示的特性
关于粒子的受光,应该还和很多方面有牵连,之后应该需要更详细的研究。

2.7 粒子用作光源

学习Cascade粒子系统:观察内容示例所展示的特性
粒子可以作为光源

特性

详见《粒子光源 | Unreal Engine Documentation》。不过只能用在CPU粒子上。另外要注意的是——性能成本。

使用

添加模块:
学习Cascade粒子系统:观察内容示例所展示的特性

2.8 光束

学习Cascade粒子系统:观察内容示例所展示的特性
使用光束种类的发射器,并且使用“噪声”形成一种电流激变的效果。

特性

详见《光束类型数据 | Unreal Engine Documentation》

使用

首先将“类型数据”变为Beam
学习Cascade粒子系统:观察内容示例所展示的特性
随后可以添加光束相关的模块:
学习Cascade粒子系统:观察内容示例所展示的特性
SourceTarget分别指定了光束的头与尾
Noise提供一种噪声的效果。