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

    技术2025-02-27  15

    目标

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

    1.1 GPU粒子

    展示了GPU粒子可以比CPU支持更多的粒子数目。

    特性

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

    使用

    如果模块有GPU粒子所不支持的,则会有错误提示:

    1.2 圆锥形速度分布模块

    图中的粒子将朝着一个圆锥方向的速度发射。

    特性

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

    使用

    添加模块: 随后在细节面板里编辑属性:

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

    图中小型粒子的发射位置将由大球粒子的位置决定。

    特性

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

    使用

    添加模块: 编辑Emitter Initial Location模块的属性,将目标发射器的名字写到Emiiter Name中。

    1.4 点状引力

    图中粒子将受到引力

    特性

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

    使用

    添加模块: 编辑属性:

    1.5 碰撞

    图中的粒子将会与场景中的其他物体有碰撞。

    特性

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

    使用

    添加模块: 编辑参数:

    1.6 与蓝图交互

    粒子的启动由蓝图控制(蓝图中的逻辑是用一个随机的时间来启动粒子系统)

    使用

    其中Effect是ParticleSystemComponent。

    1.7 从骨骼发射粒子

    使用

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

    1.8 粒子的影子

    使用

    发射器Actor的Cast Shadow必须是true。 除此之外粒子的材质中也有相关参数需要调整 关于粒子的阴影相关的内容,应该还和很多方面有牵连,之后应该需要更详细的研究。

    2.1 局部向量场

    向量场将施加一个“力”来影响粒子的运动。

    特性

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

    使用

    添加模块: 随后编辑这个模块的属性,包括向量场资源是什么: 关于向量场资源如何制作,有待后续研究。

    2.2 全局向量场

    使用

    添加模块: 编辑属性: 不过这里只是一个全局向量场影响的缩放值。真正向量场的数据在场景的Actor中: 参数中指定了向量场资源是什么,同时Actor自身的位置也表示了向量场的位置。

    2.3 动态改变材质中的参数

    随着火焰的生命时间的前进,动态地改变了材质中“温度”参数,而它又影响了最终材质的效果。

    特点

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

    使用

    首先,粒子的材质中需要有动态参数的节点,例如这里的参数名分别为temperature、Param2、Param3、Param4(后三个是为了测试而增加的,不影响实际效果): 粒子系统中添加模块: 然后编辑参数的变化,例如temperature:

    2.4 事件驱动的出生

    粒子的死亡触发了另外发射器的粒子的出生

    特性

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

    使用

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

    2.5 带状拖尾

    拖尾效果

    特性

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

    使用

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

    2.6 粒子受光

    粒子会受到光照的效果。 不过和材质的Shading Model有关,至少不能是Unlit,Default Lit可以。 关于粒子的受光,应该还和很多方面有牵连,之后应该需要更详细的研究。

    2.7 粒子用作光源

    粒子可以作为光源

    特性

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

    使用

    添加模块:

    2.8 光束

    使用光束种类的发射器,并且使用“噪声”形成一种电流激变的效果。

    特性

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

    使用

    首先将“类型数据”变为Beam 随后可以添加光束相关的模块: Source和Target分别指定了光束的头与尾 而Noise提供一种噪声的效果。

    Processed: 0.014, SQL: 9