VRChatで、アバターをバッチリ改変しても全然表示されないお悩みがありませんか?
せっかく作った自慢のアバター、他の人に見てもらえないと悲しいですよね。そして、ダウンロードされるまでの時間は、かなり気まずい……
VRChatには、アバターの「重さ」を示すパフォーマンスランクというものがあります。Very Poorが最も負荷が重く、Poor、Medium、Good、Excellentと続いていきます。
「Very Poorよりも負荷が軽いアバターにしましょう!」と言いたいわけではありません。
今回の目的は、「同じVery Poorの状態でも、もう少しだけでも負荷を軽くしませんか?」という提案です。
パフォーマンスランクで見ると、同じVery Poorでも最適化をしているかどうかで、アバターの負荷は大きく異なります。
今回は、簡単にできるアバター最適化のポイントを4つご紹介します。
今まで「難しそう」と諦めていた方も、ぜひこの記事を読んで「アバターダイエット」に挑戦してみましょう!
今回使用するアバター
使用するアバターは『めいゆん』です。
この『めいゆん』には、1個のアバターに衣装が3着入っている「Meiyun 2P」と、下着のみを着用した改変用の素体「Meiyun_改変 2P」が用意されています。
今回は「Meiyun 2P」から髪・顔・身体を消し、残った衣装部分を「Meiyun_改変 2P」に着せる衣装改変を行いました。

何も最適化していないデフォルトの状態でアップロードすると、このようになっています。

ここから最適化をしていきましょう。
パフォーマンス改善の第一歩!困ったらAAO:Avatar Optimizerだけでも
『AAO:Avatar Optimizer』ことAAOは、アバターの最適化を手助けするツールです。
とにかくさまざまな項目でアバターの見た目を損なわない形で最適化を行ってくれるため、アバターの最適化をするうえでは、まずはこれを使え!といったものです。
Trace And Optimize
Trace And Optimizeは、追加するだけで自動でアバターの最適化を行ってくれます。
今回の記事において、最悪これだけでもしてください。手間と返ってくるリターンが段違いです。
アバターを選択し、「インスペクター(Inspector)」の一番下にある「Add Component」をクリックしましょう。
その後、「AAO」と検索すると「Trace And Optimize」が見つかるので、それを追加してください。

Remove Mesh By BlendShape
服の下の見えない部分をカット!
服で見えないところのポリゴンを削ります。つまり、服の下にある肌の部分をなくす作業です。
見た目に影響させない形で、かつ簡単な作業なので可能な限り毎回やりたい作業です。
アバターによって身体に使われているポリゴン数が多く使われている場合があります。
なので、服で見えない部分のポリゴン数を削るのは作業量のコストと最適化のリターンはかなり良いほうです。
アバターの身体部分を選択し、「Add Component」から「remove」と検索すると、「Remove Mesh By BlendShape」が表示されるので、追加してください。

服と靴に隠れている箇所にチェックマークを入れました。

作業をする際は「プレビューのために、切り替えたBlendShapeの値を自動的に変更する」にチェックを入れましょう。 消えた箇所がすぐさまに確認できるため、ミスを防げます。

全体のポリゴン数を減らしましょう。Meshia Mesh Simplification
Unity上でポリゴン数の削減を行えるツールです。衣装以外にも削りたい場合に使います。
見た目に関わるため、少し手間が掛かります。ただし、パフォーマンスランクがVery Poorで使えないといった状況でPoorなどに改善したい場合はもちろん、使用する衣装によっては効果的な場面もあるので紹介。
今回は、『Meshia Mesh Simplification』に加えて、『Overall NDMF Mesh Simplifier』も使用します。どちらも追加したうえで、次の操作を確認してください。
アバター本体を選択し、『Overall NDMF Mesh Simplifier』のコンポーネントを追加してください。「Over」と検索すると表示されるはずです。

アバターはもちろん、衣装も含めて一覧で表示されます。各パラメータを調整しましょう。

ただし、ポリゴン数を削減することは見た目とのトレードオフです。プレビューが使えるため確認しながらポリゴン数を削りましょう。
パフォーマンスランク以内に収めるといった目標がない場合は、無理に削ることはオススメしません。
冒頭でお伝えした通り、同じVery Poorであっても少しでも最適化しておくことを目標にしているからです。
また、アバターの中で注目を浴びる部分は、ポリゴン数を削るのに慎重になりましょう。
VRでは、アバターの顔や髪、上半身にあるものは、近くで見ることになります。あまり見られない場所から削減することをオススメします。
ポリゴン数がネックとなってパフォーマンスランクが引っかかるのであれば、元からポリゴン数の少ない衣装や髪型を変えたほうが楽なケースがあります。
ポリゴン数は、ユーザー側でできることに限界のある作業なので、軽量化をする際はあまりこだわりすぎないほうが良い項目です。
テクスチャ周りの作業はここ! TexTransTool
『TexTransTool』で、テクスチャのアトラス化やマテリアル数の最適化を行いましょう。
Avatar Optimizerでもある程度行ってくれますが、もう一押ししたいときに使いましょう。
テクスチャのアトラス化は最適化に有効ですが、場合によってはかえって負荷が増える原因となることもあります。
まずは必要かどうか、どのテクスチャをアトラス化すればいいか特定しましょう。
この特定する機能で不要となった場合は無理に行う必要はありません。チェック自体はすぐにできるので、機能を使って診断から。
メニューバーから「Tools」→「TexTransTool」→「DomainTextureAnalyzer」を選択。

ここでアバターを選択して結果を確認しましょう。Texture usageで赤く表示されている箇所は、アトラス化すると効果が期待できます。GroupMaterialsに表示されているマテリアルと一緒にアトラス化してください。

アバターを右クリックして「TexTransTool」の「TTT AtlasTexture」を選択します。

アトラス化したいマテリアルのチェックを入れて選択しましょう。
今回は髪と衣装のマテリアルを選択し、アトラス化しました。

再生ボタンを押して再生モードに入った時、アバターのアップロード中にNDMFコンソールのウィンドウが表示され、アトラス化によってどれだけ縮小されたかが確認できます。

毎度のウィンドウ表示が煩わしい場合は「(NDMF)Optimizing-Phaseのプレビューを無効化する」ボタンを押してください。

その他の機能について解説記事はこちら。
最適化の結果は……?
さまざまな最適化を紹介してきましたが実際に効果はあったのか見てみましょう。


全体的にかなり最適化されましたね! ダウンロードサイズやテクスチャメモリが大幅に削減され、なんとパフォーマンスランクもVery PoorだったのがPoorになりました。
この記事を使って最適化をする場合は、ぜひBeforeとAfterそれぞれスクリーンショットを撮って記録してみてください。意味があるのかピンとこない場合でも、数値を比較してみるだけでも、違いが分かりやすいです。
あなたのアバターが他の人からより早く表示されるようになり、VRChatをより快適に楽しめるようにしてみてください。
この記事で紹介されているツールはModular Avatarが前提です。また、導入もVCCを利用して追加することをオススメします。VCCやModular Avatarなどの基本的な導入方法については、下記の記事を参照してください。