👨‍❤️‍👨

チョー簡単⁉️アバター軽量化手順メモ(PC-Good, Android/iOS-Poor)【2025年10月版】

に公開

はじめに🥳

この記事ってなんなん?🤔

VRChatのアバターを軽くする方法を教えちゃう記事だよ!💖

これを読めばオタクくんのアバターも爆速になるっしょ!🚀

お前誰だし!

VRChatにどハマり中のギャルだよ~!✌️

VRChat、まじウケるよねー!笑 毎日入り浸ってるし!😆爆笑

さて、本題!に入る前に…✋

そのアバター、重くない?🗿

VRChatでさ、自分のアバターの「パフォーマンス」ってやつ、チェックしてみよ!👊

パフォーマンスの内訳のすぐ下に赤い文字でVeryPoorって書かれてたら、それってVRChat的に「このアバター重すぎ!💢」って怒られてるってことなんだよね~😱ヤバ!

アバター詳細のパフォーマンスの内訳を見てみよう

逆にさ、これがExcellentとかGoodなら、「イケてるじゃん!軽いね!👍」ってお墨付きもらえてる感じ!🥳いえーい!

アバター軽くすると、自分も快適だし、フレンドにもウザがられないしw、行けるイベントも増えて、まじイイコトしかないんだよね!🙌

この記事で目指すゴール 🚩

PCはGood評価✨、Android (Quest) はPoor評価🔰を目指してこー!

ガチなルールは公式ドキュメント見てね!👇 (英語だけど気合い!🔥)
Performance Ranks | VRChat Creation

この記事では説明しないこと🙊

以下の項目はこの記事では説明しないよ! まじゴメンだけど、そこはググってちょ!🙏💦

  • VCC/ALCOMのインストール方法と使い方
  • Unityのインストール方法と使い方

なんでPC-Goodを目指すの?🖥️

ぶっちゃけ、PC-Good、Medium、Poorって、やるコトあんま変わんないんだよね!🤪

どーせやるなら、一番イケてるランク目指した方がよくない?笑🤣


PC-Good, PC-Medium, PC-Poorの3つはどれも70,000ポリゴン以下を要求される点で同じPerformance Ranks | VRChat Creation

なんでAndroid-Poorを目指すの?🤖

逆にAndroidは、ランク上げようとすると鬼ムズになんのよ…😇

Android-Poorが20000ポリゴンなのに対して、Mediumとか、ポリゴン15000以下とか鬼畜すぎw 😫


Android-Mediumより上のランクを目指すと難易度が上がっちゃう💦
Performance Ranks | VRChat Creation

最初に準備してほしい神ツールたち🧰

今回使う神ツールたち、まとめたから!😎 オタクくん、ちゃんと準備してよね!

ALCOMかVCCでURL追加しといてね~!👍

Avatar Optimizer (AAO)

AAO Trace and Optimizeっていうコンポーネントは、アバターに入れるだけでいろんな軽量化処理を自動でやってくれる神ツール!✨

同じリポジトリのanatawa12's gistsに入ってるActual Performanceもパフォーマンスランクを確認する上で便利だよ!😉

公式ドキュメント: https://vpm.anatawa12.com/avatar-optimizer/ja/

リポジトリURL: https://vpm.anatawa12.com/vpm.json

VRCQuestTools (VQT)

一つのアバターでPC版とQuest(Android)版の両方を非破壊で切り替えられるすごいツールだよ!💖

わざわざQuest対応版のアバターを分けなくてもいいんだよ~!天才!💯

公式ドキュメント: https://kurotu.github.io/VRCQuestTools/ja/

リポジトリURL: https://kurotu.github.io/vpm-repos/vpm.json

TexTransTool (TTT)

マテリアルを結合してくれるツールで、マテリアルスロットを減らしたい時に大活躍!💪

公式ドキュメント: https://ttt.rs64.net/

リポジトリURL: https://vpm.rs64.net/vpm.json

lilAvatarUtils

アバターのテクスチャやマテリアルを一覧化できるツールで、テクスチャサイズを減らすのに便利!😉

