見出し画像

VRoidアバターをVRChat用に最適化する方法【とりあえず失敗しない】

※VRoidベータ版における記事です。2021/10/31以降の正式版では内容が異なる場合があります

令和最新版↓



前回のあらすじ

カスタムアバターを使うにはプレイヤーランクを1段階上げる必要があります。自分の場合は13時間プレイフレンド10人くらい、巡ったワールド20くらいでした。
なかなか上がらないので痺れを切らして近くにいる人にフレンド飛ばしまくったら上がりました。フレンド数が重要そう。

ようやくVRoidで作ったモデルを使えるようになったわけですが、アップロードするだけなら簡単なものの、やはり細かいところが気になる・・・。
色んな情報を集めてモデルを修正していたら、土日が終わりました。
でも完成した!!!!感動!!!!!!!!!!

今回の記事は、初心者ながら細かいところをこだわりたい人向けです。
簡単にアップロードして楽しみたい人は下記記事を参照してください。

VRoidってVRCだけじゃなくて色んな媒体に使われてるんですね。みんなそれぞれゴールが違うものに対しての情報をまとめてくれているので、VRCでは不要だったり、方法が違ったり、色んな情報が錯綜して大変でした。

せっかくなので、自分が集めた情報を最適化して、記事にまとめます。
(後で気づきましたが、この記事はSDK2で作ってます。SDK2でも途中までは同じですが、Unityに移した段階からは次の記事を見て下さい)

まず調べて準備して欲しいもの
・UnityのインストールとVRCアップロード用のパッケージ
・髪とかアクセとか揺らしたい人はDynamic Boneという追加アプリを買うこと(通常20ドル、セール時は半額になるらしい)
・VRoidのアバターをVRC用に変換するツール
【¥0】 VRM Converter for VRChat
https://booth.pm/ja/items/1025226

1.VRoidで髪色をテクスチャに直接描画する

※VRoidの髪をかげ色の項目で着色している人が対象

かげ色を使って髪にグラデーションを付けたアバターはUnityでは上手く反映されません。恐らく処理上の問題で、シェーダー?とかを変えたら上手くいくかもしれませんが、Unityのことをしっかり理解しないと難しそうです。
取れる方法としては以下の3つです。

1.グラデーションを諦める
2.テクスチャに直接グラデーションを付ける
3.理想の色付きのテクスチャをBoothで探す
4.Unityで反映させる方法を調べる

私は2を選びました。
テクスチャに直接着色する場合は、GIMPなどのペイントツールにグラデーション生成の機能があるので、それをレイヤーにインポートして合成モードや不透明度を調整して良い感じにしましょう。
説明は省きますが、ペイントツールのスクショを載せるので参考にしてください。

画像1

2.VRoidで髪色のマテリアルを整理する

マテリアルはVRoidでは髪の色のプリセットのような扱いですが、VRCに持っていく場合は数が多いとアバターは基本的に重くなります。
無駄に増やしてしまっている人は、ここでマテリアルを整理しておきましょう
VRoidの現状の仕様ではマテリアルは複製できても削除が出来ないので、使ってないマテリアルは色を黒などの分かりやすいものにして、選択しないようにしましょう。

3.VRoidでボーンを削減する

※Dynamic Boneを導入しない人は飛ばしてください
髪を揺らしたい方は一度自分のボーン設定を見てみましょう。ボーンが多いと基本的には重くなります。また、ボーンが多いと後々の設定も大変になるため、無駄なボーンが無いか確認しておきましょう。

1. 揺らさなくても良い細かい髪のボーンを消す
2. 髪を揺らすグループを大雑把にする
3. 1グループに設定されているボーン数を減らす

このような作業はVRCへの最適化が目的となるので、元のモデルは別に保存しておいて、VRC用モデルとして分けておくことをオススメします。
髪のボーンの総数は前後左右+αで5~10個程度に収めたほうが良さそうです。

4.VRoidでアバターをエクスポートする

エクスポートする時にマテリアル数を削減することが出来ます。これを行うと目や顔などのテクスチャをいくつか1つの画像に合体させて、マテリアルの総数を減らします。(アトラス化と言います)

マテリアル数を減らすことの良し悪しは人によりけりですが、後にUnityでアバター改変を考えている人は削減しない方が無難です。

エクスポート後はVRMという形式のデータになります。

5.Unityで新規プロジェクトを作成

ここからUnityになります。
必要なものをAssetと書いてある中央下のフォルダ一覧のところにドラッグ&ドロップで放り込みます。下記の順番でD&Dしてください。

画像2

1.VRC SDK2
2.VRM Converter for VRChat
3.エクスポートしたVRoidモデル

Dynamic Boneを設定する人は、Asset Storeのタブ→My AssetからDynamic Boneをインポートしてください。

画像3

6.VRMの表情を調整する

※Avatar3.0でやる場合はここから次の記事へ飛んでください

ここがめちゃめちゃ大事!!!!!!!!

はっきり書いてくれる情報に辿り着けなくて凄く時間がかかりました。
VRMの変換を使う前に必ず表情調整をしましょう。
変換した後にUnityで頑張ってアバターを調整しても、表情に不満があったらやり直しになります。
(後から変えるにはアニメーションを自分で作る必要があるので、知識が必要です)

VRM Shadersの中のBlendShapeという項目から1番最初にあるBlendShapeのファイルを選択します。すると右のウインドウに設定値が出てきます。右下にプレビューが出ると思うので、プレビュー画面のタイトル部分を右クリックしましょう。別ウインドウになって大きく表示できます。

画像4
画像5

