1、角色模型制作
unity3d支持Skin動畫 但是不支持Physique動畫 會發現Physique動畫在unity里嚴重變形
因此在模型的骨骼動畫的制作上面 要用Skin
當然也可以做成Physique 然后用插件轉換一下 3dsmax的插件PhyToSkin
3dsmax中轉換之前 為了避免出錯 先隱藏骨骼 然后對綁定了骨骼的模型進行單獨轉換 因為批量也會出錯
轉換以后在修改面板中加入可編輯網格 同時為了避免出錯 檢查一下uv是否貼反了
2、角色模型導出
確保導出的模型是已經綁定了骨骼的 在導出設置中根據需要選擇是否導出Animation
以及3dsmax和unity3d中的單位關系
3、官方CharacterCustomization中的模型
從官方換裝demo中會發現他的一個角色模型里包含了要換裝的多個模型 比如有兩個衣服模型、三個頭發模型等
那我們在美術制作的過程中是不是也要這樣進行“模型疊加”呢 其實沒必要
demo這樣的目的是為了使得模型公用一套骨骼 那么我們在角色模型的制作過程中 就確保模型使用的是同一套骨骼
比如男性角色使用一套 女性角色使用另一套 當進入創建角色場景后 根據玩家選擇角色的性別 顯示不同的動畫即可
4、角色模型打包技巧
前面提到 官方demo里換裝的實現 原因是因為公用了一套骨骼
那么我們在打包的時候 就將骨骼和模型分離 將模型各個部件(比如頭發、手臂等)分開打包
比如一個男性的角色 將他的基礎骨骼打進一個包 再將身體各個部分的模型分別打包
如果一個模型由頭、臉、身體、手臂、腳五個部分組成 那么打包后將會有六個資源包 分別是基礎骨骼、頭、臉、身體、手臂、腳
這樣游戲的創建角色過程中 就可以單獨地對模型的身體部位進行切換
打包的過程和官方demo的打包大同小異 只不過這里作者在打包時捎帶生成了換裝的配置表
6、角色模型的加載
unity3d中使用www進行資源的加載 如果將資源放在了http服務器上的話(包括本機的IIS) 則需要一個crossdomain的xml配置 本地則不需要
加載時應該首先去加載基礎骨骼 加載完以后再去加載要顯示的默認角色模型 比如新手模型
在加載完以后 則要提取各個模型中所記錄的骨骼信息 根據這些信息將模型掛到對應的骨骼上
為了避免模型之間出現縫隙 應當進行模型網格的合並
完成以上工作以后模型的加載就已經實現了
7、角色模型的換裝
回到角色模型打包的話題
設想一個男性角色有10套服裝用來更換 而公用的骨骼是一套
因此在打包時仍然將這一套骨骼單獨打包 然后再將其他所有的模型打包
一句話總結就是 一套骨骼對應N個模型 這N個模型都公用這一套骨骼
換裝的實現實際上就是將相應的身體部分進行更換
比如要換一個手臂 則將新的手臂與身體上除了手臂以外的模型再進行一次網格合並
換句話說 要更換身體某一個部位 實際上就是更新了整個角色模型
這里需要注意的一點是 基礎的骨骼不用再去更新
設想一下 換裝時候 一般角色都會有個“站立”或者“呼吸”的動作在播放 那么如果同時去更新了一遍基礎骨骼 那么結果勢必會讓本來連貫的動作有“一閃”的現象
這是因為 之前的動畫還沒播放完 然后就更新了骨骼 那么動畫又重頭開始播 這之間沒有過渡 肯定會有點問題
測試截圖如下:(注:作者這里用的兩套模型只有頭盔、手臂和腳不一樣)
第一套:

另一套:

