理解 Blender:數據、fake user 與 action


3樓貓 發佈時間:2023-09-17 00:32:28 作者:TirelessKoriel Language

fake user 到底是啥?

首先我們要理解一個基礎概念,data-block(數據塊)。data-block 是 blender 中一個非常基礎且重要的概念,但是我們在平時的使用中並不會意識到它。例如,action、material、texture 這些都是 data-block 。它不能單獨存在,通常都和主要數據綁定在一起,否則關閉 blender 時,這些無主的 data-block 就會被 blender 的垃圾清理器清楚,再次打開 blender 這些 data-block 就消失了。
所謂的關鍵數據一般就是模型或者 armature,在 blender 的層級列表中,這種數據一般都是以橘黃色圖標出現,作為其他數據的根。
所以說理解 blender 層級列表是很重要的,它展示的其實是 blender 保存數據的方式(典型的工程師思維下的產物)。
而所謂 fake user 就是創建一個 fake 主數據,用來保存無主的 data-block,這樣垃圾清理器就不會將它刪除了。

action 到底是啥?blender 如何管理 action 和如何將 action 導出的?

理解 action 的關鍵在於兩點:
1. action 主要包含兩個數據:關鍵幀和 curves
2. action 關鍵幀裡會包含很多當前關鍵幀索要修改的屬性,這些關鍵幀所包含的屬性都會有一個唯一的名稱(例如,X Location),在 action 被啟動時,blender 會根據這個名稱,在整個場景中去做屬性名稱匹配,匹配到的屬性,就會被 action 修改。也就是說,action 並不會和某個場景中的物體綁定,它不關心你是誰,只關心你是否有它要修改的屬性。當然,屬性名稱可能會有前綴,這個前綴就指定了某個物體,但是這無所謂,對 action 來說,這種前綴也只是屬性名的一部分
舉個例子,如果我們在場景中創建了一個物體A,然後以這個物體A來創建了一個 action A(其實沒必要,action 可以單獨創建,和場景中具體的物體無關),然後我們用這個 action A 來保存了物體A的縮放和位移變換,不過由於物體A 不是骨骼,所以位移和縮放屬性沒有前綴。這個時候我們添加物體B,執行 action A 就會發現,物體B會做和物體A一樣的變換。
接下來我們以油管上某教學視頻為實例,更充分的理解 action 相關概念:
Blender FPS Rigging & Animation Tutorial - Part 1 - Presentation
下面來說這個 fps 教程中所涉及到的 action 的問題。
在視頻教程中,製作者只做了兩個獨立的模型,一個是第一人稱下的兩條胳膊,一個是槍。他們都各自有綁定和模型數據。不過為了方便控制,胳膊的某些骨骼綁定了槍的根骨骼,這樣做的目的是保證在移動槍的時候,胳膊也會跟著移動,不至於槍動一下胳膊就修改一下。
然後以槍為 action 的編輯目標,進行換彈動作的製作。這樣就讓我產生了一個疑問,這個和槍綁定的 action,是怎麼關聯到胳膊上並且能導出的?
結合上面我們對 action 的分析,這個問題就變得很好理解了。bake animation 已經指明動畫是被烘焙的,我們 gun_idle_pose 雖然是以 gun 來創建的,但是和前面說的一樣,它並不是和 gun 綁定。那麼在烘焙 arm 動畫時,action 驅動 gun 做變換,gun 變換驅動 arm 做變換,這個變換就會被烘焙到 arm 導出的動畫數據中。
引用:
The Nuts and Bolts of Blender's animation system(6:13 開始講解 action 相關)
Blender FPS Rigging & Animation Tutorial - Part 23 - Exporting From Blender
Blender: Fake User (The Shield Icon)

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com