[专栏精选]Visual Effect Graph入门
本文节选自洪流学堂公众号技术专栏《大话Unity2018》,未经允许不可转载。洪流学堂公众号回复专栏,查看更多专栏文章。<hr/>洪流学堂,让你快人几步。你好,我是郑洪智。大智:“看到下面的图,你可能会自然地想到昨天提到的粒子系统,那又和Visual Effect Graph有什么关系呢?Visual Effect Graph又是什么鬼?后面几天我们就来初步研究一下这个新的特效工具。”
Visual Effect Graph
简单来说,Visual Effect Graph是一个新的特效工具。
目前(Unity2018.3,Visual Effect Graph4.6)只能在HDRP中使用。未来会支持LWRP。Visual Effect Graph是什么?
你可能会说,制作特效我们已经有了粒子系统了,为什么又需要这么一个东西呢?
我们先来看看Visual Effect Graph最直观的特点:可视化的节点工具,同时也可编程。
看到这些节点,你有没有感觉很熟悉?它和Shadergraph都是基于同样的底层,包括未来的可视化节点编程工具
那么它和粒子系统的区别是什么呢?你可以把它想象为运行在GPU上的粒子系统。但是他们在不同方便各有优劣势。
粒子系统和Visual Effect Graph对比
如何使用?
废话不多说,下面我们就来看看如何使用吧!
安装
Visual Effect Graph可以通过Package Manager来安装,目前是preview版,所以需要在Package Manager窗口的上方打开Show preview packages。
此外,目前Visual Effect Graph只支持HDRP,所以需要安装HDRP。如下图所示:
配置
安装完这些必须的包之后,需要在工程中进行一些配置,类似之前使用Shadergraph的配置。
[*]在Project窗口的Create菜单创建HDRP的配置文件。
[*]打开菜单栏Edit > Project Settigs,将刚才的配置文件设置到Graphics > Scriptable Render Pipeline Settings中。
创建VFX graph文件
VFX?!就是Visual Effect的缩写啦。
和Shadergraph类似,要想使用VFX graph需要先创建一个资产。
这时候双击就可以打开这个文件进行编辑。具体如何编辑我们一会再说。
使用VFX graph
如果想在场景中使用这个graph,那很简单,只需要将这个资产拖到场景中即可。拖到场景中后会自动生成一个Gameobject,上面带了一个VisualEffect组件,会引用到之前创建的graph资产。
默认创建出来的VFX graph在场景中大概是下面的效果。
如果什么都不显示,那你需要去检查下HDRP是否设置正确哦!编辑VFX graph
如何编辑VFX graph才是重头戏。
VFX graph窗口
首先我们先来熟悉下VFX的窗口,和Shadergraph很像是不是。
Blackboard
这个黑板有点像Shadergraph中的属性窗口,里面设置的参数会暴露出来,可以在Inspector上修改。你还可以通过创建Category分类和Tooltip提示信息来组织这些参数。
可以设置的参数类型包括以下这些:
Target GameObject
这个面板可以让你将这个graph和一个场景中的实例物体绑定,方便查看修改或者调试。
Auto compile自动编译
默认情况下,这个选项会被选中,你对VFX graph的修改会自动编译。对于小的graph,可以让你快速看到改变后的结果。但是对于大的graph,编译一次可能会耗时比较久,你可以关闭这个选项。
VFX graph中的概念
VFX graph相对shadergraph更复杂,也引入了几个概念。
graph中的概念介绍
[*]Context:上下文(这个中文翻译不够直观,下文中我们还是使用Context)。Context表示应用到粒子的操作的顺序,一个Context中可以包含多个Block。
[*]Block:块。Block定义了粒子的各种属性。可以直接在Block中设置,也可以由Node输入。
[*]Node:节点。节点之间可以互相连接,用来进行计算,最终将结果输出给Block。
Context
Context是从上往下执行的。
默认的graph中有以下几个Context
System:上图如果你仔细看,可以看到虚线包裹的几个Context,这几个Context的集合叫做System。一个System包含Initialize, Update 和 Output这三个Context。一个graph可以包含多个system。
Spawn:这个Context定义了生成粒子的数量以及生成的时机。
Initialize:这个Context有点像我们写脚本时候的Start方法,用来对粒子进行初始化操作。这个Context需要以Capacity和Bounds两个Block开始。
[*]Capacity 定义同一时间可以存在的粒子最大数量。这个值很重要,决定了初始分配多少内存,应该和生成粒子的数量相对应。通常可以通过这个公式计算:Rate × Max Lifetime = Capacity
[*]Bounds 定义粒子的模拟区域
Update:这个Context有点像我们写脚本时候的Update方法,设置粒子随着时间的变化。在这个Context可以使用力,比如添加碰撞、力场等等。
Output:输出Context用来渲染粒子,它决定了生成粒子的类型、纹理、颜色、朝向等等。一个System可以有多个output输出。
Block
Block定义了粒子的各种属性。有些Block只能用在特定的Context中。
可以通过Block右上角的复选框来禁用/启用单个Block。
Node
节点有很多功能,从输出特定的值到一系列的数学运算。
总结
大智:“今天我们了解了一下Visual Effect Graph的大概情况,明天我们就来尝试上手做一些东西出来让你震撼一下!”
今日思考题
大智:“配置好你的Visual Effect Graph,为明天做准备哦!”
小新:“好嘞!”
大智:“收获别忘了分享出来!也别忘了分享给你学Unity的朋友,也许能够帮到他。”
<hr/>洪流学堂公众号回复专栏,查看更多专栏文章。 我有Amplify Shader 赞一个 非常棒 感谢能有这么循序渐进的教程! 您好,请问有交流群吗[爱]
页:
[1]