转载作品

(转载)使用Visual Effect Graph创作惊艳的视觉效果

玬谷妍雨郁 发表于   2018-12-06 18:17:06
5137
3
25

Unite LA 2018期间,我们发布了在Unity中创作实时视觉效果的工具Visual Effect Graph,该工具使用在GPU运行的计算着色器和基于节点的工作流程。本文将比较Visual Effect Graph和现有的粒子系统,并展示如何开始使用这款强大工具。


Visual Effect Graph受到主流电影特效软件的启发,加入了许多相同的强大功能用于创作实时视觉效果,下面视频将对Visual Effect Graph进行简要介绍。


入门

我们可以通过Unity 2018.3或更高版本编辑器中的资源包管理器安装Visual Effect Graph。


请点击Unity编辑器菜单Window > Package Manager,点开Advanced并选中“Show preview packages”,然后找到Visual Effect Graph,单击Install按钮即可。

e34b06ff5306e05dc48604b5c421decf0d24b488120587-VOO64g_fw658.gif


目前,Visual Effect Graph运行于Unity 2018.3的高清晰渲染管线,对轻量级渲染管线的支持预计在之后的版本推出。为了使用Visual Effect Graph,请确保你的Unity项目使用High-Definition RP模板。

image.png

 

为了创建视觉效果,请在项目窗口点击右键,依次选择Create > Visual Effects > Visual Effects Graph。


创建资源后,将其拖到场景视图或层级窗口。

546654.gif


Visual Effect Graph窗口

Visual Effect Graph适用于VFX新手到资深艺术家和程序员等,Visual Effect Graph通过使用节点和属性模块,来提供一个快速学习,轻松掌握,强大的工作流程。

123.gif


Context包含多个属性模块,用于表示应用于粒子的操作顺序。节点之间互相连接,会执行一系列输入属性模块的计算,从而定义粒子属性。节点系统会让使用Shader Graph着色器视图的用户感到很熟悉,但二个工具并不完全相同。


创建Context或单个节点,可以点击空格键,或单击右键,选择Create Node。创建属性模块,可在节点中点击空格键,或者单击右键,选择Create Block。


1 Context

image.png


System是Initialize、Update和Output的Context组合。它由虚线轮廓表示。多个系统可以存在同一个Visual Effect Graph资源中。


Spawn定义生成粒子的数量和时间,例如Periodic Burst(间歇性喷发)、Constant(持续喷发)和Single Burst(单次喷发)等。


Initialize的前二个属性为Capacity(同时存在粒子数量)和Bounds(区域)。


Capacity确定每次系统中可以存在的粒子数量。


请注意:Capacity属性会根据粒子数量分配合适的内存,所以该数值应该对应可生成的粒子数量进行设置。通常,该值的计算公式为:Rate × Max Lifetime = Capacity


Bounds定义摄像机视图中粒子生成和模拟的区域。


Update会不断改变粒子属性,它是唯一可以使用作用力的部分。


Output会渲染粒子,它决定生成的粒子类型、纹理、颜色和方向。我们可以在此对粒子的大小,位置等属性进行最后调整。每个粒子系统可以有不同的输出结果,每个输出结果可以调整多数粒子属性。


2 Block

Block属性模块定义粒子的属性,这些属性可以由节点重写。Block包含在Context内,但有些属性模块无法在特定Context中使用。例如:Spawn Rate Block只能添加到Spawn Context中。

image.png


我们可以通过取消勾选名称右侧的复选框禁用属性模块。有些输入内容可以通过点击输入名称左侧的小箭头展开,可以访问并修改详细属性,例如:Vector3的X,Y和Z。


在视图中选择Block和Context时,我们可以通过检视窗口修改它们。因此在创作视觉效果时,显示检视窗口可以方便创作过程。

image.png


3 Node

Node节点具有很多功能,包括从输出指定数值和参数数据到执行各种不同的计算。Add,Multiply或Lerp等多数定义数值的节点可以通过修改来输出不同数值类型,例如:Float,Vector3或颜色数值。

image.png


流程工具

1 Auto Compile

默认情况下,每次修改节点或属性模块时,Visual Effect Graph都会重新编译。对于较小的视图,Auto Compile自动编译帮助我们在场景中快速看到改动效果。


但是对于比较复杂的系统,编译时间可能较长。禁用Auto Compile后,视图只会在保存或单击Compile按钮时进行编译,这样在大幅改动视图时,不必在每次调整后等待较长时间。


2 Blackboard

Blackboard面板可以存储视图中的参数,并公开给检视窗口以便进行修改。为了安排不同参数类型,Blackboard面板支持设置Categories类型和Tooltips提示信息。

image.png


创建新参数,请点击Blackboard右上角的+图标。

image.png


3 Target GameObject

Target GameObject面板允许你控制播放过程,或是查看场景中已打开视觉效果特定实例的本地空间辅助图示。


附加游戏对象,请点击场景中已打开的视觉效果实例,然后点击Attach,直接从场景实例打开视觉效果也会自动将该面板附加到游戏对象上。

image.png


4 Parameter Binders

虽然可以通过脚本来设置公开的参数,但Parameter Binders组件会自动配置视觉效果的参数,例如:游戏对象的位置,缩放和旋转。

image.png


添加Parameter Binder组件,请在层级窗口选中视觉效果,单击Add Component,搜索“Binder”并添加。将游戏对象拖到标着“None”的方框,然后点击 ⌄ 图标选择合适的参数。

image.png



与现有粒子系统比较

