骨骼與動畫重定向——Unity探索筆記之視覺解決方案(一)

本篇關鍵詞

挑選人物資源

Avatar和動作狀態機

1. n我能找到什麼資源?

身為一個窮且只懂程序的獨立遊戲開發者,首先攔在我面前的不是遊戲的玩法如何微創新,而是我如何能有效利用各種資源,因為目前我還沒想做什麼就做什麼的力量。

第一個來源毫無疑問就是Unity的資源商店,第二個是Mixamo,第三個去淘寶花錢找人定做。

1)Unity資源商店的好處是,花少量的錢能買到不錯的模型或插件,實在太貴就去淘寶嘛!插件買來帶代碼還好說,不行就自己改;但人物模型和動作怎麼辦?這兩個很可能直接買不到稱心的,迫切需要解決修改問題,要看有沒有其他途徑獲得。

2)Mixamo在業界評價挺高,不過我之前因為沒有從事過3D的工作,所以根本不知道。它針對模型和動作提供了一個完整的解決方案,這個方案可以讓你有修改許可權,我試了一遍,感覺Amazing!

3)去淘寶找人做這件事我覺得只能是個候補解決辦法,因為不能隨便反覆修改。

綜上所得,插件部分,從Unity(或淘寶)上買,人物模型想辦法利用Mixamo,如果動作方面Mixamo上不能提供,且資源商店也沒有辦法解決,就去淘寶找人做。

2. n模型和動作的工作流問題

也許有人會問,就一個人還要什麼工作流!我認為不管幾個人,做事不得章法沒有體系的話,就是在浪費時間和金錢。

我該怎麼確定工作流呢?

先從資源商店試起,我下載了其中一個免費模型,在Unity使用起來當然沒有問題,如果我要在Unity里重複利用模型的動作,怎麼辦呢?我記得很早之前這個就不算技術難題了,接下來圍繞換動作這個主題,看看各個方面的資料是怎麼支持Unity來做這件事的。

1) nUnity Manual關於Animation的部分

大方面來看,重點要看下圖紅框框出來的部分,第四個紅框列出了重點專有名詞的解釋(老外真貼心)。

2) nAnimation Clip重點看下圖

這個部分看完,要知道常用的導入格式是什麼及這個格式的特點。如果要用到Avatar,需要把模型設置為humanoid。什麼是Avatar,怎麼創建和設置Avatar。如何使用人性模型。

3) nAnimatior Controller重點看下圖

這個部分看完,要知道什麼是動作狀態機及一些簡單的細節。

4) nAnimation Reference是重點,幾乎都要看,除了下圖藍框畫出來的不用看。

以上看完就要做簡單的動作狀態機了,還有常用的導入格式fbx相關信息。

看完上面的資料沒記住還不會怎麼辦,很簡單,用練習來加深記憶,下面就從Mixamo工作流中繼續學習Unity有關Animation的知識。

5) n有關Mixamo

Mixamo

國外的一些東西,可以先看看上面維基百科大致了解一下情況,我在Mixamo的模型里轉了好幾天才發現,維基百科已經給了我想要的信息:它的人物骨骼究竟遵循什麼標準可以套到不同的動作上?用機器學習解決的。

首先打開Mixamo官網,看到下圖所示

Store——提供人物模型和動作的地方,一切都是免費!太開心了!

Products——如果想自己創建角色、骨骼、動畫需要哪些工具。

官網雖然提供了教你怎麼使用工作流的視頻,可是在我看來,官網的視頻遠遠沒有我在YouTube上找的好:

視頻一:

youtube.com/watch?

朋友們,看完上面這個視頻,你就知道如何從Mixamo上下載模型動作,如何導入Unity里,最後如何做動作狀態機,是不是很棒啊!我怎麼就沒早點找到呢!(怒掀桌子!)

注意:經過我實踐得出:單獨下載模型或動作都是不行的,需要模型動作一起打包下載才可以,不然你導入Unity里的fbx文件都是空的。

從Mixamo上下的模型動畫文件有個特別大的好處是,文件格式非常清晰,如下圖所示

