为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。
什么是VFX Graph?
VFX Graph(Visual Effect Graph)是 Unity Editor器中的一种基于节点的工具,用于通过ON GPU 上模拟粒子来创建Fire、烟雾、火花和魔法等视觉效果,从而能够时间创建具有大量粒子的复杂特效。
VFX Graph 是 Unity 的图形工具 之一,与 Shader Graph 并列,并与使用 通用渲染管线 (URP) 或高定义渲染管线 (HDRP) 的 Projects 配合使用。
VFX Graph 是如何工作的?
VFX Graph 由几个核心部分构建:
- 语境:Control粒子系统不同部分(从生成到输出和渲染)的堆积图阶段。
- 块:在特定上下文中的小型操作,例如设置速度、添加湍流或随时间更改颜色。
- 运算符:计算或修改值的节点,例如噪点、数学或随机数,并将它们提供图的Other部分。
- 属性设计者可以在不改变图底层逻辑的情况下调整的暴露值,例如生生成速率或颜色。
- 事件:可以从 C# 脚本或Timeline等源触发器特效的信号,例如生成粒子或启动特效。
Unity 将图保存为 视觉特效资源,该资源可以通过 视觉特效组件 添加到 Scene 中。
VFX Graph 中的上下文有哪些?
一个典型的VFX Graph使用四个核心上下文来Control粒子效果从生成到渲染的过程:
上下文
生成
它控制什么
产生了多少粒子以及When产生,例如是常量Rate还是单一次爆发
初始化
它控制什么
每个粒子的起始值,例如位置、速度、大小和Lifetime
更新
它控制什么
粒子如何随时间Change,例如通过重力、Drag、湍流或碰撞
输出
它控制什么
粒子是如何渲染的,例如使用四边形、网格还是线条,以及使用了哪个着色器
上下文
它控制什么
生成
产生了多少粒子以及When产生,例如是常量Rate还是单一次爆发
初始化
每个粒子的起始值,例如位置、速度、大小和Lifetime
更新
粒子如何随时间Change,例如通过重力、Drag、湍流或碰撞
输出
粒子是如何渲染的,例如使用四边形、网格还是线条,以及使用了哪个着色器
VFX Graph是用来做什么的?
- 火灾、烟雾和爆炸:版本密集、分层的效果,例如Fire、烟雾、爆炸和Other体积感效果。
- 魔法和科幻特效:为游戏创建法术、传送门、EnergyTrails、全息图和Other风格化特效。
- 天气和环境:用雨、雪、尘土、余烬、萤火虫和Other环境特效填充场景。
- 影响和反馈:当发生游戏事件时,触发器会产生火花、碎片、闪光和其他特效。
- 可视化:将点、模拟和Other数据表示为粒子,用于可视化、工业和XR 应用程序。
VFX Graph 和内置粒子系统有什么区别?
Unity 提供了两种主要的粒子系统,Key区别在于粒子模拟运行的位置:
模拟
VFX Graph
GPU
内置粒子系统
CPU
粒子计数
VFX Graph
专为大量粒子设计
内置粒子系统
通常更适合较小的粒子效果
创作
VFX Graph
节点图
内置粒子系统
Inspector 中的模块
渲染管线
VFX Graph
URP 和 HDRP
内置粒子系统
内置, URP, 和 HDRP
物理
VFX Graph
支持使用SceneDepth和碰撞形状的基于 GPU 的粒子碰撞
内置粒子系统
可以与 Unity 的Physics system交互
脚本
VFX Graph
暴露的Properties和事件
内置粒子系统
C# 脚本和粒子数据访问
VFX Graph
内置粒子系统
模拟
GPU
CPU
粒子计数
专为大量粒子设计
通常更适合较小的粒子效果
创作
节点图
Inspector 中的模块
渲染管线
URP 和 HDRP
内置, URP, 和 HDRP
物理
支持使用SceneDepth和碰撞形状的基于 GPU 的粒子碰撞
可以与 Unity 的Physics system交互
脚本
暴露的Properties和事件
C# 脚本和粒子数据访问
VFX Graph的优势是什么?
- 大粒子计数:基于GPU的模拟可以支持具有大量粒子和复杂视觉行为的特效。
- 可视化作者:艺术家可以通过连接节点而不是为每个特效编写代码来创建复杂的粒子行为。
- 实时预览:图的更改可以在 Unity Editor器中直接预览,以便在开发特效时查看。
- 可重用构建块:子图允许团队打包可重用逻辑并在多个视觉效果中使用它。
VFX Graph的挑战是什么?
- 硬件要求:VFX Graph 依赖ON计算着着色器等 GPU Features,这限制了与某些结束或旧硬件的兼容性。
- 游戏玩法交互:VFX Graph 使用基于 GPU 的模拟,而不是 Unity 的标准 Physics system,因此游戏玩法交互和粒子数据访问与内置粒子系统的工作方式不同。
- GPU性能:复杂效果会消耗大量的GPU资源,因此应该ONTarget硬件上对效果进行性能分析,以平衡视觉质量和性能。