Unity VFX -- (5)VFX Graph基础
在Unity中,还有一种完全不同的创建VFX的工作流,VFX Graph。VFX Graph能够生成出和粒子系统相同或更好的效果。

VFX Graph和粒子系统不同之处

VFX Graph的优点
VFX Graph能够同时处理百万级别的粒子,而粒子系统同时能处理的粒子数要小于VFX Graph。
VFX Graph产生处更加复杂的效果,比如开头的那个精灵,对于粒子系统来说几乎是不可能实现的。
VFX Graph的缺点
VFX Graph对于初学者来说,上手难度相比于粒子系统来说更大。
VFX Graph有更严格的硬件需求,在部分设备上可能无法使用。
VFX Graph运行在GPU上,Unity的物理计算被放到了CPU上,因此VFX Graph的粒子不能和应用的其它物理效果进行交互(比如和地面产生碰撞)。粒子系统是跑在CPU上的,因此它们能够和基于物理的(physics-based)组件进行交互。
VFX Graph和粒子系统该如何选
如果我们的经验很丰富并且需要创建出非常复杂的效果,或者效果需要百万级别的粒子支撑,可以选择VFX Graph。
如果我们并非专家,并且只想创建出一些简单的效果,这些效果能跑在所有设备上,或者效果需要和场景中其它基于物理的物体进行交互,则使用粒子系统。
下面两张图是一个天气效果的对比,这个效果需要模拟的粒子数量是100万个,分别用粒子系统和VFX Graph来实现。


摆放一个VFX Graph特效到场景中
1. 将前面笔记中所制作的环境粒子关闭掉(Inspector中设置为inactive即可)。
2. 在Assets -> CreativeCore_VFX -> VFX -> Samples中,拖动天气VFX Graph预制体中的一个(案例选的是Snow_VFXGraph_Prefab.prefab)到Heirarchy中。
3. 将这个新添加的物体位置移动到空中,让场景看起来像是在下雨或下雪。

1. 选中VFX Graph物体的情况下,定位到它的Visual Effect组件,这个组件的图标是一个小灯。
2. 选择Edit按钮打开VFX Graph窗口


在开始编辑VFX Graph之前,我们可以先尝试着在编辑器区域进行移动导览,熟悉一下。和Shader Graph或者动画状态机编辑器类似,VFX Graph中主要的导览方式有:
平移(Pan): 按住鼠标中间并拖动,或者按住Alt(Windows)或Option(MAC),点击鼠标并拖动。
缩放(Zoom): 滚动鼠标滚轮。
聚焦和放大(Focus and zoom in):选中一个元素按F键。
适应窗口(Fit to window):按A键。

浏览VFX Graph上下文
Spawn Context
第一个上下文,控制粒子的生成,和粒子系统的Emission模块功能类似。

1. 调整Rate属性,让VFX Graph版本的特效和之前用粒子系统做的天气特效的Rate一致。
这里的spawn rate可以设置到一个很大的值,同时对FPS影响较小。
Initialize Particle Context
初始化粒子上下文控制粒子最初在哪里出现,以及如何出现。这个上下文包含了许多粒子系统主模块中的相同的属性,包括粒子的初始大小,形状,速度,生命周期和最大数量等。它也包含了粒子系统中Shape的等价属性,定义了粒子产生的容器的形状。

Update Particle Context
更新粒子上下文控制着粒子从产生到消失期间粒子的变化。这个更新操作每一帧都会运行。包含了和粒子系统里类似的属性:Color over Lifetime, Size over Lifetime,Noise(VFX Graph里叫做Trubulence)以及Texture Sheet Animation(VFX Graph里叫做Flipbook Player)。

3. 尝试通过在Context中点击右键并选择Create Block来使用创建新的Block。我们可以通过子菜单里的搜索框来搜索要添加的Block。

输出粒子上下文控制每个粒子的外观,和粒子系统里的Renderer模块功能类似。在这里我们可以为粒子指定材质。

创建一个全新的VFX Graph
1. 在Project窗口(注意不是Heirarchy)中,点击右键,选择Create -> Visual Effects -> Visual Effect Graph,然后将这个新建的VFX Graph放到Heirarchy中。然后再场景中将其移动到你想要放置的位置。


查看一个复杂的VFX Graph
接下来我们来看一个专业级的VFX Graph例子,来感受一下复杂的VFX Graph长什么样。
1. 在主菜单中,选择Window -> Package Manager,然后选择Visual Effect Graph。在右边的面板中,展开Samples,然后选择Import导入VisualEffectGraph Additions。



我们还注意到,这些VFX Graphs使用了Operators,Operators是连接到main context的更小的节点。

VFX Graph能够很轻易地和快速地变得复杂。随着复杂度的增加,效果也会变得更加复杂丰富。




https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@6.9/manual/index.html