跳轉到

D-20260811-10|逐 Region 接觸耗散輪胎磨耗

背景與驅動力

舊 tire fatigue 只在 driveImpulseNs > 0 時,以車重與材質摩擦係數估算固定磨耗。這把磨耗綁在 「本幀仍需加速」而非真實接觸運動,造成極速巡航、無驅動滑行與下坡完全不耗胎;單一 part 材質與整體質量近似也會讓內部輪轂錯誤增加胎面壽命。

考慮過的選項

  • 保留 drive impulse gate:與接觸物理分裂,極速與滑行的反直覺漏洞仍在,棄。
  • 改用車速/輪速 gate,但保留固定每秒磨耗:能覆蓋滑行,仍無法區分正常滾動與側滑,棄。
  • 以 canonical manifold 的 rolling/slip 耗散能量逐 collider region 記帳(採納)。

決定

  • 每個 tire collider region 對 solid surface 的有效 manifold,依 canonical collider key 排序累加 Eroll=abs(rolling_impulse×rolling_speed)Eslip=abs(tangential_impulse×tangential_slip_speed)Ewear=Eroll+K_TIRE_SLIP_WEAR_MULTIPLIER×Eslip。sensor、fluid、無接觸或低於 MIN_TIRE_WEAR_SPEED_MPS 的靜止數值雜訊不記帳。
  • PhysicsManifest v7 對每個 tire convex proxy 必烘焙有限正值 wearCapacityJ=K_TIRE_WEAR_CAPACITY×regionVolumeM3×ultimateStrengthPa。只計該實際材質 region; 非 tire proxy 禁帶此分支,非正體積或 ultimate strength fail closed。
  • runtime 逐 region 套用 fatigueDelta=thermalWear×Ewear/wearCapacityJ。熱倍率改為 1+K_TIRE_THERMAL_WEAR_MAX×r²,初始 K=2,故由環境溫至熱限平滑放大 1→3;這一項修訂 D-20260811-05 的線性 1→4 暫定曲線,但不改能量域熱模型。
  • broken tire 停止磨耗;respawn 保留 fatigue,新回合的新 world 才重設。現有 provisional builtin GLB 只驗證 schema 與接線,最終 Editor 資產只校準三個 K 值,不改公式結構。
  • 開發期直接升 open4wd_version、PhysicsManifest 與 builtin assets 基線至 v7,重烘 27 個 builtin, 不提供 v6 fallback 或 migration。

後果與影響

巡航、滑行與下坡會按普通 rolling dissipation 耗胎;空轉、側滑與鎖死拖行因 slip 倍率更傷胎, 載重與地表 rolling resistance 也自然進入同一條可測鏈。runtime 只增加有效 contact 數量級的固定 聚合,不重跑 mesh;manifest digest、rollback state 與共識常數仍完整覆蓋結果。