由 2D 概念到 Unity 中可遊玩的 3D 角色
一個角色在概念圖中看起來已經完成,距離可以遊玩卻可能還很遠。真正有用的問題,不只是 AI 工具能否做出 3D 模型,而是整條流程能否產出一個身份穩定、動作乾淨,而且在 Unity 內容易修改的角色。
這是我製作快速原型時使用的流程:構思 → 三視圖 → 3D 生成 → 修整 → 綁定骨架 → 動畫 → Unity。ChatGPT 協助訂立設計,Rodin 生成第一個已上貼圖的網格,AccuRig 建立人形骨架,而 Unity 則是讓成果變成遊戲角色的地方。
1. 由製作簡報開始
生成圖片之前,先寫下模型必須保留的決定:年齡範圍、輪廓、衣服層次、配色、鞋履、配飾,以及預定的遊戲鏡頭。第三人稱角色需要從背後也看得清形狀;細小的手機遊戲角色,所需的細節亦比特寫的過場模型少。
我亦會列明每個視角都必須保持一致的部分。以 Rick 為例,清單包括深藍色帽子和西裝外套、圓框眼鏡、白恤衫、卡其色長褲和白波鞋。這些「錨點」比裝飾細節重要得多。
2. 生成乾淨的三視圖
以中性的 T-pose 或放鬆的 A-pose 製作正面、背面和側面。每格都使用平均的白色背景、一致的光照和相同的比例。避免交叉雙手、道具、誇張的透視,以及遮住雙手或雙腿的布料。這些圖片是參考設定稿,清晰比氣氛更有用。
進入下一步之前,先人手檢查設定稿。AI 圖片經常在不同視角之間改變鈕扣數目、眼鏡形狀或外套長度。現在就修正這些矛盾,因為 3D 生成工具無法可靠地猜出哪個版本才正確。
3. 生成第一個已上貼圖的網格
把最理想的參考圖匯入 Rodin 或其他圖片轉 3D 工具。目標是中性姿勢和完整身體。檢查輪廓、臉部、手指、鞋底和衣服重疊的位置。第一個輸出只是起點網格,並非完成品。
製作原型時,優先確保輪廓易於辨認,以及膊頭、手肘、臀部和膝蓋附近的拓撲完整,因為這些位置在動畫中需要變形。重新拓撲、修補貼圖和分拆配飾,可以留待設計通過玩法測試後再做。
4. 為綁定骨架作準備
- 刪除隱藏或浮空的幾何體。
- 套用變換,並確認比例符合現實尺寸。
- 把雙腳放在地面,讓模型面向前方。
- 雙手要離開身體,雙腿之間亦要留少許空隙。
- 改動拓撲或材質前先匯出備份。
5. 自動綁定,然後驗證骨架
把修整好的角色載入 AccuRig,並在下巴、膊頭、手腕、臀部、膝蓋和腳踝放置人形引導點。自動綁定可以節省時間,但結果仍然需要變形測試。旋轉每個主要關節,留意膊頭塌陷、手腕扭曲、膝蓋滑動,以及衣服穿過身體的問題。
下載大型動畫庫之前,先測試一段步行、一段跑步和一個誇張動作。這三段動畫可以很快暴露大部分比例和蒙皮權重問題。
6. 以可預測的結構匯出 FBX
把網格、骨架和貼圖匯出為 FBX。盡可能保留一個角色主檔案,動畫則分開存放。使用清晰的檔名,例如 Rick_Base.fbx、Rick_Run.fbx 和 Rick_Wave.fbx。一致的命名能讓模型更新後的重新匯入更安全。
7. 在 Unity 中設定角色
- 把 FBX 和貼圖匯入專屬的角色資料夾。
- 把 Rig → Animation Type 設為 Humanoid,然後建立並驗證 Avatar。
- 抽出或指定材質,並檢查法線貼圖和透明度設定。
- 建立包含待機、步行和跑步狀態的 Animator Controller。
- 把角色放進簡單的測試場景,檢查比例、雙腳著地、陰影和鏡頭下的可讀性。
// A minimal movement value for an Animator blend tree
Vector3 planarVelocity = new Vector3(rb.velocity.x, 0f, rb.velocity.z);
animator.SetFloat("Speed", planarVelocity.magnitude, 0.1f, Time.deltaTime);
先做原型,角色證明自己後再打磨
這套流程的最大好處是學習速度。我可以在遊戲中測試角色的比例、動作和個性,然後才花幾天處理最終拓撲。最後一輪仍然可能需要人手建模、整理 UV、修改貼圖、製作臉部形態和細心調整蒙皮權重。AI 縮短了由構思到第一個可遊玩版本的距離,但並不取代美術指導或技術判斷。
Project NightFall 和 DollCaptor 背後的角色研究,亦採用同一套流程。