Skip to content

08. 交互与逻辑类


INCLUDE 公共库引用

ini
[INCLUDE] ; CSP 公共库引用
INCLUDE = common/analog_instruments.ini ; 引入模拟仪表公共模板
INCLUDE = common/digital_instruments.ini ; 引入数字仪表公共模板
INCLUDE = common/animations.ini ; 引入动画公共模板
INCLUDE = common/extra_switches.ini ; 引入 EXTRA 按键公共模板
INCLUDE = common/navigators.ini ; 引入官方 NAVI 导航公共模板
INCLUDE = android_auto/config.ini ; Android Auto支持

交互与逻辑类主要内容

🖥️

引用说明:参考 CSP 官方 acc-extension-config 车辆 EXT 配置思路。
主要作用:整理车辆 EXT 里最常用的交互、输入、动画、发光、屏幕、导航、音效、模型替换等写法。


① EXTRA 按键

⌨️

引用说明:参考 CSP 官方 Cars – Extra switches
主要作用:给 EXTRA_AEXTRA_B 这类按键命名,并设置按键限制。

基础样板

ini
[EXTRA_SWITCHES] ; EXTRA 按键设置
SWITCH_A = Interior Light ; EXTRA_A 显示为车内灯
SWITCH_A_FLAGS = HOLD_MODE ; EXTRA_A 按住才生效
SWITCH_B = Navigation Screen ; EXTRA_B 显示为导航屏
SWITCH_B_FLAGS = STATIONARY_ONLY ; EXTRA_B 停车时才能切换
SWITCH_C = Spoiler ; EXTRA_C 显示为尾翼
SWITCH_C_FLAGS = REQUIRES_BRAKE ; EXTRA_C 踩刹车时才能切换
SWITCH_D = Door ; EXTRA_D 显示为车门
SWITCH_D_FLAGS = KEEP_ON_RESET ; EXTRA_D 重置车辆后保持状态

使用说明:
SWITCH_A 只是显示名称,不是真正控制对象。真正控制对象要在动画、发光、Lua 里写 INPUT = EXTRA_A


常用 Flags


④ INPUT 输入绑定

⌨️

引用说明:参考 CSP 官方 Cars – Instruments inputs
主要作用:把车速、转速、刹车、油门、按键等数据接到发光、动画、仪表里。

常用输入表


输入控制发光

ini
[EMISSIVE_...] ; 输入控制发光
INPUT = RPM ; 绑定发动机转速
INPUT_MIN = 0 ; 设置最低转速
INPUT_MAX = 8000 ; 设置最高转速
INPUT_LUT = (|0=0|5000=0|7000=1|) ; 7000 转后点亮
NAME = mesh_shift_light ; 指定换挡灯 Mesh
COLOR = 255, 0, 0 ; 设置红色发光
USE_SMOOTH_TRANSITION = 1 ; 启用平滑过渡

使用说明:
这段适合换挡灯。INPUT_LUT5000=0 表示 5000 转前不亮,7000=1 表示 7000 转后全亮。


多值输入

ini
[EMISSIVE_...] ; 轮胎压力警告灯
INPUT = TYRE_PRESSURE ; 绑定轮胎压力
INPUT_SELECTOR = MIN ; 取四个轮胎里最低压力
INPUT_MIN = 10 ; 设置最低压力
INPUT_MAX = 40 ; 设置最高压力
INPUT_LUT = (|10=1|20=0|40=0|) ; 低压点亮,高压熄灭
NAME = mesh_tyre_warning ; 指定胎压警告灯 Mesh
COLOR = 255, 80, 0 ; 设置橙色警告光
USE_SMOOTH_TRANSITION = 1 ; 启用平滑过渡

使用说明:
INPUT_SELECTOR = MIN 很重要,意思是四个轮胎里只要有一个压力低,就触发警告灯。


⑤ INPUT_LUT 数值映射

5️⃣

引用说明:参考 CSP 官方 Cars – Instruments inputs
主要作用:把输入值转换成输出强度。比如转速越高灯越亮,车速越高尾翼越展开。

开关型

