Blender對VRM模型的操作小記

前言

前幾天心血來潮打算套個皮寫扣直播陪觀眾聊天,所以開始接觸 VRM 模組在 Blender 的操作,由於 Blender 是一個很專業的 3D 建模軟體,因此寫了這篇文章記錄一下這次調整模組的重點。

正文

3D 模組來源

找了一段時間後,在 Booth 裡找到了這個模組,品質非常高,授權也滿足我的要求,決定拿來用。

由於提供的檔案是 fbx 和 Unity 的 Prefab 格式,不能直接放到直播的軟體裡面用,於是我開始找尋調整格式的方法。

將 Prefab 轉成 VRM

過去有使用過 Unity 的經驗就在這時派上用場。用對應的 Unity 版本開啟 3D 新專案(預設渲染管線)後,將要用到的 package 都匯入到專案內。

需要的有:

  • 剛剛載下來的 3D 模組(裡面有提供 package 檔)
  • UniVRM (Unity 的 VRM SDK)
  • UTS2 (這個 3D 模組的 Shader)

VRM 是 3D V 皮常用的檔案格式,除了可以儲存模組外,還可以附上表情以及動作等其他資訊。值得注意的是用了 VRM 格式就只能使用 VRM 專屬的 Shader (MToon)

待會要做的事情

  • 把 UTS2 Shader 換成 MToon
  • 重新輸出成 VRM 檔案

要把 Shader 換掉其實是很危險的一件事,除了渲染出來的色調會跑掉外,光線的表示都會差很多。

單純換掉 Shader 其實很簡單,在 Material 裡面把 Shader 換成 VRM/MToon 就好了。但是色調跑得有點嚴重,所以我有再修改 Shade Color ,讓整體的色調更貼近原本的模組。

replace shader

直接換掉 Shader 還產生了眼淚渲染出來不太透明的問題,不過這應該可以透過調整 shader 的參數來解決。

身體的 Material 有透明的部分,要根據原本的 Texture 來決定透明度。這邊是用 Cutout 的設定。

cutout

接下來用 UniVRM 提供的 Exporter 把修改過的 Prefab 匯出成 VRM 檔案即可。

Blender 內的調整

準備 Blender 環境

要有辦法在 Blender 裡操作 VRM,需要安裝下面這些 addon ,安裝方式可以參考官方。

由於 Blender 版本會造成相容性問題,因此我使用 2.9.3 (cats addon 官方表示的相容版本)。

匯入 / 修復模組

進入 blender 後點編輯區塊按 a 選取所有物體並按 del 刪除。接下來按下 n 開啟操作面板切換到 CATS 頁籤。

panel

Import Model -> 選擇你的 VRM 模組匯入

匯入完的模組會長得非常醜,需要修復一下。修復之前我們先保存 VRM 的骨骼數據,否則待會修復完綁定跑掉要重新設定。

save bone info

存完以後就可以用 CATSFix Model 來修復。修復前可以點右邊的板手來設定要修復的部分,基本不太需要動,直接點下去等他跑好就行。

跑完以後貼圖跟骨骼應該要是正常的,先回到 VRM 頁籤把骨骼數據 load 回來。如果 load 失敗就只能手動拉回去了。

眼動追蹤

眼睛骨架擺放

眼動追蹤的原理是透過骨架來綁定眼睛的位置。由於原本這個模組沒有做眼動追蹤,因此這部分是我自己手動完成的。

先來講講眼睛的骨架該怎麼擺放。

eye bone

VRM 要能連動的眼睛正確擺法是這樣,原本模組的眼睛骨架擺法是錯的,所以我弄了很久弄不好。

當初我是把 VRoid 的 VRM 模組 load 進來看他怎麼擺放骨架跟抓參數的

當骨架往哪個方向旋轉,眼睛就會往哪裡飄時方向就是正確的。

要進入 Edit Mode 才能擺放骨架

設定權重

接下來要設定左右眼骨架的權重,基本上眼睛轉動表示要把眼睛(包括眼睛特效)全部綁到骨架上,因此我們要找到左右眼骨架對應的 vertex group 並把眼睛的權重設定上去。

操作方法:

先選取左右眼骨架對應的 vertex group ,再進入 Weight Paint。

eye step 1 eye step 2

基本上就是細心的把眼睛部分的對應權重都設定成 1 。

眼睛特效可能藏在眼睛的模組後面,要穿過去畫,我很懶所以只塗外面的部分。此外,如果轉動時圖的偏移怪怪的,那一定是權重沒塗好。

弄完後可以點骨架並調整成 Pose Mode 轉動看看眼睛轉動正不正常。

如果軟體裡面眼睛還是動不起來,可能是眼睛骨架位置不對。可以把眼睛骨架的位置離眼睛更遠一點,這樣在更小的角度偏移下,眼睛位置的轉動會更為明顯。

全部弄完以後記得把眼睛的骨頭設定到 VRM 上。

set eye bone

Spring Bone (頭髮擺動)

頭髮擺動是利用 Spring Bone 來做的。 Spring Bone 可以模擬重力還有一些物理參數,讓你的衣服或頭髮等動得比較自然。

spring bone menu

不負責任參數解釋:

  • Comment 註解
  • Stiffness Force 硬度(越大越硬)
  • Drag Force 拉力(越大越容易飄)
  • Gravity Power 重力(越大越重)
  • Gravity Direction 重力方向(沒玩過)
  • Center 不知道
  • Hit Radius 會跟碰撞器碰撞的範圍半徑
  • Bones 會擺動的骨架
  • Collider Groups 碰撞器群組(放在這裡的會跟此處設定的骨架碰撞)

Bones 設定成要飄的骨架就行,像下面的瀏海:

bones example

為了避免瀏海穿進頭裡面,幫頭加個碰撞器。

head collider

新增後選擇頭的骨架,再調整碰撞框的大小(編輯區塊會有黑色線預覽)到跟頭差不多即可。

最後記得加進碰撞器群組裡面。

collider group

匯出

直接從 Blender 的操作選單照下面流程選擇:

Files -> Export -> VRM 即可。

結語

從完全 Blender 的新手在因緣際會下接觸 3D 模組其實是很有趣的經驗,希望這篇文章能幫助到想了解這部分操作的人。