车辆 – 仪表输入
汉化标题: 车辆 – 仪表输入
原文标题: Cars – Instruments inputs
汉化更新时间: 2025-11-12 16:32:15 GMT+08:00
英文原文最新更新时间: 2022-06-13T01:18:53+03:00
自 v0.1.25-preview183以后,引入了一种更完善的仪表配置方式;核心思路是维护一份输入列表,供数字/模拟仪表(含条件文本)、动画甚至发光材质共用,并提供阈值或模拟模式切换。
旧版扩展仪表的代码也已重写,以免三个不同系统并行运行,同时尽量保持兼容;若你发现仍有异常,请告知。
语法
为了兼顾旧配置,选择输入的方式在不同场景下略有区别,例如:
注:“...” 表示某种 INPUT 类型占位符
ini
; 模拟仪表
; 新方法:
[ANALOG_INDICATOR_...]
INPUT = AMBIENT_TEMP
; 旧式写法(仅用于时/分/秒,保证指针钟表可用)
[HOUR_INDICATOR]
...
; 数字仪表
; 通过 digital_instruments.ini 设置
[ITEM_0]
; 数字仪表条目
TYPE_EXT = DRIFT_POINTS
; 绑定漂移得分
; 旧式写法(可用于任意输入)
[DI_DRIFT_POINTS]
; 每个扩展项目
DIGITAL_ITEM = 0
; 指向第 0 个数字项
; 数字仪表(条件)
; 通过 digital_instruments.ini 设置
[ITEM_0]
TYPE_EXT = CONDITION_TEXT
INPUT = TURBO_WASTEGATE
; 自定义动画
; 新方法
[ANIMATION_...]
INPUT = LOWBEAM
; 旧式写法(同样支持任意输入)
[ANIMATION_...]
BIND_TO_EXTRA_A = 1
; 发光材质
; 新方法
[EMISSIVE_...]
INPUT = BODY_DAMAGE
; 旧式写法(也支持任意输入)
[EMISSIVE_LIGHT]
...
...输入参数
如上例所示,各类对象在其段落内都能自定义输入,几乎所有所需的处理都可在这里完成。
ini
[ANIMATION_...]
INPUT = TYRE_PRESSURE
INPUT_SELECTOR = THIRD
INPUT_ADD = 0.0
INPUT_MULT = 1.0
INPUT_MIN = 10.0
INPUT_MAX = 40.0
INPUT_MOD = 5.0
INPUT_LUT = (| 0=0 | 10=20 |)
INPUT_LAG_UP = 0.9
INPUT_LAG_DOWN = 0.95
INPUT_ROUND = 2.0
INPUT_ROUND_MODE = FLOORING
INPUT_STALLED_VALUE = 7.5
INPUT_STALLED_LAG = 0.85
[EMISSIVE_...]
INPUT = BODY_DAMAGE
INPUT_THRESHOLD = 20
INPUT_THRESHOLD_INVERSE = 1
INPUT_DEBUG = 30INPUT:定义输入类型,但在部分模式下写法不同,可参阅“语法”章节。INPUT_SELECTOR:决定如何处理多值输入(如轮胎气压或车体损伤都包含四个值)。可选值:MIN(或MINIMUM):取最小值;MAX(或MAXIMUM):取最大值;SUM(或TOTAL):求和;MULT(或MULTIPLIED):连乘;AVG(或AVERAGE):求平均;LEN(或LENGTH):计算平方和再开方,例如总 G 值;X(或FIRST):取第一个值;Y(或SECOND):取第二个值;Z(或THIRD):取第三个值;W(或FOURTH):取第四个值;- 任意数字
N:取第 N 个值。
INPUT_MULT:将值乘以某个系数;INPUT_ADD:对值加上偏移INPUT_MIN、INPUT_MAX:若设置则对原值进行限幅,默认范围为 -∞/+∞;INPUT_MOD:大于 0 时会先按该值取模(执行于 LUT 之前,限幅之后);INPUT_LUT:可选查找表,可执行缩放、偏移或复杂映射,使用线性插值;INPUT_LAG_UP、INPUT_LAG_DOWN:可选平滑处理,作用于 LUT 之后;前者用于实际值高于平滑值时,后者用于实际值较低时;INPUT_ROUND:可选四舍五入粒度(例如INPUT_ROUND = 0.1可保留一位小数);INPUT_ROUND_MODE:指定取整方式,可选:FLOOR(或FLOORING):直接舍去小数;ROUND(或ROUNDING):常规四舍五入,>= 一半即进位;CEIL(或CEILING):只要存在小数就进位;
INPUT_STALLED_VALUE:发动机熄火时可替换的数值,执行于限幅之后、取模与 LUT 之前;INPUT_STALLED_LAG:配合上述替换值控制过渡平滑度;INPUT_THRESHOLD:默认情况下发光材质只有开/关,此参数用来设定切换阈值。
如果你需要设定区间,可使用:INPUT_THRESHOLD_LOWER与INPUT_THRESHOLD_UPPER:表示区间 A < x < B,不包含边界;INPUT_THRESHOLD_LOWER_INC与INPUT_THRESHOLD_UPPER_INC:表示区间 A ≤ x ≤ B,包含边界;
INPUT_THRESHOLD_INVERSE:为 0(false)时表示低于阈值触发;INPUT_DEBUG:用于快速测试(尤其是指针仪表),会覆盖原值,相当于最先应用的限幅值。
大多数情况下无需全部设置,因为csp会提供合理默认值;只有在特殊需求时再自定义即可。
可用输入列表
带 “flag” 的为布尔输入,满足条件时为 1.0,否则 0.0(同样可以通过延迟参数平滑)。
SPEED:车辆相对世界的速度,单位 km/h;SPEED_WHEELS:由驱动轮角速度计算的速度,单位 km/h;VELOCITY:车辆相对世界的速度向量,单位 m/s;VELOCITY_LOCAL:车辆本地坐标下的速度向量(X 左/右,Y 上/下),单位 m/s;RPM:发动机转速;STEER:方向盘转角(度);HANDBRAKE:手刹状态,范围 0~1;BRAKE:制动踏板状态,范围 0~1;CLUTCH:离合器状态,范围 0~1;FUEL:剩余燃油(升);WATER_TEMPERATURE:水温(°C);TURBO:涡轮增压值;GEAR:当前挡位,倒挡为 -1、空挡为 0(序列式变速箱换挡不经过空挡),默认格式为GEAR(见下文“格式”);PERF_METER: performance meter comparing this lap with best, seconds;PERF_METER:全速对比表,相当于当前圈与最佳圈的时间差(秒);PERF_METER_DIFF:AC performance 应用里红/绿条显示的数值;TYRE_WEAR:轮胎磨损,四个值,范围 0~1:- 前左:
INPUT_SELECTOR = 0、X或FIRST; - 前右:
INPUT_SELECTOR = 1、Y或SECOND; - 后左:
INPUT_SELECTOR = 2、Z或THIRD; - 后右:
INPUT_SELECTOR = 3、W或FOURTH;
- 前左:
TYRE_VIRTUAL_KM:轮胎累计虚拟里程,四个值,范围 0~1:- 前左:
INPUT_SELECTOR = 0、X或FIRST; - 前右:
INPUT_SELECTOR = 1、Y或SECOND; - 后左:
INPUT_SELECTOR = 2、Z或THIRD; - 后右:
INPUT_SELECTOR = 3、W或FOURTH;
- 前左:
TYRE_DIRT:轮胎沾染泥土程度,四个值,范围 0~1;TYRE_SLIP:轮胎滑移率,四个值;TYRE_SLIP_ANGLE:轮胎滑移角,四个值;ENGINE_LIFE(或ENGINE_DAMAGE):剩余发动机寿命,范围 0.0~1000.0(别名默认使用反向阈值);SUSP_DAMAGE:悬挂损伤,四个值,范围 0~1;GEARBOX_DAMAGE:变速箱损伤,范围 0~1;BODY_DAMAGE:每个方向的最大碰撞速度,四个值,单位 km/h:- 前部:
INPUT_SELECTOR = 0、X或FIRST; - 后部:
INPUT_SELECTOR = 1、Y或SECOND; - 左侧:
INPUT_SELECTOR = 2、Z或THIRD; - 右侧:
INPUT_SELECTOR = 3、W或FOURTH;
- 前部:
SUSP_TRAVEL:悬挂行程,四个值,单位 m;RIDE_HEIGHT:离地高度,四个值,单位 m;SLIP_RATIO:车轮滑移率,四个值;G_FORCE:当前 G 值(三维向量,单位 g);- 横向:
INPUT_SELECTOR = 0、X或FIRST; - 垂向:
INPUT_SELECTOR = 1、Y或SECOND; - 纵向:
INPUT_SELECTOR = 2、Z或THIRD;
- 横向:
GEAR_GRINDING(flag):齿轮是否打齿?LAP_TIME:单圈耗时(秒);LAP_TIME_BEST:最佳单圈(秒);LAP_TIME_LAST:上一圈耗时(秒);LAP_COUNT:已完成圈数;HORN(flag):喇叭是否鸣响?POSITION:车辆在排行榜中的位置;
灯光相关
LIGHT(或HEADLIGHTS,flag):前照灯是否开启?BRAKE(或BRAKE_LIGHTS,flag):刹车灯是否点亮?REVERSE(或REVERSE_LIGHTS,flag):倒车灯是否点亮?HAZARD(flag):双闪是否开启(默认带闪烁逻辑)?LOWBEAM(flag):近光灯是否开启?HIGHBEAM(flag):远光灯是否开启?EXTRA_A(flag):Extra A 是否激活?EXTRA_B(flag):Extra B 是否激活?EXTRA_C(flag):Extra C 是否激活?EXTRA_D(flag):Extra D 是否激活?EXTRA_E(flag):Extra E 是否激活?EXTRA_F(flag):Extra F 是否激活?TURNSIGNAL_LEFT(flag):左转向灯是否开启?TURNSIGNAL_RIGHT(flag):右转向灯是否开启?TURNSIGNAL_NOHAZARD_LEFT(flag):左转向灯是否开启(且不是因双闪触发)?TURNSIGNAL_NOHAZARD_RIGHT(flag):右转向灯是否开启(且不是因双闪触发)?TURNSIGNAL(flag):任一转向灯是否开启?TURNSIGNAL_NOHAZARD(flag):转向灯是否开启(排除双闪)?CORNERINGLAMP_LEFT(flag):左侧转向辅助灯是否开启?CORNERINGLAMP_RIGHT(flag):右侧转向辅助灯是否开启?OPENDOORS(flag):车门是否打开?SEATBELT(flag):安全带是否系好?
为兼容性预留的独立挡位标志
GEAR_R(flag):是否位于倒挡?GEAR_N(flag):是否位于空挡?GEAR_D(flag):是否位于前进挡(AT)?GEAR_1(flag):是否一档?GEAR_2(flag):是否二档?GEAR_3(flag):是否三档?GEAR_4(flag):是否四档?GEAR_5(flag):是否五档?GEAR_6(flag):是否六档?GEAR_7(flag):是否七档?GEAR_8(flag):是否八档?GEAR_9(flag):是否九档?
额外物理(回放暂不支持)
BRAKEBIAS:制动力分配,范围 0.0~1.0;ABS(flag):ABS 是否开启?ABS_INACTION(flag):ABS 是否正在介入(默认带闪烁)?SPEEDLIMITER:限速器设置(km/h,0 为关闭);SPEEDLIMITER_INACTION(flag):限速器是否正在生效(默认闪烁)?TYRE_COMPOUND_INDEX:当前轮胎配方索引;DIFF_PRELOAD:差速器预紧力;TRACTIONCONTROL:牵引力控制模式(整数);TRACTIONCONTROL_INACTION(flag):牵引力控制是否正在工作(默认闪烁)?AWD_FRONT_SHARE_PERC:此刻分配到前轴的扭矩比例,范围 0~1;AWD_FRONT_SHARE_NM:此刻分配到前轴的扭矩,单位 N·m;TYRE_PRESSURE(或TYRES):轮胎气压,四个值;TYRE_TEMPERATURE:轮胎温度,四个值;ENGINE_TORQUE:当前发动机扭矩(N·m);ENGINE_POWER:当前发动机功率(bhp);KERS_CHARGE:KERS 电量;KERS_CURRENT_KJ:KERS 当前输出(kJ);KERS_MAX_KJ:KERS 最大输出(kJ);KERS_LOAD:KERS 负载;KERS_INPUT:KERS 输入;KERS_CHARGING(flag):KERS 是否处于充电状态?TURBO_BOOST:涡轮增压值(对于启用EXT_SPIN_DELAY的扩展涡轮可为负),每个涡轮分别有值,可让指针绑定具体涡轮;TURBO_WASTEGATE:当前涡轮泄压阀开度,同样为每个涡轮提供独立值。
扩展物理
USER_SPEEDLIMITER(flag):用户自定义(electronics.ini 中 custom physics)限速器是否启用?ENGINE_MAP:当前发动机映射索引;CPHYS_SCRIPT_0:自定义物理 Lua 脚本写入的值 #0;CPHYS_SCRIPT_1:脚本值 #1;CPHYS_SCRIPT_2:脚本值 #2;CPHYS_SCRIPT_3:脚本值 #3;CPHYS_SCRIPT_4:脚本值 #4;CPHYS_SCRIPT_5:脚本值 #5;CPHYS_SCRIPT_6:脚本值 #6;CPHYS_SCRIPT_7:脚本值 #7;TC2;FUELMAP;
一些额外新增的
DRIVEN_TOTAL:总里程表,单位 km(初始值可由 Odometer、Sidekick 或 CM 提供);DRIVEN_SESSION:当前session里程,单位 km;STALLED(flag):发动机是否熄火(暂以低转速持续一段时间判定)?BATTERY:估算的电瓶电压;OIL_PRESSURE:估算的油压;OIL_TEMPERATURE:估算的油温;EXHAUST_TEMPERATURE:估算的排气温度;
雨刮
WIPERS_MODE:0 表示关闭,其他值为当前档位;WIPERS_PROGRESS:雨刷动画进度;
其他少见用途(可能给大屏/监视器)
DRIFT_VALID(flag):当前漂移是否有效(例如未驶出赛道)?DRIFT_BONUS_ON(flag):漂移连击奖励是否激活?DRIFT_COMBO:漂移连击计数(整数);DRIFT_INSTANT:即时漂移得分(整数);DRIFT_POINTS:累计漂移得分(整数);TRACK_PROGRESS:赛道进度,范围 0~1;COMPASS:车辆朝向角度,0° 指北、90° 指东,默认格式COMPASS;
油耗相关(开发中,公式可能调整)
FUEL_BURNT:本回合消耗的燃油量(升);FUEL_BURNT_TOTAL:总体燃油消耗(升);FUEL_CONSUMPTION_KPL:本回合的平均 km/L;FUEL_CONSUMPTION_LP100K:本回合平均 L/100km;FUEL_CONSUMPTION_MPG:本回合平均油耗miles/galon;FUEL_CONSUMPTION_LPL:本回合平均每圈油耗(升);FUEL_CONSUMPTION_KPL_TOTAL:总体平均油耗 km/L;FUEL_CONSUMPTION_LP100K_TOTAL:总体平均油耗 L/100km;FUEL_CONSUMPTION_MPG_TOTAL:总体平均油耗miles/galon;FUEL_CONSUMPTION_LPL_TOTAL:总体平均每圈油耗(升);FUEL_ESTIMATE_DISTANCE:根据本回合油耗估算剩余可行使距离(米);FUEL_ESTIMATE_DISTANCE_TOTAL:根据总体油耗估算剩余距离(米);FUEL_ESTIMATE_TIME:根据本回合油耗估算剩余时间(秒);FUEL_ESTIMATE_TIME_TOTAL:根据总体油耗估算剩余时间(秒);FUEL_ESTIMATE_LAPS:根据本回合油耗估算可跑圈数;FUEL_ESTIMATE_LAPS_TOTAL:根据总体油耗估算可跑圈数。
比赛数据
POSITION:比赛名次,从 1 开始;LAP_TIME:当前圈用时(秒),默认时间格式为 “LAP_TIME”;BEST_LAP_TIME:最佳单圈(秒);LAST_LAP_TIME:上一圈用时(秒);EXPECTED_LAP_TIME:预计单圈(基于最佳圈和性能差值,单位秒);LAPS_COUNT:已跑圈数;FLAG_TYPE:当前显示的比赛旗帜类型(与赛道状态相同)。
与车辆无关的环境数据
AMBIENT_TEMPERATURE:环境气温(°C);ROAD_TEMPERATURE:赛道温度(°C);WIND_SPEED:风速(km/h);WIND_VELOCITY:世界坐标的风速向量(m/s);WIND_DIR:风向(度),默认格式COMPASS;TIME:从 00:00 起的秒数,默认格式TIME;TIME_HOURS:小时数,默认INPUT_MOD = 24;TIME_MINUTES:分钟数,默认INPUT_MOD = 60;TIME_SECONDS:秒数,默认INPUT_MOD = 60。
格式
在数字仪表上正确显示某些输入(如圈速)需要额外格式化;此类输入通常带有默认格式,你也可以覆写它,或为普通输入指定格式。详细说明参见 此处。
更复杂的表达式
自 CSP 0.1.77 起,输入可引用其他输入并使用表达式。若要引用,可先创建共享输入:
ini
[SHARED_INPUT_...]
NAME = my_input ; 用于引用的名称
INPUT = GAS
; 使用油门作为来源
; 可使用全部标准 INPUT 参数之后即可直接引用,或写出复杂表达式:
ini
[EMISSIVE_...]
INPUT = 'calc:max(my_input * GAS, BRAKE)'共享输入也可以引用其他共享输入:
ini
[SHARED_INPUT_...]
NAME = my_other_input
INPUT = 'calc:pow(my_input, 20) + WIND_SPEED'可用函数:
- 无参常量:
e: euler number;e:自然常数;pi: pi.pi:圆周率。
- 单参数函数:
abs(x):取绝对值;acos(x):反余弦,弧度;asin(x):反正弦,弧度;atan(x):反正切,弧度;ceil(x):向上取整;cos(x):余弦(弧度);cosh(x):双曲余弦;exp(x):返回e^x;floor(x):向下取整;ln(x):自然对数;log(x):以 10 为底对数;log10(x):以 10 为底对数;saturate(x): 如果 x 介于 0 和 1 之间,则返回x;否则,返回 0 或 1,以较近者为准。sign(x):返回符号(0 则返回 0);sin(x):正弦(弧度);sinh(x):双曲正弦;smoothstep(x):平滑阶跃,用于渐变;smootherstep(x):更平滑的 smoothstep;sqrt(x):平方根;tan(x):正切(弧度);tanh(x):双曲正切。
- 双参数函数:
atan2(x, y):由 x、y 计算弧度角;max(x, y):取较大值;min(x, y):取较小值;pow(x, y):x 的 y 次幂;step(x, y):y ≥ x 时返回 1,否则 0。
- 多参数函数:
clamp(x, min, max):将 x 限制在 [min, max] 区间;remap(x, a, b, c, d):将区间 [a, b] 线性映射到 [c, d](不自动夹取)。