搜索 Unity

2020 LTS及以上版本的新VFX Graph功能

Scary metal character with red eyes
Scary metal character with red eyes
涵盖的主题
分享

在2020 LTS和2021.1版本中,VFX Graph的更新主要集中在稳定性、性能的优化上。此外,新的CPU输出事件系统可让特效更好地衔接到游戏中,并支持以多种方法在网格上生成粒子。

自2021.2版本起,VFX Graph的主要开发目标将是扩大系统支持的平台和内容、完善对通用渲染管线(URP)的支持、提高对2D的兼容性,并扩展平台兼容范围(包括任何带有计算能力的移动设备、Oculus Quest、Switch等)。我们还希望推出更多的VFX制作与编辑工具,尤其是与Shader Graph高级功能的兼容。这意味着对所有URP和HDRP主节点的直接存取,包括头发和织物节点,以及编辑器内的Signed Distance Field烘焙工具。直接访问这些内容可免去使用第三方工具的必要,节省特效的制作时间。我们还增加了对图形缓存器的支持,让动态发丝等高级模拟效果可直接在GPU上渲染完成。

为了加快你的项目开发,我们在样例库中新增了一个新样例项目,并将库更新到了2020 LTS版。我们还在Spaceship demo发布两周年之际升级了该示例项目。项目现在有更好的视觉效果,对2020 LTS、Mac和Linux的兼容性也有了改进,这艘“太空船”现在能以多种质量设置在更多的桌面设备上运行。

使用准备

在上手VFX Graph之前,我们建议各位先在下方视频中初步了解下VFX Graph:

使用Unity VFX Graph制作火焰、烟雾和水雾效果

使用Unity Visual Effect Graph渲染粒子特效

使用Unity Visual Effect Graph制作多层特效

在对工具有了大致了解后,你就可以使用Unity HubHDRP场景模板来制作自己的特效项目了。HDRP模板自带多种光照,可用于测试粒子系统,模板自身还集成有几种现成的粒子系统,包括尘埃、蝴蝶和盆栽落叶粒子。

如果你想制作全新的特效,也不必从零开始,你可以直接在分类好的节点中使用几种常见的节点配置。

Showcasing different effects in-editor

要想学习完整的粒子系统,可以下载VFX Graph样例来探索项目中的篝火、蝴蝶和魔典及其它新特效,详情将在下文介绍。

在使用节点时,2020 LTS自带的使用帮助和错误提示,以及更新后的文档都能为用户提供相关的帮助信息。

Showcasing aspects of VFX in-editor
Showcasing aspects of VFX in-editor

如果想学习高级内容,Unity经验丰富的艺术团队制作过许多相关的教程及特效剖析视频,现于下方列出:

如果还想学习更多,可试用下方工具来提升开发效率:

全新Meteorite示例

Short animation of a cartoon meteorite hitting a small forest scene

新的Meteorite是一个相对完整的场景,它展示了陨石撞击时不同场景元素之间的互动。该项目使用了2020 LTS版中的新功能:VFX Output Event Handlers制作而来,功能可将事件和特效用时间轴联系起来。

Still image of meteorite in the middle of hitting a small forest scene
Visual showing the many branching components of the meteorite's impact from the backend

Output Event Handlers的优点

在项目中,VFX Output Event Handlers被用于处理摄像机抖动、木板冲击以及光线动画,

我们借助Output Event及一个VFX脚本组件来触发镜头抖动特效。镜头抖动特效从Spawn Event Velocity节点取得velocity信息,并在主特效被触发后的1.15秒后形成一次抖动。

Visual of the Output Event to trigger a camera shake with a script component in the Inspector for the VFX.
Image of the in-editor VFX Output Event

草地的动态渲染

由VFX条形粒子组成的动态草地可与其它特效互动,特效将被渲染成一张渲染纹理用于形成爆炸和燃烧,彗星的VFX Output Handler将触发VFX缓存的修改。

VFX缓存将由另一个摄像机(并非主摄像机)进行录制,并写入到草丛的渲染纹理中,再借助溶解着色器和火焰特效来形成一种空气冲击的效果。这也是特效间交换信息,同时保留各自位置信息的方法。

Image depicting how the camera is set up to record the buffer VFX

借助时间轴增强特效同步

时间轴是VFX艺术家必须会用的一个工具,它可以用于特效的触发及时机调整。

Image showing the timeline in-editor

在本示例项目中,场景内的部分特效,如陨石落下时的霹雳、受惊而飞走的鸟儿以及冲击作用下的落叶,最初是采用一个按钮触发的,但随后又改为使用时间轴触发。

树木同样使用了VFX Graph的Mesh Output、Subgraph和Shader Graph制作,其许多参数都能做到随机化。

Spaceship Demo

初版Spaceship Demo发布以来已有一段时间。Demo本身在这段时间内不断地被打磨、优化,并升级成兼容每一个主要Unity版本,其升级计划也终于即将走到终点。

你可以在此处下载项目,并在该介绍视频中简要了解项目。该示例项目是展示了在实际开发中功能集成及优化的重要性。

注意,为了展示最新的VFX Graph和HDRP功能,我们特地在2020.3中修改、升级了项目中的部分内容。

太空远景

仔细想来,如果没有那种太空和外星球景观,我们怎么就能确定自己是在宇宙飞船里呢?因此最新版的Demo里终于加入了多个太空环境细节,你终于能从船舱内欣赏宇宙、行星等各种太空景观了。

 

