新的骨骼動畫系統終於初具規模

連續糾纏了動畫師好幾天,終於基本實現預想的效果了,感覺真的很棒。下一步就是加到遊戲裏面了。

回想起來可能受WOW影響太大了,也想做一樣的上下身動作組合,也想做類似的武器多掛點,部件的局部動作(就是象高科技盾那樣,自己帶一個動作)加上更基礎的骨骼動畫幀間插值,自動過渡等等,這些都是原來的引擎不支持的,只能自己從頭寫。

算起來大約相當於一個專職程序員近半年的工作量(實際上不只一個人),包括設計文檔,底層和中層編碼,編輯器,max導出插件,美術製作說明文檔等。

其實從大約2~3周後底層就基本搞定了,就是能在自己的小demo裏看到動作插值和組合的效果,後來很長一段時間都在修改接口,就是怎樣給出一套邏輯簡單,又相對靈活的接口;哪些東西該由底層負責,哪些該由用戶自己負責。當然代碼優化上也花了一些功夫。

還有一個難點就是怎樣儘量不對美術的製作習慣產生大的影響,比如原來設想是每一個可能掛接到不同部位的部件(比如匕首可以拿在左手也可以拿在右手,也可以掛在腰上),都需要綁定在一個特定的骨骼點上(這個骨骼點不屬於角色骨架),然後再由程序負責把這個骨骼點掛在不同的地方,但是美術習慣了武器直接做在右手(因爲以前的遊戲沒有現在的功能),後來考慮了一下還是由程序寫了一個小工具來轉換這樣的mesh,就是把其中依賴於指定骨骼點的頂點改爲依賴另一個骨骼點。美術做的畢竟是藝術活,對他們在流程上的要求越少越好。

值得一提的是,原來也想做動作加權融合,但考慮到會大大增加接口複雜度,而且效果不一定好,美術還很難控制,後來就放棄了。觀察過WOW的角色動作,我能肯定用了動作融合的只有捱打,比如你正在出招的時候被打中,就會看到招式動作和捱打動作的融合,看起來效果有點古怪,但至少出招動作沒有被打斷,而且捱打了也有反應。一般的網遊對於這種情況還有這樣幾種處理:最偷懶的是捱打時判一下如果角色在空閒狀態才播放捱打動作,如果在出招就不播放捱打,而只播一個特效;或者即使角色在出招,也會打斷招式動作而播放捱打動作,這樣我覺得不好,因爲畢竟出招動作應該還是比捱打動作重要一些;還有一種就是衝突的時候招式動作照樣播,同時播放一個比如只包含腰部和脖子等少數幾個骨骼點的捱打動作,這樣不管原來在播什麼動作,都會看到角色腰往後一折(當然幅度不能太大),脖子往後一仰算是捱打了,身體其他部分仍然在繼續原來的動作。據我觀察好像《熱血江湖》是這麼處理的,當然這個需要骨骼動畫系統支持,美術調動作也需要一定技巧。

PS:雖然是人家早就已經實現的東西,做出來還是小有一點成就感的。但也沒什麼值得誇耀,做別人做不到的事情,才叫牛叉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章