Sprite烟雾效果

本文档介绍了如何使用Niagara中的Sprite粒子创建烟雾特效。

Choose your operating system:

Windows

macOS

Linux

前置主题

为了理解并使用本文中的内容,请确保您已掌握以下主题:

常用的视觉手段是在始终朝向摄像机的2D平面上渲染纹理和材质。这些平面称被为 Sprite 。在以下教程中,你将在Niagara发射器中使用Sprite,然后将包含Niagara发射器的Niagara系统放置在关卡中,就能看到关卡中的特效。

先决条件:

本入门指南使用了 初学者内容包 中的 M_smoke_subUV 材质。请确保你已将该材质或初学者内容包添加到项目中。

项目设置

  1. 首先,在内容浏览器(Content Browser)中创建新文件夹,用于保存效果的资产。确保你位于顶层(内容),然后右键点击 内容浏览器(Content Browser),并选择 新建文件夹(New Folder) 。将文件夹命名为诸如 SpriteEffect 之类的名称。

    如果你要在项目中创建多个Niagara效果,你可能希望创建名为NiagaraFX(或类似内容)的文件夹,然后为Sprite效果创建子文件夹。

  2. 你需要先创建或找到一种材质用于发射器中的Sprite,然后才能创建该效果。对于本示例,你将使用初学者内容包中的材质。你可以拉取该材质,不必去找它或移动它的位置,但在某些情况下,你可能希望创建原始材质的副本,然后将其放在效果的文件夹中,或者你之前创建的单独的"材质(Materials)"文件夹中。为此,请按照下列步骤操作:

    1. 在内容浏览器(Content Browser)的搜索栏中输入 m_smoke 。你应该会在搜索结果中看到 M_smoke_subuv 材质。

      点击查看大图。

    2. 要将其副本放入另一个文件夹中,只需点击该材质并拖入所需的文件夹,然后在弹出菜单中选择 移到此处(Move Here)复制到此处(Copy Here)移动 它会删除之前位置的原始材质,并将其移到新位置。复制 它会在新位置创建副本,同时保留原始位置的原始材质。如果你希望为Sprite创建自己的材质,请参阅我们文档的 材质(Materials) 小节中的页面。

创建系统和发射器

接下来,你将创建Niagara系统并在其中创建发射器。该系统是一个容器,你可以在其中放入一个或多个发射器。发射器是生成的新粒子的源。

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

    点击查看大图。

  2. 选择 基于所选发射器的新系统(New system from selected emitters)。然后点击 下一步(Next)

    点击查看大图。

  3. 模板(Template) 下,选择 简易Sprite迸发(Simple Sprite Burst) 。点击 加号 图标(+),将该发射器添加到待添加到系统的发射器列表中。然后点击 完成(Finish)

    点击查看大图。

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

  5. 新系统中发射器实例的默认名称为 SimpleSpriteBurst。但是,你可以将其重命名。在"系统概述(System Overview)"中点击发射器实例的名称,相应字段将变为可编辑。将发射器命名为 FX_Smoke

    点击查看大图。

更改渲染器设置

  1. 在本指南中,你将遍历堆栈中出现的发射器模块组。但是,在渲染器中设置材质之前,你在预览或关卡中看不到内容。因此,首先在 系统概述(System Overview) 中选择 Sprite渲染器(Sprite Renderer) 以在 选择(Selection) 面板中打开。

    点击查看大图。

  2. 你将在此处选择效果的材质。由于该材质是SubUV材质,你需要向渲染器指明图像网格中有多少张图像。将以下属性设置为以下值。

    点击查看大图。

    属性名称

    材质(Material)

    M_smoke_subUV

    子图像大小(Sub Image Size)

    X: 8.0,Y: 8.0

    子UV混合已启用(Sub UV Blending Enabled)

    选中

  3. SmokeSystem 拖动到关卡中。

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

编辑发射器更新组设置

首先,在发射器更新(Emitter Update)组中编辑模块。这些行为应用于发射器并会更新每个帧。

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

    点击查看大图。

  2. 你希望创建恒定的烟柱,而不是一阵烟雾。点击 垃圾桶 图标,删除 生成即时爆炸(Spawn Burst Instantaneous) 模块。

    点击查看大图。

  3. 点击 加号 图标(+)并选择 生成速率(Spawn Rate) ,以将 生成速率(Spawn Rate) 模块添加到 发射器更新(Emitter Update) 组。

    点击查看大图。

  4. 生成速率(Spawn Rate) 模块中,将生成速率设置为 50 。这样可得到由烟雾构成的大小合适的蓬松形状。这是制作效果的良好开端。

    点击查看大图。

  5. 现在,你在构建效果时,需要将模拟设置为在无限循环中运行。这样你就有更多时间来评估设置如何影响效果。在 发射器状态(Emitter State) 模块中,点击 生命周期模式(Life Cycle Mode) 的下拉菜单,并选择 自我(Self) 。然后点击 循环行为(Loop Behavior) 的下拉菜单,并选择 无限(Infinite)

    点击查看大图。

