体积 (Volume)
通用渲染管线 (Universal Render Pipeline, URP) 使用体积 (Volume) 框架。体积可以根据摄像机相对于每个体积的位置来覆盖或扩展场景属性。
URP 为后期处理效果使用体积 (Volume) 框架。
URP 为体积实现了专用的游戏对象:Global Volume、Box Volume、Sphere Volume、Convex Mesh Volume。
Volume 组件包含用于定义体积是 Global 还是 Local 的 Mode 属性。
将 Mode 设置为 Global 时,体积会影响场景中各处的摄像机。将 Mode 设置为 Local 时,如果摄像机在碰撞体的边界以内,则体积会影响摄像机。有关更多信息,请参阅如何使用局部体积。
可以将 Volume 组件添加到任何游戏对象。一个场景可以包含多个带有 Volume 组件的游戏对象。可以将多个 Volume 组件添加到一个游戏对象。
Volume 组件引用一个包含场景属性的体积配置文件。体积配置文件包含每个属性的默认值,并在默认情况下隐藏它们。使用体积覆盖可以更改或扩展体积配置文件 (Volume Profile) 中的默认属性。
在运行时,URP 查找附加到场景内活动游戏对象的所有已启用的 Volume 组件,并确定每个体积对最终场景设置的贡献。URP 使用摄像机位置以及 Volume 组件属性来计算此贡献。URP 会插入所有具有非零贡献的体积的值,从而计算最终属性值。
Volume 组件属性
Volume 组件的一些属性可以控制这些组件如何影响摄像机以及它们如何与其他体积交互。
属性 | 描述 |
---|---|
Mode | 使用下拉选单选择 URP 计算该体积是否会影响摄像机的方法: • Global:使体积无边界,并允许体积影响场景中的每个摄像机。 • Local:允许为体积指定边界,以便体积仅影响边界内的摄像机。请向体积的游戏对象添加碰撞体,并使用该碰撞体设置边界。 |
Blend Distance | 距 URP 开始混合的体积碰撞体最远的距离。值为 0 表示 URP 在进入时立即应用此体积的覆盖。 仅当从 Mode 下拉选单中选择 Local 时,才显示此属性。 |
Weight | 体积对场景的影响程度。URP 将此乘数应用于通过摄像机位置和 Blend Distance 计算出的值。 |
Priority | URP 使用此值来确定当多个体积对场景具有相同的影响程度时使用哪个体积。URP 首先使用具有更高优先级的体积。 |
Profile | 这是一个体积配置文件资源,其中包含的 Volume 组件存储了 URP 用于处理此体积的属性。 |
体积配置文件
Profile 字段存储了一个体积配置文件资源,此资源包含 URP 用于渲染场景的属性。可以编辑此体积配置文件,或为 Profile 字段分配不同的体积配置文件。还可以分别单击 New 和 Clone 按钮来创建体积配置文件或克隆当前的体积配置文件。
如何使用局部体积
本节介绍如何使用局部体积实现基于位置的后期处理效果。
在此示例中,URP 在摄像机位于某个盒型碰撞体内时应用后期处理效果。
在场景中,创建一个新的盒体 (GameObject > Volume > Box Volume)。
选择该盒体。在 Inspector 中的 Volume 组件下的 Profile 字段中,单击 New。
Unity 会创建新的体积配置文件,并将 Add Override 按钮添加到 Volume 组件。
如果场景中有其他体积,请更改 Priority 属性的值,确保来自该体积的覆盖具有比其他体积更高的优先级。
单击 Add Override。在 Volume Overrides 对话框中,选择一个后期处理效果。
在 Collider 组件中,调整 Size 和 Center 属性,使碰撞体占据您希望局部后期处理效果所在的体积。
确保选中 Is Trigger 复选框。
现在,当摄像机位于体积的盒型碰撞体的边界以内时,URP 会使用盒体的体积覆盖。