遊戲動做師使用Unity3D遇到過的全部問題

 

到如今我大概用了四年多u3d,期間掉過無數坑,遇到過各類問題,2015年末的時候想着應該將其整理出來,方便你們查閱,因而有了這篇東西。可是實際整理完髮現,有些問題我已經想不起了,遇到過的問題確定不止這麼多。但願各位同行能把遇到的問題發給我,解決了的、沒解決的均可以,你們互相交流一塊兒進步。我會把全部問題所有整理好在共享給你們,本身能提升的同時也算給行業作點小貢獻。個人微信號:othniel-aslan。

導出相關

微信

圖爲max導出fbx界面,各版本界面略有不一樣功能相近,版面所限請放大查看


在遊戲美術工做流中,模型和動畫的導出都是由動畫師負責,一份可用的動畫文件,必須同時包含模型和動畫文件各一個。

模型導出時應注意勾選蒙皮和幾何變形,不要勾選貼圖文件,導出模型後單獨將貼圖文件手動放在模型文件夾下。避免重複導出替換時出錯。動畫的導出則比較常規,須要注意的是不少人喜歡使用烘焙動畫,其實並很差用,容易出現萬向軸的問題且不說,還給一些中間幀動畫的修改帶來難度。具體內容見模型篇。

掛點相關

學習

圖爲常規掛點所需點位,實際根據項目需求增減。


所掛dummy點需做爲子級連接到對應骨骼,三軸對齊,各個模型間同一個點位置要統一。

武器換手相關

換手的三種方式 1.縮放隱藏換手  2.link連接約束換手  3.prop骨骼換手

1.縮放隱藏換手 即 在須要有武器的位置都放置一把武器(如左手、右手、後背、空中),將當前不須要顯示的武器縮放至極小不可見,須要顯示時再放大顯示。優勢爲無需特別支持,引擎通用,很是簡單。缺點爲略麻煩,作動畫以前就要想好武器需複製幾份分別在哪,動畫縮放容易出現中間幀過分不暢。

測試

 

 


2.link連接約束換手 即 使用link約束動畫實現武器換手 其最大優勢就是大部分動畫師很是熟悉,運用起來駕輕就熟。缺點也很明顯,引擎不能識別link動畫,須要塌陷或導出時烘焙動畫纔可被引擎識別,而一旦出現萬向軸問題,改起來會比較麻煩。

優化

 

 


3. prop骨骼換手 即max自帶的武器道具骨骼 優勢是設定即爲武器道具骨骼,能解決武器所需一切需求,而且被unity3D 5.0之後的版本支持,直接導出便可。缺點是unity3D 5.0以前的版本不支持,須要烘焙動畫。

動畫

 


表情動畫相關

Unity支持的MAX表情動畫已經確承認行的有兩種 一種就是 面部骨骼綁定表情動畫 另外一種是morpher控制器表情動畫。表情動畫常見於舞蹈類、大型MMO類及單機類等遊戲中,前兩種重視社交和展現因此對錶情有需求,後一種常見於精品遊戲中,各方面品質相對都比較高因此對錶情也有要求。

面部骨骼綁定動畫 最多見的面部骨骼就是張嘴動畫,只需一根下顎骨骼便可解決,在不少有坐騎或怪獸的項目中使用,是廣義上的表情動畫。較爲複雜的表情動畫用骨骼綁定來作並不划算,一來架設骨骼比較麻煩,具體K動畫的時候也相對繁瑣(有人用線性IK來製做表情,其實道理與骨骼綁定並沒有二致,只是調動畫的時候有聯動關係相對簡單些);二是骨骼過多帶來的運算量也比較大,會比較佔用資源。

ui

 


morpher控制器表情動畫 優勢是佔用資源相對較小,動畫能夠作到比較精細,製做流程也相對簡單。缺點是動畫師不必定會調模型表情,前期過程相對麻煩(被拾取的表情頭不能鏡像、不能在統一個被拾取臉上左右同時調錶情),而且有比較多的動做師歷來沒接觸過morpher學習成本也相對較高。

這裏解釋下morpher的原理 將一個角色的面部模型複製出多份,每份分別承擔表情的一個局部動做,如微笑至少須要左嘴角上翹、右嘴角上翹、左眼微閉、右眼微閉四份。而後經過morpher控制器拾取這些表情,便可經過控制morpher的數值來調節表情動畫。

spa

 

(以上表情爲鄙人隨手亂調做爲配圖使用,略醜勿怪)


文件壓縮相關

因爲Fbx導出採樣原則(即咱們一般所說的滿幀導出)所致,一般一段動畫導出後的容量都會比較大,常見的壓縮方式只有一種,即便用unity自帶的動畫壓縮。這裏再額外介紹兩種很是規的壓縮方法以應不時之需。

Unity自帶的動畫壓縮 選項有三種分別是關閉壓縮 減小關鍵幀 減小關鍵幀並壓縮文件。  1.關閉即爲不進行壓縮保持導出時的狀態。2.減小關鍵幀 即unity會檢查相鄰兩幀之間移動旋轉縮放的閾值,當這個值小於規定數值時就刪掉其中一幀。3.減小關鍵幀並壓縮文件 除了2中所描述的內容還會降動畫文件進行打包壓縮,使其減小佔用硬盤容量,但對內存容量並沒有影響。

Rotation error、Position error、Scale error三個值是上文「減小關鍵幀」內容中所提到的閾值,這個值越大被刪除的幀就越多,動畫文件相對就越小,同時動畫質量相對也就越差。

當動畫壓縮過於嚴重時,一些動做幅度較小的動畫將會嚴重失真,如待機動畫在壓縮嚴重時腿部將沒法站立於地面,而是隨着質心搖擺。產生此類問題,只需將該動畫的壓縮閾值略做調整便可,若是遇特殊狀況調整閾值無效可嘗試後面的方法。