ini
[EMISSIVE_...] ; 开关控制发光
INPUT = EXTRA_A ; 绑定 EXTRA_A
INPUT_LUT = (|0=0|1=1|) ; 关闭为 0,开启为 1
NAME = mesh_extra_light ; 指定发光 Mesh
COLOR = 255, 255, 255 ; 设置白色发光
USE_SMOOTH_TRANSITION = 1 ; 启用平滑过渡

使用说明:
适合按钮灯、氛围灯、屏幕开关。0=0 是关,1=1 是开。


分段型

ini
[EMISSIVE_...] ; 转速分段灯
INPUT = RPM ; 绑定转速
INPUT_MIN = 0 ; 设置最低转速
INPUT_MAX = 8000 ; 设置最高转速
INPUT_LUT = (|0=0|5000=0|6500=0.5|7500=1|) ; 转速越高越亮
NAME = mesh_shift_light ; 指定换挡灯 Mesh
COLOR = 255, 0, 0 ; 设置红色发光
USE_SMOOTH_TRANSITION = 1 ; 启用平滑过渡

使用说明:
适合换挡灯。6500=0.5 是半亮,7500=1 是全亮。


反向型

text
[EMISSIVE_...] ; 反向开关发光
INPUT = EXTRA_B ; 绑定 EXTRA_B
INPUT_LUT = (|0=1|1=0|) ; 按键关闭时亮,开启时灭
NAME = mesh_status_light ; 指定状态灯 Mesh
COLOR = 0, 255, 120 ; 设置绿色发光
USE_SMOOTH_TRANSITION = 1 ; 启用平滑过渡

使用说明:

适合“默认亮,按下关闭”的状态灯。


⑥ 动画触发

按键触发动画

ini
[ANIMATION_...] ; 按键触发动画
INPUT = EXTRA_A ; 使用 EXTRA_A 触发
FILE = animation/example.ksanim ; 指定动画文件
TIME = 1.5 ; 设置动画时间
INPUT_AS_PROGRESS = 0 ; 使用按键触发动画
LOOP_WHILE_ACTIVE = 0 ; 不循环播放
LOOP_KEEP_UNTIL_DONE = 1 ; 松开后继续播完
HOLD_STATE = 1 ; 保持动画最终状态

使用说明:

适合车门、机盖、屏幕弹出。按一下播放,播放完保持状态。


输入控制动画进度

ini
[ANIMATION_...] ; 输入控制动画进度
INPUT = GAS ; 绑定油门输入
FILE = animation/pedal_gas.ksanim ; 指定油门踏板动画
TIME = 1.0 ; 设置动画总时长
INPUT_AS_PROGRESS = 1 ; 用油门开度控制动画进度
LOOP_WHILE_ACTIVE = 0 ; 进度模式下不循环
LOOP_KEEP_UNTIL_DONE = 0 ; 进度模式下不强制播完

使用说明:
适合油门踏板、刹车踏板、指针。INPUT_AS_PROGRESS = 1 表示输入值直接控制动画进度。


车速触发尾翼

ini
[ANIMATION_...] ; 车速触发活动部件
INPUT = SPEED ; 绑定车速
INPUT_MIN = 0 ; 设置最低车速
INPUT_MAX = 200 ; 设置最高车速
INPUT_LUT = (|0=0|80=0|120=1|200=1|) ; 120km/h 后展开
FILE = animation/speed_part.ksanim ; 指定活动部件动画
TIME = 1.2 ; 设置动画时间
INPUT_AS_PROGRESS = 0 ; 使用车速阈值触发
LOOP_WHILE_ACTIVE = 0 ; 不循环播放
LOOP_KEEP_UNTIL_DONE = 1 ; 播完后保持状态

使用说明:

适合主动尾翼。低于 80 不动,120 以上展开。


⑦ 官方 NAVI 导航屏集合

🗺️

引用说明:参考 CSP 官方 navigators.ini
主要作用:给车内屏幕生成导航地图 UI,官方提供了默认、现代、暗色、Android Auto、Sygic、Navitel、Racing 等模板。


默认导航

