在本教程中,你将学习如何创建一个火焰视觉效果(VFX),并把它添加到关卡中的陷阱上。
开始之前
请确保你已经理解如何创建材质,相关内容在本系列中的创建材质和材质实例模块中已有讲解。
本教程将使用以下资产:
BP_FireTrap蓝图
Niagara概述
Niagara VFX系统是在虚幻引擎中创建视觉效果(VFX)的主要工具。 该系统包含多种预制的视觉特效,可以进行自定义并直接放置到关卡中。 你也可以创建自己的视觉效果,以实现完全自定义的效果。
如需详细了解轻Niagara,请参阅Niagara概览(Niagara Overview)文档。
创建Niagara系统
现在,你将创建第一个使用常规发射器的Niagara系统。 请按下列步骤创建新的Niagara系统:
进入内容浏览器,导航到Content > AdventureGame > Artist文件夹。 在Artist文件夹右键单击,选择新建文件夹。 将其命名为VFX。
在新的VFX文件夹中,在资产区域任意位置右键单击,进入FX,选择Niagara系统。
此时就会打开创建Niagara系统窗口。 在这里,你可以选择一个发射器或系统作为视觉效果的基础。
如果你选择的是一个系统,则会创建一个包含一个或多个发射器的Niagara系统。 如果你选择一个发射器,系统会创建一个只包含单个发射器的Niagara系统。
选择悬浮微粒(Hanging Particulates)发射器并点击创建。
将该资产命名为NS_HangingParticles并打开。
在NS_HangingParticles窗口中,你会看到两个节点:NS_HangingParticles和HangingParticulates。
NS_HangingParticles节点是系统节点,其中列出了整个系统的属性,以及系统生成(System Spawn)和系统更新(System Update)这两个阶段。你可以在这些阶段中添当虚幻引擎创建系统时执行的模块(Spawn),以及当系统处于活动状态时执行的模块(Update)。
HangingParticulates节点就是发射器。 该节点用于定义粒子生成和渲染的方式。
在系统概览(System Overview)图表(节点所在区域)中的任意位置右键单击,就可以为该系统添加新的发射器。 你也可以使用快捷键E来添加新的发射器。
添加新的发射器会打开将发射器添加到你的系统(Add Emitter to your System)窗口。 这个窗口与之前创建系统时看到的窗口类似,但这里只会显示可用的基础发射器(因为你已经创建了该系统)。 在本示例中,直接关闭窗口,不添加其他发射器。
HangingParticulates发射器自带预设模块,用于生成类似细小灰尘颗粒的粒子视觉效果。 在窗口左上角,你可以在预览面板中看到该效果。
现在,你将提高该发射器的生成速率,以增加生成的粒子数量。 执行以下步骤:
选择HangingParticulates节点。
在细节面板中,找到生成速率类别。
将SpawnRate字段设置为250。
你也可以在发射器上选择生成速率模块,这样细节面板中只会显示该模块相关的选项。
在预览面板中,你现在可以看到渲染出的粒子数量大幅增加。
在窗口底部可以看到一个用于为系统制作动画的时间轴。 你可以点击暂停或播放按钮来控制预览。
现在你可以将该系统添加到关卡中,在实际场景中查看效果。 执行以下步骤:
打开内容浏览器,导航至AdventureGame > Artist > VFX文件夹,这里是你创建NS_HangingParticles资产的位置。
将NS_HangingParticles资产拖入场景中。 现在你将在关卡中看到模拟运行的视觉效果。
创建火焰特效
在本节中,你将为陷阱创建一个火焰特效。
创建材质
要创建一个动画火焰效果,你需要使用一张纹理,该纹理包含一系列静态图片,按顺序播放时就会形成火焰动画。 这种类型的纹理称为SubUV纹理,可以通过材质或Niagara发射器来实现动画效果。
首先,你将使用提供的火焰纹理创建一个材质。 执行以下步骤:
打开内容浏览器,并导航至AdventureGame > Artist > Materials文件夹。
在任意位置右键单击并创建一个材质。
将此资产命名为M_Fire_SubUV_Simple并将其打开。
要设置材质,请执行以下操作:
在细节面板的材质分类下进行设置。
将混合模式(Blend Mode)设置为半透明(Translucent)。
将着色模型(Shading Model)设置为无光照(Unlit)。
在材质编辑器中右键单击,创建一个ParticleSubUV节点。
选择Particle SubUV节点,然后在细节面板中将纹理设置为T_Fire_SubUV文件。
从Particle SubUV节点拖出RGB引脚,并添加一个Multiply节点(在Math分类下)。
从Multiply节点拖出输出引脚,并连接到M_Fire_SubUV_Simple节点的自发光颜色(Emissive Color)输入端。
在Particle SubUV节点下方的空白区域右键单击,在粒子类别下添加一个Particle Color节点。
拖出RGB输出引脚,并将其连接到Multiply节点的B输入引脚。
从Particle SubUV节点拖出R输出引脚,并添加一个新的Multiply节点。
从Particle Color节点拖出A输出引脚,并将其连接到新建Multiply节点的B输入引脚。
从新建的Multiply节点拖出输出引脚,并添加一个Clamp节点。
从Clamp节点拖出输出引脚,并添加一个Depth Fade节点。
在Depth Fade节点上,将渐变距离(Fade Distance)设置为60。
从Depth Fade节点拖出输出引脚,并连接到M_Fire_SubUV_Test节点的不透明度(Opacity)输入引脚。
此时材质的预览效果应类似如下所示:
该材质会将ParticleSubUV纹理的形状作为自发光颜色,并使用来自Niagara系统的粒子颜色(Particle Color)进行着色。 透明度通过粒子颜色的Alpha(透明度)值来控制,数值范围为0-1。 最后,我们使用DepthFade节点来隐藏与关卡中附近几何体发生重叠(裁剪)的粒子。
创建Niagara系统
接下来,你将创建一个Niagara系统来生成火焰视觉效果。 在本示例中,火焰效果将使用轻量级(无状态)发射器。 相比传统的(有状态)发射器,这些发射器的性能得到了优化,但它们只能使用特定的一组模块。
如需详细了解轻量级发射器,请参阅《Niagara轻量级发射器概览》(Niagara Lightweight Emitters Overview)文档。
按照以下步骤创建一个新的Niagara系统:
前往内容浏览器,并导航至AdventureGame > Artist > VFX文件夹。
在任意位置右键单击,进入FX,选择Niagara系统。
在列表中选择最小轻量级(Minimal Lightweight),然后点击创建。 注意,你也可以使用窗口顶部的搜索框来查找该系统。
将该资产命名为NS_LW_Fire并打开。
接下来,你需要设置该发射器的各个模块。 执行以下步骤:
选择最小(Minimal)发射器节点。
在细节面板的发射器状态(Emitter State)分类下,将循环时长(Loop Duration)改为5.0秒。
在Spawn Burst Instantaneous分类下:
在即时生成喷发(Spawn Burst Instantaneous)标题旁,点击类型(Type)下拉菜单,并将其改为Rate。 这一步会将即时生成喷发模块转换为生成速率模块。
将生成速率字段的类型改为绑定(Binding)。
进入窗口左下角的用户参数面板。 点击用户参数(User Parameters)类别旁边的(+)按钮,添加一个新的参数。
选择Make New > Common > float。
将该参数命名为FireSpawnRate。
将FireSpawnRate参数的值改为20。
选择最小发射器,然后在细节面板中,通过下拉菜单将生成速率字段的值设置为FireSpawnRate。
在仍然选中该发射器的情况下,在细节面板中进入初始化粒子(Initialize Particle)分类,并将生命周期(Lifetime)字段改为5.0秒。
在发射器上,点击模拟(Simulate)阶段旁边的(+)按钮,并添加形状位置(Shape Location)模块。
当你添加一个新的模块时,它会默认被选中,此时细节面板只会显示与该模块相关的属性。 你可以随时选择发射器来显示所有模块的属性,或者只选择某个模块,这样细节面板中就只会显示该模块的属性。
选择新建的模块,在细节面板中将形状图元(Shape Primitive)设置为平面(Plane)。 这样会将火焰粒子分布在一个平面上。 如果需要,你可以缩减平面尺寸(Plane Size),不过在本教程中,你可以将其保持在100 × 100。
在发射器的模拟阶段下,添加一个添加速度(Add Velocity)模块。
选择该模块,并在细节面板中进行设置:
将速度设置为非均匀范围(Non-uniform Range)。
将速度字段中的最小 Z设置为5,最大 Z设置为10。这样粒子就会缓慢向上移动。
在发射器的模拟阶段下,添加一个缩放颜色(Scale Color)模块。
选择该模块,并在细节面板中将缩放类型设置为颜色范围(Color Range)。
点击Min颜色字段,并将Hex sRGB改为FFA91300。
点击Max颜色字段,并将Hex sRGB改为FF4747FF。
这样会根据设置为每个粒子赋予对应的颜色。
在发射器的模拟部分添加缩放Sprite尺寸(Scale Sprite Size)模块,并将范围设置为5到8。 这一步会调整粒子的尺寸,使其明显变大。
在发射器中,在模拟分类下添加一个子UV动画(Sub UV Animation)模块。
在发射器中,在渲染(Render)分类下选择Sprite渲染器模块。
在细节面板中,更新以下字段:
将材质更改为你创建的M_Fire_SubUV_Simple材质。
将对齐方式( Alignment)改为速度对齐(Velocity Aligned)。
将朝向模式(Facing Mode)设置为面向摄像机(Face Camera)。
在子UV类别下,将子图像大小设置为6 × 6。
之所以将子图像大小(Sub Image Size)设置为6 × 6,是因为T_Fire_SubUV纹理包含6行和6列。
现在你可以看到新火焰特效的预览了!
将火焰效果添加到火焰陷阱
最后,你需要把火焰效果添加到陷阱蓝图中,这样当陷阱处于激活状态时,每个陷阱都会播放火焰效果。 执行以下步骤:
打开内容浏览器,并导航至AdventureGame > Designer > Traps文件夹。
打开BP_TrapFire蓝图。
在组件面板中,选择基础组件,点击添加,添加Niagara粒子系统组件。
先选择基础组件,这样添加的Niagara组件就会成为基础组件的子组件。 这是一个重要步骤,可以让火焰效果根据基础组件的大小进行缩放。
选择Niagara组件,在细节面板中的Niagara区域,将Niagara系统资产设置为你创建的NS_LW_Fire。
在蓝图编辑器窗口中,找到事件图表选项卡。 当前效果如下所示:
在顶部那一行的Stop节点之前,你需要添加两个新的节点来停用火焰效果。
按住ALT并左键单击Stop与Set Material节点之间的连线,即可删除它们之间的连接。
在节点之间留出一些空间。
在中间区域右键单击,添加一个Deactivate Niagara节点。 注意:该节点的名称来自你之前添加的Niagara组件;例如Deactivate [Component]。因此实际名称可能会与此处显示的略有不同。
将Set Material节点连接到Deactivate Niagara节点。
将Deactivate Niagara节点连接到Stop Audio节点。
现在你将对下面一行重复这些步骤,在那里会执行设置材质(Set Material)和播放音频(Play Audio)。
按照之前相同的步骤操作,但这次添加的是Activate Niagara节点。
编译并保存你的蓝图。
你的事件图表现在应该如下所示:
接下来,你将添加一个功能,以便在陷阱蓝图中修改之前创建的FireSpawnRate Niagara用户参数。 在这个示例中,你修改的是火焰生成速率,但这种技术同样可以用于修改Niagara系统中的任意用户参数。
要修改用户参数,请执行以下操作:
在蓝图编辑器中,前往构造脚本(Construction Script)选项卡。
创建一个新的浮点FireSpawnRate。
选择新创建的变量,并进行以下设置:
将类别更改为Setup。 这样FireSpawnRate就会和其他变量一起归类到Setup类别下。
将默认值改为10。 这样可以确保关卡中每个新的火焰陷阱实例在开始时就会显示粒子效果。
启用可编辑实例(Instance Editable)以将该变量设为公开变量。
在图表中,从Parent: Construction Script节点的exec引脚拖出,并添加Set Niagara Variable (Float)节点。 在此节点上:
在“In Variable Name”文本框中输入FireSpawnRate。 这里指的是你在Niagara系统中创建的参数。 请确保该名称的拼写与Niagara系统中的完全一致。
从In Value引脚拖出,并添加一个Get FireSpawnRate节点。 这里指的是你在该蓝图中创建的变量。
拖出Target引脚并添加Get Niagara节点,该节点引用你在蓝图中添加的Niagara组件。
保存(Save)并 编译(Compile) 蓝图。 你的构造脚本图表现在应该如下图所示:
现在就可以运行游戏,查看火焰效果了! 由于你已经将火焰效果添加到陷阱蓝图资产中,因此无需在关卡中单独添加视觉效果,也不需要手动修改任何陷阱。 陷阱会自动获得火焰效果。
隐藏火焰陷阱的基础网格体
如果只希望在游戏中看到火焰效果,而不显示火焰陷阱的方形网格体,可以执行以下操作:
返回
BP_TrapFire蓝图。在组件面板中,选择TrapBase。
在细节面板中进入渲染类别,并启用在游戏中隐藏(Hidden in Game)。
编译(Compile)并保存(Save)此蓝图。
现在当你运行游戏时,你只会在关卡地面上看到火焰效果。
修改火焰生成速率
你可以使用之前创建的FireSpawnRate变量来调整每个陷阱生成的火焰粒子数量。
要修改火焰的生成速率,请执行以下操作:
在大纲视图 面板中,使用搜索框查找BP_FireTrap。 另外,你也可以展开Room2文件夹,以查看Room 2中的所有火焰陷阱。
选择所有BP_FireTrap Actor。
在细节面板的Setup类别下,将火焰生成速率(Fire Spawn Rate)字段的值改为20。
你会发现,生成的火焰粒子数量会根据你输入的数值而变化。 你可以不断尝试不同的值,直到找到适合你游戏的效果。
继续尝试调整你的特效,看看还能创造出什么效果! 如果想了解更多内容,请参阅创建视觉效果文档。
示例项目
以下提供了一个最终示例项目的下载链接,你可以使用本教程系列构建该项目。 你可以使用此示例项目预览最终成品,也可以将其作为参考,了解我们如何构建和设计该项目。
下一步
恭喜你完成了美术师专题教程系列! 在本教程中,你学习了如何使用材质、后期处理效果、光照、音频以及Niagara视觉效果,执行关卡中的美术创作。
如果你有兴趣将项目打包为独立程序以进行测试和共享,请参阅以下文档: