创建GPU Sprite效果

本文档介绍如何使用GPU生成数百万个Sprite粒子。

Windows
MacOS
Linux
前置主题

此页面假定您已掌握以下主题的前置知识。请在继续之前先阅读它们。

要获得某些效果,你可能需要生成数万个粒子。然而,使用标准的CPU生成这么多粒子会导致性能问题。本指南将向你展示如何创建使用GPU而不是CPU来运行模拟的Sprite粒子效果。

创建系统和发射器

与在Cascade中不同,Niagara发射器和系统是独立的。当前推荐工作流将从现有发射器或发射器模板创建系统。

  1. 首先,在内容浏览器中点击右键以创建Niagara系统,然后从显示菜单中选择 FX > Niagara系统(FX > Niagara System)。将显示Niagara系统(Niagara System)向导。

    点击查看大图。

  2. 选择 从所选发射器新建系统(New system from selected emitters)。然后单击 下一步(Next)

    点击查看大图。

  3. 模板(Templates) 下选择 简单Sprite迸发(Simple Sprite Burst)

    点击查看大图。

  4. 单击 加号图标(Plus icon)+),以将发射器添加到要添加到系统的发射器列表中。然后单击 完成(Finish)

    点击查看大图。

  5. 将新系统命名为 GPUSprite。双击以在Niagara编辑器中将其打开。

    点击查看大图。

  6. 新系统中发射器实例的默认名称为 SimpleSpriteBurst,但你可以对其重命名。在 系统概览(System Overview) 中单击发射器实例名称,该字段将转变为可编辑状态。将发射器命名为 FX_GPUSprite

    点击查看大图。

    1.将 GPUSprite 系统拖到关卡中。

    制作粒子效果时,最好将系统拖到关卡中。这样便可查看每一项更改并在上下文中进行编辑。 你对系统所做的任何更改都将自动传播到关卡中的系统实例。

发射器设置 - 发射器属性

首先,你需要在 发射器属性(Emitter Properties) 中更改某些设置。你可以在此处从CPU模拟切换到GPU模拟。

  1. 系统概览(System Overview) 中,单击 发射器设置(Emitter Settings),以在 选择(Selection) 面板中将其打开。

    点击查看大图。

  2. 展开 发射器属性(Emitter Properties)。找到 模拟目标(Sim Target) 字段。你可以在此处告知虚幻引擎使用GPU进行模拟。单击下拉菜单,并选择 GPUComputeSim

    点击查看大图。

  3. 你可能会触发有关未设置固定边界的警告。单击 固定边界(Fixed Bounds) 对话框。这样可以解决错误。将 最小值(Minimum)最大值(Maximum) 设置为默认值。

    由于粒子模拟在GPU上完成,因此系统无法读取效果的大小。这就是必须设置固定边界的原因。你可以在发射器中执行此操作,如本步骤所示,也可以在 系统属性(System Properties) 项中为整个系统设置固定边界。

发射器更新组设置

下一步,你将在 发射器更新(Emitter Update) 组中编辑模块。这些是将应用于发射器并更新每一帧的行为。

  1. 系统概览(System Overview) 中,单击 发射器更新(Emitter Update),以在 选择(Selection) 面板中将其打开。

    点击查看大图。

  2. 展开 发射器状态(Emitter State) 模块。此模块控制此发射器的时间和可延展性。由于你使用了简单Sprite迸发模板,因此 生命周期模式(Life Cycle Mode) 设置为 自身(Self)。通常,该模式用于为此特定发射器完全定制发射器生命周期逻辑,但此效果并不需要它。单击下拉列表,并将 生命周期模式(Life Cycle Mode) 设置为 系统(System)。此操作将使系统能够计算生命周期设置,而这通常可以优化性能。在默认情况下,系统以5秒的间隔无限循环。

    点击查看大图。

  3. 当发射器生成时,生成即时迸发(Spawn Burst Instantaneous) 模块会产生大量粒子。此模块包含在简单Sprite爆发模板中。将 生成计数(Spawn Count) 设置为 2500。由于 生成时间(Spawn Time) 设置为 0,所以迸发会在启动时立即发生。

    点击查看大图。

  4. 对于此效果,当发射器生成时,你需要的不仅是粒子迸发。当发射器处于活动状态时,生成速率(Spawn Rate) 模块创建连续粒子流。单击发射器更新的 加号(Plus sign) 图标(+)并选择 生成 > 生成速率(Spawning > Spawn Rate),以添加 生成速率(Spawn Rate) 模块。

    点击查看大图。

  5. 生成速率(Spawn Rate) 设置为 500。这样将以每秒500个的速度生成粒子,由此在初始迸发后提供连续的粒子流。

    点击查看大图。

粒子生成组设置