公式ドキュメント: https://lilxyzw.github.io/lilAvatarUtils/

リポジトリURL: https://lilxyzw.github.io/vpm-repos/vpm.json

Meshia

簡単かつ高速にメッシュを削ってくれるすごいやつ!🔥

公式ドキュメント: https://ramtype0.github.io/Meshia.MeshSimplification/docs/ja/introduction.html

リポジトリURL: https://ramtype0.github.io/VpmRepository/index.json

Modular Avatar (MA)

MA MeshCutterっていうコンポーネントがメッシュを削るのに超便利!💯

MA MeshSettingsっていうコンポーネントはアバターのメッシュ設定を統一してくれて、Boundsを制限したい時に役に立つんだよ!🙌

公式ドキュメント: https://modular-avatar.nadena.dev/ja

リポジトリURL: https://vpm.nadena.dev/vpm.json

神ツールまとめ😎

ツール名 できること リポジトリURL 制作者
Avatar Optimizer (AAO) 不要メッシュ削減, 不要ボーン削減 https://vpm.anatawa12.com/vpm.json anatawa12氏
VRCQuestTools (VQT) Quest対応 https://kurotu.github.io/vpm-repos/vpm.json kurotu氏
TexTransTool (TTT) マテリアルスロット削減 https://vpm.rs64.net/vpm.json rs64氏
lilAvatarUtils テクスチャメモリ削減 https://lilxyzw.github.io/vpm-repos/vpm.json lil氏
Meshia ポリゴン数削減 https://ramtype0.github.io/VpmRepository/index.json ramtype0氏
Modular Avatar (MA) ポリゴン数削減 https://vpm.nadena.dev/vpm.json bd_氏

STEP 1:まずは基本の「き」!🪄 自動でサクッと軽量化しちゃお!

むずいコトの前に、とりまツールぽちって楽ちん軽量化しよ!💪

アバターのルートオブジェクトに「AAO Trace And Optimize」っていうコンポーネントを追加するだけ!超カンタン!👌

具体的なやり方も書いていくよ!

  1. Hierarchyパネルから目的のアバターのルートオブジェクトをクリックして、Inspectorパネルを開く!
    Hierarchyパネルからアバターのルートオブジェクトをクリックする
    Hierarchyパネルからアバターのルートオブジェクトをクリックする

  2. Inspectorパネルの一番下にある「Add Component」っていうボタンをクリックして、「AAO Trace And Optimize」っていうやつを探してクリックしよう!
    検索欄にtraceって入れれば一発で出ると思うよ😉
    ※ルートオブジェクトっていうのは、「VRC Avatar Descriptor」っていうコンポーネントが入ってるオブジェクトのことだよ💡

    「AAO Trace And Optimize」コンポーネントを追加!

これ入れとくだけで、ゴチャゴチャしたメッシュとかボーン、勝手にイイ感じにしてくれるの!

まじ神!✨

STEP 2:PCで「Good」評価を目指す設定!💻✨

こっからはPC勢のガチ設定!いっこずつ、ちゃんとついてきてよね!😤

2-1. 見た目のデカさを調整! (Bounds) 📏

使うツール: MA Mesh Settings

Bounds(バウンズ)ってのは、アバターの「当たり判定」的なやつ!笑😂

ここではPC-Goodのルールに合わせて、Bounds Sizeを4x4x4未満にしちゃうよ!👍

  1. アバターのルートオブジェクトにコンポーネント"MA Mesh Settings"を追加する!

    ルートオブジェクトに"MA Mesh Settings"コンポーネントを追加する

  2. MA Mesh Settingsコンポーネントを設定できたら、次の画像のように設定しよう!
    ここの"Anchor Override"と"ルートボーン"は、オタクくんのアバターのBodyとかのSkinned Mesh Rendererの設定を見て、それと同じオブジェクトを指定するといい感じだよ!

    "MA Mesh Settings"コンポーネントの設定をする

おっけー!これでビルドん時、アバターの全メッシュ設定がイイ感じにそろうよ!😉

2-2. テクスチャを軽くする! (Texture Memory) 🖼️

