Unity学习笔记 Vol.72 使用 Visual Effects Graph 渲染粒子
摘要

在本节中,我们将介绍在Unity中使用Visual Effects Graph渲染粒子的一些基础知识。我们将学习什么是Visual Effect Graph(VFX Graph)工具,以及它如何使用,能制作出什么内容,我们还将了解在Unity中入门视觉特效制作时,需要知道的基础概念。如果你是名特效艺术家,想要在Unity中制作高性能视觉特效,或者你是名老用户,希望明确VFX Graph与旧版工具,如现有粒子系统的不同,关注我就对了。详细教程及项目下载链接请参考官方视频。

教程
在讨论Unity的视觉特效时,我们一般讨论的是一个在2D、3D空间生成像素点的系统,这些点又称作"粒子“。我们可以修改系统的属性,确定粒子的生成数量,移动方式和渲染方式。

粒子系统可以为游戏制作各式视觉特效,比如烟雾、火焰、雨水或爆炸,你见到的许多游戏视觉特效,都是用粒子系统制作的。

要在Unity中制作视觉特效,我们可以使用内置的粒子系统,或者VFX Graph。

VFX Graph是一个节点式工具,具备强大、易用的使用方法,用以制作实时视觉特效。

VFX Graph将许多计算转移到了GPU,允许制作上百万个粒子,模拟巨大、复杂又耗能极高的特效,VFX Graph即能用于高清渲染管线和通用渲染管线,VFX Graph作为高清渲染管线的一部分已经预装在了管线中,但在通用渲染管线里,需要先用Package Manager安装。

选择Window > Package Manager,选择VFX Graph点击Install将其添加到项目中。

我们将使用Visual Effect Spaceship Demo场景,Spaceship Demo展示了许多种可用VFX Graph制作的效果。

我们可在Project窗口新建视觉特效,选择Create > Visual Effects > Visual Effect Graph。

每个VFX Graph将作为一个视觉特效资源储存在项目中,方便重复使用、指定到项目中,不用在场景中选中特效便能编辑效果。

选中资源时,我们能在检视器中查看特效的预览,能看到在创建新的VFX Graph时,系统会生成一个默认效果。

我们可在GameObject上添加Visual Effect组件,将特效添加到场景中。

或者选择创建菜单中的Visual Effects > Visual Effect。

在检视器中将VFX资源指定到组件内。

也能直接将VFX资源拖到层级或场景视图中,系统会自动创建起带有组件的对象,创建好特效后,再来看看如何在VFX Graph中制作特效。

双击VFX Graph资源打开图表,能看到图中已经有渲染视觉特效所需的文本框、功能块,但是为了学习,我们删去这部分,从零开始制作视觉特效。

在VFX Graph中制作粒子特效需要四种文本框,一个Spawn文本框。

一个Initialize文本框。


Update文本框和Output文本框。
首先讲Spawn文本框,Spawn文本框决定了特效的 初始化方法,控制系统的启动时间与方式,按下空格键。

在Spawn框内加入功能块,来控制粒子系统的运行时间,我们希望效果能每过几秒生成个粒子,那添加个Periodic Burst功能块,将Count设为1,Delay为2。

设置完后,新建Initialize文本框,设定粒子的初始属性,一开始先使用简单的Set Velocity功能块,让粒子随时间向上运动。

接着创建Update文本框,Update文本框将用于控制每帧上的粒子表现,目前不必更改。

最后,我们需要使用Output文本框来渲染粒子,Output文本框确定了粒子的 类别、朝向及使用的着色器类型,在新建的Output文本框中设定将粒子渲染成Quad(四边形)。

再看到场景,我们现在每隔几秒会生成一个向上运动的粒子,目前Output文本框使用了临时的粒子图像作为纹理。

我们暂时把它改为另一种粒子纹理,粒子还有点小。

在Initialize文本框新加Set Size功能块,稍微放大点大小。

这下粒子更加明显了。

但一移动相机,粒子就会变扁,这是因为粒子默认会在Transform的前方向上被渲染。

我希望粒子能一直正对摄像机,那在Output文本框中新加一个 Face Camera Position功能块。

这下不论摄像机从哪看,粒子会一直面朝着摄像机,这是种常用的粒子技术,渲染纹理的四边形会一直面对摄像机,便能制作出一种高性能的3D对象效果,VFX Graph工作流有一个优点,同个资源可制作出不同的特效,部分属性可显露在检视器中。

在图表中,为黑板新建一个属性,称为Velocity,设定其为Exposed,把它拖入图表,连接到Velocity功能块上,接着新加Set Color功能块,在黑板中新建对应属性。

这下我们就能在检视器中调整属性、修改特效的外观了,因为暴露出的属性会覆写VFX Graph的属性。

我们可用同个特效资源创建新实例,制作出同个特效的变体。

最后,我们来让粒子能在生命周期中淡入淡出,在Initialize文本框中新加Set Lifetime功能块。

要想在生命周期间的每帧上修改alpha,需要在Update文本框中添加Set Alpha Life功能块。

这下所有粒子都会淡入淡出了,在短短几分钟内,我们就使用这些资源制作出一个基本的视觉特效,希望你了解了使用VFX Graph是多么简单,在Unity中设计、制作视觉特效有多么轻松。在学习了本节里的技术后,再多多尝试不同的功能块,你应该就能在自己的项目中制作出帅气的视觉特效了。