找回密码
 立即注册
查看: 300|回复: 4

[简易教程] [专栏精选]Visual Effect Graph入门

[复制链接]
发表于 2023-1-8 15:06 | 显示全部楼层 |阅读模式
本文节选自洪流学堂公众号技术专栏《大话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/>洪流学堂公众号回复专栏,查看更多专栏文章。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-1-8 15:08 | 显示全部楼层
我有Amplify Shader
发表于 2023-1-8 15:13 | 显示全部楼层
赞一个
发表于 2023-1-8 15:15 | 显示全部楼层
非常棒 感谢能有这么循序渐进的教程!
发表于 2023-1-8 15:19 | 显示全部楼层
您好,请问有交流群吗[爱]
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 12:51 , Processed in 0.254641 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表