在Niagara中创建Sprite粒子效果

此文档将介绍使用Niagara创建Sprite粒子效果的方法。

Choose your operating system:

Windows

macOS

Linux

前置主题

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

常用视觉效果(VFX)技术是将纹理和材质渲染至面向2D摄像机的平面,这些平面称为 sprite 。在以下教程中,你将设置Niagara发射器来处理sprite。当你将包含Niagara发射器的Niagara系统置于关卡中时,你会在该关卡中看到显示的效果。

操作前提:

本教程将用到 M_smoke_subUV 材质,该材质可在 初学者内容包(Starter Content) 中找到。如果你尚未添加此材质,请确保将该材质或初学者内容包添加到你的项目中。

项目设置

  1. 首先,在内容浏览器中新建文件夹,以便保存效果资产。确保你处于根目录中(内容目录),然后在 内容浏览器(Content Browser) 中右键单击,并选择 新建文件夹(New Folder) 。给文件夹命名,比如 SpriteEffect

    若要在项目中创建多个Niagara效果,你可能需要创建名为NiagaraFX(或类似名称)的文件夹,然后为sprite效果创建子文件夹。

  2. 你需要创建或找到在发射器中用于sprite的材质,然后才能创建此效果。就本例而言,你将使用初学者内容包中的材质。虽然无需定位此材质或移动此材质至任何位置便可将其拉入,但某些情况下可能需要创建此材质的副本,并将其放到效果文件夹或之前创建的单独材质文件夹中。为此,请按照以下步骤操作:

    1. 在内容浏览器的搜索栏中键入 m_smoke 。你应当会在搜索结果中看到 M_smoke_subuv 材质。

    2. 若要将其副本放到另一文件夹中,只需单击该材质并将其拖到目标文件夹,然后在弹出菜单中选择 移动至此处(Move Here) 复制到此处(Copy Here) 移动(Moving) 它会删除其之前位置中的原始材质,并将其移动至新位置。 复制(Copying) 它会在新位置创建副本,同时将原始材质保留在其原始始位置。

    3. 如果你想要为sprite创建自己的材质,请参见 材质简介 页面,以及文档中 材质(Materials) 部分的其他页面。

创建系统和发射器

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

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

    点击查看大图。

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

    点击查看大图。

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

    点击查看大图。

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

    Name System

  5. 新系统中发射器实例的默认名称为 SimpleSpriteBurst 。但你可以对其重命名。在系统概览中单击发射器实例名称,该字段将转变为可编辑状态。将发射器命名为 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 拖到关卡中。

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

编辑发射器更新组设置