使うツール: lilAvatarUtils

次はテクスチャメモリを鬼削りしていくよ!🤘✨

テクスチャメモリってのは、アバターを読み込む時にVRAM(映像を映すためのメモリ的な?🤔)をどんだけ使うかってサイズのことね!

RTX4070Tiとかのイケてるグラボでも、重いアバターが40人いたらパンクしちゃうんだよね…マジ卍w 😱

目標はPC-Goodの75MB以下!絶対いけるっしょ!💪

  1. Unityの画面上部のメインメニューからTools -> lilAvatarUtilsをクリックし、lilAvatarUtilsのパネルを追加する!

    lilAvatarUtilsのパネルを出すよ

  2. パネル上部の「None (Game Object)」の欄に、Hierarchyにあるアバターオブジェクトをドラッグ&ドロップする!

    lilAvatarUtilsのパネルにアバターをドラッグ&ドロップしよう

  3. パネル上部のテクスチャタブをクリックして開いて、VRAMサイズのカラムヘッダをクリックして降順でソートし、「明らかにデカすぎじゃん!?😫」っていうやつの最大解像度を「1024」とか「512」に下げちゃおう!
    最後に、左上のテクスチャタブのすぐ下にある「適用」を押せばテクスチャサイズの軽量化は完了~!🎉

    lilAvatarUtilsのパネル。左上のテクスチャタブをクリックして、VRAMサイズってところをクリックしてサイズが大きい順で並び替えよう。

※ちょい待ち!✋

顔とか「命!💖」ってとこは、下げすぎ注意ね!😣

服や小物とか、多少粗くてもバレないとこw を優先的に軽量化するのがオススメだよ~!👍