ini
[NAVIGATOR_...] ; 默认导航屏
@ = Navigator ; 使用官方默认导航模板
MESHES = mesh_navigation_screen ; 指定导航屏 Mesh
RESOLUTION = 1024, 1024 ; 设置导航纹理分辨率
DISPLAY_POS = 0, 0 ; 设置显示区域起点
DISPLAY_SIZE = 1024, 1024 ; 设置显示区域大小
UI_BRIGHTNESS = 0.8 ; 设置导航 UI 亮度

现代暗色导航

ini
[NAVIGATOR_...] ; 现代暗色导航屏
@ = Navigator_StyleModernDark ; 使用官方现代暗色模板
MESHES = mesh_navigation_screen ; 指定导航屏 Mesh
RESOLUTION = 1024, 1024 ; 设置导航纹理分辨率
DISPLAY_POS = 0, 0 ; 设置显示区域起点
DISPLAY_SIZE = 1024, 1024 ; 设置显示区域大小
UI_BRIGHTNESS = 0.9 ; 设置导航 UI 亮度

Android Auto 风格

ini
[NAVIGATOR_...] ; Android Auto 风格导航
@ = Navigator_AndroidAuto ; 使用官方 Android Auto 风格模板
MESHES = mesh_navigation_screen ; 指定导航屏 Mesh
RESOLUTION = 1024, 1024 ; 设置导航纹理分辨率
DISPLAY_POS = 0, 0 ; 设置显示区域起点
DISPLAY_SIZE = 1024, 1024 ; 设置显示区域大小
UI_BRIGHTNESS = 0.9 ; 设置导航 UI 亮度

赛车风格导航

ini
[NAVIGATOR_...] ; 赛车风格导航
@ = Navigator_StyleRacing ; 使用官方赛车导航模板
MESHES = mesh_racing_display ; 指定赛车屏幕 Mesh
RESOLUTION = 1024, 1024 ; 设置导航纹理分辨率
DISPLAY_POS = 0, 0 ; 设置显示区域起点
DISPLAY_SIZE = 1024, 1024 ; 设置显示区域大小
UI_BRIGHTNESS = 1.0 ; 设置导航 UI 亮度

额外生成导航屏 Mesh

ini
[NAVIGATOR_...] ; 额外生成导航屏
@ = Navigator_StyleModernDark ; 使用官方现代暗色模板
@ = Navigator_ExtraShape ; 生成额外屏幕形状
P1 = -0.20, 0.70, 0.40 ; 设置屏幕左上角坐标
P2 = 0.20, 0.70, 0.40 ; 设置屏幕右上角坐标
P3 = 0.20, 0.50, 0.40 ; 设置屏幕右下角坐标
P4 = -0.20, 0.50, 0.40 ; 设置屏幕左下角坐标
Scale = 1 ; 设置屏幕缩放
Brightness = 0.8 ; 设置屏幕亮度

使用说明:
适合原车没有导航屏 Mesh 的情况。P1P4 是屏幕四个角坐标,需要按车内位置手调。


text
[EMISSIVE_...] ; NAVI 屏幕发光
INPUT = LIGHT ; 绑定大灯状态
INPUT_MIN = 0 ; 设置关灯状态
INPUT_MAX = 1 ; 设置开灯状态
INPUT_LUT = (|0=0.7|1=1.0|) ; 开灯后屏幕稍微增强
NAME = mesh_navigation_screen ; 指定导航屏 Mesh
COLOR = 120, 180, 255 ; 设置屏幕蓝白光
USE_SMOOTH_TRANSITION = 1 ; 启用平滑过渡

说明:
导航只是画面,发光要另外用 [EMISSIVE_...] 处理发光。


text
[EXTRA_FX] ; NAVI 屏幕拖影修复
GLASS_FILTER = mesh_navigation_screen ; 修复导航屏 TAA 拖影
DELAYED_RENDER = mesh_navigation_ui ; 延迟渲染导航 UI
MOVING_FILTER = mesh_navigation_popup ; 修复弹出屏运动拖影

使用说明:

如果导航屏有残影、拖影、玻璃层级问题,就加这段。


⑧ 车辆音效控制

🔊

