Repository navigation
HUD Style Reference
目前 main 內建 10 個 HUD package。選單不是靠固定清單,而是由 /api/hud/styles 動態掃描有效的 index.html;本頁的 Style ID 是 package/discovery 名稱。共用啟動、元素、縮放、音訊/媒體與 package 部署方式請看 HUD Overlay 總覽 和 HUD 開發指引。
| Style ID | 顯示名稱 | 主要定位 | 特別設定/注意 |
|---|---|---|---|
advanced |
Advanced Racing Arc | 高資訊密度競賽弧形錶 | 動態 redline、lockup、power/torque、boost |
drift |
Drift HUD | 漂移角度、流暢度與風險 | 固定 Drift layout;沒有解析度 preset |
fm4ui |
Forza Motorsport 4 | 原作風格數位弧錶 | 目錄 ID 與內部 registry ID 不同 |
gt7 |
Gran Turismo 7 | 底部寬幅 telemetry cluster | 依賴圖片資產,適合寬螢幕底部 |
mw2005 |
NFS Most Wanted 2005 | 類比轉速、NOS/Boost | 依賴多個 gauge/needle/flash 資產 |
nfs15 |
Need for Speed 2015 | 資產序列驅動的數位弧錶 | 大量 RPM/redline frame,需完整預載 |
s650_hmi |
Ford Mustang HMI | 多主題 Mustang cluster |
s650Theme、s650CenterWidget、s650HmiOffsetY
|
shift_tacho |
Need for Speed Shift | 高對比類比轉速與 shift light | ABS/TCS 圖示目前是 placeholder |
simple |
Simple Gauge | 簡潔圓錶、速度/檔位清楚 | custom color、motion、共用 cards |
vfd |
Retro VFD | VFD 數字、音訊 visualizer、媒體 |
vfdVuOffset 有效;vfdAudioOffset 尚未接通 |
所有 style 都共用 scale、unit/effectiveUnits、elements、glowIntensity、customColor、useDefaultColors、enableSmoothing 和共用 Telemetry Cards 開關。下列 scaleMultiplier 是程式內的基準,不是使用者設定值;使用者最後看到的大小仍受 Overlay scale、viewport 和 style container 影響。
高效能競賽弧形轉速表,包含速度、檔位、RPM、換檔區、Boost、馬力/扭力、四輪 lockup indicator 與 motion effect。適合需要主儀表與車況警示同時可見的競賽畫面。
使用 advCanvasStatic 與 advCanvas 兩張約 1450x750 Canvas。靜態層負責刻度、palette 和幾何;動態層負責指針/讀值、redline、power/torque、boost、lockup dot 和 motion。弧線使用 superellipse 幾何,HUDCore registry ID 為 advanced,scaleMultiplier 為 0.5。redline 優先使用 payload.redlineRpm,lockup 使用 coordinator 的 payload.lockup。
在 Displays/Performance 開啟或關閉 gauge、RPM、speed、gear、power/torque、boost、wheel lockup、motion effect。調整 glowIntensity 和 custom color 時,主錶與 DOM readout 應同步。沒有額外 style-specific 設定;若想隱藏中央 cluster,使用共用 Telemetry Cards 開關。
修改靜態 palette、最大刻度或 redline 幾何時要設 dirty flag;不要把靜態背景每幀重畫。onFrame 不應重新建立 Canvas 或 deep-copy telemetry。
以漂移角度、方向盤 counter-steer、油門/煞車、速度與轉速為核心,另有 Style Meter:FLOW、HOLD、RISK、EVENT 等狀態,適合漂移練習和動態回饋。
頁面 Canvas 是 1920x1080,邏輯 Drift layout 約 1680x640,以 viewport transform、bottom-right/center-bottom anchor 適應 fullscreen。HUDCore registry ID 為 drift,scaleMultiplier/globalScaleFactor 都是 1.0。onFrame 解析 canonical telemetry,獨立 requestAnimationFrame render loop 負責繪圖;style meter DOM 更新有約 80ms 節流。
漂移數學會從速度平面推導 drift angle,steer indicator 約以 ±45° 顯示,counter 狀態會參考 drift angle 和 steer 對齊。torque 顯示依 torque_nm 或 torque_ftlbs 選擇單位。
使用一般 scale、unit、elements 和共用 card 設定即可。Drift 不再提供 resolution preset;固定資訊框架由 HUD 繪製,外層 scale/viewport 由 framework 管理。不要在 control page 重新加入已移除的 preset。
onFrame 只更新最新狀態,完整渲染留在單一 render loop。新增衍生指標時要明確寫出輸入欄位、clamp、平滑係數和門檻,避免與其他 HUD 對同一物理量產生不同語意。
重現 Forza Motorsport 4 的數位儀表風格,重點是 RPM 分段弧面、速度、檔位和 shift sweep,適合喜歡原作視覺資產的使用者。
package/discovery ID 是 fm4ui,但頁面內 HUDCore.registerStyle() 和 HUDCore.init() 使用 fm4_re;這是刻意保留的相容例外。Canvas 約 270x270,scaleMultiplier 為 1.4。rpm_bands 依車輛 maximum RPM 選擇背景和 frame rate,資產包含例如 rpm_4600、rpm_6200、rpm_8000、rpm_12100、rpm_16500 等級距。
只需共用 style、scale、unit、elements 和 glow 設定;RPM band 由 runtime 依最大 RPM 選擇,不提供使用者手動切換。若樣式不出現在清單,先查 /api/hud/styles 的 fm4ui,不要把 selector 直接改成 fm4_re。
新增 RPM band 應同時補 metadata、圖片資產、fallback 與 frame-rate mapping。registry ID 與目錄 ID 的雙名稱要在 code review 和文件中保留說明。
底部寬幅 layout,結合輪胎溫度、踏板輸入、G-Force、Boost、速度/檔位與圖片化視覺背景。適合寬螢幕、想把主要儀表和中央車況橫向排列的使用情境。
主 Canvas 約 1740x240,scaleMultiplier 為 1.0。drawTires、drawBoost 和 renderGT7 在預載資產上疊加 Canvas 動態資料;大畫布會使用 context translate 容納 layout 需要的座標。共用 Telemetry Cards 仍由 host 管理,不能因為 GT7 自己畫 tire cluster 就假定 shared cards 已關閉。
使用一般 scale、unit、elements、glow 和共用 cards 控制。沒有額外 style-specific 設定;若背景或數字缺失,先檢查 asset path、預載完成與 onAnimate 是否在資產 ready 前被延後。
保持 asset preload 和 sweepPending 模式;不要在 onFrame 直接新建圖片。變更寬幅座標時要用實際 viewport 驗證底部邊界與不同縮放倍率。
類比轉速表搭配獨立 boost/NOS gauge、needle、gear/speed 數字和 shift flash,視覺接近 NFS Most Wanted 2005。
Canvas 約 390x390,scaleMultiplier 為 0.95。背景、RPM line、boost_gauge、boost_needle、nos_time、shift_flash 以圖片 layer 合成;指針在獨立 transform/rotate 層繪製。資產以 isReady、sweepPending 控制啟動動畫。
Boost/NOS 是否顯示取決於共用 elements/資料有效性;沒有額外需要填寫的 style-specific 設定。若想減少畫面資訊,可關閉共用 cards 或不需要的 motion/gauge 元素。
確認每個圖片的 onload 和 onerror 都會完成 preload 計數。修改針角、boost 範圍或 NOS 時間顯示時,要以 canonical boost/unit 和狀態 fallback 為準。
資產驅動的現代數位弧形儀表,包含速度/檔位、RPM 動畫、redline 變化和一次性的換檔閃光。
Canvas 約 331x320,scaleMultiplier 為 1.5。實作預載約 359 張 RPM sequence frame 與 19 張 redline frame,依 RPM/max RPM 算出 frame index;lastGear 變更時觸發 shift flash。這是高資產數量樣式,啟動時一定要等待 preload 或使用 sweepPending。
使用共用 scale、unit、elements、glow、color 和 cards。沒有額外 style-specific 設定;高 DPI 或載入較慢時,先確認所有資產完成,再判斷是否是渲染效能問題。
不可把 359 張 frame 轉成每幀新建的 DOM/image。新增或替換 sequence 時要檢查 frame 數、索引邊界、缺圖 fallback、redline frame 對應和 gear transition。
多主題 Mustang S650 HMI cluster,提供 normal、track、heritage67、foxbody 四種 theme,並可切換中央 widget:disable、drive、tire_temp、performance。適合希望使用車廠 HMI 語彙或需要主題切換的使用者。
Canvas contract 固定為 1280x480,safe zone 為 top/left/right/bottom 40/48/48/40,左右 gauge center 約為 (256,250) 和 (1024,250),半徑約 180。renderer 分成 contract、tokens、primitives、cluster components、performance clusters、base driving、center info、layout profiles/layouts/frame;以 Canvas 作為 60Hz 邊界。HUDCore registry ID 為 s650_hmi,使用 S650 專屬 scale baseline/multiplier。
Contract 的 frame 會使用 speed、RPM、gear、pedals、distance、heading、四輪胎溫、power/torque、boost、fuel/lap/race position 等欄位;單位由共用 payload 統一。
| 設定 | 可用值 | 用途 |
|---|---|---|
s650Theme |
normal、track、heritage67、foxbody
|
選擇 HMI 外觀/色彩/配置 |
s650CenterWidget |
disable、drive、tire_temp、performance
|
選擇中央資訊模組 |
s650HmiOffsetY |
數字,預設約 60
|
HMI outer container 垂直位置 |
這三個設定只有 S650 會消費;其他 style 不應讀取它們。
修改 contract 欄位或 layout profile 時,要同步確認 renderer、theme token、control page、legacy normalization 和四種 theme。不要在每個 theme 重複寫單位或 telemetry mapping。
高對比 NFS Shift 類比轉速表,中央速度/檔位搭配 7 段 shift light;另有 ABS/TCS 等視覺 indicator array。
Canvas/容器約 440x280,scaleMultiplier 為 0.9。七段 shift light 由綠色前兩段、黃色中間兩段、橙/紅色最後三段組成,依 RPM/redline 門檻點亮。indicator 以預載圖片資產顯示。
使用共用 RPM、scale、unit、elements、glow 和 cards。ABS/TCS 圖示目前沒有對應的 telemetry data source,應視為 placeholder,不要在文件或 UI 宣稱它們是已驗證的即時狀態。
若改 shift light 門檻,仍要以 payload.redlineRpm 為共用基準。圖片預載需處理 error completion;不要為了讓 indicator 亮起而在 style 內猜測 ABS/TCS 狀態。
簡潔圓形儀表,中央清楚顯示速度與檔位,另有 RPM arc、needle、glow、LC/LOCK badge 和共用 telemetry cards。適合日常使用、低視覺負擔或需要快速讀取速度/檔位的畫面。
Canvas 約 750x750,scaleMultiplier 為 0.6。Canvas 負責 RPM arc、needle、glow;DOM 負責 speed、gear 和 badge,並以 cache 避免速度未變時重建數字 span。custom color 透過 window._currentCustomColor、window._currentUseDefaultColors 與 style CSS variable 同步。
可使用一般 scale、unit、glow、custom color、enableSmoothing、motion effect 和所有共用 cards。沒有額外 style-specific 設定。若要最小化畫面,保留 gauge/speed/gear,關閉不需要的 cards 和 motion。
Canvas palette 和 DOM palette 必須來自同一份 config。離散 LC/LOCK 狀態應用 class/badge;不要為了 badge 狀態重繪整張 Canvas。
Retro VFD 數字/segment 風格儀表,提供速度、RPM、檔位、Boost/EV regeneration 顯示,並整合 32 段音訊 visualizer、左右 VU、媒體標題/演出者、播放狀態、marquee 和視覺/音效 feedback。適合希望 HUD 同時扮演賽車儀表和音訊播放器資訊面板的使用者。
主 Canvas 約 1120x520,scaleMultiplier 為 0.75。renderer 以 14-segment/格狀方式繪製文字和 RPM bars,保存 session maxima,音訊 hook 接收 spectrum/VU 並用 peak hold/衰減避免頻譜閃爍;media hook 會過濾不適合的文字、轉成可顯示 ASCII,過長內容才啟用 marquee。Canvas loop 與共用 cards 分開管理。
| 設定/來源 | 行為 |
|---|---|
vfdVuOffset |
已接通;調整 VU/音訊區域位置 |
vfdAudioOffset |
設定與控制欄位存在,但目前 VFD page 未使用;不要把它當成已生效功能 |
audioDeviceId |
在 Audio controls 選擇 WASAPI playback device;影響頻譜來源 |
hud:media |
由 GSMTC 提供 title/artist/status;沒有媒體時顯示空狀態 |
系統音訊不可用時應衰減到靜音,不要停留在最後一個 peak;媒體 paused/none 時不要把舊歌名當成正在播放。
onAudio/onMedia 只更新狀態,不要在 hook 內做完整重繪。頻譜固定 32 段且 clamp 到 0–1;修改 VFD 字元轉換或 marquee 時要保留長文字、特殊字元和空資料 fallback。
| 設定類別 | 欄位例子 | 適用 |
|---|---|---|
| 一般 |
enabled、hudStyle、selectedMonitorIndex、scale
|
所有 style |
| 單位 |
unit、followAppUnits、units
|
所有 style,實際欄位由 coordinator 統一整理 |
| 視覺 |
glowIntensity、customColor、useDefaultColors
|
所有 style,但各 style 的 palette 角色不同 |
| 元素 |
elements、pauseTelemetryViewWhenActive、enableSmoothing
|
所有 style/host cards,實際支援仍應逐項驗證 |
| cards |
telemetryOpacity、各 card scale/position/offset、Live Map 設定 |
host-level Telemetry Cards |
| 音訊 |
audioDeviceId、soundEnabled
|
使用音訊路徑的 style,尤其 VFD |
| S650 |
s650Theme、s650CenterWidget、s650HmiOffsetY
|
僅 s650_hmi
|
| VFD |
vfdVuOffset、vfdAudioOffset
|
前者有效;後者目前未接線 |
新增 style-specific 設定前,先問它是否能由既有 elements、scale、unit、palette 或 cards 契約解決。若確實是 style 需要的設定,才同步 config type/default、控制頁、launcher normalization、Core payload、style consumer、測試和本頁。新增 style 本身只需要 package、author.json、HUDCore registration 和驗收,不要修改靜態 HUD map。
hud_overlay/HUD_DEVELOPMENT_GUIDE.mdfrontend/src/features/overlay_control/hudStyleScanner.tshudConfig.tsadvanced/index.htmldrift/index.htmls650_hmi/assets/s650_contract.jss650_hmi/assets/s650_renderer.jsvfd/index.html
The repository currently contains ten built-in HUD packages: advanced, drift, fm4ui, gt7, mw2005, nfs15, s650_hmi, shift_tacho, simple, and vfd. This reference describes each style’s purpose, rendering architecture, common controls, and verified special settings. s650_hmi has four themes and configurable center widgets; VFD consumes vfdVuOffset, while vfdAudioOffset is currently not wired into the renderer.
現在の Repository には advanced、drift、fm4ui、gt7、mw2005、nfs15、s650_hmi、shift_tacho、simple、vfd の 10 個の内蔵 HUD package があります。本ページでは各スタイルの目的、描画構成、共通設定、確認済みの追加設定を説明します。s650_hmi は 4 テーマと中央 widget を持ち、VFD は vfdVuOffset を使用しますが、vfdAudioOffset は現在 renderer に接続されていません。
FH6-HorizonTuner Wiki · v1.6.1 已發布 Rust backend / MCP Beta · PR #443(Rust hardening、Agent CLI、Python runtime retirement)尚未合併或發布 · Repository · Releases