見出し画像

【最適化版】VRoidモデルをVRChatアバターにする - PC版アバター編 -

前置き

以前、VRoidをVRChatアバターにする方法の備忘録を書きました。

あれからアバターの改変を色々やっているうちに、もっと最適な手順を編み出したので「最適化版」として書き残します。
また、この記事はVCC対応版です。

今回はVRoid Studioに同封されているサンプルモデルBをVRChatモデルにする場合を例に解説します。
VRoidのVRMモデルの読み込み~揺れもの(Phys Bone)の設定、おまけでシェーダーの設定にも触れているオールインワン備忘録です。


使うもの

・VRoid Studio

アバターのモデルを作成するために使用します。

・Unity

後述するVCCを動かすために必要です。
下記のVRChat公式ドキュメントに記載のバージョンのものを使ってください
「Click here to install the current version of Unity via Unity Hub」と書かれたリンクからダウンロードページへ飛べます。

・VCC

2023年1月現在ではVRChatへのアバターアップロードをVCCで行うことが推奨されています。
下記リンクの「Dounload the Creator Companion」から入手してください。

・VRM Converter for VRChat

UnityにVRMモデルを読み込み、VRChat用のデータに変換するアセットです。
Boothにて無料配布されています。


VRoidをVRChatアバターにする手順

① VRoidモデルをVRMで書き出し

VRoidモデルを「VRMエクスポート」で書き出します。
設定は何も触らず、デフォルトのままでOK。


② VCCでアバタープロジェクトを作成

VCCで「Projects > New > Avatar」からアバターアップロード用のプロジェクトを作成します。

VCCの導入方法は下記のページに詳しい解説があります。


③ VRM Converter for VRChatをインポート

VCCからプロジェクトを開くとUnityの画面が自動で立ち上がります。
「Assets > Import Package > Custom Package…」から「VRM Converter for VRChat Installer.unitypackage」を開いてインポート。

「Import」を押して暫くすると下記のような画面が出てきますが、閉じます。

メニューバーに「VRM0」というのが表示されれば完了です。
もし出てこない場合はUnityの画面を最小化→最大化すると暫くしてから出現します。


④ VRMをVRChatアバターに変換

「VRM0 > Import from VRM 0.x」からVRoid Studioで作成したVRMファイルを開きます。

保存場所そのままでもOKです。
今回はスッキリまとめたかったので「VRoid」というフォルダを作成し、その中に保存しました。

インポートが完了したら「VRM名.prefab」が生成されるので、これを選択した状態で「VRM0 > Duplicate and Convert for VRChat」を実行。

今回は揺れものの設定を後で追加するので「揺れ物」を「Remove Swaying Objects」に設定し、「複製して変換」を実行。
※デフォルトではVRMの揺れ設定を自動で変換する設定になっていますが、あまり上手く動かなかったため

保存場所の設定はデフォルトのまま「保存」を実行。

「Scene」ウィンドウにモデルが出現したら完了です。
もうこの時点でVRChatにアップロードできる状態になっていますが、以降はアバターの細かい設定を施していきます。

この時点で「File > Save」からシーン(今までした設定数々)を一旦保存しておきましょう。
プロジェクトの「Assets」フォルダ内に適当な名前を付けて保存しました。


⑤ View Positionの設定

「Hierarchy」タブにあるモデルのデータを選択し、「Inspector」タブ内にある「VRC Avatar Descriptor > View > View Position」の座標を編集します。
ここが自分の視点になります。
最初は頭の中に埋もれていますが、z軸を前に動かすと灰色の球体=View Positionが出てきます。

x=0、yとzの座標はモデルの目と目の間ぐらいに来るように設定してください。


⑥ 目の可動域設定

⑤と同じく「Inspector」タブ内にある「VRC Avatar Descriptor > Eyes > Rotation States」の座標を編集します。
いずれかの「Preview」ボタンを押すと上下左右それぞれの目の可動域が確認できます。
流石にギョロ目過ぎるので上下の可動域を±10から±5に抑えました。


⑦ VRC Phys Boneの追加

髪の毛やリボンの揺れ設定を追加していきます。

「Hierarchy」タブにあるモデルのデータの中身を開いていくと、ボーン(手足や髪の骨組み)の構造をを見ることができます。
サンプルBのモデルの場合、後ろ髪のボーンは「J_Bip_C_Head(頭のボーン)」下にある「J_Sec_Hair1_05」です。
※どこが何のボーンなのかは階層や名前、座標を見て判断します

これを選択した状態で、「Inspector」タブ内の「Add Component」ボタンをクリック。
「VRC Phys Bone」を追加します。

追加できると揺れの設定画面が現れます。
「Collision > Radius」が髪の当たり判定の半径になるので、髪の毛の束の太さにざっくり合わせます。
白い筒のようなものが髪の毛の当たり判定です。