引用说明:参考 CSP 官方 Cars – Audio options
主要作用:调整车辆引擎、涡轮、回火、换挡、风噪、轮胎声等音量和音高。


音量样板

ini
[AUDIO_VOLUME] ; 车辆音效音量控制
ENGINE_EXT = 1.0 ; 设置外部引擎声
ENGINE_INT = 1.0 ; 设置驾驶舱引擎声
TURBO = 3.0 ; 放大涡轮声音
TRANSMISSION = 1.0 ; 设置变速箱声音
BACKFIRE_EXT = 3.0 ; 放大外部回火声
BACKFIRE_INT = 2.0 ; 放大驾驶舱回火声
GEAR_EXT = 1.5 ; 放大外部换挡声
GEAR_INT = 1.5 ; 放大驾驶舱换挡声
DOWN_SHIFT = 1.5 ; 放大降档补油声
GEAR_GRIND = 1.0 ; 设置打齿声音
LIMITER = 1.0 ; 设置断油声音
HORN = 1.0 ; 设置喇叭声音
BODYWORK = 1.0 ; 设置车身声音
SKID_EXT = 1.0 ; 设置外部轮胎声
SKID_INT = 0.9 ; 降低驾驶舱轮胎声
TRACTION_CONTROL_EXT = 1.0 ; 设置外部 TC 声
TRACTION_CONTROL_INT = 1.0 ; 设置驾驶舱 TC 声
WIND = 0.8 ; 降低风噪
DIRT = 1.0 ; 设置沙石击打声

音高样板

ini
[AUDIO_PITCH] ; 车辆音效音高控制
ENGINE_EXT = 1.0 ; 设置外部引擎音高
ENGINE_INT = 1.0 ; 设置驾驶舱引擎音高
TURBO = 1.0 ; 设置涡轮音高
BACKFIRE_EXT = 1.0 ; 设置外部回火音高
BACKFIRE_INT = 1.0 ; 设置驾驶舱回火音高
GEAR_EXT = 1.0 ; 设置外部换挡音高
GEAR_INT = 1.0 ; 设置驾驶舱换挡音高
WIND = 1.0 ; 设置风噪音高
SKID_EXT = 1.0 ; 设置外部轮胎音高
SKID_INT = 1.0 ; 设置驾驶舱轮胎音高

使用说明:

一般不建议大幅改音高,容易变假。小幅 0.95 到 1.05 比较合理。


⑨ 音乐动态频谱

主要作用:给车机屏幕做音乐信息、歌名和频谱条动画。

基础样板

ini
[CAR_STEREO_...] ; 音乐动态频谱
MESHES = ALPINE_DISPLAY ; 指定车机屏幕 Mesh
RESOLUTION = 1024, 1024 ; 设置动态纹理分辨率
DISPLAY_POS = 105, 390 ; 设置显示区域起点
DISPLAY_SIZE = 990, 700 ; 设置显示区域大小
COLOR = '#DA6700' ; 设置文字和频谱颜色
FONT = digital_big ; 设置显示字体
FADE_WHEN_INACTIVE = 1.95 ; 设置无音乐时淡出
TEXT_0 = "{Artist} - {Track}" ; 显示艺术家和曲名
TEXT_0_NOALBUM = "{Artist} - {Track}" ; 无专辑时显示艺术家和曲名
TEXT_0_NOARTIST = "{Track}" ; 无艺术家时只显示曲名
TEXT_0_FALLBACK = "FM, 1080" ; 无信息时显示备用文字
TEXT_0_ALIGN = CENTER ; 设置文字居中
TEXT_0_START = 20, 0 ; 设置文字起始坐标
TEXT_0_LETTER = 33, 95 ; 设置单个字符尺寸
TEXT_0_LETTERS_LIMIT = $" floor((460 - 8 * 2) / 20) " ; 设置最大字符数量
ANIMATION_0 = 34, 4 ; 设置频谱元素数量
ANIMATION_0_START = 5, 105 ; 设置频谱起始坐标
ANIMATION_0_BLOCK = 40, 30 ; 设置频谱方块尺寸
ANIMATION_0_MARGIN = 1, 3 ; 设置频谱方块间距
ANIMATION_0_BASE_ROW = BOTTOM ; 设置频谱从底部跳动

