

先講清楚邊界:這是均勻密度剛體箱、固定摩擦與重力作用下的準靜態模擬。沒有紙箱變形、內容物晃動、棧板撓曲、運輸加速度、震動或外部撞擊。
判斷一疊箱子會不會倒,常用的簡化方法是:
這個規則計算快,不需要每個候選擺法都跑物理模擬,因此很適合放進棧板規劃器。
但「理論上合理」與「在目前模型裡足夠可靠」仍是兩件事。本篇只做一件事:把解析規則的預測與 PhysX 模擬四秒後的結果逐一比較。
最初設計的水平位移範圍是 [-0.02, 0.28] m。先用 200 個不進入正式結果的 seed 掃描解析模型後,發現 99% 都被預測為穩定。
如果直接用這組範圍做驗證,就算模型只會回答「穩定」,也可能得到很高的一致率。這不是模型有預測力,而是題目幾乎沒有反例。
因此,正式執行前重新調整位移範圍:
| 水平位移範圍 | 解析模型預測穩定比例 |
|---|---|
[-0.02, 0.28] m |
99% |
[-0.05, 0.45] m |
57% |
[-0.05, 0.50] m |
約 50%,正式採用 |
[-0.05, 0.65] m |
25% |
[-0.05, 0.80] m |
8% |
正式 seed 與設計掃描 seed 完全分開。這個步驟的目的不是把答案調成好看,而是讓測試同時包含足夠的穩定與傾倒案例。
這是模型驗證很重要的原則:如果測試資料幾乎只有一種答案,高準確率可能沒有意義。
四秒影片中,箱子看起來沒有倒,不代表它真的沒有緩慢滑動。因此,本篇在執行前先把穩定定義成兩個可計算條件:
判定直接由 USD 姿態計算,不靠人工看影片。影片用來理解情境,數值才負責通過或失敗。
| 指標 | 正式結果 | 鎖定門檻 | 判定 |
|---|---|---|---|
| 穩定性一致率 | 0.9333(28/30) | ≥ 0.90 | 通過 |
| 解析模型預測穩定比例 | 0.5667 | 僅記錄 | — |
| 物理模擬實際穩定比例 | 0.6333 | 僅記錄 | — |
| 模糊案例比例 | 0.0667(2/30) | 僅記錄 | — |
| 單尾精確二項檢定 | p = 4.34 × 10⁻⁷ |
α = 0.01 |
通過 |
| Cohen's κ | 0.867 | 僅記錄 | — |
| 重複試驗 | 28/30 | ≥ 0.90 | 通過 |
| 數值收斂 | 通過 | — | 通過 |
更值得注意的是分歧的位置。依正式指標與原文正文,判準有把握的 28 個 seed 全部一致;2 個落在門檻附近的模糊案例全部不一致。
而且兩次不一致都是同一個方向:解析規則預測會倒,物理模擬卻站住。沒有出現解析規則核准穩定、物理模擬卻倒下的案例。
對一個前端篩選器而言,這種錯誤方向偏保守:可能刪掉少數其實可行的擺法,但在這 30 個 seed 中沒有核准後來傾倒的擺法。
不過樣本只有 30 個,不能把「本次沒有」寫成「永遠不會」。
若先看到兩個錯誤,再畫一條範圍把它們圈起來,這只是事後解釋。
本案例在第一次正式執行前,就先定義最差穩定裕度落在門檻 ±0.05 內為模糊區,並規定這個分組只作診斷,不改變正式通過條件。
所以我們才有資格說:所有分歧都發生在模型事前就表示沒有把握的位置。
一個數字是否有說服力,不只看數值大小,也要看規則是在結果之前還是之後定義。
質心投影判準只處理幾何與重力矩,沒有摩擦係數。它可以回答「合成質心是否跨過支撐邊界」,卻不能判斷箱子會不會先沿接觸面滑走。
本篇模擬中的接觸摩擦固定為 0.6/0.5,一致率只對這組摩擦與幾何成立。若摩擦降低,解析判準可能仍說穩定,物理模型卻因滑動而失敗。
因此,這個結果比較接近:
在目前剛體幾何與固定摩擦條件下,質心判準可以作為快速篩選器。
而不是:
只要質心投影在箱子裡,任何堆疊都一定安全。
物理在 CPU 上執行並關閉 GPU dynamics,減少了 GPU 排程造成的變異。但接觸豐富的場景,在同一個 session 連續重播時,連續位移量仍可能有約 10⁻³ mm 的差異。
本案例的穩定/傾倒判定每次相同,連續數值則在預先設定的容差內。這是一種分層的可重現性:
這比宣稱物理模擬「逐位元完全相同」更誠實,也更符合接觸求解器的實際行為。
可以支持的結論:在四個 200 mm 均勻密度剛體箱、指定水平位移範圍、固定摩擦與無外部擾動下,解析質心判準與四秒 PhysX 模擬的一致率為 28/30,而且分歧都在事前定義的門檻附近。
不能支持的結論:
Day 26 會再往前一步:即使堆疊規則合理,真正把箱子吸起來時,重心偏移仍可能讓箱子傾斜並撞到旁邊的箱子。