体积 (Volume)
高清渲染管线 (High Definition Render Pipeline, HDRP) 使用体积 (Volume) 框架。每个体积可以是全局的,也可以具有局部边界。它们各自包含一些场景设置属性值,HDRP 将在其间进行插值(具体取决于摄像机的位置)以便计算最终值。例如,可以使用局部体积来更改环境设置(例如雾颜色和密度),从而更改场景中不同区域的氛围。
可以将 Volume 组件添加到任何游戏对象(包括摄像机),但最好为每个体积创建一个专用的游戏对象。Volume 组件本身不包含实际数据,而是引用一个包含值(需要在其间插值)的体积配置文件 (Volume Profile)。体积配置文件包含每个属性的默认值,并在默认情况下隐藏它们。要查看或更改这些属性,必须将体积覆盖(这是可以覆盖默认值的结构)添加到体积配置文件。
一个场景可以包含许多体积,使每个体积都包含控制该体积与场景中其他对象交互方式的属性。全局体积会影响无论处于场景中什么位置的摄像机,而局部体积会影响封装在体积碰撞体边界内的摄像机。
在运行时,HDRP 查找附加到场景内活动游戏对象的所有已启用体积,并确定每个体积对最终场景设置的贡献。HDRP 使用摄像机位置以及上述体积属性来计算此贡献。然后使用具有非零贡献的所有体积来计算每个体积覆盖中每个属性的最终插值。
体积可以包含不同的体积覆盖组合。例如,一个体积可以包含基于物理的天空体积 (Physically Based Sky Volume) 覆盖,而其他体积包含指数雾体积 (Exponential Fog Volume) 覆盖。
请注意,对于具有相同优先级的体积,无法保证 HDRP 评估这些体积的顺序。这意味着,根据创建顺序,全局体积可以优先于局部体积。带来的结果是,摄像机可以进入局部体积的边界内,但仍会独占使用场景中全局体积的体积覆盖属性。
属性
属性 | 描述 |
---|---|
Mode | 使用下拉选单选择 HDRP 计算该体积是否会影响摄像机的方法: • Global:使体积无边界,并允许体积影响场景中的每个摄像机。 • Local:允许为体积指定边界,以便体积仅影响边界内的摄像机。请向体积的游戏对象添加碰撞体,并使用该碰撞体设置边界。 |
Blend Distance | 距 HDRP 开始混合的体积碰撞体最远的距离。值为 0 表示 HDRP 在进入时立即应用此体积的覆盖。 仅当从 Mode 下拉选单中选择 Local 时,才显示此属性。 |
Weight | 体积对场景的影响程度。HDRP 将此乘数应用于通过摄像机位置和 Blend Distance 计算出的值。 |
Priority | HDRP 使用此值来确定当多个体积对场景具有相同的影响程度时使用哪个体积。HDRP 首先使用具有更高优先级的体积。 |
Profile | 这是一个体积配置文件资源,其中包含的体积覆盖存储了 HDRP 用于处理此体积的属性。 |
体积配置文件
Profile 字段存储了一个体积配置文件资源,此资源包含 HDRP 用于渲染场景的属性。可以编辑此体积配置文件,或为 Profile 字段分配不同的体积配置文件。还可以分别单击 New 和 Clone 按钮来创建体积配置文件或克隆当前的体积配置文件。
配置局部体积
如果在体积上从 Mode 下拉选单中选择 Local,则必须将一个触发碰撞体 (Trigger Collider) 附加到游戏对象以定义体积的边界。单击该体积在 Inspector 中将其打开,然后选择 Add Component > Physics > Box Collider。要定义体积的边界,请调整盒型碰撞体 (Box Collider) 的 Size 字段和变换组件 (Transform) 的 Scale 字段。可以使用任何类型的 3D 碰撞体(从简单的盒型碰撞体到更复杂的凸面网格碰撞体)。但是,出于性能原因,应使用简单的碰撞体,因为遍历具有大量顶点的网格碰撞体是非常消耗资源的。局部体积还有一个 Blend Distance 属性,表示距碰撞体表面的外侧距离,HDRP 将在此距离处开始将该体积的设置与影响摄像机的其他体积的设置混合。