自分で作ったVRoidであれば、エクスポートするときにマテリアル数やテクスチャのサイズを減らすことができますが、他の人が作ったモデルだとマテリアル数やテクスチャサイズが大きかったりしますよね。
VRChatのパフォーマンスランクがVery Poorで軽くしたいとか、Texture Memoryを少しでも軽くしたいってときに使えると思ったので、自分用にメモを残すことにしました。
まずはじめに
今回使用したアバターはこちらです。
マテリアル数やテクスチャ数を減らすと、解像度がだいぶ下がったり
それぞれに好きな影色やアウトラインを割り当てることができなくなります。
今回はマテリアル数14、テクスチャ数13⇒マテリアル数3、テクスチャ数2とかなり減らしています。
遠くから見ればそれほど差はないように見えますが、こう見ると見た目の影の違いが判ると思います。
左が軽量化したアバターです。右は目や服などそれぞれ別マテリアルなので色調補正をしてます。
マテリアルを分けるときはそれぞれ違う影を付けたい、質感を変えたいと思う場所はマテリアルをわかておきましょう。金属など特殊なシェーダーを設定したいわけでないのなら最低限「顔、体、髪、服」と4つくらいに分けておけばいいと思います。今回は顔、髪、その他で分けてあります。
しかし、マテリアル数とテクスチャ数を減らしてもVRChatのパフォーマンスランクがVery Poorになる可能性もあります。アバターの詳細を見て赤くなっている部分を見てみればどれが重い原因かわかると思います。
私の場合、サブメッシュの結合もしてあります。もともとが6(顔、体、髪、服、羽、髪飾り)だったのを
2(髪とそれ以外)にまとめてあります。VRChatで服のオンオフなどする必要がなければまとめちゃって問題ないと思います。
あとはphysboneとコライダーの数を減らしてMediumにしています。
マテリアル数とテクスチャ数をひとまとめにする方法
今回は、顔、髪、それ以外でマテリアルを分けています。
ベイクするときにオブジェクトがひとまとめになっていないと1枚のテクスチャにベイクできないので、ある程度Ctrl+Jで結合しちゃってます。ひとまとめにするときはBlenderファイルをちゃんと分けておきましょう。
今回もやり方は動画でまとめてみました。
ざっくり文章でまとめるとこんな感じです。
- UV編集のタブから新規でベイク用のテクスチャを作成する。
- UVマップで新規でUVを追加する。カメラのマークはまだ切り替えないでおく。
- マテリアルごとに選択して、UVを小さくして並べていく。
- UV配置が終わったらシェーディングタブに移動して、まとめる全てのマテリアルに画像テクスチャを追加する
- このとき追加した画像テクスチャが選択(白い線)になっていること
- 全部画像テクスチャを設定したらレンダーエンジンをcyclesにする
- ベイクのところからベイクタイプをディフューズにして、影響はカラーのみを選択する
- ベイクしないパーツは非表示にしておいてからベイクボタンを押す。
- ベイクが終わったら画像を保存して、1つのマテリアルにまとめてからシェーディングタブから画像を変更する
- そのままだと画像がずれているのでUVマップを新しく作った方に切り替える
ベイクしたときUVの端などがうまくベイクされてないとその部分だけ黒っぽく見えちゃうので
モデル全体を見てなんか端のテクスチャ汚いな?と思う部分があったらテクスチャもちょっと手直しして塗ったほうがいいかもです。
その他メモ
私は基本Blender→FBX→Unityで1からシェーダーを設定するやり方でやってます。シェーダもMToonではなくlilToonを使ってます。
もし自分でVRoidモデルをVRChatのアバターにしたいならこちらの動画がわかりやすくておススメです。
でもマテリアル数を少なくしたらシェーダーの設定も楽になりますし、揺れ物の設定はやっぱりある程度調整が必要になってくると思うのでその辺は「Blenderで作ったキャラをVRChatのアバターにしよう」の記事を参考にしてみてください。マテリアルの設定も説明しています。
↓この記事が役に立ったと思ったら高評価ボタンをよろしくお願いします!
コメント