[专栏精选]Visual Effect Graph入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhenghongzhi6/article/details/89057262

本文节选自洪流学堂公众号技术专栏《大话Unity2018》,未经允许不可转载。

洪流学堂公众号回复专栏,查看更多专栏文章。


洪流学堂,让你快人几步。你好,我是郑洪智。

大智:“看到下面的图,你可能会自然地想到昨天提到的粒子系统,那又和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的配置。

  1. 在Project窗口的Create菜单创建HDRP的配置文件。

  1. 打开菜单栏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的朋友,也许能够帮到他。”


洪流学堂公众号回复专栏,查看更多专栏文章。

《大话Unity2018》,大智带小新学Unity2018的有趣经历,让你学Unity更简单。
所有订阅《大话Unity2018》的用户,可在《大话Unity2019》上线时获得1元换购资格。

猜你喜欢

转载自blog.csdn.net/zhenghongzhi6/article/details/89057262