Animation of a spaceship looking out into space at a large planet

为了突出飞船飞行时遇到的扰流,我们还在镜头抖动的基础上,为飞船的立方体贴图添加了另一种图像噪波,来实现环境的抖动。

完美同步的火花、音效和灯光

火花在此前改动后会使用一个脚本来同步音效和灯光动画,但我们还希望VFX艺术家能更容易理解整个特效。

Animation of sparks flying from the ceiling in a spaceship

作为VFX Graph样例(2020.3新内容)的一部分,再度更新后的火花特效现在会使用Output Event Handlers。VFX特效现在会直接在VFX Graph中随机生成,闪光的持续时间也经过了调整。

Image describing the orchestration branch

在Prefab spawn和Play Audio Helpers的帮助下,我们现在还能够在VFX Graph中实现完全随机的特效生成,并借助Spawn Context来同步光效和音效。通过使用Flash Lifetime属性设置延迟时间,VFX Output Event的预制件生成程序也能在一定的时间之后禁用预制件。

Image depicting the VFX Output event prefab spawn

质量设置及其它内容

Spaceship Demo现在带有一个质量设置以兼容多种不同的硬件。如果不考虑设备承受能力,Ultra Quality模式可以执行更为精细的后期处理、体积特效,并增加额外的灯光特效。

低质量模式可以禁用运算成本巨大的特效选项,让Demo能在最低到GTX 760设备上运行。

我们计划在今年晚些时候发布最终版Spaceship Demo。到时,项目将兼容Unity 2021.2,带来更快的性能,对NVIDIA DLSS和AMD FSR的支持,以及更多令人垂涎的绝密功能,敬请持续关注。

2020 LTS和2021.1的主要更新

为了迎接2021.1开发周期,我们围绕着VFX Graph两个版本的Bug修复,在2020 LTS的版本中增加了许多新功能。以下是几个主要更新。

翻页动画的快速导入和迭代

在2021.1中,改进后的Image Sequencer(图片序列器)及同样升级了的Texture Import同样能经由VFX Graph处理。VFX Graph的翻页动画编辑无须再由用户手动排序,翻页动画现在可作为纹理数组导入图表,其排序信息将直接存储到导入器中,由Image Sequencer自动处理。

Showcasing the improvements made to our Image Sequencer

在模型网格上生成粒子

Animated woman running while on fire

2021.1版新的Skinned Mesh Sampling(蒙皮网格采样)功能可用于在角色或物体模型上生成火焰粒子及其飞行轨迹,模型的溶解、变形等等效果。

要想尝试该功能,你可以在Initialize、Update或Outpue节点流程中使用Position (Skinned Mesh)节点来做出自己想要的效果。

接着,在图表黑板中加入一个带有transform的Skined Mesh Renderer属性。

Image showcasing getting the transform information of your Skinned Mesh in the Scene in order to position the effect in the right place

将调整好位置的transform节点连到Skinned Mesh接入点,以取得网格在场景内的变换数据、在正确的位置上生成特效。transform变换数据可使用VFX Game Object检视器来查看,Property Binder功能则可用于确定绑定骨架结构所需的组成部分。

Image going through the user interface indicating what each portion does

下方为更新后的Skinned Mesh Sampling采样流程:

Showcasing an example of Skinned Mesh Sampling in the Update context

期待看到各位使用Skinned Mesh创作的精彩内容。

使用Mesh LOD优化性能

Image of generated space with a planet, meteorites, and a sun in the background

使用网格生成的特效现在可借助细节级别(LOD)系统进行优化,远处的粒子效果可设定成更为简单的网格。

特效网格的检视器会显示出一个新的Mesh Count属性,允许为特效输出设定多达四种不同复杂程度的网格。若启用检视器下方的LOD 选框,粒子特效将根据自己在屏幕上的占比来选择LOD。

Showcasing the ability to modify the LOD values field in your output to designate the minimum percentage of the screen that each of your meshes must occupy to be visible

你也可以修改某个特效输出的LOD Values ,来设定可见特效网格的最小屏幕占比。例如,数值10意味着该特效网格只有在占比达到10%及以上时才会显示。要想在保持特效质量的同时提高性能,距离较远的粒子可使用更简单的网格和更小的LOD值。所有网格的LOD Values也能通过修改Radius Scale 值来同时进行调整。

在下方的星环示例中,带有LOD的网格粒子将帧率从原先的6帧提高到60帧以上, 并且对整体图像质量并没有显著的影响。

Image showcasing the difference in frames per second between no mesh LODs and with mesh LODs

未来计划

自2021.2 Beta版起,我们将在未来的新版本中进一步扩大平台兼容和创作范围:

我们还希望继续推出更多的特效制作与自定义工具,如:

图形缓存的进一步支持,尽量做到在GPU上完成高级模拟效果的演算。

以上更新已在2021.2 beta版中推出,绝大部分内容已经开放试用,你可以立即体验新功能并向我们反馈(注意,新功能仍有待开发)。

更多关于新功能的消息可在我们的Graphics Product Roadmap(图形产品规划图)中了解。你可在页面中为待开发功能投票,或留下你自己的需求、想法及要求。

 

以上内容仅供参考,不得作合同条款引用,不包含任何诱导性信息。Unity不承诺提供任何功能、特性或代码。所有产品、功能和特性的开发、时间安排和发布均由Unity自行决定,如有变动,恕不另行通知。

涵盖的主题