見出し画像

【追加ツールなし】揺れ物付きのVRoid製モデルをGoodに持っていく実況【自力】

VRoidから作った揺れ物付きのvrmモデルをそのままVRCにアップロードしようとすると、パフォーマンスランクはほぼ確実にVeryPoorになります。

妥協して髪の揺れを削除してもMidium止まり。服の揺れに至ってはVRoid上で制御できません。

ただ、unityの画面を見るとどうもVRoid側の仕様がカスすぎるだけで、設定すれば髪が揺れてても全然Goodいけそう。

ランクを上げる方法を検索するとプラグイン等の使用を紹介されることが多いんですが、個人的にそういうのあんまり好きじゃないので自力でやろうと思います。ツールだよりだとGoodまでいけるかどうかわかんないし。

ちなみにunityのことはなんも知りません。VRchatSDKも5年ぶりに触ったらなんか3になってました。VRCCCってなんだよ!

VRM出力&変換

まず前提としてVRoidの方で髪の揺れ方を設定しておきます。

でVRM出力の際、ポリゴン数が70000以下、マテリアル数が8以下になるようにします。ボーン数はこの画面ではうまく削減できないのでそのままで。今回はこんな感じで基準以上に削減しています。

マテリアル数は2にしました

VRMコンバーターを使って「揺れ物の全てを引き継いだ状態で」変換。

肩の高さはなんかこうやれって見た

しかしこれをそのままうpしようとするとこうなる。

あらら

警告を読むと
・このままだとVeryPoorになるよ
・Phys Boneコンポーネントが50個あるよ(Good基準:8以下)
・Phys Boneコライダーが26個あるよ(Good基準:8以下)
・コライダーとボーンの対応が504個あるよ(Good基準:128以下)
・Phys Boneによって稼働してるボーンが122個あるよ(Good基準:64以下)
とのこと。

【なんだよそれ】
Phys Bone:物理演算でボーンを揺らすシステム。昔のダイナミックボーンに当たるものらしい
Phys Boneコンポーネント:揺れの設定。1つのコンポーネントで複数のボーンを同じ数値で動かすことになる
Phys Boneコライダー:今回の画像で言うところの緑の丸。当たり判定

なぜこんなことになっているのかというと
・コライダーが全てSphereという非効率極まりない状態である
・影響しないコライダーも残っている
・着せている服の一部がもともとVRoidのロングコート等であり、消した下半分部分のボーンと設定が残っている
・重ね着させているプリーツスカートの設定も二重になっている
・全ての揺れ設定が一個一個独立したものとして設定されている
という感じ。

なのでこちらとしてやることは
コライダーを最適化して減らす
・使用していないコンポーネントを消す
・同じ数値の設定は一個のコンポーネントにまとめる
の3つです。

ボーンの数も現状だと183個あるはずなんですが、これは気にしなくてもなんか大丈夫です(なんで大丈夫なのかは知らない)

ここまでやるなら設定イチからやってもよくない?とは思いますが、コライダーをイチから作るのもそれはそれでめんどくさいんでね……

コライダーを最適化して減らす

今回は最終的に必要なのは頭、首、胴、腰、右上腕、左上腕、右もも、左ももの8つと判断しました。髪の長さ的に首とか腰とかいらない気がするけど。

Hierarchからそれっぽいボーンを選択し、中に入っているコライダーをカプセル型にして減らしていきます。
上腕とかは3つあるうちの真ん中を伸ばすとスムーズ。胸がなんか正面と左右の肩甲骨で3つあるんですけど、気合で近似させていく。

なんとなくそれっぽくコライダーが8個になりました。

ちなみにこうやることでコライダーの大きさとか変えるのも楽になります。

必要のないコンポーネントを削除する(事前準備)

今は削除しません。
とりあえずHierarchyのsecondaryに行くとinspectorに全てのコンポーネントがズラっと並んでいます(諸悪の根源)。

Playモードで確認したりしながら、要らないであろうやつのチェックを外していきます。胸→服→髪の順で並んでるのかな?同じ服のコンポーネントは連続で並んでるので、スカートの場合6個単位で数えるといいです。

今回は50個並んでるらしい

コンポーネントをまとめる

unityのことなんて何も知らないので、こちらの動画を参考にしました。

今回必要なのは前髪、後ろ髪、スカート、胸の4つ。
ただしスカートのボーンの居場所が左と右で分かれているので、身体のボーンとの上下関係を弄りたくない私はスカートに2個使います。なので計6個。

さっきチェックをつけたsecondaryのコンポーネントから、必要なボーンをカンニングします。

これ便利

どうやらJ_Bip_L_UpperLegに入っているJ_Sec_L_Skirt〇〇_01&02が今回動かしたいプリーツスカートのボーンっぽいです。右も同様の感じ。

モデル名(VRChat)の右にある>からPrefabいじり画面を開き、右クリックからUpperLeg内にCreate Emptyし、フォルダに必要なボーンを入れます。名前は分かればなんでもいいのでskirt_root_L(R)とかにしとこ。

したらsecondaryから該当のコンポーネントどれかをコピーしてskirt_rootにAs Newでペーストします。左右で対応するやつをコピーしましょう。

貼り付けたコンポーネントのroot transformをskirt_rootに変更します。
Collisionで対応するコライダーも減らした分減らしておきましょう。

他のも同様にやります。髪の対応コライダーが一気に20から5とかになる様は圧巻。

今思ったけどデフォルトでsecondaryが外にあるんだからコンポーネント自体は全部外にやっちゃってもいいのか。見た目的にボーンと関連づけたいかどうかは人によるけど。

必要のないコンポーネントを削除する(実行)

secondary(諸悪の根源)を削除します。いっけ~!!

やった~~~~~~~~~~!
183個あったボーンどこ行った?

あとはコンポーネントの数値をちゃんと設定して、シェーダーとかいじりたいところいじったらアップロード!

完成

マテリアル2の圧倒的軽さ

というわけでGood達成しました。
ツールを使うのと比べたら多分手間ではあるんですが、確実であることとコライダーの取捨選択を自分でできることなどを考えたらそこまで大きい作業でもないです。

あとは多分ポリゴンさえ15000以下に抑えられればquestもMediumで対応できますね。無茶言うなよ!