2-3. 見えない部分のメッシュを削除しよう (Polygons#1) 💎

使うツール: MA Mesh Cutter

ポリゴン削減、第1弾!いくよ!👊

見えないトコのメッシュ、ガンガン消してポリゴン数ごっそり減らしちゃお!😈

例えば服で隠れちゃう素体のトコとか削れば、見た目そのままで軽くできんの、天才じゃない?✨

ブレンドシェイプだけで消した「フリ」しても、ポリゴン数は減らないからね!そこんとこヨロシク!😤

  1. ルートオブジェクトの直下に適当な空のオブジェクトを作ろう!

    ここでは空オブジェクトを作成して、"remove-mesh"っていう名前に変えてるよ

  2. 作った空オブジェクトに「MA Mesh Cutter」っていうコンポーネントを追加しよう!

    "MA Mesh Cutter"コンポーネントを追加

  3. 「対象のレンダラー」のところに、メッシュを削りたいオブジェクトをドラッグ&ドロップしよう!

    ここではBody_Base(身体)のオブジェクトをドラッグ&ドロップしてるよ

  4. 「頂点フィルターを追加…」をクリックして、「削りたいメッシュを選択する方式」を選ぶよ。
    今回は身体のメッシュから服で隠れる部分をおおざっぱに消したいから、「MA Vertex Filter - By Blendshape」を選ぶよ。

    sceneパネルで確認しながらブレンドシェイプを追加してね😉

服で隠れる部分のブレンドシェイプを全部追加したら完了~!😎

2-4. ポリゴンを削って滑らかにしよう (Polygons#2)

使うツール: Meshia Cascading Avatar Mesh Simplifier

ポリゴン削減、第2弾!まだまだいくよー!💪

アバター全体のポリゴン数、まとめて削ってこ!✂️

  1. ルートオブジェクトの直下に適当な空のオブジェクトを作ろう!

    ここでは空オブジェクトを作成して、"shrink-mesh"っていう名前に変えてるよ

  2. 作ったオブジェクトに新しくコンポーネントを追加しよう!
    コンポーネントの名前は「Meshia Cascading Avatar Mesh Simplifier」だよ!

    「Meshia Cascading Avatar Mesh Simplifier」コンポーネントを追加

  3. "Target Triangle Count"の値を70000にすると、すべてのメッシュの合計ポリゴン数がこの値に収まるように自動で調整してくれるよ!
    どこかの見た目が破綻しちゃう場合は、手動で調整することもできるよ!👍

    目標ポリゴン数の値を設定するだけで、自動で楽ちん設定!

70000以下で収まって、なおかつ見た目に問題なければOK!🤘

2-5. ごちゃごちゃマテリアルを合体! (Material Slots)🎨

使うツール: TTT Atlas Texture

マテリアルがゴチャゴチャだと重いから、合体させて爆速にしよ!🚀

目標は8個以下!

  1. 新しく空オブジェクトを作るよ!オブジェクトの名前はお好みでヨロ!

    ここでは空オブジェクトを作成して、「merge-materials」っていう名前に変えてるよ

  2. 作ったオブジェクトにコンポーネントを追加するよ!
    コンポーネント名は"TTT AtlasTexture"だよ!

    「TTT AtlasTexture」コンポーネントを追加

  3. 合体する対象のマテリアルを選択するよ!

    合体対象のマテリアルにチェックを入れる

  4. マテリアル結合グループを追加して、合体させる組み合わせにチェックを入れて、結合時に設定を参照するマテリアルを選択!
    ここで選択した結合時マテリアルのマテリアル設定を継承することになるよ(色、影、輪郭線など)💡

    マテリアル結合グループを作って、組み合わせたいマテリアルにチェックを入れるよ

はい、おわり!

こうしてマテリアルを合体させることで、マテリアルスロットを8個以下にするよ。😤

合体させる組み合わせは、マテリアル設定が似ているもの同士であれば変な見た目にはなりにくいと思う!たぶん!w 🤔

2-6. 服と体を一体化! (Skinned Mesh)👕

使うツール: AAO Merge Skinned Mesh

バラバラのメッシュも合体!💪

目標は2個以下で!

  1. 新しく空オブジェクトを作るよ!
    名前はなんでもいいけど、ここでは"merge-skinned-mesh"としておくよ。

    新しい空オブジェクトを作って、名前を「merge-skinned-mesh」に変更

  2. 作ったオブジェクトにコンポーネントを追加するよ!
    コンポーネント名は"AAO Merge SkinnedMesh"だよ!

    「AAO Merge SkinnedMesh」コンポーネントを追加

  3. 合体する対象のメッシュオブジェクトをHierarchyからドラッグ&ドロップするよ!

    Hierarchyからメッシュを含むオブジェクトをドラッグ&ドロップしよう

これでメッシュの統合は完了だよ!😜

オタクくんおつかれ~!🤓

2-7. 揺れもの大掃除! (PhysBone)💨

PhysBoneComponentsは8個以下!

PhysBoneTransforms(揺れる骨🦴)は64個以下!

PhysBoneColliders(当たり判定💥)は8個以下!

  1. なくても問題なさそうなPhysBone(揺れるオブジェクト)をHierarchyで選んで、Inspectorパネルの中にある「VRC Phys Bone (Script)」のチェックを外していこう! (Boneオブジェクトに直接ついてる場合があるから、オブジェクトじゃなくてコンポーネントを無効化していくよ)
    Hierarchyでt:vrcphysboneを検索すると、PhysBoneコンポーネントを含むオブジェクトだけが絞り込まれるよ!🔍
    事前に対象のアバター以外を非表示にしておけば、対象のアバターのオブジェクト名だけが明るい文字で表示されるから探しやすくなるよ!👍

    HierarchyからPhysBoneを検索して、要らないやつは無効化していこう

  2. 今度はPhysBoneColliderを減らしていこう!
    Hierarchyでt:vrcphysbonecolliderを検索すると、PhysBoneコンポーネントを含むオブジェクトだけが絞り込まれるよ!
    PhysBoneと同様に要らなそうなものを無効化していこう💪

  3. ここまでやればPhysBoneTransformsも自然に64個以下になると思うけど、ならない場合は以下の方法を試してみてね😉

    • 有効なPhysBoneのRootTransformで指定されているオブジェクトの配下のうち、揺らさなくてもいいオブジェクトをIgnoreTransformsに追加しよう
    • 有効なPhysBoneのうち、要らないものを1つ無効化しよう

2-8. キラキラエフェクトを調整! (Particles)💖

ここも「2-7. 揺れもの大掃除!💨」とノリは一緒!

いらないヤツはガンガン無効化していくよ!😎💪

  • ParticleSystems(キラキラ✨とか!)は4個以下ね!
    Hierarchyでt:particlesystemって検索🔍して、いらなそ~な 「Particle System」 コンポーネントのチェックを外しちゃおう!👋
    それしか付いてないオブジェクトなら、オブジェクトごと無効化 (EditorOnly) しちゃってもOK!👌

  • Mesh Particle Active Polysは10,000以下!

  • Total Particles Activeは300以下!
    また t:particlesystem で検索🔍して、なんかめっちゃ出てんな~wってヤツの 「Max Particles」 の値をイイ感じに減らしとこ!👍

2-9. 細かいトコもラストスパート!✅

  • Contacts(触れる判定!👉)は16個以下!
    t:vrccontactreceiver で検索🔍して、いらない 「VRC Contact Receiver」 のチェック外す!👋
    t:vrccontactsender も検索🔍して、いらない 「VRC Contact Sender」 のチェックも外す!👋
    それしか付いてないオブジェクトなら、オブジェクトごと無効化 (EditorOnly) でいっか!笑😉

  • AudioSources(音🎶)は4個以下!
    t:audiosource で検索🔍して、いらなそ~な 「Audio Source」 コンポーネントのチェックをオフ!🔇
    これも、それしか付いてないオブジェクトなら、オブジェクトごと無効化 (EditorOnly) しちゃお!👍

2-10. 最後にアップロード

さあ、いよいよアバターをアップロードしちゃおー!🆙

作業に抜け漏れがないか、Playボタンを押してActualPerformanceをチェックしてもいいよ!

STEP 3:Android (Quest) で「Poor」評価を目指す設定!✨🤖

PCでGood評価を達成したら、次のステップ!

Android(Quest)でPoor評価を目指す手順を書いていくよ~!

ここから先はまだ書けてないんだ💦もうちょっと待っててね😣

3-1. Quest対応用のコンポーネントをルートオブジェクトに追加しよう

使うツール:

  • VQT Avatar Converter Settings
  • VQT Network ID Assigner
  1. 「VQT Avatar Converter Settings」と「VQT Network ID Assigner」をルートオブジェクトに追加しよう

    「VQT Avatar Converter Settings」と「VQT Network ID Assigner」を追加する

3-2. 透過マテリアルを削除しよう

使うツール:

  • AAO Remove Mesh By Mask
  • VQT Platform Component Remover

残念ながらQuest用のToonLitやToonStandardっていうシェーダーでは透過表現ができなくて、透過マテリアル(lilToonTransparentとか)は削除するしかないんだ…

ここでは透過マテリアルを削除する手順を書いていくよ。

  1. 透過マテリアルが入ってるメッシュのオブジェクトにコンポーネントを追加する
    コンポーネント名は「AAO Remove Mesh By Mask」だよ

  2. 透過マテリアルが入ってるスロットにチェックを入れて削除!
    「Skinned Mesh Renderer」の中にあるMaterialsのトグルを開いて、「Element 0」とかの数字がスロット番号だよ。
    「n番のマテリアルスロットに適用」にチェックを入れたあとは、「作成」ボタンを押して空のテクスチャを作り、削除モードを「Remove White」にしよう。

    ここでは「Body_alpha」が透過マテリアルなので、3番のスロットにチェックを入れて、空の白いテクスチャを作成し、削除モードを「Remove White」にする

  3. PC用の設定を追加!
    このままだとPC用のアバターにも影響が出ちゃうから、「PC用では透過マテリアルを削除しない」っていう設定が必要なんだよね。
    さっきのオブジェクトに「VQT Platform Component Remover」っていうコンポーネントを追加して、「オブジェクト名 (Remove Mesh By Mask)」行のPC列のチェックを外そう。

これをアバターが持ってる透過マテリアルの数だけ実施してね!

3-3. Quest対応用のコンポーネントを他のオブジェクトに追加しよう

使うツール: VQT Platform GameObject Remover

ここでは「PC用では必要だけど、Android(Quest)用だと要らないオブジェクト」にコンポーネントを追加していくよ!

  1. この記事でPC用に追加したオブジェクトにコンポーネントを追加しよう!
    以下のセクションで追加したオブジェクトに、「VQT Platform GameObject Remover」っていうコンポーネントを追加するよ!
    #2-4. ポリゴンを削って滑らかにしよう (polygons#2)
    #2-5. ごちゃごちゃマテリアルを合体! (material-slots)🎨
    #2-6. 服と体を一体化! (skinned-mesh)👕

  2. 「Androidで維持」のチェックを外そう
    こうすることで、このオブジェクトはPC用にアバターをビルドする時は有効だけど、Android(Quest)用にビルドする時は無効にしてくれるんだよ!

    「VQT Platform GameObject Remover」コンポーネントを追加し、「Androidで維持」のチェックを外そう

3-4. メッシュを削ろう

使うツール:

  • Meshia Cascading Avatar Mesh Simplifier
  • VQT Platform Component Remover

さあ、Android(Quest)用のメッシュ削りをするよ!

目標は20000ポリゴン!

  1. 新しく空オブジェクトを作成しよう!
    オブジェクトの名前はなんでもいいけど、今回は「shrink-mesh-android」にするよ!

    ルートオブジェクトの直下に空オブジェクトを作成しよう

  2. PC用のメッシュ削減オブジェクトを無効化(非活性)にしよう
    実は複数のMeshiaコンポーネントを同時に有効化しているとエラーになっちゃうんだ…
    これからAndroid(Quest)用のMeshiaコンポーネントを追加するために、#2-4. ポリゴンを削って滑らかにしよう (polygons#2)でPC用に追加したメッシュ削減用オブジェクトを無効化しよう。
    ここで言う無効化は、EditorOnlyじゃなくてチェックを外す方の無効化ね!

  3. コンポーネントを追加しよう
    さっき作った空オブジェクトに、「Meshia Cascading Avatar Mesh Simplifier」っていうコンポーネントを追加しよう。
    ここはPC用の軽量化でやった手順と一緒だね👇️
    #2-4. ポリゴンを削って滑らかにしよう (polygons#2)

  4. 合計20000ポリゴン以下になるように調整しよう
    Current: a / bっていうところのaの値が20000以下になるように調整しよう!
    見た目が崩れないように注意してね!

    20000ポリゴンに収まるように「Target Triangle Count」を調整しよう。

  5. 見た目が崩れないように個々のメッシュのポリゴン数を調整しよう
    小物とかの重要じゃないメッシュはポリゴン数を抑えて、顔や髪にその分を回すといいかも!

  6. PC用のビルドでは無効化されるようにしよう
    「VQT Platform Component Remover」っていうコンポーネントを追加して、「PCで維持」のチェックを外そう。

    「PCで維持」のチェックを外すことで、PC用にビルドする時にはこのオブジェクトは無視される

3-5. ToonStandardへの変換用のマテリアルを作ろう

使うツール: なし

Android(Quest)だと、使えるシェーダーが限られてるんだ

今回はアニメ調のシェーダーの中で代表的な「Toon Standard」を使うよ

  1. 空のマテリアルを作成する
    Projectパネルを開いて、Assetsフォルダの下の好きな場所で右クリックしてCreate -> Materialを左クリックし、空のマテリアルを作成しよう。

    右クリックメニューから空のマテリアルを作成する

  2. マテリアルのシェーダーに「Toon Standard」を選ぶ

    マテリアルのシェーダーを「Toon Standard」に変更する

3-6. テクスチャを合体しよう

使うツール: TTT AtlasTexture

3-7. メッシュを合体しよう

使うツール: AAO Merge Skinned Mesh

3-8. 要らないPhysBoneを削除しよう

3-9. 要らないパーティクルを削除しよう

3-10. ラストスパート!

Discussion