跳轉到

D-20261020-02|旋轉面形狀分類移至烘焙期

2026-10-21 關聯追補:tire/roller 部件內多個判圓 proxy 時,只有半徑最大者(並列皆留)保留 shape,被包覆內件退回凸 hull,見 D-20261021-02; 判圓準則與其餘三族規則仍有效。

背景與驅動力

D-20261020-01 以 runtime 啟發式(proxy 對 hinge 軸最大半徑 ≥ 保守 cylinder 半徑 × HINGE_ROLLING_PROXY_RADIUS_RATIO)把輪類滾動面改掛 cylinder,修掉八角輪偏航;但該判定 在 26 點量化之後進行,圓度資訊已被銷毀:刻意的非圓輪(方輪、齒輪)會被啟發式誤掛 內切圓柱、或被固定 26 向量化切掉角點,皆無法忠實呈現作者造型。同族問題涵蓋武器旋轉體 (revolute rotor 的齒盤/平滑盤同樣被 26 點 hull 離散)與連續旋轉 kinematic entity (collider 現況=每節點 AABB box,旋轉圓盤物理上是「旋轉方箱」、可困住車輛)。三族原型閘 (v15616/v15623/v15624)證實 cylinder 路徑決定性(含 Node/Chromium 逐位元)與 witness 族皆無回歸。

考慮過的選項

  • 維持 runtime 0.98 啟發式:非圓輪誤判為內切圓柱、無法支援作者意圖的搞怪形狀,棄。
  • runtime 讀 mesh 重推形狀:違反 admission 信任模型(runtime 不得解析幾何重算),棄。
  • 分類移至烘焙期、在量化前的全解析度網格上判定,結果烘入 PhysicsManifest(採納)。

決定

  • PhysicsManifest 版本 1→2:part proxy 與 track entity collider proxy 新增可選 shape 欄({kind:'cylinder', radiusM, halfHeightM, centerM, axisLocal},asset-local、微米量化)。 manifest 一律由 decoded 幾何重推導+digest 交叉核對,分類是推導的一部分,跨 peer 決定性。 pre_launch 無遷移義務:無 fallback、無雙讀,公版 27 顆 GLB 單批重烘(active 武器的 auto_weapon_physics wire 以 Stage 3 同式重算、auto_mass_g 同步重印)。
  • 判圓準則:對該族旋轉軸取 64 個固定徑向方向的支撐值, rimR − min(support) ≤ ROLLING_SURFACE_ROUNDNESS_EPSILON_M(protocol 常數、0.0005m)判圓。 計畫初值取接觸容差 0.1mm,實測公版胎作者網格外緣頂點抖動達 0.15mm(v15615),故定為 接觸容差 5×:作者造型「圓到半毫米內」即理想化為圓柱;12 邊形級粗面(r=16mm 時支撐偏差 ≈0.55mm 起)仍判非圓=作者意圖。偏心(圓心離軸)不判圓。
  • 三族旋轉軸來源:tire/roller=part Mount local +X(逐 proxy 判定);武器=revolute actuator 軸、僅單體 meshNode payload(chain 非剛性旋轉體不分類);kinematic entity= rotation_axis 且僅連續 360° 旋轉(rotation_amplitude_deg = 360;振盪型不分類),逐 collider 節點判定。
  • 圓 → cylinder:radiusM=擬合外緣半徑(取代 D-20261020-01 的 AABB 投影半徑作為 collider 尺寸;公版 6 顆輪實測 fitted 比 AABB 投影大 9–165µm=軸向極值 vs 真圓半徑之差)。 hinge descriptor 的 radiusM(AABB 投影、驅動換算用)與 anchor/axis/pose 來源不變。
  • 非圓滾動 proxy → 保角支撐量化:徑向剖面 2D 凸包角點(上限 12、超出時由最大半徑角點 起等角距裁減)、每角點取 ±軸向傾斜兩個支撐、加兩端蓋,總點數 ≤26;hull 圓周站落在 authored 角點上(方輪零失真、齒尖全保留)。退化(<4 點或 hull 無體積)回固定 26 向。 僅適用分類為非圓的旋轉面 proxy,不動通用零件量化器。
  • runtime 只讀標記:shape 存在即建 ColliderDesc.cylinder(輪類 pose=shape 中心經組裝 變換+hinge cylinderRotationLocal;武器=part 變換 ∘ 軸對齊;entity=entity-local),否則 convex hull。刪除 isRollingHingeProxy 啟發式與 HINGE_ROLLING_PROXY_RADIUS_RATIO 常數。 非圓的連續旋轉 entity collider 維持既有每節點 AABB box(忠實 hull 升級另案)。
  • 傷害計帳(裁決方案 b):不新增研磨/持續接觸傷害機制。旋轉武器的傷害輸出來自幾何 特徵——齒形=離散高衝擊(保角 hull 忠實保留)、平滑盤=低傷害推擠(cylinder);作者要 傷害就做齒。原型證據:smooth-cylinder 最大相對速度 6.0 m/s < smooth-hull 8.0 ≈ toothed 8.1。

後果與影響

  • 快照位元組、manifest digest 與 v1 不相容(pre_launch、無已發布資料);determinism golden 場景升 revision-14——胎 proxy 改帶烘焙 shape 標記後 state hash 與 revision-13 逐位元相同 (Node/Chromium 核對),conformance 向量零增量=標記路徑與啟發式路徑在公版圓胎上等效。
  • 公版重烘後 6 顆 tire/roller 全判圓(單一滾動 proxy 各帶 fitted cylinder);weapon-02 rotor 判非圓(4 角剖面)→ 10 點保角 hull=作者造型忠實化的預期行為。
  • 搞怪輪、齒盤成為一級公民:物理形狀=authored 角點,不再被內切圓柱或固定量化器失真。
  • 多車/旋轉接觸成本面以 T5 治具另行重量(smooth-cylinder 拒絕 trial 偏高為既知觀察)。