Skip to content

车辆 – 局部立方体贴图

汉化标题:车辆 – 局部立方体贴图 原文标题:Cars – Local cubemaps 汉化更新时间:2026-01-14 00:00:00 +0800 英文原文最新更新时间:2022-06-13 01:18:53 +0300

局部立方体贴图是一种技术,通过拍摄物体周围整辆车的快照,并将其用作该物体的反射遮罩,从而改善类球体物体的反射效果。以下是实际效果演示:

YouTube video

Caterham 的前大灯就是一个很好的例子。即使是 SSLR 也无法正确处理它们,如果没有车辆在前大灯中的反射,它们看起来就像远处漂浮的斑点。

重要说明

  • 此功能仅适用于相对较小的类球体物体,如前大灯。由于它在某个点周围拍摄球形镜头并使用它来遮罩反射,因此对其他物体(如镀铬保险杠或引擎盖)没有帮助。

  • 使用局部立方体贴图反射的网格最初应具有 "ksPerPixelMultiMap" 着色器,否则着色会出错。如果您需要其他着色器的某些功能,请告知我。

  • 由于大量缓存、更新频率低以及该遮罩的过度简化渲染,此功能对 FPS 的影响不大。如果在 Reflections FX 设置中禁用了动态局部立方体贴图,此功能的 FPS 成本几乎为零。

语法

有几种方法可以使用此功能。如果是前大灯的情况,有一个模板文件 "oldschool_lights_reflections.ini" 旨在简化整个设置过程(为左右前大灯设置两个局部立方体贴图):

ini
[INCLUDE: common/oldschool_lights_reflections.ini]  ; 包含模板,该模板将完成大部分工作
MeshesLeft = headlightL   ; 左侧网格列表,可选
MeshesRight = headlightR  ; 右侧网格列表,可选
MeshesToCut = headlights  ; 要切割的网格列表(如果左右前大灯使用单个网格)
SplitAxis = 1, 0, 0       ; 仅在使用 MeshesToCut 时需要,切割轴(如果网格旋转方式异常)
SplitThreshold = 0        ; 仅在使用 MeshesToCut 时需要,轴上的点,用于围绕其切割网格
Offset = 0, 0, 0          ; 立方体贴图枢轴的偏移量(单位:米)(左侧立方体贴图的 X 将被反转)
HigherResolution = 0      ; 在极少数情况下设置为 1,如果您想使用更高分辨率
DynamicReflections = 0    ; 设置为 1 以启用动态更新,例如,如果反射中应显示前轮的运动和转向
DebugMode = 0             ; 设置为 1 以启用调试模式来检查更新区域
Reflectivity = 0.5        ; 材质的反射程度(0.5 是铬的好值)
ExcludeNodes = COCKPIT_HR, HUB_LR, HUB_RR  ; 要从反射中排除的节点列表,以加快速度(通常
                           ; 没有必要浪费时间渲染后部、后轮和内部)

对于一些更一般的情况,使用更直接的语法(该模板会展开到它),每个部分只设置一个立方体贴图:

ini
[LOCAL_CUBEMAP_...]
MESHES = Spotlight_SUB0     ; 要更改材质并为其添加局部立方体贴图的网格列表
POSITION = 0, 0, 0          ; 可选,手动设置位置(否则将使用网格的中心)
OFFSET = 0.08, 0, 0.13      ; 立方体贴图枢轴的偏移量(单位:米)
HIGH_RESOLUTION = 1         ; 在极少数情况下设置为 1,如果您想使用更高分辨率
IS_DYNAMIC = 1              ; 设置为 1 以启用动态更新
DEBUG = 0                   ; 设置为 1 以启用调试模式来检查更新区域
STATIC_FACES = TOP, BOTTOM, FRONT, LEFT  ; 停止动态更新的面列表(对性能有很大帮助
                             ; 因此启用调试模式并添加尽可能多的面)
EXCLUDE_NODES = COCKPIT_HR  ; 要从反射中排除的节点列表,以加快速度

如果您想更手动地将网格分成两部分,这里也有一些相关文档

以后添加的功能

  • 针对赛道的类似功能。