Blender 動作狀態檢查 是做什麼的?
使用時機
- Blender 角色在動畫中出現扭曲、鏡像、扁平、偏移或腳部滑步等問題。
- 使用者詢問已匯入的化身、骨架或重定位動作是否符合預期姿勢。
- 需要將渲染證據與結構化事實(如骨骼、邊界框、接觸點與面向向量)進行比對。
- 工作流程依賴於判斷模型是角色、道具、代理網格、控制骨架還是損毀的匯入。
核心原則
不要僅憑截圖判斷動畫 3D 資產。截圖是審查證據,但它們隱藏了軸向慣例、骨骼名稱、物件縮放、局部變換、父級網格、材質插槽以及逐影格接觸狀態。
先提取結構化的 Blender 狀態,再使用視埠截圖或渲染來確認這些事實所隱含的內容。
運作方式
- 在判斷動作前,先建立乾淨的場景與資產基準。
- 使用匯出工具或在 Blender 直譯器內執行的 Blender Python 從 Blender 中提取結構化事實。
- 取樣最可能暴露接觸、方向、縮放與重定位錯誤的影格。
- 將測量到的事實與使用者預期的姿勢、方向、地面平面及渲染目標進行比對。
- 回傳簡潔的報告,區分確認的事實、可能的原因與所需的修復。
檢查流程
-
盤點場景。
- 列出網格、骨架、空物件、攝影機、燈光、修改器、父級關係與隱藏物件。
- 在判斷化身之前,先將角色網格與輔助/代理幾何體分開。
- 記錄物件空間與世界空間的邊界框。
-
識別骨架。
- 捕捉骨架名稱、姿勢骨骼、骨骼頭/尾、旋轉、父級鏈、約束與靜止姿勢軸向。
- 對應語義骨骼,例如臀部、脊椎、頸部、頭部、肩膀、手肘、手部、大腿、膝蓋、腳踝與腳部。
- 標記缺少的左右配對與不尋常的命名方案。
-
確定前方、上方與側方軸向。
- 同時使用骨盆、脊椎、肩膀、臀部、頭部與腳部,不要依賴單一的網格法線。
- 將局部骨架軸向與世界軸向及匯入檔案慣例(例如 glTF Y-up 與 Blender Z-up)進行比較。
- 當臉部/頭部/腳部方向與根運動衝突時,標記可能為鏡像或反向匯入。
-
取樣動畫影格。
- 檢查起始、中間、接觸、騰空與極端影格。
- 記錄根部位置、根部朝向、骨盆高度、軀幹傾斜、肢體方向、腳部離地高度與網格邊界。
- 對於較長或快速的動作,在翻轉、落地、轉彎、碰撞與地面接觸附近更密集地取樣。
-
在歸咎重定位之前檢查模型完整性。
- 在應用動畫前確認乾淨的基準形狀。
- 除非使用者明確要求修復,否則保留原始網格、材質、骨架與蒙皮。
- 在證明為其他問題之前,將無法解釋的類球體斑點、巨大代理網格或壓縮形體視為匯入/選取問題。
-
診斷接觸與動作問題。
- 地面穿透:逐影格比較最低腳部或鞋子頂點與地板高度。
- 腳部滑步:在著地影格間比較腳部世界位置。
- 腿部交叉:比較左右大腿、膝蓋、腳踝與腳部的側向順序。
- 扭曲損傷:將骨骼擺動方向與圍繞肢體軸的旋轉/扭曲分開比較。
- 縮放漂移:比較動畫網格邊界與乾淨基準邊界。
-
先報告事實,再給出意見。
- 包含影格編號、物件名稱、骨骼名稱、世界座標與閾值。
- 將確認的失敗與視覺上的懷疑分開。
- 僅在結構化狀態解釋了要尋找的內容之後,才附加截圖。
建議報告格式
## Blender 動作檢查
### 場景盤點
- 角色候選:
- 骨架:
- 輔助/代理物件:
- 攝影機/燈光:
### 方向
- 世界向上:
- 角色前方:
- 根部朝向:
- 鏡像/反向風險:
### 基準完整性
- 乾淨網格邊界:
- 動畫網格邊界:
- 材質/蒙皮保留:
- 可疑的非角色網格:
### 影格發現
| 影格 | 發現 | 證據 |
| --- | --- | --- |
| 1 | 乾淨基準姿勢 | 臀部/脊椎/腳部對齊 |
| 96 | 腳部穿透地板 | left_foot min_z = -0.04 |
### 結論
- 通過/失敗:
- 所需修復:
- 渲染就緒度:
範例
帶有腳部滑步的走路循環
情境:重定位後的角色在走路循環中看起來像在滑冰,但前方攝影機角度使腳部接觸難以判斷。
套用流程:
- 盤點場景:角色網格
HeroBody,骨架HeroRig,地面平面Floor,無隱藏代理網格。 - 識別骨架:語義腳部為
foot.L與foot.R;臀部為pelvis;根骨骼為root。 - 取樣動畫影格:在著地腳時刻附近檢查影格 1、18、24、30、42 與 48。
- 診斷接觸與動作問題:在著地影格間比較世界空間的腳部位置。
提取的事實:
| 影格 | 事實 | 證據 |
|---|---|---|
| 18 | 左腳著地 | foot.L min_z = 0.004,腳趾與腳跟皆接近地面 |
| 24 | 左腳著地時滑動 | foot.L x = 0.21 -> 0.28 跨越六個影格 |
| 30 | 骨盆持續前移 | pelvis y = 1.14 -> 1.31 |
結論:渲染就緒度失敗。動作需要腳部鎖定清理或重定位約束審查;身體網格不需要調整比例。
反向匯入的角色
情境:角色在靜止影格看起來正確,但動畫朝預期行進方向的相反方向移動。
套用流程:
- 確定前方、上方與側方軸向:比較頭部、胸部、腳部與根運動。
- 取樣動畫影格:檢查影格 1 與行進路徑的中點。
- 先報告事實,再給出意見:分別包含根部朝向與模型面向方向。
提取的事實:
| 影格 | 事實 | 證據 |
|---|---|---|
| 1 | 角色臉部朝向世界 -Y | 從 neck 到 head 的頭部/胸部向量解析為 -Y |
| 72 | 根運動朝向世界 +Y | root y = 0.0 -> 2.8 |
| 72 | 腳部視覺上向前,但與行進方向相反 | 腳趾骨骼指向 -Y,而位移為 +Y |
結論:可能是反向匯入或重定位前軸向不匹配。在編輯動畫曲線之前,先修正匯入/重定位的軸向對映。
實用閾值
- 除非場景單位比例另有說明,否則假設 Blender 預設的米級單位。
- 除非地面是軟質或刻意風格化,否則將高於 1-2 釐米的地面穿透視為可見。
- 將超過 5% 的突然縮放變化視為可能的骨架、約束或變換繼承問題。
- 在騰空倒立運動期間發生左右腳踝側向順序翻轉,即使後續恢復,也應視為腿部交叉風險。
- 除非來源動作包含快轉,否則將每影格超過 30 度的根部朝向跳躍視為可疑。
反模式
- 除非任務明確是網格修復,否則不要修改身體比例來強制姿勢匹配。
- 在記錄乾淨基準之前,不要將其烘焙掉。
- 不要使用單一渲染攝影機角度作為姿勢正確的證據。
- 在記錄輔助物件為何不屬於角色之前,不要將其刪除。
- 在同時檢查頭部、腳部、軀幹與根運動之前,不要假設化身面向 +Y、-Y、+X 或 -X。
工具說明
如果 Blender 狀態匯出工具可用,建議使用包含網格、骨架、姿勢骨骼、材質、接觸點、邊界框與取樣動畫影格的 JSON。如果沒有匯出工具,可透過 Blender 本身執行一個小的 Blender Python 腳本,例如 blender --background scene.blend --python collect_motion_state.py,因為 bpy 在一般的系統 Python 直譯器中不可用。