Unityと仲良くしたいVRChat日記(9)VeryPoorなアバターのままで良いのか?
今回はアバターの「重さ」、パフォーマンスランクの話。
Boothで売られているアバターは最初からPoorかVeryPoorで、初心者は何も気にせず最初から「赤い」アバターを使ってることが多い、というか私がまさにそうでした。
大人数がいるワールドで負荷を減らすために軽いアバターにするに越したことはないし、フレンドがPC版でもQuest版でも同じ姿を見てもらうために自分のアバターが「Quest対応」を満たすほうがよい、ことは聞いていても、何を目指せばよいかいまいちわからない、ので調べた。
パフォーマンスランクはどうやって決まる?
パフォーマンスランクは「良い(軽い)」ものからExcellent、Good、Medium、Poor、VeryPoorとなる。
このランクは、ポリゴン数とかテキスチャメモリ(のサイズ)とかめっちゃ沢山の基準があり、その基準を1つでも超えるとそのランクにはなれない、というシビアなもの。とVRChat公式に書いてあった。
ちなみに、第7回で作成した着せ替え対応RadDollさんは
でVeryPoor。ポリゴン数が多いところがランクを下げてるみたいだ。
このRadDollさんは素晴らしいことに、Boothからダウンロードしたパッケージにレベルの違うモデルが3つも同梱されていて、重い順にこうなっている。(左からノーマル版、Lite版、Quest版)
ノーマル→Liteは「マテリアルスロットとスキンメッシュ」が大幅減少していて、ポリゴン数も2万ほど減っているがテキスチャはそんなに減っていない。またPhysBoneが服と髪を中心に20ほど減っているが外見上は見分けつかない。
Lite→Questはポリゴン数がほぼ1/3になって△1.9万、テキスチャメモリは実に70MB以上減ってたったの2.7MB(ちなみにQuestでは10MB以下でExcellent)。
こんな感じに、いろいろな数値があって全体的に減らすとよいのは間違いない。
マテリアルスロットとスキンメッシュ
世の中のアバター軽量化サイトをみると、ポリゴン数を減らすことはもちろんで、さらにマテリアルとスキンを減らすことが肝要とある。
RadDollのノーマル→Lite→Quest版はこのようにマテリアルスロット数が減らされている。テキスチャ一覧と比較してみるに、ノーマル→Liteは個別のパーツOn/Off機能を殺してマテリアルを統合していて、同時にスキンメッシュ(Skinned Mesh)も1つにまとめられている。
簡単に言うと、服のパーツ別にOn/Offできるものはマテリアルスロット(ノーマル版は20)とスキンメッシュ(同、16)が別々になっているため数が増えてパフォーマンスランクを下げている、ということになる。
他の市販アバターも、服のパーツを個別にOn/Offできるものはほぼ同じくらいの数になっていて、Mediumを満たせない原因になってるようだ。
これらを減らすにはどうするか、3DモデリングツールであるBlenderで操作するのが王道らしいが、Unity上で減らせるAvatar Optimizer(AO)というツールがある。これを使ってRadDollノーマル版を減らしてみた結果がこれ。マテリアルスロットが20→7、スキンメッシュが16→2に劇的に減ってGood判定に。あとはポリゴンとPhysBoneを減らせればVeryPoor脱せそうだがそこは今後の宿題。
Quest用に変換する
Quest用アバターのパフォーマンスランクはPC版とは別の数値が定義されていて(VRChat公式)、さらにQuest対応アバターとしてアップロードするには別の条件も存在する。
mobile(Android)用ビルド
mobile用ビルドに対応したシェーダー
10MB以下
RadDoll Quest版は純正で対応しているのでビルド設定を切り替えるだけでQuest版としてアップロードできるが、Quest非対応アバターをマニュアルでQuest対応しようとするとシェーダーあたりでなんか表示がおかしくなる。
そこでVRCQuestToolsを導入。これは2と3をいい感じにやってくれる優れもので、PC版しか存在しないおつきみくんもビルドエラーもなくあっさりと変換成功。
PC版VRChatでスペックを比較すると、テキスチャメモリーが40MB→5.9MBに劇的に減っている。変換時にテキスチャサイズを小さくしてるのが数字でわかる。他の、ポリゴン数とかスキンメッシュ数とかはまったく変わらず、
PC版とQuest版の見た目の違いはやはりシェーダーが大きく、PC版のliltoonはマンガみたいな輪郭線が特徴的。個人的には素朴な3DCGっぽさを感じさせるQuest版も好き。
さらにQuest用に軽くする
上記で変換したQuest版おつきみもポリゴン数は3.6万△とそこそこ多く、Poorランクに相当する。他のQuestユーザーにデフォルトで表示されるようにするにはMedium以下、これはポリゴン数△2.5万以下かつマテリアルスロットもスキンメッシュも2以下、がハードルとなってくる。
そしてもう1つ、負荷の重いメイン用アバターの代わりに表示してもらう身代わりアバターをFallbackアバターと呼び、これはランクGood以下、ポリゴン数△1万とさらに厳しい条件になる。これが「軽い」アバターの究極目標。
ここまでくると外見ショボいんじゃ?と思われるかもしれないが、VRChatのアバター画面の「Public」にはポリゴン数△1万前後のデータ節約のお手本がいろいろあります。アバター職人ってすごい。
今回ほかに以下の記事を参考にさせていただきました。先人に感謝。
アバターの数値を見るのに使った神ツール。VCCで管理らくらく。
ActualPerformanceWindow(anatawa12's gist selector)
AvatarUtils (lilAvatarUtils)
(2024/2/12 追記。
その後AvatarOptimizerがアップデートされてさらに扱いやすくなったようだ。いずれまた最新環境で比較してみたい。)
この記事が気に入ったらサポートをしてみませんか?