D-20260714-01|Mount 組裝車輛呈現與共用組裝服務¶
背景與驅動力¶
正式車輛呈現先前停在整車模型、程序化方塊與 Canvas 2D 原型;多 GLB 組裝驗證可行後,需把「車輛 = 零件組合」從資料模型貫通到視覺呈現,並解決每張卡片各建 WebGL context 的縮圖成本(取代整車模型與程序化方塊路線,無前 ADR)。
考慮過的選項¶
- 整車單一模型:與零件化 loadout 資料模型脫節——廢。
- 程序化方塊車輛 /Canvas 2D 合成車:降為視覺驗證原型、不進正式車輛頁。
- 多 GLB 組裝 +DOM 介面 +Three.js(採納)。
決定¶
- 正式車輛由 chassis、body、motor、battery、四顆 tire、零至六顆 roller、可選 chip 與 weapon 等多個 GLB 組裝;
VehicleLoadout改為 FL/FR/CL/CR/RL/RR 位置化結構、weapon 存在時才要求 chip。 - chassis
Mount_*的完整 transform 是唯一擺位權威;同一PartRef只 fetch/parse 一次再 clone;車庫、工坊、showcase、縮圖與 race 共用VehicleAssemblyService——物理可在結果上建 body/constraint,但不得重算另一套視覺位置。 - 正式呈現 =DOM 操作介面 +CSS/ 主題資產 +Three.js 組裝車;卡片共用單一 offscreen renderer,cache miss 才產透明或主題化靜態 WebP/PNG,不讓每卡各建 WebGL context。玩家畫面可套 PBR/Toon render profile、零件編輯器維持 neutral PBR。
- 中秋「月兔專業工坊」定為永久可選的正式 seasonal 主題(非測試、非日期鎖定活動),車體仍須保持低車身、四輪、前後導輪的迷你四驅車比例。
- 開發期不保留舊 loadout migration:
UNIFIED_DB_VERSION維持 1,維護者於本機測試前手動重置open-4wdIndexedDB,程式不得自動刪除資料庫。
後果與影響¶
視覺與物理共用同一擺位權威、杜絕雙套位置漂移;縮圖成本由 per-card WebGL 降為單 renderer+ 靜態圖 cache。承接 D-20260713-02 的舞台第一焦點方向;細節見 車輛組裝.md。