今回使用させて頂くVRM Converter for VRChatでは、指のポーズに表情が割り当てられていて、例えばピースすると笑顔になります。以下がハンドサインと割当表情の一覧です。

記事メモ添付

それぞれの表情をクリックして確認しましょう。眉毛が目にめり込んでませんか?目をつぶりすぎてませんか?デフォルトは派手めに表情がついているので、少し軽くしてあげましょう。
調整が必要なのは上の表の4つ+Natural+Blinkです。

さらに、左右で別々のハンドサインを取ると2つの表情が合成されます。これで何が起こるかというと、口を開ける表情に別の口を開ける表情が加算されて、歯が下顎から飛び出します。目を閉じる表情にさらに目を細める表情が重なると、まぶたがめり込みます。恐い。(SDK3では片手のみに変更されてるので、気にしなくて良いです。)

例えばAngryの表情を調整します。Faceの隣の三角形をクリックしてタブを開くます。ALLとなっている1番上のスライダーを0にしましょう。そして下の方を見ると、眉毛、目、口などにAngryの項目がありますね。これらを別々に調整してあげます。これで程よい怒り顔を作りましょう。他の表情についても同じです。

画像7
画像8

調整のポイント
・口を開ける量は小さめに
・眉毛が下がる量も小さめに
・目を閉じる表情は1つに
・全体的に変化量を抑えめに

表情は名前と一致させる必要はありません。例えばサムズアップにはSorrow(悲しみ)が設定されてますが、ニコニコ顔にしたい人もいるでしょう。その時はSorrowタブの中身のパラメータをFunにしてしまえばいいのです。賢いやり方ではないですが、VRCのことだけ考えるのであれば割り切って変えちゃいましょう。

例えばビクトリー(ピースのポーズ)はOculus Questユーザーは頻繁に発生します。トリガーに指が触れていればNaturalになりますが、離している状態でジョイスティックを操作するとビクトリーのハンドサインになってしまうのです。ビクトリーポーズのJoyは変化が激しい表情なので、ピースするたびに頻繁にJoyされると困る・・・。そんな時はJoyの中身をFunに、Funの中身をJoyにしてしまっても良いでしょう。

JoyとSorrowはどちらも目を閉じる(細める)表情です。2つが合成されるとまぶたがめり込んでしまうのですが、そこの調整は各人におまかせします。
あまり組み合わせないハンドサインにするとか、合成されてもめりこまない表情にするとか、方法は色々ありそうです。
歯を牙にしたい人もここで調整しましょう。

画像9

7.VRM Converter for VRChatで変換

変換します。
既に分かりやすい解説記事があるので、下記の記事を読んで下さい。
合わせてビューポイントの調整もしてください。

8.Dynamic Boneの調整

※使わない人は飛ばしてください
ここも結構大変です。まずは左端の一覧から自分のモデル→Secondaryを選択してDynamic Bone調整のウインドウを出します。

画像10

もしここでボーンが多いと感じたら、チェックを外せば除外できます。

次に必要なのがパラメータの調整です。初期値だと髪も胸も暴れまくりです。各パラメータにどういう効果があるのか、参考記事を貼ります。
この調整のせいで自分はVRCとUnityを反復横跳びしました。
もっと良い確認方法があるかもしれないです。

この方法で変換したVRoidモデルは大体アバターランクがvery poorになります。自分のPCで動けば問題は基本的に無いですが、ランクを簡単にMedium以上にしたい場合はDynamic Boneが入っていないモデルを作っても良いと思います。

自分は新しくUnityでプロジェクトを立ち上げて、今までの流れをDynamic Bone抜きで行ってアップロードしてます。
表情編集が二度手間なので、もっと良い方法がありそうです。

9.アバターのアップロード

ついにここまで来ました。あとちょっとです。
ボタンを押して、アバター重いよと出てくる警告を無視してボタンを押して、サムネを撮影してアップロードすれば完成!!!(前述の記事参照)

サムネの取り方は色々ありますが、自分で好きに設定したい場合はVRoid上で撮影した画像を編集して載せるのが良いと思います。サムネは横1000×縦750で作ると良いです。表示方法によって外側が一回り削られるので、真ん中に少し小さめに作ると良いです。詳しくはテンプレを参照。参考記事を貼ります。(この記事のトップ絵は自分のアバターのサムネです)

【無料】VRCサムネイルテンプレート|#VRChat
https://booth.pm/ja/items/1457862

10.VRCで確認

ついに自分で動かせるようになりました。感動!
Dynamic Boneの挙動はSafety→Performance option→Dynamic Bone→Limit Dynamic Bone Usageのチェックを外さないと見れません。
ただ、これを外すと世界全てのDynamic Boneが有効化されるので、PCスペックが足りてない人は重いワールドでは逐次変更した方が良いかもしれません。表情や髪と胸の揺れに満足できたら終了!お疲れさまでした。

無事Unityという沼を泳ぎ切れましたね。僕はもう全身沼に沈んでいるので、抜け出すことは出来なさそうです。
皆さんは僕の屍を足場にして先に行ってください。

この記事や他の記事を読んでツイートで宣伝してもらえれば成仏できます。

もっと良いやり方あるよという方はコメントで教えて頂けると助かります。
読んで頂きありがとうございました。

追記

噂によるとDynamic Boneの数は多くてもそこまで重くならないとの話もありました。減らさなくてもいいのかも。

マテリアルの数の多さより、データ容量がいくらあるかの方が重要そう?

テクスチャのCrunch圧縮すると容量がかなり軽くなるので、マテリアル数よりもこっちの方が重要かも。

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