Sporty_Granny就是模型,下面名字中間有@的是Unity推薦的動作命名規則,這樣的規則非常適合重用動作,因為它把人物Avatar和動作分開了,我在Unity資源商店裡下載的免費模型就不是這麼做的,居然每個動作都有自己的Avatar,當然這可能就是免費的原因。

所有資料都準備好了,我就要講怎麼換Avatar,重用動作了。

6) n動畫重定向

剛開始我在Manual里找答案,它還真提供了,就是Retargetingnof Humanoid animations,但是!我根據它說用Character Controller做的感覺不太對啊,後來想到,換動作這件事不就是把人物換了嗎,那人物模型對應的不就是Avatar,我把動作里的Avatar Definition改成Copy From Other Avatar不就成了,如下圖

結果Unity不讓這麼干,改了之後動作沒法用,只能還原。

其實這點我不是很明白,因為提示框里寫了可以這麼做,Avatar不就是提供動作重定向的介面,為什麼不能這麼做?希望有懂得朋友回答一下。

此路不同,那上谷歌搜一下中外資料吧,中國的只有幾個非常簡單的帖子提到,其中一個給了點線索,是說通過AnimatornComponent里的Controller替換來重定向,可他只用文字描述,所以我不確定這麼做行不行,因為Manual里沒說啊(其實說了是我沒搞清楚),後來在YouTube上找到一個國外的教程,用的就是那個帖子的思路:

視頻二:

youtube.com/watch?

既然已經有先例了,可以擼起袖子做了,我把前面視頻一做Animator Controller和Script修改了一下替換到從Mixamo下載下來的另一個模型上,還真成功了!(如下圖紅框所示需要替換的)

但是同樣的東西放到從資源商店下載的免費模型上,還是不成功,也許是免費模型的Avatar跟Mixamo的規則不一致導致的吧。

最後,我又看了一遍Manual上的Retargeting ofnHumanoid animations,這才發現了我遺漏的事情,它在「推薦的層級結構」標題下其實已經表述清楚表示出它怎麼重定向的,就是Animator Controller和Script相結合,但是我卻忽略了黑色大加粗標題寫的(智商呢),直接看推薦的步驟了,步驟里用了Character Controller,我就以為一定要用這個,其實人家只是推薦而已。

至此,動畫重定向就完成了。

7) n總結:所以我確定的最終流程是,先撇開Unity資源商店,通過Mixamo的工作流中的Fuse來製作人物模型,直接上傳網上自動添加骨骼後,選擇合適的動作打包下載,最後重定向為自己所需的動作。

8) n一個小tip——看不到狀態機里的動畫進度條怎麼辦?

這是在做Animator Controller時碰到的,我還真搜到了遇到一樣問題的哥們兒,可用了他的方法還是看不到,但他卻給我提供了一個解決思路,就是要刷新一下這個Animator Controller。

所以我的辦法是:運行後,先點中人物,還是沒有顯示進度條的話,就重新拖個Animator Controller到Animator Component里就好了,就是這麼簡單!

作者有話說:

啦啦啦啦~~終於寫完了,好開熏!寫的累死我了!

1. n我要做什麼遊戲呢?大概是FPS類型的,具體什麼玩法還在想,風格希望是Low Poly風,感覺很Indie Game(其實窮,寫實范兒做不起也做不來……)。

2. n這周我就得先當個美術,做幾個模型出來看看設想的人物自己能不能搞定,當然用的是Mixamo提供的工作流,就是用Fuse捏人啦,當美術的過程就不用寫了吧?

3. n想想一點不寫也不好,可能的話寫點跟遊戲相關的其他非技術體會吧~

好了,本篇就到這裡,感謝您的收看,我們下次再見!~

推薦閱讀:

Unity移動端性能優化
Unity3D 正六邊形,環狀擴散,緊密分布,的程序
從零開始學基於ARKit的Unity3d遊戲開發系列11
Unity 內存優化 和 內存池使用實踐

TAG:Unity游戏引擎 |