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 解釋器中不可用。