動態動畫系統製作中 part1

1 篇文章 / 0 新
Hiro
Hiro's 的頭像
動態動畫系統製作中 part1

Unity 滿有名氣的,小玩了一下。
覺得... Unity 還是有滿多可以改進的地方 www
製作中,有不少地方是 hack 出來的。ragdoll 做得不夠好,Mecanim 本身也有些 bug。
有興趣的可以給點建議,來討論一下啊~
 

可操作的版本連結
基本操作 :
* 滑鼠左鍵可以 impact 角色
* Space 鍵可以把角色喚醒
* 滑鼠右鍵可以丟箱子
 
按鈕說明 :
* Ragdolled Toggle : 於 animation 及 ragdoll 狀態間切換
* Pull to Vec3.zero : 對角色的手往 Vec3.zero 的方向施加推力
* Ragdoll, drop! : 高空拋下角色
* to Vec3.zero : 低空拋下角色
* visualiseAnim : 實體化的 animation 間切換
 
第一件事!必須跟 Perttu Hämäläinen 說聲謝謝。感謝他無私的分享他 animation 和 model,讓我可以快速的開始研究。
這是他網頁及 package 的下載的連結
 
花了大概兩個禮拜,這是我第一個 Unity project。
研究期,發現 Unity 的 animation system 都是靜態的,無法與物理系統做互動。(不過也可能是因為我還沒找到方法。)
所以,我開始製作自己的 animation system。
 
這裡先簡要的介紹一下各個角色的差異,希望可以在下一次做詳細一點的說明。
 
■ Mecanim - blend
PS1、PS2 時代常會看到的做法。animation 之間沒有 blending,所以角色動作看起來會像時間跳躍過了一樣。
嗯... 對於 PS1 時代來講 ragdoll 可能有點太先進。當時多是使用一個死亡 animation 來代替。
 
■ Mecanim + blend
Perttu Hämäläinen 的做法. 在 ragdoll 和 animation 狀態間做 blend。
回到了 animation 狀態後,雖然 Mecanim 系統有提供 blend 功能,但它並不是個動態的動畫系統。試著對人物丟幾個箱子應該就會知道箇中差異了。
 
■ gen1
Generation1, 嘗試,用程式的力量,移動 ragdoll 的個別部位。
 
■ gen2
跟 gen1 差不多但是用了比較正確的做法。
 
■ gen3
微調過的 gen2,比較不會抖動。
 
■ gen4
gen4?那裏有 gen4?哈,製作中。
gen3 的優化版,將會追加 state machine 和 character controller,然後... 如果 Legacy animation system 可以簡單的對應到不同大小的 model 上的話,應該會放棄使用 Mecanim 來省計算 cost。(那我大概會需要自己寫 animation mask 了...)
當這些都準備好之後,我會開始製作 Avatar 系統。將會用於我所有的 game 裡面。