常用视觉效果(VFX)技术是将纹理和材质渲染至面向2D摄像机的平面,这些平面称为 sprite。在以下教程中,你将设置Niagara发射器来处理sprite。当你将包含Niagara发射器的Niagara系统置于关卡中时,你会在该关卡中看到显示的效果。
操作前提:
本教程将用到 M_smoke_subUV 材质,该材质可在 初学者内容包(Starter Content) 中找到。如果你尚未添加此材质,请确保将该材质或初学者内容包添加到你的项目中。
项目设置
-
首先,在内容浏览器中新建文件夹,以便保存效果资产。确保你处于根目录中(内容目录),然后在 内容浏览器(Content Browser) 中右键单击,并选择 新建文件夹(New Folder)。给文件夹命名,比如 SpriteEffect。
若要在项目中创建多个Niagara效果,你可能需要创建名为NiagaraFX(或类似名称)的文件夹,然后为sprite效果创建子文件夹。
-
你需要创建或找到在发射器中用于sprite的材质,然后才能创建此效果。就本例而言,你将使用初学者内容包中的材质。虽然无需定位此材质或移动此材质至任何位置便可将其拉入,但某些情况下可能需要创建此材质的副本,并将其放到效果文件夹或之前创建的单独材质文件夹中。为此,请按照以下步骤操作:
- 在内容浏览器的搜索栏中键入
m_smoke
。你应当会在搜索结果中看到 M_smoke_subuv 材质。 - 若要将其副本放到另一文件夹中,只需单击该材质并将其拖到目标文件夹,然后在弹出菜单中选择 移动至此处(Move Here) 或 复制到此处(Copy Here)。移动(Moving) 它会删除其之前位置中的原始材质,并将其移动至新位置。复制(Copying) 它会在新位置创建副本,同时将原始材质保留在其原始始位置。
- 如果你想要为sprite创建自己的材质,请参见材质简介页面,以及文档中 材质(Materials) 部分的其他页面。
- 在内容浏览器的搜索栏中键入
创建系统和发射器
与在Cascade中不同,Niagara发射器和系统是独立的。当前推荐工作流将从现有发射器或发射器模板创建系统。
-
首先,在内容浏览器中点击右键以创建 Niagara系统(Niagara System),然后从显示菜单中选择 FX > Niagara系统(FX > Niagara System)。将显示Niagara系统(Niagara System)向导。
点击查看大图。
-
选择 从所选发射器新建系统(New system from selected emitters)。然后单击 下一步(Next)。
点击查看大图。
-
在 模板(Template) 下选择 简单Sprite迸发(Simple Sprite Burst)。单击 加号图标(Plus icon)(+),以将发射器添加到要添加到系统的发射器列表中。然后单击 完成(Finish)。
点击查看大图。
-
将新系统命名为 SmokeSystem。双击以在Niagara编辑器中将其打开。
-
新系统中发射器实例的默认名称为 SimpleSpriteBurst。但你可以对其重命名。在系统概览中单击发射器实例名称,该字段将转变为可编辑状态。将发射器命名为 FX_Smoke。
点击查看大图。
更改渲染器设置
-
由于发射器模块组出现在堆栈中,因此你将在本指南中浏览它们。但是,当你在渲染器中设置材质之前,预览或关卡中将不会显示任何内容。因此,首先在 系统概览(System Overview) 中选择 Sprite渲染器(Sprite Renderer),以在 选择(Selection) 面板中将其打开。
点击查看大图。
-
你可以在此处选择用于效果的材质。由于该材质是SubUV材质,因此你需要向渲染器告知图像网格中的图像数量。将下列属性设为以下值。
点击查看大图。
属性名称 值 材质(Material) M_smoke_subUV 子图像大小(Sub Image Size) X: 8.0, Y: 8.0 启用子UV混合(Sub UV Blending Enabled) 已勾选 -
将 SmokeSystem 拖到关卡中。
制作粒子效果时,最好将系统拖到关卡中。这样便可查看每一项更改并在上下文中进行编辑。你对系统所做的任何更改都将自动传播到关卡中的系统实例。
编辑发射器更新组设置
首先,你将在发射器更新组中编辑模块。这些是将应用于发射器并更新每一帧的行为。
-
在 系统概览(System Overview) 中,单击 发射器更新(Emitter Update) 组,以便在 选择(Selection) 面板中将其打开。
点击查看大图。
-
你需要创建持续的烟柱,而非一阵烟雾。单击 垃圾桶(Trashcan) 图标以删除 生成即时迸发(Spawn Burst Instantaneous) 模块。
点击查看大图。
-
单击 加号(Plus) 图标(+)并选择 生成 > 生成速率(Spawning > Spawn Rate),以将 生成速率(Spawn Rate) 模块添加到 发射器更新(Emitter Update) 组。
点击查看大图。
-
在生成速率模块中,将生成速率设置为 50。这将使我们得到一个由烟雾生成的相当大的蓬松形状。对效果而言,这是一个良好的开端。
点击查看大图。
-
现在,当你构建效果时,你需要将模拟设置为以无限循环方式运行。这使你有更多时间来评估设置如何影响效果。在 发射器状态(Emitter State) 模块中,单击 生命周期模式(Life Cycle Mode) 的下拉菜单,并选择 自身(Self)。然后,单击 循环行为(Loop Behavior) 的下拉菜单,并选择 无限(Infinite)。
点击查看大图。
粒子生成组设置
下一步,你将编辑 粒子生成(Particle Spawn) 组中的模块。这些是粒子首次生成时将应用于粒子的行为。
- 在 系统概览(System Overview) 中,单击 粒子生成(Particle Spawn) 组,以便在 选择(Selection) 面板中将其打开。
点击查看大图。
-
展开 初始化粒子(Initialize Particle) 模块。此模块将多个相关参数采集到一个模块中,从而最大程度地减少堆栈中的混乱。在 点属性(Point Attributes) 下,找到 生命周期(Lifetime) 参数。
点击查看大图。
-
生命周期(Lifetime) 参数确定了粒子在消失之前将显示多久。你需要使生命周期(Lifetime)参数中具备些许随机性,以更好地模拟真实烟雾。单击 生命周期(Lifetime) 旁的下拉箭头,并选择 动态输入 > 随机范围浮点(Dynamic Inputs > Random Ranged Float)。此操作将添加最小值和最大值字段。
点击查看大图。
-
将生命周期 最小值(Minimum) 和 最大值(Maximum) 设置为以下值。
点击查看大图。
属性名称 值 最小值(Minimum) 2.0 最大值(Maximum) 3.0 -
你需要调整sprite粒子的大小,以继续制作更逼真的烟雾效果。由于原始粒子束相当小,因此你现在需要增大其尺寸,还需要使其尺寸具备些许随机性。点击 数值 旁边的下拉菜单,然后在搜索栏中输入 随机(random)。选择 随机范围浮点(Random Range Float)。这会在数值中添加 最小(Minimum) 和 最大(Maximum) 字段。如下设置参数。
点击查看大图。
-
设置Sprite大小的 最小值(Minimum) 和 最大值(Maximum),如下所示。
点击查看大图。
属性名称 值 最小值(Minimum) 75.0 最大值(Maximum) 200.0 - 于是,你现在已拥有一团更大的烟雾。效果也越来越逼真了。现在,你需要添加一些旋转,使粒子形状产生更多变化。此外,你还需要向旋转添加随机性,以增加变化。将 Sprite旋转模式(Sprite Rotation Mode) 旁的下拉菜单设置成 Direct Normalized Angle (0-1)。下一步,单击 Sprite旋转角度(Sprite Rotation Angle) 旁的向下箭头,并选择 动态输入 > 将角度规范化为角度(Dynamic Inputs > Normalized Angle to Degrees)。此操作将添加 规范化角度(Normalized Angle) 字段。这意味着旋转角度会计算成0到1之间的小数,而不是角度。
- 现在,单击 Sprite旋转角度(Sprite Rotation Angle) 旁的下拉箭头,并选择 动态输入>随机范围浮点(Dynamic Inputs>Random Ranged Float)。此操作将把 最小值(Minimum) 和 最大值(Maximum) 字段添加到规范化角度。设置各个值,如下所示。当粒子生成时,它们会旋转随机旋转一定的度数。
-
设置 最小值(Minimum) 和 最大值(Minimum),如下所示。
属性名称 值 最小值(Minimum) 1.0 最大值(Maximum) 2.0 -
于是,你现在已拥有一团相当大的烟雾,但它只是在原地旋转。你希望烟雾粒子在其生成时就开始移动。因此,你需要添加一些初始速度。单击 加号(Plus sign) (+)图标并选择 速度 > 添加速度(Velocity > Add Velocity),以将 添加速度(Add Velocity) 模块添加到粒子生成组。
点击查看大图。
-
单击 速度(Velocity) 旁的下拉箭头,并选择 动态输入 > 随机范围浮点(Dynamic Inputs > Random Ranged Vector)。此操作将把 最小值(Minimum) 和 最大值(Maximum) 字段添加到速度。需要再次指出的是,些许随机性可增强效果的多样性和自然性。
点击查看大图。
-
设置速度 最小值(Minimum) 和 最大值(Maximum),如下所示。
点击查看大图。
属性名称 值 最小值(Minimum) X: 0, Y: 0, Z: 50 最大值(Maximum) X: 1, Y: 1, Z: 200 -
球体位置控制sprite生成所在位置的形状和原点。通过添加 球体位置(Sphere Location) 模块,你可以使sprite以球体形状生成,并可以设置半径以决定大小。单击 加号(Plus sign) (+)图标并选择 位置 > 球体位置(Location > Sphere Location),以将 球体位置(Sphere Location) 模块添加到粒子生成部分。
点击查看大图。
-
球体位置控制sprite生成所在位置的形状和原点。通过添加 球体位置(Sphere Location) 模块,你可以使sprite以球体形状生成,并可以指定半径以设置球体形状的大小。将 球体半径(Sphere Radius) 设置为 64。确保将 球体分布(Sphere Distribution) 设置为 随机(Random)。
点击查看大图。
-
我们在这个烟雾效果中使用的sprite材质会用到一张sprite表,它拥有多张可以按序播放的图片。如果你不手动设置,你的渲染器只会用到表格中的第一张sprite。你可以添加一个 SubUV动画(SubUV Animation) 模块来解决这个问题。点击粒子生成的 加号(+)图标并选择 Sub UV > SubUV动画(Sub UV > SubUV Animation)。
点击查看大图。
-
在 子UV动画(Sub UV Animation) 模块中,点击 子UV动画模式(SubUV Animation Mode) 下拉菜单,选择 线性(Linear)。在 帧数(Number of Frames) 中输入 64。Sprite表采用8x8的图片网格,所以图片总数是64。
点击查看大图。
粒子更新组设置
现在,你将在粒子更新组中更新模块。这些行为将应用于粒子并更新每一帧。
-
在系统概览中,单击 粒子更新(Particle Update) 组,以在选择面板中将其打开。
点击查看大图。
-
在粒子生成中添加的速度会使粒子在它们初始生成时产生一些运动。现在,你需要随着时间推移而添加运动,并希望烟雾升腾。 现在,你将随着时间推移而添加运动,并使烟雾升腾。单击 粒子更新(Particle Update) 的 加号(Plus sign) (+)图标,并选择 力 > 加速力(Forces > Acceleration Force),以添加加速力模块。
点击查看大图。
-
由于Niagara将新模块添加到组堆栈底部,因此你会收到一条显示“模块有未满足的依赖关系(The module has unmet dependencies)”的错误消息。这是因为加速力模块放置在 解算力和速度(Solve Forces and Velocity) 模块之后。单击 解决问题(Fix Issue) 按钮以移动模块。
点击查看大图。
-
将 X 和 Y 值设置为 0,并将 Z 值设置为 500。此操作将使烟雾随着时间推移而明显向上运动。你可以调整此设置,甚至移除此模块,具体取决于希望创建的烟雾效果类型。
点击查看大图。
-
如果你希望能够在系统中重复使用烟雾发射器,你可以将其另存为单独的资源。单击 齿轮(Gear) 图标以打开 发射器设置(Emitter Settings) 菜单,然后选择 从其中创建资源(Create Assset From This)。其结果为独立的Niagara发射器资源。
点击查看大图。
-
然后,单击 保存(Save) 按钮以应用并保存更改。
最终结果
祝贺你!你已使用Sprite创建了简单的烟雾效果。