無所不能的動畫系統
06-23
無所不能的動畫系統
參考了unity3d和creator,設計的基於時間線的動畫系統。
希望達到的目標:可以實時演算劇情動畫,無所不能
- Animation 動畫播放組件(代碼里可以直接靜態播放,類似audioEngine)
- AnimationClip 動畫數據(記錄了目標和操作,比如改變物體身上的label的數值)
- AnimationState 動畫狀態
抽象
- 動畫不應該和其他任何東西耦合
- 你的任何操作都可以是動畫!!!
- 本質就是改變了某個屬性、調用某個api
播放聲音、粒子
labe的數值變化
sprite的紋理變化
所以Animation是獨立的,可以操作任何東西,無所不能
根據時間線的一系列動畫,構成了劇情cg
可復用性
- 動畫數據和動畫目標分離,動畫目標可以動態改變
- 動畫目標綁定的其實是個 node-tree的結構,包括你動畫中用到的組件
- 同一個動畫可以用於不同的目標。只要符合 結構和組件相同,即可復用
嵌套性
- 動畫里,可以包含多個獨立的物體和動畫
- 可基於時間線的編輯器,並行調用其他動畫(類似總導演級,任意調用自己的動畫和不同角色的動畫,組成劇情)
- 子動畫類型的覆蓋(比如 一個燈泡的默認動畫是loop型,導演調用時,可以改成1次的類型,這裡用克隆,不改變原動畫)
功能性
- 支持精靈動畫、補間動畫、骨骼動畫
- 可以調用到所有的系統組件和系統api(聲音、粒子、active等等)
- 可以調用到所有的用戶自定義腳本
- 動畫融合(1個3d或者2d骨骼角色的上半身攻擊動畫和下半身移動動畫可以同時播,達到邊砍邊跑的效果)
動畫狀態機(見u3d)
- 可以精確的控制動畫轉換的細節
- 減少控制動畫的代碼
推薦閱讀:
※OpenToonz 學習筆記day2
※mg動畫視頻應該怎麼製作?!
※宣傳片製作|萬彩動畫大師
※Maya通過粒子的物理運算來輔助角色次要動畫的製作(下)
※這些「大佬」們的動畫,顛覆你對火柴人的想像
TAG:動畫製作 |