【UE4】UE4联级粒子系统

一、粒子系统的一些基本概念

1.Particle System(粒子系统)

粒子系统如同贴图、模型一样属于UE4的驻留资产,不能单独存在于场景中,必须使用载体依托才能在场景中渲染出来,粒子系统包含粒子特效的所有配置。粒子系统在UE4中表现为如下样子:

创建粒子系统

在内容浏览器中右键选择Particle System可以直接创建粒子系统。

2.Emitter Actor(粒子发射器)

粒子发射器就是粒子系统的载体,粒子发射器承载粒子系统确定粒子系统在场景中的位置坐标等信息。但是似乎UE4没办法直接创建空的粒子发射器,UE4的粒子发射器在将粒子系统拖入场景中时,UE4会自动为该粒子系统创建一个粒子发射器。

3.Particle System Component(粒子系统组件)

粒子系统组件是一个包含了粒子系统的蓝图,粒子系统组件可以使用代码逻辑来控制粒子系统。

二、Cascade(粒子编辑器)

粒子系统的核心就是粒子编辑器,在粒子编辑器里我们可以创造出琳琅满目的粒子特效。

粒子编辑器包含Toolbar、Emitters、Details、Viewport和Curve Editor等视图。

1.ToolBar(工具栏)

2.Emitters

Emitters是用于控制粒子属性的视图,Emitters的基本组成单元就是Emitter(发射器),这里的Emitter和前面提到的Emitter Actor有一些差异,二者都是粒子发射器,但是Emitter是属于粒子系统内部的发射器,主要用于对粒子系统的某一部分的粒子发射,如爆炸的粒子特效中可以由烟、火光和火花等粒子部分组成,Emitter就是用于发射这些粒子部分的发射器,而Emitter Actor则是用于发射整个粒子系统的发射器。

3.Emitter(发射器)

在Emitters视图中每一列就是一个Emitter,一个Emitter控制一个粒子部分。一个Emitter拥有Required和Spawn两个固有组成模块,即每个Emitter被创建出来就拥有Required和Spawn模块,且这两个模块不能删除。

Emitter的执行顺序是自左而右的。

创建Emitter

直接在Emitters视图的空白出右键选择New Particle Sprite Emitter即可。

赋值Emitter

选中需要复制的Emitter右键/Emiter/Duplicate Emitter即可。

删除Emitter

选中需要删除的Emitter右键/Emitter/Delete Emitter,或直接按delete键。

4.Emitter的分类

直接创建的Emitter默认为普通Emitter即没有任何特殊属性的Emitter,要创建具有特殊属性的特殊的Emitter需要修改Emitter的TypeData属性,右键/TypeData选择需要的类型即可修改Emitter的类型。

AnimTrail Data

骨骼动画发射器,AnimTrail可以使粒子跟随人物骨骼运动而运动,如下图的跟随人物手臂运动的彩虹带

AnimTrail是配合UE4的动画系统一起使用的,使用AnimTrail我们需要选择一段动画片段如下图

发射器会在选定的时间片段内发射粒子,在右侧的Trail栏中选定粒子需要跟随的骨骼和骨骼需要绑定的粒子系统,就可以使粒子跟随着骨骼运动了。

Beam Data

光束发射器,Beam有一个源点和一个目标点,粒子由源点发射运动到目标点销毁,Beam在粒子由源点运动到目标点的过程中可以设置粒子抖动,使粒子的运动具有抖动效果,如下图的闪电。

Beam拥有一个专属Module–Beam,在这个模块里可以为Beam添加Source(源点)、Target(目标点)和Noise(噪声),Noise就是控制粒子抖动的Module,要想粒子出现抖动有几点是必须要做的,即勾选Noise模块的Low Freq/Low Freq Enabled、设置Frequency(噪声点的频率,影响粒子抖动的平滑程度);Source和Target模块的Suorce Tangent/Distribution/Constant和Target Tangent/Distribution/Constant(影响源点到目标点的粒子抖动的曲率),要想这两个设置起作用还必须设置Source/Source Tangent Method为User Set,目标点也是一样的设置;还有一点就是要想粒子从源点向目标点运动还需要设置Beam Data模块的Beam/Beam Method为Target。

