要获得某些效果,你可能需要生成数万个粒子。然而,使用标准的CPU生成这么多粒子会导致性能问题。本指南将向你展示如何创建使用GPU而不是CPU来运行模拟的Sprite粒子效果。
创建系统和发射器
与在Cascade中不同,Niagara发射器和系统是独立的。当前推荐工作流将从现有发射器或发射器模板创建系统。
-
首先,在内容浏览器中点击右键以创建Niagara系统,然后从显示菜单中选择 FX > Niagara系统(FX > Niagara System)。将显示Niagara系统(Niagara System)向导。
点击查看大图。
-
选择 从所选发射器新建系统(New system from selected emitters)。然后单击 下一步(Next)。
点击查看大图。
-
在 模板(Templates) 下选择 简单Sprite迸发(Simple Sprite Burst)。
点击查看大图。
-
单击 加号图标(Plus icon)(+),以将发射器添加到要添加到系统的发射器列表中。然后单击 完成(Finish)。
点击查看大图。
-
将新系统命名为 GPUSprite。双击以在Niagara编辑器中将其打开。
点击查看大图。
-
新系统中发射器实例的默认名称为 SimpleSpriteBurst,但你可以对其重命名。在 系统概览(System Overview) 中单击发射器实例名称,该字段将转变为可编辑状态。将发射器命名为 FX_GPUSprite。
点击查看大图。
1.将 GPUSprite 系统拖到关卡中。
制作粒子效果时,最好将系统拖到关卡中。这样便可查看每一项更改并在上下文中进行编辑。 你对系统所做的任何更改都将自动传播到关卡中的系统实例。
发射器设置 - 发射器属性
首先,你需要在 发射器属性(Emitter Properties) 中更改某些设置。你可以在此处从CPU模拟切换到GPU模拟。
-
在 系统概览(System Overview) 中,单击 发射器设置(Emitter Settings),以在 选择(Selection) 面板中将其打开。
点击查看大图。
-
展开 发射器属性(Emitter Properties)。找到 模拟目标(Sim Target) 字段。你可以在此处告知虚幻引擎使用GPU进行模拟。单击下拉菜单,并选择 GPUComputeSim。
点击查看大图。
-
你可能会触发有关未设置固定边界的警告。单击 固定边界(Fixed Bounds) 对话框。这样可以解决错误。将 最小值(Minimum) 和 最大值(Maximum) 设置为默认值。
由于粒子模拟在GPU上完成,因此系统无法读取效果的大小。这就是必须设置固定边界的原因。你可以在发射器中执行此操作,如本步骤所示,也可以在 系统属性(System Properties) 项中为整个系统设置固定边界。
发射器更新组设置
下一步,你将在 发射器更新(Emitter Update) 组中编辑模块。这些是将应用于发射器并更新每一帧的行为。
-
在 系统概览(System Overview) 中,单击 发射器更新(Emitter Update),以在 选择(Selection) 面板中将其打开。
点击查看大图。
-
展开 发射器状态(Emitter State) 模块。此模块控制此发射器的时间和可延展性。由于你使用了简单Sprite迸发模板,因此 生命周期模式(Life Cycle Mode) 设置为 自身(Self)。通常,该模式用于为此特定发射器完全定制发射器生命周期逻辑,但此效果并不需要它。单击下拉列表,并将 生命周期模式(Life Cycle Mode) 设置为 系统(System)。此操作将使系统能够计算生命周期设置,而这通常可以优化性能。在默认情况下,系统以5秒的间隔无限循环。
点击查看大图。
-
当发射器生成时,生成即时迸发(Spawn Burst Instantaneous) 模块会产生大量粒子。此模块包含在简单Sprite爆发模板中。将 生成计数(Spawn Count) 设置为 2500。由于 生成时间(Spawn Time) 设置为 0,所以迸发会在启动时立即发生。
点击查看大图。
-
对于此效果,当发射器生成时,你需要的不仅是粒子迸发。当发射器处于活动状态时,生成速率(Spawn Rate) 模块创建连续粒子流。单击发射器更新的 加号(Plus sign) 图标(+)并选择 生成 > 生成速率(Spawning > Spawn Rate),以添加 生成速率(Spawn Rate) 模块。
点击查看大图。
- 将 生成速率(Spawn Rate) 设置为 500。这样将以每秒500个的速度生成粒子,由此在初始迸发后提供连续的粒子流。
点击查看大图。
粒子生成组设置
下一步,你将在 粒子生成(Particle Spawn) 组中编辑模块。这些是粒子首次生成时将应用于粒子的行为。
-
在 系统概览(System Overview) 中,单击 粒子生成(Particle Spawn),以在 选择(Selection) 面板中将其打开。
点击查看大图。
-
展开 初始化粒子(Initialize Particle) 模块。此模块将多个相关参数采集到一个模块中,从而最大程度地减少堆栈中的混乱。在 点属性(Point Attributes) 下,找到 生命周期(Lifetime) 参数。
-
生命周期参数确定了粒子在消失之前将显示多久。对于此效果,你需要一个恒定值,从而使粒子在效果的整个持续时长内显示。将 生命周期(Lifetime) 设置为 5。
点击查看大图。
-
你将在本指南的另一部分中将Sprite大小随机化,但是在此处,我们将设置Sprite的基本大小。在 Sprite属性(Sprite Attributes) 下,找到 Sprite大小(Sprite Size) 参数,并确保启用它。将 Sprite大小(Sprite Size) 设置如下:
点击查看大图。
大小矢量 数值 X 5 Y 5 -
球体位置控制Sprite生成所在位置的形状。添加 球体位置(Sphere Location) 模块后,Sprite将以球体形状生成,而且你可以通过指示半径以设置球体形状的大小。单击粒子生成的 加号(Plus sign) 图标(+)并选择 位置 > 球体位置(Location > Sphere Location),以添加 球体位置(Sphere Location) 模块。你可以保留模块的默认设置。
点击查看大图。
粒子更新组设置
现在,你将在 粒子更新(Particle Update) 组中编辑模块。这些行为将应用于发射器的粒子并更新每一帧。
-
在 系统概览(System Overview) 中,单击 粒子更新(Particle Update) 组,以在 选择(Selection) 面板中将其打开。
点击查看大图。
-
在粒子生成组的初始化粒子模块中,你已选择Sprite的基本大小。你可以通过添加缩放Sprite大小模块来随机化Sprite的大小。这样可将比例因子应用于基本大小。单击 加号(Plus sign) 图标(+)并选择 大小 > 缩放Sprite大小(Size > Scale Sprite Size),以添加 缩放Sprite大小(Scale Sprite Size) 模块。
点击查看大图。
-
缩放Sprite大小的默认值为 X: 1 和 Y: 1。更改这些默认值将统一使所有粒子变大或变小。然而,随机大小变化比静态大小更具视觉吸引力。单击 比例因子(Scale Factor) 字段旁的向下箭头,然后选择 动态输入 > 来自浮点的Vector2D(Dynamic Inputs > Vector2D from Float)。
点击查看大图。
-
请注意,比例因子(Scale Factor) 的值已转变为一个静态值。有多种方法可添加浮点值,具体取决于你所需的粒子外观。对于流动且渐进的大小变化,曲线是理想选择。单击 值(Value) 旁的向下箭头,然后选择 动态输入 > 曲线中的浮点(Dynamic Inputs > Float from Curve)。
点击查看大图。
-
你在步骤5中添加的曲线具有两个默认值。你可以向曲线添加更多键,以使大小变化更加复杂。右键点击线条,然后选择 向曲线添加键(Add Key to Curve)。再次执行此操作,从而使曲线上总共显示4个键。
点击查看大图。
-
将曲线上的四个键设置为以下值。
点击查看大图。
键号 时间 值 1 0 0 2 .25 1 3 .75 1 4 1 0 -
现在,当前设置只是创建了一团并非十分有趣的粒子。你可以添加一些能够增加粒子变化和运动的其他元素。单击粒子更新(Particle Update)的 加号(Plus sign)(+)图标,然后选择 力 > 旋度噪点力(Forces > Curl Noise Force)。
点击查看大图。
-
你可以使用旋度噪点力完成许多操作。噪点强度(Noise Strength) 控制整个噪点场的大小(即,噪点干扰原始粒子球体的程度)。噪点频率(Noise Frequency) 控制旋度噪点应用于粒子的频率:数字越小,粒子的球体位置将越翘曲。当前使用下面的设置,但你稍后可以尝试使用这些设置以获取不同的外观。
点击查看大图。
参数 值 噪点强度(Noise Strength) 72 噪点强度(Noise Frequency) 02 -
现在,你将看到粒子首先旋转,然后便持续向外移动,直到消亡。对于此效果,粒子应向外移动,然后返回其原点,以形成漩涡状物质。点吸引力(Point Attraction Force) 模块使粒子向单个点移动(默认情况下,该点是发射器的位置)。单击粒子更新的 加号(Plus sign) 图标(+),然后选择 力 > 点吸引力(Forces > Point Attraction Force)。
点击查看大图。
-
吸引强度(Attraction Strength) 是将粒子拉到吸引子点的力大小。吸引半径(Attraction Radius) 描述点吸引力作用于粒子的场大小。衰减指数(Falloff Exponent) 控制球体的扩散程度;数字越小,粒子球体的扩散范围越大。消亡半径(Kill Radius) 设置粒子在生命周期结束时分解所处区域的大小。将 吸引强度(Attraction Strength)、吸引半径(Attraction Radius)、衰减指数(Falloff Exponent) 和 消亡半径(Kill Radius) 设置为以下值。
单击模块底部的三角形,以显示 消亡半径(Kill Radius) 参数。如果尚未勾选此复选框,则请勾选以启用它。
点击查看大图。
参数 值 吸引强度(Attraction Strength) 5.5 吸引半径(Attraction Radius) 300.0 衰减指数(Falloff Exponent) 0.6 消亡半径(Kill Radius) 4.0 -
现在,更改颜色。单击粒子更新的 加号(Plus sign) 图标(+),然后选择 颜色 > 颜色(Colors > Color)。
点击查看大图。
-
你可以单击颜色条上方的空间以向曲线添加颜色停止点,也可以通过双击停止点打开取色器以更改颜色。若要设置不透明度停止点,请点击颜色条下方的空间。将颜色和不透明度设置如下。
点击查看大图。
颜色或不透明度停止点 时间 值 颜色 停止点1(Stop 1) 0.0 R: 1, G: 0, B: 1 停止点2(Stop 2) .35 R: .08, G: 0, B: 1 停止点3(Stop 3) ..60 R: .2 , G: 1, B: .8 停止点4(Stop 4) .8 R: 1, G: .96, B: .3 不透明度 停止点1(Stop 1) 0 1 停止点2(Stop 2) .7 1 停止点3(Stop 3) 1 0
最终结果
祝贺你!你成功创建了通过GPU而非CPU计算的酷炫Sprite效果。