下一步,你将在 粒子生成(Particle Spawn) 组中编辑模块。这些是粒子首次生成时将应用于粒子的行为。

  1. 系统概览(System Overview) 中,单击 粒子生成(Particle Spawn),以在 选择(Selection) 面板中将其打开。

    点击查看大图。

  2. 展开 初始化粒子(Initialize Particle) 模块。此模块将多个相关参数采集到一个模块中,从而最大程度地减少堆栈中的混乱。在 点属性(Point Attributes) 下,找到 生命周期(Lifetime) 参数。

  3. 生命周期参数确定了粒子在消失之前将显示多久。对于此效果,你需要一个恒定值,从而使粒子在效果的整个持续时长内显示。将 生命周期(Lifetime) 设置为 5

    点击查看大图。

  4. 你将在本指南的另一部分中将Sprite大小随机化,但是在此处,我们将设置Sprite的基本大小。在 Sprite属性(Sprite Attributes) 下,找到 Sprite大小(Sprite Size) 参数,并确保启用它。将 Sprite大小(Sprite Size) 设置如下:

    点击查看大图。

    大小矢量

    数值

    X

    5

    Y

    5

  5. 球体位置控制Sprite生成所在位置的形状。添加 球体位置(Sphere Location) 模块后,Sprite将以球体形状生成,而且你可以通过指示半径以设置球体形状的大小。单击粒子生成的 加号(Plus sign) 图标(+)并选择 位置 > 球体位置(Location > Sphere Location),以添加 球体位置(Sphere Location) 模块。你可以保留模块的默认设置。

    点击查看大图。

粒子更新组设置

现在,你将在 粒子更新(Particle Update) 组中编辑模块。这些行为将应用于发射器的粒子并更新每一帧。

  1. 系统概览(System Overview) 中,单击 粒子更新(Particle Update) 组,以在 选择(Selection) 面板中将其打开。

    点击查看大图。

  2. 在粒子生成组的初始化粒子模块中,你已选择Sprite的基本大小。你可以通过添加缩放Sprite大小模块来随机化Sprite的大小。这样可将比例因子应用于基本大小。单击 加号(Plus sign) 图标(+)并选择 大小 > 缩放Sprite大小(Size > Scale Sprite Size),以添加 缩放Sprite大小(Scale Sprite Size) 模块。

    点击查看大图。

  3. 缩放Sprite大小的默认值为 X: 1Y: 1。更改这些默认值将统一使所有粒子变大或变小。然而,随机大小变化比静态大小更具视觉吸引力。单击 比例因子(Scale Factor) 字段旁的向下箭头,然后选择 动态输入 > 来自浮点的Vector2D(Dynamic Inputs > Vector2D from Float)

    点击查看大图。

  4. 请注意,比例因子(Scale Factor) 的值已转变为一个静态值。有多种方法可添加浮点值,具体取决于你所需的粒子外观。对于流动且渐进的大小变化,曲线是理想选择。单击 值(Value) 旁的向下箭头,然后选择 动态输入 > 曲线中的浮点(Dynamic Inputs > Float from Curve)

    点击查看大图。

  5. 你在步骤5中添加的曲线具有两个默认值。你可以向曲线添加更多键,以使大小变化更加复杂。右键点击线条,然后选择 向曲线添加键(Add Key to Curve)。再次执行此操作,从而使曲线上总共显示4个键。

    点击查看大图。

  6. 将曲线上的四个键设置为以下值。

    点击查看大图。

    键号

    时间

    1

    0

    0

    2

    .25

    1

    3

    .75

    1

    4

    1

    0

  7. 现在,当前设置只是创建了一团并非十分有趣的粒子。你可以添加一些能够增加粒子变化和运动的其他元素。单击粒子更新(Particle Update)的 加号(Plus sign)+)图标,然后选择 力 > 旋度噪点力(Forces > Curl Noise Force)

    点击查看大图。

  8. 你可以使用旋度噪点力完成许多操作。噪点强度(Noise Strength) 控制整个噪点场的大小(即,噪点干扰原始粒子球体的程度)。噪点频率(Noise Frequency) 控制旋度噪点应用于粒子的频率:数字越小,粒子的球体位置将越翘曲。当前使用下面的设置,但你稍后可以尝试使用这些设置以获取不同的外观。 

    点击查看大图。

    参数

    噪点强度(Noise Strength)

    72

    噪点强度(Noise Frequency)

    02

  9. 现在,你将看到粒子首先旋转,然后便持续向外移动,直到消亡。对于此效果,粒子应向外移动,然后返回其原点,以形成漩涡状物质。点吸引力(Point Attraction Force) 模块使粒子向单个点移动(默认情况下,该点是发射器的位置)。单击粒子更新的 加号(Plus sign) 图标(+),然后选择 力 > 点吸引力(Forces > Point Attraction Force)

    点击查看大图。

  10. 吸引强度(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

  11. 现在,更改颜色。单击粒子更新的 加号(Plus sign) 图标(+),然后选择 颜色 > 颜色(Colors > Color)

    点击查看大图。

  12. 你可以单击颜色条上方的空间以向曲线添加颜色停止点,也可以通过双击停止点打开取色器以更改颜色。若要设置不透明度停止点,请点击颜色条下方的空间。将颜色和不透明度设置如下。

    点击查看大图。

    颜色或不透明度停止点

    时间

    颜色

    停止点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效果。

标签
Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见