1. はじめに
この記事は、わたしが普段最適化をする際によく見返している記事をまとめて再掲したものになります。参考記事は一番最後に記載しておきました。細かい話は割愛して、わたしがアバターの最適化をする際の作業工程の紹介に徹するつもりですので、詳しいことは参考記事(§6.1)を参照いただければと思います。
1.1 最適化とは
今回の記事において、最適化(軽量化)という語を「VRC公式が掲げるパフォーマンスランク基準の各項目をより良いランクにすること」とします。各項目について細かく見ることで、最終的にダウンロードサイズを抑えることができます。
詳しい基準は公式を見ていただくことにして、下に(PC条件下の)代表的な事項を抜粋した表を掲載しておきます。
| Avatar Quality | Excellent | Good | Medium | Poor |
|---|---|---|---|---|
| Triangles (Polygons) | 32,000 | 70,000 | 70,000 | 70,000 |
| Texture Memory | 40MB | 75MB | 110MB | 150MB |
| Skinned Meshes | 1 | 2 | 8 | 16 |
| Material Slots | 4 | 8 | 16 | 32 |
| PhysBones Components | 4 | 8 | 16 | 32 |
個人的には、Triangles(ポリゴン数)とMaterial Slots(マテリアルの種類)が最適化を行う際に引っ掛かりやすい項目だと思います。
1.2 目標の設定
極論最適化は行わなずともVRChatを遊ぶことはできるわけですが、他者と関わり合うゲームという性質上、アバターやワールドの負荷を下げてよりよいコミュニケーションをとることができるよう心がけるというのは重要だと考えています。しかし公式の掲げる指標が長年更新されていないこと、最適化にかけるコストが日々高くなっていることを考えると、かなり最適化の壁は高いと言えます。
そこで、今回はアバターカリングを受けないためにパフォーマンスランクをPoorにすること、またさらに最適化を行ってMediumにすることをメインの目標としたいと思います。
また、付記として、PC用アバターをQuest単機あるいはAndroidで使用するためのTipsや、フォールバックアバター(後述)の設定方法について紹介しておきます。これは勿論必須ではありませんが、より多くの人に自分のアバターを見てほしい方のためにまとめておきます。
2. PC条件下での最適化
おおまかな作業内容は[Hellcat, 5], [しいなず, 10], [too, 12]を参考にしています。
2.1 利用パッケージの導入
(ほぼ)必須なものと導入しておくと便利なものに分けて紹介します。なお、次のソフトは事前にインストールされているものとします。
- Unity 2022.3.22f1
- VRChat Creator Companion (VCC) または ALCOM
個人的にはこの後紹介するパッケージを一括でインストールでき、よく使うパッケージのプリセットが設定できるALCOMをおすすめします。今後VCCまたはALCOMのいずれかを指す場合、代表してVCCと称することにします。
2.1.1 必須なもの
-
Gesture Manager (GM)
Unity上で動作確認をするためのツールです。 -
Avatar Optimizer (AAO)
アバターを最適化するためのツールを多数収録しています。 -
anatawa12’s gist pack
アバターアップロードのためのツールが収録されています。今回はその中でActualPerformanceWindowを用います。 -
Meshia Mesh Simplification (MMS)
非破壊のメッシュ削減ツールです。Trianglesを70,000以下に抑えるために用います。
2.1.2 導入しておくと便利なパッケージ
以上のパッケージは、Enable/EditorOnly 簡単切り替えツール以外はVCCを経由してインストールすることができます。詳細は別記事([Azukimochi, 2], [はすたそ, 3], [いそ, 7], [Reina_Sakiria, 9])などを参照してください。
2.2 作業
実際に作業しているとき、次のようなことを考えています。
- ギミックは詰め込まない
- 近づいて見られても粗が目立たない程度に解像度を落とす
- ポリゴンを60,000~70,000にする
- オンオフしないオブジェクトのマテリアルをまとめる
以上のことを心がけながら、作業順に解説します。
GMとActualPerformanceWindowを用いて、パフォーマンスランク指標を見ながら作業を進めます。
2.2.1 使用オブジェクトの厳選
衣装セットの中には、かなりパーツ数・アイテム数の多いものがあります。この中からメインで使用するもの(着脱を考慮しない)を厳選します。着脱を可能にするかどうかはマテリアルスロットの空きやポリゴン数の余裕を見て考えます。使用しないものはオブジェクトのタグをEditorOnlyにしましょう。
2.2.2 AAO Trace And Optimizeの適用
まず初めに、アバターのPrefabを右クリックしてAAOのTrace And Optimizeを追加します。Inspectorタブを見て、AAO Trace And Optimizeコンポーネントが追加されていることを確認してください。
このコンポーネントを追加するだけで自動的に最適化が行われ、Material SlotsやPhysBoneの数が減ります。
2.2.3 テクスチャ設定の見直し
Texture Memoryの削減は簡単にできるので先に行います。
- 最大解像度が4096x4096になっているものは2048x2048以下に落とす
- Compression(圧縮品質)がNoneになっているものについては、Normal Qualityに変更する
の2点に注意すれば基本的にはTexture MemoryのVeryPoorは脱出できていると思います。
lilAvaterUtilを用いれば、この作業を効率的に行うことができます。
2.2.4 ポリゴンの削減
Poor化の一番の難関はPolygonsの削減になります。この作業では主にAAOとMMSを使用します。
まず素体のポリゴンのうち、衣装に隠れて見えない部分を全て消去します。身体のオブジェクト(今回はBodySecondaryという名前)にAAO Remove Mesh By Boxコンポーネントを追加します。このコンポーネントを使用すると直方体で覆った部分のポリゴンを消去することができます。
次に各オブジェクトのポリゴンを削れるだけ削っていきます。アバターのルートオブジェクトを右クリックして、MMSのMeshia Cascading Avatar Mesh Simplifierを追加します。このオブジェクトを追加することで、ある程度見た目を保ちながら自動でポリゴンを消去できます。
各オブジェクトにMMSコンポーネントを追加することで、手動でポリゴンを削減することも可能です。
2.2.4 スキンメッシュの結合
アバターのPrefabを右クリックしてAAOのMerge Skinned Meshを追加します。その後、スキンメッシュレンダラーの項目に顔以外の使用オブジェクトを全て追加します。
このようにすると、Skinned Meshesの数が減り、副次的にMaterial Slotsを削減することができます。
ただし、衣装やギミックのオンオフを実装する際には注意が必要です。スキンメッシュレンダラーの項目にオンオフさせたいオブジェクトとさせたくないオブジェクトをどちらも入れてしまうとオンオフが効かなくなります。
3. 削減しきれなかったときのTIPS
この章では、より良いパフォーマンスランクを目指すためによく使いそうなツールについて補足します。
3.1 PhysBone Transformsの削減
§4.2でも紹介しますが、VRCQuestToolsを使用することでPhysBoneを削除することができます。
PhysBone Componentsの数を減らすことなくPhysBone Transformsの数を減らすためには、PhysBoneを間引くやつを使用するとうまくいくかもしれません。詳細は[雨降り, 1]を参照してください。
3.2 TTTを使用したスキンメッシュの削減
[Reina_Sakiria, 9]を参考に、TTTを使用してSkinned Meshを削減することができます。
アバターのルートオブジェクトを右クリックして「TextTransTool」→「TTT AtlasTexture」をクリックし、AtlasTextureオブジェクトと追加します。
結合したいマテリアルにチェックを入れ、Quest用のマテリアルを「すべてのマテリアル結合時参照」に割り当てた後、「テクスチャーを強制的にセットする」にチェックを入れることで、プレビュー時やアップロード時にSkinned Meshが削減されているのが確認できると思います。
また、「Optimizing-Phaseのプレビューを有効化する」を押すことで、GMを使うことなくプレビューが可能です。
3.3 Blenderでのポリゴン削減
Unity上だけで最適化作業を完了できない場合は, Blenderを用いてポリゴンの削減を行う必要があるかもしれません。そこで、Blenderでの作業についてこの節で軽く触れておきます。
- 削減したいSkinned Meshのfbxファイルをインポートする
- 手動でポリゴンを削減するか、デシメートモディファイアを適用する
- fbxファイルとしてエクスポートした後、Skinned Meshの参照元を削減後のfbxファイルに置換する
の順に行えば削減は可能です。ただし、設定次第ではliltoonの輪郭線などの設定に差異が生じることがあります。
4. Quest/Android対応化
Quest単機やAndroidでVRChatを遊ぶ際には、PC用とは別の基準をクリアする必要があります。ActualPerformanceWindowはQuest/Android基準のパフォーマンスランクを満たしているかどうかについても確認することができます。この章では、Quest/Android基準でアップロード可能(VeryPoor)になるまでの作業について紹介します。この章は[Hellcat, 5]を参考に執筆しています。
なお、iOSもQuest/Androidと同等の基準となっていますので、それらを含めてQuest用と表現します。
4.1 利用パッケージの導入
2章で使用したパッケージに加えて、非破壊でQuest用アバターをアップロードするためのパッケージを導入します。
これさえ入れておけば大体なんとかなります。
4.2 作業
Unityウィンドウ上部の「Tools」→「VRCQuestTools」→「Convert Avatar for Android」をクリックすると、設定ウィンドウが開きます。
Questではliltoonシェーダーが使用できないので、「マテリアル変換設定」でQuest用のテクスチャを設定します。
「Avatar Dynamics 設定」では、Physboneを選択して削除することができます。
NDMFを使用している場合は、「非破壊的に変換する」を押下することで、Quest用に変換することなくアップロードが可能です。VRC SDKのビルド画面でプラットフォームをAndroidまたはiOSに設定し、VQT Avatar Builder(「非破壊的に変換する」を押下すると出てくるウィンドウ)の「Build & Publish for Android/iOS」をクリックするとQuest用アバターとしてアップロードされます。
5. フォールバックアバターについて
この章では主に[MKB, 8]を参考にしています。
フォールバックアバターとは、本来のアバターが表示できない場合に代替として表示されるアバターのことです。自分で設定した覚えがない場合は、これを機にどんなアバターが設定されているかを知っておくと良いと思います。特に大人数インスタンスによく行く方、納得のいく改変ができた方はフォールバックにも気を付けてみると良いかもしれません。
フォールバックアバターは、大まかに3種類の設定方法があります。
- パブリックのフォールバックアバターを設定する
- PC用アバターからインポスターを生成して使用する
- Quest/Android基準でGood以下のアバターをアップロードして使用する
以下、順に紹介します。
5.1 パブリックのフォールバックアバターについて
VRChat内からはフォールバックアバターを設定できなくなりましたので、現状は公式サイトからのみ設定することができます。
「Avatars」→「Featured Avatars」からインポスターを生成したいアバターを選択し、アバターの詳細情報に飛びます。アバターが基準を満たしている場合は、「Use as Fallback」のボタンが表示されますので、それを押下すると設定できます。