粒子生成组设置

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

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

    点击查看大图。

  2. 展开 初始化粒子(Initialize Particle) 模块。该模块会将多个相关参数收集到一个模块中,最大限度减少堆栈凌乱。在 点属性(Point Attributes) 下,找到 生命周期(Lifetime) 参数。该参数将决定粒子会在显示多久后消失。你希望"生命周期(Lifetime)"参数带一点随机性,以更好地模拟真实烟雾。将 生命周期模式(Lifetime Mode) 设置为 随机(Random) ,将 生命周期最小值(Lifetime Min) 设置为 2 ,并将 生命周期最大值(Lifetime Max) 设置为 3

    点击查看大图。

    属性名称

    生命周期模式(Lifetime Mode)

    随机

    最小值(Minimum)

    2.0

    最大值(Maximum)

    3.0

  3. 为了让烟雾效果更真实,你需要调整Sprite粒子的大小。原始粒子束非常小,因此你现在需要将其增大。你还将使大小带一点随机性,这样Sprite粒子会重叠并造成更逼真的烟雾效果。 在 Sprite属性(Sprite Attributes) 下,找到 Sprite大小(Sprite Size) 参数并确保它已启用。将 Sprite大小模式(Sprite Size Mode) 设置为 随机均匀(Random Uniform)。为 最小值(Minimum)最大值(Maximum) 输入以下值。

    点击查看大图。

    属性名称

    Sprite大小模式(Sprite Size Mode)

    随机均匀(Random Uniform)

    均匀Sprite大小最小值(Uniform Sprite Size Min)

    75

    均匀Sprite大小最大值(Uniform Sprite Size Max)

    200

  4. 现在你的烟雾质量变大了。为增加粒子的形状变化,你需要添加一些旋转。此外,为了增加变化,你需要为旋转添加随机性。将 Sprite旋转模式(Sprite Rotation Mode) 旁边的下拉菜单设置为 直接规格化角度(0-1)(Direct Normalized Angle (0-1)) 。这意味着,旋转角度计算为0到1之间的数字,而不是度数。

    点击查看大图。

  5. 现在点击 Sprite旋转角度(Sprite Rotation Angle) 旁边的下拉箭头,并选择 动态输入(Dynamic Inputs)> 随机范围浮点(Random Range Float)。这会将 最小值(Minimum)最大值(Maximum) 字段添加到规格化角度。粒子会在生成时旋转随机的度数。

    点击查看大图。

  6. 最小值(Minimum)最大值(Maximum) 值设置为如下所示的值。

    点击查看大图。

    属性名称

    最小值(Minimum)

    0.25

    最大值(Maximum)

    0.5

  7. 因此,现在你的烟雾云相当大,但它只是在原地打转。你希望烟雾粒子在生成后就开始移动。因此,现在你需要添加一些初始速度。点击 加号(+)图标并选择 速度(Velocity)> 添加速度(Add Velocity),将 添加速度(Add Velocity) 模块添加到"粒子生成(Particle Spawn)"组。

    点击查看大图。

  8. 点击 速度(Velocity) 旁边的下拉箭头,并选择 动态输入(Dynamic Inputs)> 随机范围向量(Random Range Vector) 。这会将 最小值(Minimum)最大值(Maximum) 字段添加到速度。同样,略微的随机性可增加变化,使效果显得更自然。

    点击查看大图。

  9. 将速度 最小值(Minimum)最大值(Maximum) 值设置为如下所示的值。

    点击查看大图。

    属性名称

    最小值(Minimum)

    X: 0,Y: 0,Z: 50

    最大值(Maximum)

    X: 1,Y: 1,Z: 200

  10. 形状位置将控制Sprite生成的位置的形状和原点。你可以添加 形状位置(Shape Location) 模块,从而采用不同的形状图元生成Sprite。点击 加号(+)图标并选择 位置(Location)> 形状位置(Shape Location) ,将 形状位置(Shape Location) 模块添加到"粒子生成(Particle Spawn)"组。

    点击查看大图。

  11. 形状图元(Shape Primitive) 设为 球体(Sphere)。你可以指定半径来设置球体形状的大小。将 球体半径(Sphere Radius) 设置为 64 。确保 球体分布(Sphere Distribution) 设置为 随机(Random)

    点击查看大图。

  12. 我们用于该烟雾效果的Sprite材质使用了Sprite表,其中包含多个设计为串在一起并制作了动画的图像。如果不考虑到这种情况,渲染器就只会使用表中的第一个Sprite。你可以添加 子UV动画(SubUV Animation) 模块以解决该问题。点击"粒子生成(Particle Spawn)"的 加号(+)图标并选择 子UV(Sub UV)> 子UV动画(SubUV Animation)

    点击查看大图。

  13. 子UV动画(Sub UV Animation) 模块中,点击 子UV动画模式(SubUV Animation Mode) 的下拉菜单,并选择 线性(Linear) 。对于 开始帧(Start Frame) ,输入 0 ;对于 结束帧(End Frame) ,输入 63 。Sprite表包含8x8网格的图像,因此图像总数是64。

    点击查看大图。

粒子更新组设置

首先,你需要编辑 粒子更新(Particle Update) 组中的模块。此类行为将应用于粒子并更新每个帧。

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

    点击查看大图。

  2. 你在"粒子生成(Particle Spawn)"中添加的速度会使粒子在初始生成后就开始运动。现在,你希望粒子随着时间推移加快运动,并且你希望烟雾上升。 现在,你需要使粒子随着时间推移加快运动,并使烟雾上升。点击 粒子更新(Particle Update)加号(+)图标并选择 力(Forces)> 加速力(Acceleration Force) ,以添加"加速力(Acceleration Force)"模块。

    点击查看大图。

  3. 使 XY 值保持设置为 0 ,并使 Z 值保持设置为 500 。这会使烟雾随时间推移而进行显著的向上运动。你可以调整该设置,甚至删除该模块,具体取决于你想创建的烟雾效果的类型。

    点击查看大图。

  4. 然后点击 保存(Save) 按钮以应用并保存更改。
    保存系统

最终结果

祝贺你!你已经使用Sprite创建了一个简单的烟雾效果。

最终效果