VRoid製VRMモデルをPhysBoneに良い感じに対応させる【暫定版】
ご近隣の皆様こんばんは。
ご近所系Vtuberおじさんのがそさんです。
この記事ではVRChatに正式に実装されたPhysicsBone(以下PhysBone)をVRoid製VRMモデルにイイ感じに対応させる方法を解説します。
*この情報は2022/4/25現在のものです。
*【2023/06/05追記】参考数値はPhysbone1.0用です。Physbone1.1の場合、重力設定値が必要な際はより大きな数値を用いる必要があります。
用意するもの
最新のVRoidStudio正式版から出力したVRMモデル
Unity2019.4.31f1
最新のVRCSDK(Avater3.0用)
最新のVRM Converter for VRChat
インポートしよう
まず通常通りUniVRMからVRMをインポートし、そのままコンバーターで変換をかけます。この際、Springbone>PhysBoneを自動変換しないようにしてください。
なんで自動変換じゃだめなの?
理由は二つあります。以下のとおり解説します。
アバターパフォーマンスに無意味に影響する
下記画像のようにVRoid製VRMモデルには大量のSpringBoneColliderが仕込まれており、自動変換するとこれが全部PhysBoneColliderに代わります。
当たり前と言えば当たり前ですが、これがアバターパフォーマンスやアバターランクに影響しないわけがないので、不要そうな場所のコライダーを削除することになります。
しかしながらなにぶんこの量なので削除するよりも新規で追加したほうが手っ取り早いです。
編集しづらい
そもそもSpringBoneとPhysBoneは全く別の揺れ物コンポーネントなので、揺れ方やパラメーターの癖にも少々違いがあります。(=性質の近いパラメーターに同じ数値を入れても同じ挙動にはならない)
なのでVRoidStudio上での揺れ方を再現するためにPhysBoneのパラメーターを調整したいのですが、VRoid製VRMモデルはSpringBoneのコンポーネントがすべて「secondary」という場所に格納されているので、どのコンポーネントがどの箇所のパラメーターをつかさどっているのか非常にわかりづらく、また複数選択ができないので一括でパラメーターを調整できず、非常に手間がかかります。
そのため、今回はこのコンポーネントをコンバート時にすべて吹き飛ばし、新規でPhysBoneを挿入していきます。
PhysBoneを導入しよう
PhysBone導入~パラメータ調整
揺れもの設定をすべて排除したモデルがコンバートされたら、まず下記画像のようにヒエラルキー内からHead以下の「J_Sec_Hair~~」となっている箇所を複数選択しましょう(Shift+下矢印かCtrl+左クリックで複数選択できます)
その後「Add Component」で「VRC Phys Bone」を選択してください。
そうするとこのように髪の毛にPhysBoneが追加されます。
そのまま複数選択状態にしておけば一括でパラメーターを調整できるので、そのままパラメーターを調整してしまいましょう。
なお、PhysBoneはDBと異なり対象のヒエラルキーにコンポーネントを追加してしまえば(今のところ)Root transformを指定する必要がないのでDBよりちょっと楽です。
揺れ方はそれぞれ好みがあると思いますので、ここではそこまで詳しく解説はしません。参考資料として私の設定値を載せておきますので参考程度にどうぞ。
衝突半径の設定
次に衝突半径の設定です。初期値は0になっていますが、このままだと掴んだり触れたりすることができません。また、コライダーにも反応しなくなります。
しかしながら大きくしすぎると干渉がひどくなって思った通りのヘアスタイルを維持できない状態になってしまうので、大きすぎない値(0.005)ぐらいで数値を入れておきましょう
接触、掴み、固定の設定
接触判定、掴み判定、位置固定判定のチェックボックスは上記画像のとおりです。初期値はすべて有効なので、不要なもののチェックを外して無効にしましょう。
他にもいろいろパラメーターあるけど…?
その他のパラメーターなどで例えば前髪を顔にめり込みづらくしたりすることもできますが、今回は簡単な設定のみ解説しますので割愛します。
ここで説明しなかった項目は一旦触らなくても大丈夫です。
コライダーを設定しよう
PysBoneの対象のコライダー数を設定する
次に、それぞれのボーンの接触判定の対象となるコライダーの数を設定します。先ほどと同様に対象の髪の毛を複数選択した後「Colliders」の「Size」の項目に任意の数を設定します。
といってももとのVRMのようにハチャメチャな数は必要ありません。
長髪でもせいぜい「Head」「Neck」「Upper Chest」の3か所程度、短髪なら「Head」の1か所程度で問題ないはずです。
*自動コンバートでPhysBoneを追加した際にアバターパフォーマンスが悪くなるのは、ここに大量のコライダーが指定されているためです。
対象の箇所にコライダーを設定する
髪の毛に指定枠が設定出来たら、次にコライダーを設定しましょう。
PhysBoneを導入したときと同様にヒエラルキー上の対象の場所を選択し「Add Component」>「Phys Bone Collider」でコライダーが追加されます。
あとはご自身の部位のサイズに合わせてコライダーの位置やサイズを調整しましょう。
それぞれのPhysBoneにコライダーを適用させる
コライダーを設定出来たらもう一度ヒエラルキー上の髪の毛を複数選択しましょう
「Size」の下にある「Elements~」の一番右「◎」ボタンをクリックするとコライダーの設定されている箇所が一覧で表示されるので、設定したい箇所を選べば設定完了です。
衣装やアクセサリーなどにも同じような設定を施せば設定完了です!
おつかれさまでした!
あとはいつも通りAvatar Descriptorやマテリアル等調整してアップロードしましょう!
注意!(バグ?のはなし)
バグなのか仕様なのかわかりませんが、VRoidモデルのアクセサリ(猫耳やウサミミ)やワンピースのスカートなどにPhysBoneを設定し掴み判定を有効にすると、なぜかそのボーンのウェイトが乗っている箇所のメッシュがVRC上で消し飛ぶことがあります。なんで……?
不安な場合は掴み判定を無効にしておきましょう。
ちなみに、いまのところ髪の毛では発生してません。なんで……???
この記事が気に入ったらサポートをしてみませんか?