车辆 – LED 面板
汉化标题:车辆 – LED 面板 原文标题:Cars – LED panels 汉化更新时间:2026-01-14 00:00:00 +0800
英文原文最新更新时间:2022-06-13 01:18:53 +0300
LED 面板可以显示赛车位置和车手名称,并偶尔闪烁。
与原始的 "digital_panels.ini" 不同,此选项可以在回放中工作(此外,它支持任何其他输入类型)。但主要区别在于它使用动态纹理而不是浮动数字,因此它可以更好地适应弯曲的表面,并且不需要用于数字放置的特殊父节点。
重要说明
在继续之前,我想首先深入介绍它的工作原理和使用方法。其工作原理是:这是一个动态纹理,背景是透明的,数字或字母使用指定的颜色。这意味着您可以通过两种方式使其工作:
您可以复制底层网格,将新的网格稍微移动,将动态纹理分配给其
txDiffuse插槽,使其成为自发光并设置混合模式为 alpha test。这是最简单的方法,但它会增加一次绘制调用,需要修改模型,并且总体上看起来很奇怪。不过还有另一种方法。相反,您可以使用
ksPerPixelMultiMap_emissive着色器,并将动态纹理分配给txEmissive插槽!您无需更改模型来替换着色器,简单的[SHADER_REPLACEMENT_...]调整就能很好地工作。这样,您无需编辑任何模型。您可能会疑惑,如果txDiffuse应用于结果的自发光会破坏 LED 形状——好吧,好消息是,有一个参数可以禁用txDiffuse干扰!
语法
[LED_PANEL_...]
MESHES = RSS_EXT_LED_Panel ; 目标网格
TEXTURE_SLOT = txEmissive ; 目标纹理插槽
RESOLUTION = 1024, 512 ; 新生成纹理的分辨率
MASKS_PACK = lumirank_font.zip ; 包含 LED 遮罩的包名称
DIGIT_0 = 22, 47, 312, 455 ; 第一个数字的 X、Y、宽度和高度
DIGIT_1 = 353, 47, 312, 455 ; 第二个数字的 X、Y、宽度和高度
DIGIT_2 = 692, 47, 312, 455 ; 第三个数字的 X、Y、宽度和高度
; 您可以设置任意数量的数字
BASE_COLOR = '#ffffff', 0.5 ; 基础颜色(未闪烁时)
FLASHING_COLOR = '#ffffff', 1 ; 闪烁颜色
FLASHING_APPLY_MASK = 1 ; 是否对闪烁应用遮罩
BLANCPAIN_FLASHING_PERIOD = 1 ; Blancpain 闪烁:周期(秒)
BLANCPAIN_FLASHING_DURATION = 0.2 ; 关闭持续时间(秒)
BLANCPAIN_FLASHING_RACE_CLASS = AM ; 赛事级别(仅对级别领先者闪烁)
N24_FLASHING_PERIOD = 3.5 ; N24 闪烁:周期(秒)
N24_FLASHING_TIME = 1.2 ; 闪烁持续时间(秒)
N24_FLASHING_FREQUENCY = 6 ; 闪烁频率(Hz)
N24_FLASHING_ACTIVE_SHARE = 0.7 ; 闪烁期间处于活动状态的时间比例
ROLE_0 = DRIVER_NAME ; 第一个角色
ROLE_1 = POSITION ; 第二个角色
; 您可以设置任意数量的角色
ROLE_DURATION = 3 ; 每个角色持续的秒数关于 LED 遮罩和 MASKS_PACK
遮罩是黑白纹理,白色区域标记为发光。它们与 texture\display_panel 中使用的纹理非常相似(尽管它们将被绘制在动态纹理上而不是出现在 3D 空间中)。然而,由于现在也可以使用字母,因此增加了一个额外功能,以节省磁盘空间和比赛期间的 VRAM。您可以准备一个包含所有 LED 的单一高分辨率遮罩,然后以低得多的分辨率制作字母和数字的遮罩,只是大致覆盖目标 LED 区域。这可以在不牺牲任何质量的情况下节省大量字节,甚至可能使准备遮罩更容易。这是一个示例包,来自 RSS GT-M Bayro 6(感谢 Scott Shaw 许可作为示例使用)。
因此,换句话说,它的全部工作原理如下:
- 要渲染字母 "A",CSP 将打开
MASKS_PACK中提到的 ZIP 档案并查找 "base/a.dds"; - 它还会查找 "mask.dds";
- 如果找到遮罩,它将使用乘法模式同时渲染两者;
- 否则,仅使用 "base/a.dds"。
对于闪烁阶段,方法类似:
- 要渲染字母 "A",CSP 将查找 "flashing/a.dds";
- 如果那里不存在任何内容,它将使用 "flashing_fallback.dds";
- 如果
FLASHING_APPLY_MASK设置为 1,它将使用与非闪烁阶段类似的遮罩; - 否则,它将只使用纹理,就像没有遮罩一样。
关于角色
目前,有三种类型的角色:
DRIVER_NAME:打印车手名称(例如,在名称标签中显示的名称),如有必要则缩短:iniROLE_0 = DRIVER_NAMETEXT:打印在相应参数中设置的静态文本:iniROLE_0 = TEXT ROLE_0_TEXT = HELLO WORLD其他任何内容都将作为输入进行处理,类似于 CSP 数字仪表和其他:
iniROLE_0 = GAS ROLE_0_INPUT_MULT = 999注意常规的 "INPUT_..." 参数在这里都有对应的 "ROLE_N_" 前缀。除此之外,您可以像往常一样使用它,包括 LUT、延迟等。
另一个重要细节:默认情况下,数字格式将有前导零,使用此选项进行更改:
iniROLE_0_NUMBER_FORMAT = 3.0
关于 ksPerPixelMultiMap_emissive 和着色器替换
这是一个示例,说明如何通过配置更改着色器并使其发光:
[SHADER_REPLACEMENT_...]
MATERIALS = LED_Panel
SHADER = ksPerPixelMultiMap_emissive
FILL_MISSING_TEXTURES = 1
PROP_... = emSkipDiffuseMap, 1
PROP_... = ksEmissive, 100, 100, 100有关整个内容的更多信息,请查看此内容。
几个技巧
- 如果您想让闪烁颜色更亮,只需降低基础颜色的亮度并提高自发光;
- 如果纹理插槽中有一些旧纹理,数字将绘制在其顶部;
- 如果您使用
txEmissive方法,与 txDiffuse 分辨率相比,降低分辨率可能是有意义的,以节省一些 VRAM 和性能。