3d

 


Max中導出時進行壓縮 在max的導出面板也有減小關鍵幀的選項,其工做原理也與unity相同,只是max做爲專業的動畫製做軟件,他的閾值容許的精度更高能夠到小數點後面不少位。並且做爲美術軟件相信他對動畫關鍵幀的刪減也更專業。但缺點也很明顯,他不能實時預覽。當咱們設定一個閾值以後,沒有辦法實時查看壓縮後的效果,難保壓縮後的文件沒有錯誤,不適用於處理大量的文件。當unity沒法處理某個動畫時能夠用max嘗試。

blog


編輯fbx動畫 這種是很是規的辦法了,我也是聽人說沒試過。方法是 在max中導出fbx以後,使用能夠編輯fbx的軟件(如mortion builder),對動畫進行刪幀。這個辦法的好處顯而易見,因爲是動畫師手工刪除,既能保證動畫的質量又能保證壓縮到最小。缺點也很明顯,工做量大浪費時間,若是不是很是重要的角色出現解決不了的問題,不建議使用這種方式。

新舊骨骼系統相關

Unity在4.0系統增長了新的動畫系統,目前unity動畫類型下拉菜單中共有四個選項,分別是None、Legacy、Generic以及Humanoid。其中G和H爲4.0版本新增的內容,L是老版本的動畫系統,none則是不使用動畫。

遊戲


Legacy 是我目前使用最多的動畫系統,在我看來他已經知足一個項目的絕大部分需求,並且由於最基礎因此也最易擴展,須要一些額外功能時也方便修改追加。

Generic 與legacy相比,generic可使用新系統自帶的狀態機,而且自帶可編輯的動畫融合系統,然而在我看來這都沒什麼用。若是generic不與humanoid配合使用,其功能與legacy並沒有二致,反而由於系統並不成熟更容易出現未知錯誤。固然,也多是有其餘功能我並未得知,若有遺漏還望指正。

 


Humanoid 字面上理解即爲人型骨骼系統,其最顯著的特色是能夠將max的骨骼轉化爲unity的骨骼,而且會生成一份avatar,將avatar指定給不一樣的角色模型。便可無視高矮胖瘦的體型差別將同一個動畫分配給每一個角色,簡單來講就是能夠實現動畫的通用。

 


這裏並無講每一個動畫系統的優劣,由於動畫系統優劣的評判並非單一獨立的,理論上每一個動畫系統都能解決問題。具體要選擇哪一個系統,要看遊戲的類型、打包方式,舉例來講,若是是像三國無雙系列這種,同一個角色換了武器就會換一套動做,每件武器都有對應的動畫,那顯然是要用humanoid這種能夠無視體型的通用骨骼;又好比角色間不須要共用動畫,而且每一個角色程序都是單獨打包,那最好仍是用legacy系統,簡單省事。甚至在同一款遊戲裏也能夠主角單獨打包使用legacy骨骼,其餘怪物使用humanoid骨骼共用動畫,以實現資源的最優化。

常見問題與小技巧

1.單幀動畫無效 在unity中至少要兩個關鍵幀才能被認定爲是一段動畫,若是某根骨骼只有一個關鍵幀能不能讀取這個關鍵幀則比較看緣分,有時候讀得出有時候讀不出。

注:另外要注意的是,同一個骨骼的兩個動畫,若是A動畫中該骨骼存在兩個以上的關鍵幀,而B動畫只有一個關鍵幀,當播完A繼續播B的時候,該骨骼則會保持A動畫的最厚一幀狀態。同理若是B動畫該骨骼沒有幀,也會保持A動畫最後一幀。

2.超遠位置出現關鍵幀 通常常見於導bip動做文件時bone骨骼或dummy點上,在負幾百萬幀的位置出現一個孤立的幀,具體是什麼緣由目前仍不清楚。該問題在max中比較不容易被發現,導入到unity時動畫沒法讀取,曲線面板不顯示任何關鍵幀。Max導出動畫時雖有刪除孤立幀的選項,但經測試沒法解決該問題,通常只能打開曲線面板找到該幀刪除之。這裏要特別強調一下,由於其位置很是遠,最好逐一選擇骨骼刪除,框選全部骨骼一塊兒刪的話,極容易致使max崩潰。

3.層動畫問題 常見的有兩種,導出時若是動畫層沒有塌陷,則unity只能識別當前層所記錄的動畫,基本是百分之百出錯的,回到max塌陷便可。另一個是max自身的問題,當某個骨骼使用了select IK object的時候,加層是無效的,必須點擊空白處清空掉拾取的IK object。

拾取狀態

 

清空狀態


4.攝像機動畫 理論上來講,max裏的攝像機動畫unity是不識別的,但實際上導出的攝像機在unity中會默認做爲一個gameobject來使用。這樣只要在這個gameobject下面掛載一個unity的攝像機,並把座標歸零便可。這裏說個小技巧,因爲單位的緣由,max的攝像機動畫進入到unity中可能會遇到比例的問題,咱們能夠在max中建立一個dummy點,座標歸零,把攝像機做爲子級連接給dummy,而後再調攝像機動畫。這樣進入unity的時候,咱們只要吧dummy歸零,縮放它的尺寸就能夠調整比例。

5.Unity動畫曲線  unity曲線面板提供了一些基礎功能,可是卻連複製幀這種經常使用的功能都沒有,個人解決辦法是將須要複製的幀拖動至動畫的末尾,而後再尾幀以外打個關鍵幀,這樣便可複製出同樣的幀,以後再把幀拖到適當的位置便可(下圖我複製了第二幀)

 

相關文章
相關標籤/搜索