首先,你将在发射器更新组中编辑模块。这些是将应用于发射器并更新每一帧的行为。

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

    点击查看大图。

  2. 你需要创建持续的烟柱,而非一阵烟雾。单击 垃圾桶(Trashcan) 图标以删除 生成即时迸发(Spawn Burst Instantaneous) 模块。

    点击查看大图。

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

    点击查看大图。

  4. 在生成速率模块中,将生成速率设置为 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) 参数。

    点击查看大图。

  3. 生命周期(Lifetime) 参数确定了粒子在消失之前将显示多久。你需要使生命周期(Lifetime)参数中具备些许随机性,以更好地模拟真实烟雾。单击 生命周期(Lifetime) 旁的下拉箭头,并选择 动态输入 > 随机范围浮点(Dynamic Inputs > Random Ranged Float) 。此操作将添加最小值和最大值字段。

    点击查看大图。

  4. 将生命周期 最小值(Minimum) 最大值(Maximum) 设置为以下值。

    点击查看大图。

    属性名称

    最小值(Minimum)

    2.0

    最大值(Maximum)

    3.0

  5. 现在,你将调整sprite粒子大小,以继续制作更逼真的烟雾效果。由于原始粒子束相当小,因此你现在需要增大其尺寸。此外,你还需要使其尺寸具备些许随机性,这样sprite粒子便会重叠,并产生更加一致的烟雾效果。 在 Sprite属性(Sprite Attributes) 下,找到 Sprite大小(Sprite Size) 参数,并确保启用它。单击 Sprite大小(Sprite Size) 旁的下拉箭头,并选择 动态输入 > 来自浮点的矢量2D(Dynamic Inputs > Vector 2D From Float) 。这会将Sprite大小 X Y 字段替换为单个 值(Value) 字段。

    点击查看大图。

  6. 下一步,你需要添加另一个动态输入以添加随机性。单击 值(Value) 旁的下拉箭头,并在搜索栏中键入 统一(uniform) 。选择 随机范围浮点(Random Ranged Float) 。此操作将把 最小值(Minimum) 最大值(Maximum) 字段添加到该值。设置各个值,如下所示。

    点击查看大图。

  7. 设置Sprite大小的 最小值(Minimum) 最大值(Maximum) ,如下所示。

    点击查看大图。

    属性名称

    最小值(Minimum)

    75.0

    最大值(Maximum)

    200.0

  8. 于是,你现在已拥有一团更大的烟雾。效果也越来越逼真了。现在,你需要添加一些旋转,使粒子形状产生更多变化。此外,你还需要向旋转添加随机性,以增加变化。将 Sprite旋转模式(Sprite Rotation Mode) 旁的下拉菜单设置成 Direct Normalized Angle (0-1) 。下一步,单击 Sprite旋转角度(Sprite Rotation Angle) 旁的向下箭头,并选择 动态输入 > 将角度规范化为角度(Dynamic Inputs > Normalized Angle to Degrees) 。此操作将添加 规范化角度(Normalized Angle) 字段。这意味着以度数为单位的旋转角度将转换为0与1之间的小数。

    点击查看大图。

  9. 现在,单击 规范化角度(Normalized Angle) 旁的下拉箭头,并选择 动态输入>随机范围浮点(Dynamic Inputs>Random Ranged Float) 。此操作将把 最小值(Minimum) 最大值(Maximum) 字段添加到规范化角度。设置各个值,如下所示。当粒子生成时,它们会旋转随机旋转一定的度数。

    点击查看大图。

  10. 设置最小值和最大值,如下所示。

    点击查看大图。

    属性名称

    最小值(Minimum)

    1.0

    最大值(Maximum)

    2.0

  11. 于是,你现在已拥有一团相当大的烟雾,但它只是在原地旋转。你希望烟雾粒子在其生成时就开始移动。因此,你需要添加一些初始速度。单击 加号(Plus sign) ( + )图标并选择 速度 > 添加速度(Velocity > Add Velocity) ,以将 添加速度(Add Velocity) 模块添加到粒子生成组。

    点击查看大图。

  12. 单击 速度(Velocity) 旁的下拉箭头,并选择 动态输入 > 随机范围浮点(Dynamic Inputs > Random Ranged Vector) 。此操作将把 最小值(Minimum) 最大值(Maximum) 字段添加到速度。需要再次指出的是,些许随机性可增强效果的多样性和自然性。

    点击查看大图。

  13. 设置速度 最小值(Minimum) 最大值(Maximum) ,如下所示。

    点击查看大图。

    属性名称

    最小值(Minimum)

    X: 0, Y: 0, Z: 50

    最大值(Maximum)

    X: 1, Y: 1, Z: 200

  14. 球体位置控制sprite生成所在位置的形状和原点。通过添加 球体位置(Sphere Location) 模块,你可以使sprite以球体形状生成,并可以设置半径以决定大小。单击 加号(Plus sign) ( + )图标并选择 位置 > 球体位置(Location > Sphere Location) ,以将 球体位置(Sphere Location) 模块添加到粒子生成部分。

    点击查看大图。

  15. 球体位置控制sprite生成所在位置的形状和原点。通过添加 球体位置(Sphere Location) 模块,你可以使sprite以球体形状生成,并可以指定半径以设置球体形状的大小。将 球体半径(Sphere Radius) 设置为 64 。确保将 球体分布(Sphere Distribution) 设置为 随机(Random)

    点击查看大图。

  16. 我们在这个烟雾效果中使用的sprite材质会用到一张sprite表,它拥有多张可以按序播放的图片。如果你不手动设置,你的渲染器只会用到表格中的第一张sprite。你可以添加一个 SubUV动画(SubUV Animation) 模块来解决这个问题。点击粒子生成的 加号 ( + )图标并选择 Sub UV > SubUV动画(Sub UV > SubUV Animation)

    点击查看大图。

  17. 子UV动画(Sub UV Animation) 模块中,点击 子UV动画模式(SubUV Animation Mode) 下拉菜单,选择 线性(Linear) 。在 帧数(Number of Frames) 中输入 64 。Sprite表采用8x8的图片网格,所以图片总数是64。

    点击查看大图。

粒子更新组设置

现在,你将在粒子更新组中更新模块。这些行为将应用于粒子并更新每一帧。

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

    点击查看大图。

  2. 在粒子生成中添加的速度会使粒子在它们初始生成时产生一些运动。现在,你需要随着时间推移而添加运动,并希望烟雾升腾。 现在,你将随着时间推移而添加运动,并使烟雾升腾。单击 粒子更新(Particle Update) 加号(Plus sign) ( + )图标,并选择 力 > 加速力(Forces > Acceleration Force) ,以添加加速力模块。

    点击查看大图。

  3. 由于Niagara将新模块添加到组堆栈底部,因此你会收到一条显示"模块有未满足的依赖关系(The module has unmet dependencies)"的错误消息。这是因为加速力模块放置在 解算力和速度(Solve Forces and Velocity) 模块之后。单击 解决问题(Fix Issue) 按钮以移动模块。

    点击查看大图。

  4. X Y 值设置为 0 ,并将 Z 值设置为 500 。此操作将使烟雾随着时间推移而明显向上运动。你可以调整此设置,甚至移除此模块,具体取决于希望创建的烟雾效果类型。

    点击查看大图。

  5. 如果你希望能够在系统中重复使用烟雾发射器,你可以将其另存为单独的资源。单击 齿轮(Gear) 图标以打开 发射器设置(Emitter Settings) 菜单,然后选择 从其中创建资源(Create Assset From This) 。其结果为独立的Niagara发射器资源。

    点击查看大图。

  6. 然后,单击 保存(Save) 按钮以应用并保存更改。

    Save System

最终结果

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

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消