GPU Sprites

GPU Sprites是普通粒子的加强版,可以使粒子具有更完美的物理效果,但当对于普通粒子发射器来说更消耗GPU性能。

矢量场:

矢量场是GPU粒子独有的属性,GPU粒子在矢量成的控制下可以作出任意轨迹运用,如:

矢量场有多个属性控制模块

矢量场默认是看不见的,我们需要在Viewport里勾选View/Vector Fields,使矢量场可见。

Mesh Data

网格发射器,Mesh可以使粒子使用模型网格,这样发射出来的粒子就是一个个具体的模型,如下图所示。

Ribbon Data

光带发射器,Ribbon可以记录粒子的运行轨迹,并可以对其属性进行编辑,如下图使用粒子运行轨迹制作的光带。

Ribbon的粒子生成模块不是使用Spawn,而是Spawn PerUnit,由于Spawn是Emitter的固有Module所以无法移除,我们要启用Spawn PerUnit则需要将Spawn Module的Spawn/Distribution/Constant设置为0,达到间接禁用Spawn的效果。这样彩带粒子就是用Spawn PerUnit生成粒子了,想要彩带粒子跟随其他粒子运动我们还需要一个Module–Trail/Source,将Source Module里的Source/Source Mothod设置为PET2SRCM Particle,并且Source Name设置为需要跟随粒子部分的Emitter的名字,这样就可以产生一个跟随其他粒子的彩带了,当然这个彩带粒子是需要设置贴图的,否则尽管生成了,但是却没有渲染。

4.Module(模块)

模块用于控制粒子某一方面的属性,在Emitter中每一行就是一个Module,Module的种类很多,这里只列举自己使用过的Module。

UE4Module的执行顺序是自上而下的所以当一个Emitter中有两个相同的Module时,下面的Module会覆盖上面的Module。

添加Module

选中需要添加Module的Emitter,右键选择需要的Module即可

移除Module

选中需要移除的Module右键/Delete Module,或直接按Delete键。

拷贝Module

Shift+拖动即可拷贝一个Module到另一个Emitter中。

Required

Required控制粒子的显示方面的属性,如粒子贴图,显示模式等。

  • Sub UV栏控制贴图的逐帧融合。

Spawn

Spawn控制粒子的发射方面的属性,如粒子发射量,发射模式等。

  • Spawn栏控制粒子持续性的发射;
  • Burst栏控制粒子间歇性的爆炸发射。

LifeTime

LifeTime控制粒子的声明周期方面的属性。

Initial Size

Initial Size控制粒子初始尺寸方面的属性。

Initial Velocity

Initial Velocity控制粒子初始速度方面的属性。

Color Over Life

Color Over Life控制粒子生命周期内的颜色变化方面的属性。

生命周期的初始颜色是Color Over Life/Distribution/Constant Curve/Points/0/Out Val,

生命周期的结束颜色是Color Over Life/Distribution/Constant Curve/Points/1/Out Val。

Initial Location

Initial Location控制粒子发射的初始位置方面的属性,通过Start Location/Distribution/Max和Min可以控制粒子发射时的位置分布,如Max,Min都为0时粒子只从一个点发射出来,当设置了值,粒子会在设置的范围内随机发射出来。

Const Acceleration

Const Acceleration控制粒子的运动的加速度。

Size By Speed

Size By Speed控制粒子的尺寸随速度的变化,要想粒子的尺寸可以随速度变化需要将Required模块的Emitter/Screen Alignment设置为PSA Velocity。

Light

Light控制粒子发光,但是似乎只有发生碰撞之后才会发光。

Actor Collision

Actor Collision控制粒子的物理碰撞。

Orbit

Obirt控制粒子的随机运动。

三、LOD(细节层次)

默认情况下任何创建出来的粒子系统默认为LOD0等级的细节层次,我们可以在Toolbar中的Add LOD添加细节层次,在LOD中切换细节层次。

Details/LOD栏可以设置LOD切换与距离的关系,可以在不同的细节层次下修改Emitter不会对其他的细节层次产生影响,这样就可以很精确的控制各个细节层次了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!