他の髪も同じように設定していきます。

動かしたい髪やリボンなどにVRC Phys Boneを追加し終わったら、実際に揺れるかどうかを確認しましょう。
再生ボタンを押してScene上のモデルを上下左右に移動させると揺れている様子が見えます。

もし揺れ具合が気に食わない場合は、下記リンクを参考に自分が好きなPhys Boneの設定を探求しましょう。


⑧ VRC Phys Bone Colliderの追加(顔)

⑦の時点では髪の毛が体を貫通してしまっているので、貫通防止のコライダー設定をしていきます。
まずは顔のコライダーから。

「Hierarchy」タブで頭のボーン「J_Bip_C_Head」を選択した状態で、「Inspector」タブ内の「Add Component」ボタンをクリック。
「VRC Phys Bone Collider」を追加します。

追加できると揺れの設定画面が現れます。
「Shape > Shape Type」を「Capsule」に設定し、出現した緑色のカプセルを髪の毛が貫通して欲しくない顔の範囲に合うように大きさや位置を設定してください。

作った顔のコライダーを前髪と横髪に設定します。
「Hierarchy」タブで前髪と横髪のボーンを一気に選択し、VRC Phys Boneの設定内にある「Collision > Colliders > Size」を1にします。
「Element0」が現れるのでそこに頭のボーンに設定したコライダー「J_Bip_C_Head (VRCPhysBoneCollider)」を設定します。

⑦と同様の手順で簡単に動作確認を行います。
実際の動きを確認すると、前髪と横髪が顔を避けて動くようになりました。


⑨ VRC Phys Bone Colliderの追加(体)

体も⑧と同じようにカプセル状のコライダーを設定した方が丁寧ですが、サンプルモデルBの場合は後ろ髪が体を貫通しなければ良いので今回は簡易的な設定をしてみます。

⑧と同様の手順で胴体のボーン「J_Bip_C_Chest」に「VRC Phys Bone Collider」を追加します。
「Shape > Shape Type」を「Plane」に設定すると面が出現します。
この面から伸びている線が後ろ髪の方向へ向くように「Rotation > x」を回転させ、後ろ髪と体の間に面が挟まる位置に調整します。

面に大きさの設定がなく、無限平面扱いです。
「この面よりも向こう側の座標には貫通させない」という設定になるため、貫通防御範囲が広いのが特徴です。

⑧と同様の手順で後ろ髪のVRC Phys Boneに胴体のVRC Phys Bone Colliderを設定します。

動作確認をするとこのようになります。
壁に阻まれて後ろ髪が体の前に飛び出さなくなりました。


⑩ VRChatにアップロード

一通りの設定が終わったのでいよいよアバターをアップロードします。
メニューバーの「VRChat SDK > Show Control Panel」を実行。

細かいエラーっぽいものが出ていますがこれは無視して大丈夫なやつです。
「Build & Publish for Windows」を実行します。

暫くするとこの画面に切り替わるので、必要事項を記入して「Upload」を実行すれば完了です。

こんな感じでちゃんと動いております!
お疲れ様でした!


もう少し見栄えを良くする

・前髪が裏返るのを抑える

Phys Boneには最低限の設定しかしていないので前髪が動き過ぎていると思います。
前後に走るとこんな感じに荒ぶる前髪……

これはPhys Boneが動く範囲に制限をかけてやることで解決できます。
前髪のPhys Boneで「Limits > Limit Type」を「Angle」に設定し、「Max Angle」を30に設定しました。
これで前髪は30度以上の角度には跳ね上がらないようになります。


・暗い場所でアバターが真っ黒にならないようにする

暗い場所に立つとアバター全体が真っ黒になります。
VRoidユーザーあるある。

これはシェーダーをMToonからlilToonに変更することで手っ取り早く解決できます。
もちろん他に気に入ったシェーダーがあればそれを使ってOKです。
ここではIiIToonの設定方法を記載します。

まずは下記からlilToonをダウンロードし、③と同様の手順でプロジェクトにインポートします。

「Hierarchy」タブにあるモデルのデータ内の「Body」を選択すると、「Inspector」タブ内で今使われているマテリアルの一覧が見れます。
クリックするとマテリアルの保存場所が表示されます。

変更したいマテリアルを選択した状態で、「Inspector」タブ内の「Shader」を「lilToon」に変更。

変更したときに、もともと表示されていたものがなくなったり……

黒いフチが出現したり……

そうなった場合は「描画モード」を「カットアウト」に設定し、「基本設定 > Cull Mode」を「Off (両面を描画)」に設定すると解消されます。

シェーダーをlilToonに変更するとこのように暗さの下限が設定されるようになるので、真っ黒を回避できます。

この記事が気に入ったらサポートをしてみませんか?