【Unityのみ】Vroidの髪をほかのモデルに移植する

下記の手順を自動でやるツールを作成したので、そちらを使うと楽です。

shivi.booth.pm

↓以下は残しておきますが、古い記事になります。

VroidのヘアスタイルをVroid以外のアバターに移植する方法の説明です。
Unityのみで大丈夫。
Vroid用ヘアプリセットとして配布、販売されている髪型がどんなアバターでも使えちゃいます。

説明動画も作成しました!

youtu.be

必要なソフト

Vroid Studio

エクスポート機能のみ使用します

vroid.com

UniVRM

VRMをUnityで扱うためのパッケージです。

github.com

f:id:tomo_shi_vi:20200512140843p:plain

MeshDeleterWithTexture

Unityでいらないパーツを削除できる神ツール。
ver0.6で追加された機能を使うのでそれ以降のバージョンを使用してください

booth.pm

1. ほしいヘアスタイルのVRMファイルをエクスポートする

1-1.アバターを素体にする

VroidStudioでほしい髪型のアバターを表示します。

  1. 上の「衣装編集」タブを選択
  2. 左の「プリセット」メニューから「素体」を選択

f:id:tomo_shi_vi:20200512161421p:plain

1-2. アバターVRMをエクスポートする

  1. 上の「撮影・エクスポート」メニューを選択
  2. 左の「エクスポート」を選択
  3. 右の「エクスポート」ボタンを押す

f:id:tomo_shi_vi:20200512161541p:plain

保存時の設定は何も変更せずに、適当な保存場所を選んでOK

VroidStudioでの作業はこれで終わりです

2.ヘアスタイルのみ取り出す

2-1. VRMファイルのインポート

UniVRMとMeshDeleterのインポートされているUnityのプロジェクトを用意します。
Projectの中にエクスポートしたVRMをD&Dすると、モデルが読み込まれ、テクスチャなどのフォルダが勝手に作成されます。

f:id:tomo_shi_vi:20200512175234p:plain

Project内にできたPrefabをHierarcyにD&Dして、画面上にモデルを出します。

f:id:tomo_shi_vi:20200512184201p:plain

hierarcyのDarkness_Shibuの上で右クリックして、Unpackします

f:id:tomo_shi_vi:20200512180313p:plain

Darkness_Shibuをクリックした状態でInspectorを確認すると、いろいろコンポーネントがついているので、右上の歯車マークから「RemoveComponent」を選択してTransform以外すべて削除します。

f:id:tomo_shi_vi:20200512184444p:plain

2-2. 髪以外のメッシュを削除する

髪以外の体や顔などのメッシュを削除していきます。

まず、FaceとSecondaryを選択→右クリック→Deleteします

f:id:tomo_shi_vi:20200512175933p:plain

ベースヘアー(生え際)がBodyにくっついてしまっているので、まるごと削除はせず、不要な素体の部分だけを削除します。

Unityの上のメニューから「Gato Tool」→「MeshDeleter」を起動します

f:id:tomo_shi_vi:20200512180541p:plain

MeshDeleterのWindowsの一番上にある「Rendeler」のところに、BodyをD&Dします

f:id:tomo_shi_vi:20200512180956p:plain

MeshDeleterのウィンドウで、まずTextureがBodyになっていることを確認します
真ん中あたりの「Inverse FillArea」を押すと、青枠の中が真っ黒になります(全部削除する設定)
下のDeleteMeshボタンを押したら完了なので、右上の×を押して閉じます

f:id:tomo_shi_vi:20200512181103p:plain

2-3. 髪以外のボーンを削除する

Armatureではなく、Rootの下にあるのがボーンになります。 全身分あるので、髪に使用しないボーンを削除していきます。

まず、Rootの下をたどって、Neckを探します。

f:id:tomo_shi_vi:20200512181730p:plain

NeckボーンをRootの直下に移動してから、Hipsボーンを削除します

f:id:tomo_shi_vi:20200512182037p:plain

Neck→Headとたどり、FaceEyeボーンを削除します。

f:id:tomo_shi_vi:20200512182331p:plain

NeckとHeadを選択してInspectorを見ると、VRM Spring Boneというのがあるので、RemoveComponentします。

f:id:tomo_shi_vi:20200512184633p:plain

取り出し完了!

ここまででヘアスタイルの取り出しは完了です。

f:id:tomo_shi_vi:20200512181306p:plain f:id:tomo_shi_vi:20200512182448p:plain

あとは通常の手順でモデルに髪をくっつければOKです。
headボーンの下のhairJointというのが髪用のボーンなので、これにDynamicBornを適用すれば揺らすこともできます。

おまけ1:Boothで配布されているファイルをVroidStudioに入れる方法

●Vroidファイル

VroidStudioを一度起動すると、マイドキュメントの中にvroidフォルダが作成されます。
その中のavatarsフォルダの中にvroidファイルを入れると、VroidStudio起動時の画面で選択できるようになります。

● ヘアプリセット

VroidStudioを一度起動すると、下記の場所にVRoidStudioフォルダが作成されます。

\Users[Windowユーザー名]\AppData\LocalLow\pixiv\VRoidStudio

その中のhair_presetsフォルダの中に配布されていたヘアプリセットを入れてください。

おまけ:モデルにヘアスタイルを合わせる

せっかくなので、取り出したヘアスタイルをモデルにくっつけるところもやります。

着用モデルはU10ちゃんです。

f:id:tomo_shi_vi:20200512185310p:plain

まず、元の髪のメッシュを削除

f:id:tomo_shi_vi:20200512185402p:plain

なんとなく位置合わせします。
ちょっと大きい。

f:id:tomo_shi_vi:20200512185430p:plain

Neckボーンを調整して細かく合わせていきます。 調整に使うのはこの三つで、左から、移動、回転、拡縮です。

f:id:tomo_shi_vi:20191012214932p:plain

移動と拡縮で調整するとこんなかんじ

f:id:tomo_shi_vi:20200512191517p:plain f:id:tomo_shi_vi:20200512191521p:plain

U10ちゃんのオブジェクト下にDarkness_Shibuを丸ごと移動

f:id:tomo_shi_vi:20200512191719p:plain

U10ちゃんのNeckの下にヘアスタイルのNeckボーンを、Headの下にヘアスタイルのHeadボーンを入れます

f:id:tomo_shi_vi:20200512191758p:plain

おまけ3 VroidStudioでつぶれて見える頭を修正する

ヘアスタイルを移植しようとしたときに、位置とサイズはいいのに、なんとなく頭が潰れて見える・・・ということがたまにあります。
VroidモデルはVRCでよくあるアバターより頭頂部が低めなので起こる現象なのですが、エクスポートする前にちょっとだけ修正しておくと回避できます。

顔編集→顔の輪郭→頭頂部を上げるの値を「3」に
スライダーだと1までしか増えないので、数字を直接入力します。

f:id:tomo_shi_vi:20200512190635p:plain

以下、VroidStudioの不具合に合わせた対応です。 そのうち修正される不具合かもしれませんが、Ver0.91現在直ってないです。

髪型編集→ツールが一番上の矢印になっていることを確認

へアーリストから項目を選択→髪の周りに出てきた点のどこでもいいので一か所をクリック

クリックした瞬間に、髪全体がひゅっと変形します。 ずれてしまったように見えますが、へアーリストのすべての項目(グループ単位で大丈夫です)に対して同じように点をクリックしていくと、伸びた頭頂部に合わせてヘアスタイルも縦長になります。

f:id:tomo_shi_vi:20200512190910p:plain