使用说明:
MESHES 要写屏幕 Mesh,频谱错位就调 DISPLAY_POSDISPLAY_SIZE


⑩ KN5 模型替换

🎭

引用说明:参考 CSP 官方 General – Model replacements
主要作用:用 EXT 隐藏、插入、替换 KN5 模型,不直接改原车 KN5。

基础样板

ini
[MODEL_REPLACEMENT_...] ; KN5 模型替换
ACTIVE = 1 ; 启用模型替换
FILE = model.kn5 ; 指定目标 KN5 文件
SKINS = red? ; 只对指定涂装生效
HIDE = mesh_old_01, mesh_old_02 ; 隐藏指定 Mesh 或节点
INSERT = new_model.kn5 ; 插入新的 KN5 模型
INSERT_AFTER = node_or_mesh ; 插入到指定节点后面
INSERT_IN = COCKPIT_HR ; 插入到指定父级节点内
MULTIPLE = 0 ; 只插入一次
MERGE = 0 ; 不合并同名节点
SCALE = 1, 1, 1 ; 设置模型缩放
ROTATION = 0, 0, 0 ; 设置模型旋转
OFFSET = 0, 0, 0 ; 设置模型位移

说明:
FILE 是原车 KN5,INSERT 是要插入的新模型。内饰件一般插入 COCKPIT_HR


隐藏原车部件

ini
[MODEL_REPLACEMENT_...] ; 隐藏原车部件
ACTIVE = 1 ; 启用隐藏
FILE = model.kn5 ; 指定目标 KN5 文件
HIDE = mesh_plate, mesh_badge ; 隐藏车牌和标志

通过EXTRA隐藏部件

ini
[EMISSIVE_EXTRA_A_...]  ; 隐藏部件
BIND_TO_EXTRA_A = 1              ; 绑定 Extra A
BIND_TO_HEADLIGHTS = 0           ; 不绑定大灯
NAME = mesh           ; 网格名称
COLOR = 0, 0, 0.1, 0.1          ; 开启颜色
OFF_COLOR = 0, 0, 0             ; 关闭颜色
LAG = 0.0                       ; 响应延迟
SIMULATE_HEATING = 0.0          ; 加热效果
LOCATION = FRONT                ; 位置
ACT_AS_HEADLIGHTS = 0           ; 不作为大灯
TOGGLE_VISIBILITY = 1           ; 切换显示
TOGGLE_VISIBILITY_INVERSE = 1   ; 反向显示

替换轮毂

ini
[ReplaceRims] ; 轮毂替换样板
File = old.kn5 ; 原车主 KN5 文件名
OriginalRims =  ; 原车轮毂 Mesh 名称;留空时通常由 CSP 按默认轮毂逻辑替换
Model = new.kn5, 0.295, 0.295 ; 新轮毂 KN5 文件名,后两个数一般用于轮毂尺寸/缩放匹配
Offset = 0.0 ; 轮毂横向偏移,正负值用于调整轮毂内外位置
; Radius = 0.29 ; 可选:轮毂半径参数,需要时取消注释
FrontOnly = 1 ; 只替换前轮,1=启用前轮限定

RearOnly = 1 ; 只替换后轮,1=启用后轮限定

⑪ 附加 FBX 模型

✖️

引用说明:参考 CSP 官方 General – Model replacements
FBX 插入属于玩家项目常用写法,建议实车测试。
主要作用:给车辆附加尾翼、屏幕、摆件、装饰件等 FBX 模型。

基础样板

ini
[MODEL_REPLACEMENT_...] ; 附加 FBX 模型
ACTIVE = 1 ; 启用模型插入
FILE = model.kn5 ; 指定要修改的原车 KN5
INSERT = add_part.fbx ; 插入 FBX 模型
INSERT_AFTER = BODY ; 插入到 BODY 节点后面
SCALE = 1, 1, 1 ; 设置模型缩放
ROTATION = 0, 0, 0 ; 设置模型旋转
OFFSET = 0, 0, 0 ; 设置模型位移