5.2 インポスターの作成
自分でアップロードしたPC用アバターからインポスターを生成する機能があります。使用中のアバターにインポスターが生成されている場合、代替として表示されるのがフォールバックアバターではなくインポスターになります。元のアバターよりかなり見た目は悪くなりますが、生成しておいて損はないでしょう。
公式サイトの「Avatars」→「My Avatars」からインポスターを生成したいアバターを選択し、アバターの詳細情報に飛びます。インポスターが生成されていない場合、詳細情報の下の方にある「Generate Impostors」ボタンが有効化しているので、それを押下することでインポスターの生成が開始されます。生成が完了した際に通知が来るはずなので、それまで数分ほどお待ちください。
5.3 アップロードしたアバターをフォールバックとして設定する
自分でアップロードしたアバターがフォールバックの条件を満たしている場合、VRCQuestToolsか公式サイトから設定することができます。
公式サイトからの設定方法は§5.1と同様です。
VRCQuestToolsを経由してアップロードする場合は、「可能な場合はフォールバックアバターにする」にチェックを入れることで自動的に設定されます。

5.4 自力で軽量化してみる
フォールバックアバターとして登録できる条件はQuest/Android基準でGoodまたはExcellentであることです。
| Avatar Quality | Excellent | Good | Medium | Poor |
|---|---|---|---|---|
| Triangles (Polygons) | 7,500 | 10,000 | 15,000 | 20,000 |
| Texture Memory | 10MB | 18MB | 25MB | 40MB |
| Skinned Meshes | 1 | 1 | 2 | 2 |
| Material Slots | 1 | 1 | 2 | 4 |
| PhysBones Components | 0 | 4 | 6 | 8 |
詳細は公式を参照ください。
上の表を見ていただけると分かるかもしれませんが、基本的にPC専用に制作されたアバターをフォールバック対応させるのは無理だと考えてください。元々△70,000程度のアバターをフォールバック化するよりはさすがに一から自作した方が楽だと思います。
5.5 自力で作ってみる
えー、修羅です。[ふさこ, 3]、[しろさん, 11]等を参考にアバターを制作します。ただし、UnityやBlenderのバージョンが古いことがあるので注意してください。
そのうち別記事を投稿するので、詳しくはそこで解説します。
5.5.1 よく使っている便利なエクステンション
-
Mio3 UV
UV展開時に整列や対称化などができるツールです。 -
Auto Mirror
ミラーモディファイアのための機能補助ツールです。 -
Auto Reload
テクスチャの画像を自動更新してくれるツールです。 -
Robust Weight Transfer
ウェイト転送ツールです。
6. おわりに
ここまで書いておきながら、全てのアバターにこれらの最適化を行う必要はないと考えています。個人的な使い分けとして、
- 撮影用: 最低限の最適化をしたもの
- 交流用: ギミックをある程度搭載したままPoor化したもの
- 普段使い: ギミックを減らしてMedium化したもの
- 大人数インスタンス用: Quest対応させたもの
- フォールバックアバター
のように決めています。写真撮影の際は折角であればより綺麗なアバターで撮りたいですからね。
もちろんそれなりにハードルがある作業となるため無理強いはしませんが、この記事を読んで少しでも興味を持っていただければ幸いです。長文となってしまいましたが、ここまでお読みいただきありがとうございました。
6.1 参考記事
[1] 雨降り, PhysBoneを間引くやつ マニュアル, googleドキュメント.
[2] Azukimochi, 実は多機能で便利なlilAvatarUtilsの各機能の紹介, note.
[3] ふさこ, 【モデリング編】初級から中級者向けチュートリアル, YouTube.
[4] はすたそ, Avatar Optimizer(AAO)を使用してアバターを軽量化しよう【VRChat】, note.
[5] Hellcat, 【VRChat】VRCQuestToolsを使って、アバターを「とりあえず」Quest対応させる, Qiita.
[6] Hellcat, 【VRChat】n番煎じで送るアバター最適化TIPS, Qiita.
[7] いそ, 【最強ツール】Gesture Managerを導入してunity上でギミック導入を確認しよう(VRChat), ぶいなび.
[8] MKB, 【VRChat】アバター製作者が語る!!フォールバックアバターの概要・制作時の考え方, note.
[9] Reina_Sakiria, アトラス化でテクスチャーメモリを削減する, ReinaSakiria's-Note.
[10] しいなず, VRChatアバターの軽量化まとめてみた, note.
[11] しろさん, Blenderで自作アバターを作ってVRChatに連れて行った (1. 概要), Qiita.
[12] too, 2025年7月現在の自己流VRChatアバター軽量化方法の紹介, note.