Visual Effect Graph和粒子系统的主要区别在于它们运行的硬件。粒子系统在CPU模拟生成,而Visual Effect Graph将大量计算移动到运行在GPU的计算着色器。

image.png


从上面的对比图中,我们可以看出Visual Effect Graph的优点是能够模拟数百万个粒子,计算复杂的模拟过程,以及读取帧缓冲区。而粒子系统可以使用基础物理系统,并通过回读来与游戏交互。


特别需要注意的是设备兼容性,部分设备不支持Visual Effect Graph所需的计算着色器,例如:大多数的手机。


支持的数据类型

Visual Effect Graph支持使用Point Cache,Vector Field和Signed Distance Field等资源。通过这些资源的支持,可以表示体积、作用力、碰撞以及自定义数据类型。


· Point Cache保存空间中点的属性,例如:Transform、法线、颜色和UV。


· Vector Field在获取粒子的位置后,会在3D空间移动粒子。


· Signed Distance Field可以使用体积来表示吸引和碰撞粒子。


下面的示例是在其它工具制作骷髅,然后导入Unity来创建魔法效果。

321.gif


VFX Toolbox工具集

Visual Effect Graph团队开发了一系列工具用于生成数据类型,这些工具统称为VFX Toolbox工具集。通过VFX Toolbox创建的数据可以与Unity的其它功能结合使用。


下载VFX Toolbox工具集:


https://github.com/Unity-Technologies/VFXToolbox


1 Image Sequencer

Image Sequencer图像序列工具可以处理图像序列,生成Flipbook纹理图集等纹理资源。

image.png


2 Point Cache Bake Tool

Point Cache Bake Tool点缓存烘焙工具又名为pCache Tool,它可以从纹理生成2D点缓存,从网格生成3D点缓存。

image.png


使用技巧

1 便签,节点分组和名称

Visual Effect Graph带有一些实用功能,可以帮助注释和标记视图。

Unity官方平台


Context Names环境名称可以让你命名Context环境,只需双击Context环境标题部分的小型区域即可。


创建System Name系统名称,请双击虚线轮廓顶部下的小型区域。


Sticky Note便签功能可以创建可调整大小的文本框。创建标签,请在视图的空白区域单击右键,选择Create Sticky Note。


便签中,字体大小从Small到Huge共有四个选项,右键单击便签并从列表中选择修改字体大小。调整便签大小,可以拖动便签边缘或边角进行调整。


Node Group节点分组为节点的分组设置标题,并将它们作为整体进行移动。创建节点分组,请选择一组节点后,右键单击一个选中节点,然后选择Group Selection。


如果要移动节点到节点分组,将该节点拖入已有分组即可。如果要将节点移出分组,按住Shift键然后将其拖出分组。如果要删除分组而不删除节点,单击选中分组标题,然后按下Delete键即可。


2 Spawner Chaining

Spawner Chaining生成器链允许一个生成器开启或停止其它生成器。只要将Spawn Context的输出部分连接到Start或Stop即可。


下图中节点生成了持续2秒的常量流,停止2秒后会重复之前的操作。

image.png


2 GPU事件

GPU事件允许在自定义条件下或粒子消失时触发另一个粒子系统。下图中,节点会在粒子消失时生成10~15个粒子。


启用GPU事件,请打开Preferences>Visual Effects,勾选"Experimental Operators/Blocks"。

image.png


3 Timeline

Visual Effect Graph完全兼容Timeline功能,可以准确控制视觉效果的时间设置。你可以通过二种方法控制效果:事件和参数。


如果要控制时间,请在Timeline中创建Visual Effect Activation Track。如果要控制参数,请在Timeline中创建Animation Track。


下面的视频展示了如何设置这些轨道,从而使它们继承来自事件的数值。


下载示例项目

为了帮助大家学习Visual Effect Graph,开发团队发布了持续更新的Unity示例项目。首次发布时,该项目包含三个示例:


· Unity Logo示例展示基本行为

· Morphing Face示例展示HDRP Lit的兼容性和点缓存

· Butterflies示例展示高级行为


下载示例项目:

https://github.com/Unity-Technologies/VisualEffectGraph-Samples

Unity官方平台


结语

Visual Effect Graph及其文档正处于开发和编写状态。虽然处于预览阶段,但我们可以在GitHub的Scriptable Render Pipeline Wiki中访问文档。


文档访问地址: 

https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/Visual-Effect-Graph


我们将分享Visual Effect Graph的一些教程,尽请期待。更多Unity更多信息介绍尽在Unity官方中文论坛(UnityChina.cn)!




原作者: Unity官方平台

原文链接:https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247495958&idx=1&sn=df4912b005b01b19a03576ad1d6f52f1&chksm=fe1dc5bdc96a4cab83c851b3add89826ac018359e310d4d372e7eaa2d50554be1bd0ad91dae6&mpshare=1&scene=23&srcid=1206ERgZFX7UsXumrv9h0cuP#rd



没有标签
确定
评论(3)
我98K消音
谢谢教程!谢谢大佬
回复
1948天前
Keiiven
谢谢大佬的分享,大佬辛苦
回复
1962天前
大脸琪
“特别需要注意的是设备兼容性,部分设备不支持Visual Effect Graph所需的计算着色器,例如:大多数的手机。”真是个悲伤的故事
回复
1966天前
没有更多啦~
  • 咨询
    客服
  • 扫码加入QQ群 或搜索QQ群号: 797421367
  • 扫码关注公众号 或微信搜索: cokey游戏特效