メインコンテンツまでスキップ

パフォーマンス最適化

このガイドでは、VRChat アバターのパフォーマンスランクを理解し、改善するための最適化手法を解説します。パフォーマンスランクの確認から、具体的な最適化手順、最適化前後の比較まで、すべてを自然言語で実行できます。

パフォーマンスランクとは

VRChat はすべてのアバターにパフォーマンスランクを付与しています。ランクが低い(重い)アバターは、他のプレイヤーの設定によって表示がブロックされたり、簡略化されたりすることがあります。

ランク表示他プレイヤーからの見え方
Excellent常に表示される
Goodほとんどの環境で表示される
Medium一部のプレイヤーから非表示にされる場合がある
Poor多くのプレイヤーから非表示にされる可能性がある
Very Poor既定で非表示、手動での表示切り替えが必要
ランクの重要性

パフォーマンスランクが Good 以上であれば、ほとんどのプレイヤーにアバターが表示されます。イベントやパブリックインスタンスでは Good 以上を求められることが多いため、可能であれば Good を目指すことを推奨します。

ランク別の制限値

各ランクの主要な制限値を以下に示します。

項目ExcellentGoodMediumPoor
ポリゴン数32,00070,00070,000無制限
マテリアル数1124
ボーン数7590150256
PhysBone コンポーネント04816
PhysBone 影響ボーン数01664256
PhysBone コライダー081632
メッシュ数1128
テクスチャメモリ10 MB18 MB25 MB40 MB
Skinned Mesh1128
パーティクルシステム0028
最も厳しい項目がランクを決める

パフォーマンスランクは、すべての項目のうち最も悪いランクの項目によって決まります。例えば、ポリゴン数が Excellent の範囲内でも、マテリアル数が Medium の範囲であれば、総合ランクは Medium になります。

パフォーマンスランクの確認 (check_avatar_rank)

あなた:

アバターのパフォーマンスランクを確認して

AI の動き: check_avatar_rank が実行され、現在のランクと各項目の詳細が表示されます。

AI の返答例:

パフォーマンスランク: Poor

項目別ランク:
ポリゴン数: 52,000 Good (70,000 以下)
マテリアル数: 6 Poor (4 以下を超過)
ボーン数: 142 Medium (150 以下)
PhysBone コンポーネント: 6 Medium (8 以下)
PhysBone 影響ボーン: 48 Medium (64 以下)
PhysBone コライダー: 10 Medium (16 以下)
メッシュ数: 5 Medium (2 以下を超過)
テクスチャメモリ: 22 MB Medium (25 MB 以下)
Skinned Mesh: 4 Medium (2 以下を超過)

ボトルネック: マテリアル数 (6 → 4 以下にする必要あり)

最適化の提案 (suggest_optimizations)

あなた:

最適化の提案をして。Good ランクを目指したい

AI の動き: suggest_optimizations が実行され、Good ランクに到達するための具体的な提案が表示されます。

AI の返答例:

Good ランク達成のための最適化提案:

1. [最優先] マテリアル結合: 6 → 1 に削減
- テクスチャアトラスを作成して全マテリアルを 1 つに統合
- 予想効果: Poor → Good (マテリアル制限クリア)
- 手順: 「テクスチャアトラスを作成してマテリアルを統合して」

2. [推奨] メッシュ結合: 5 → 1 に削減
- 体、髪、衣装のメッシュを 1 つに結合
- 予想効果: Skinned Mesh 数も同時に改善
- 手順: 「メッシュを結合して」

3. [推奨] ボーン削減: 142 → 90 以下
- 未使用ボーンの削除: 約 12 ボーン削減可能
- 指ボーンの簡略化: 約 20 ボーン削減可能
- 手順: 「不要なボーンを削除して」

4. [任意] テクスチャ圧縮: 22 MB → 18 MB 以下
- 4096x4096 テクスチャを 2048x2048 に縮小
- 手順: 「大きいテクスチャを 2048 にリサイズして」

自動最適化 (auto_optimize_avatar)

あなた:

自動最適化を実行して。Good ランクを目指して

AI の動き: auto_optimize_avatar が実行され、以下の処理が自動的に行われます。

  1. テクスチャアトラスの作成(複数のテクスチャを 1 枚にまとめる)
  2. マテリアルの統合
  3. メッシュの結合
  4. 未使用ボーンの削除
  5. テクスチャの圧縮(必要に応じて)

AI の返答例:

自動最適化完了:

実行した処理:
1. テクスチャアトラス作成: 6 テクスチャ → 1 アトラス (2048x2048)
2. マテリアル統合: 6 → 1
3. メッシュ結合: 5 → 1
4. ボーン削除: 12 本の未使用ボーンを削除
5. テクスチャ圧縮: 体テクスチャを 4096 → 2048 にリサイズ

最適化前 → 最適化後:
ポリゴン数: 52,000 → 52,000 (変化なし)
マテリアル数: 6 → 1
ボーン数: 142 → 130
メッシュ数: 5 → 1
テクスチャメモリ: 22 MB → 14 MB
Skinned Mesh: 4 → 1

ランク: Poor → Good
自動最適化の安全性

自動最適化は非破壊で実行されます。最適化前の状態はバックアップされるので、結果に問題がある場合は元に戻せます。

手動での最適化手法

自動最適化では対応しきれない場合や、より細かい制御が必要な場合の手動手法です。

ポリゴン削減

ポリゴン数を大幅に削減する必要がある場合は、Blender のクロスアプリ連携機能を使います。

あなた:

アバターのポリゴン数を減らしたい。Blender で Decimate して 32,000 以下にして

AI の動き: アバターのメッシュが Blender に転送され、Decimate モディファイアが適用されてポリゴン数が削減されます。その後 Unity に戻されます。

あなた:

顔はあまり崩さないで。体と衣装を中心に減らして

AI の動き: 顔メッシュの Decimate 比率を控えめに、体と衣装のメッシュをより強く削減します。

ポリゴン削減の注意点

ポリゴン削減は見た目に影響します。特に顔やシルエットに関わる部分は慎重に行ってください。削減後はスクリーンショットで確認することを推奨します。

テクスチャアトラス

複数のマテリアルを 1 つにまとめるために、テクスチャアトラス(複数のテクスチャを 1 枚の大きなテクスチャにまとめたもの)を作成します。

あなた:

テクスチャアトラスを作成して。全マテリアルを 1 つにまとめて

AI の動き: 全テクスチャが 1 枚のアトラステクスチャにまとめられ、UV マッピングが再計算されます。マテリアルが 1 つに統合されます。

あなた:

アトラスの解像度はいくつになった?

AI の返答例: 「アトラス解像度: 4096x4096 です。2048x2048 に縮小しても大きな画質低下はないと思われます。」

あなた:

2048x2048 に縮小して

ボーン削減

あなた:

使われていないボーンを一覧表示して

AI の返答例:

未使用ボーン一覧 (12 個):
Accessory_Holder_L, Accessory_Holder_R
Wing_Root_L, Wing_Root_R, Wing_Mid_L, Wing_Mid_R, Wing_Tip_L, Wing_Tip_R
Belt_Bone_1, Belt_Bone_2, Belt_Bone_3, Belt_Bone_4
これらのボーンにはメッシュのウェイトが割り当てられていません。

あなた:

すべて削除して

AI の動き: 未使用ボーンが削除されます。

あなた:

指のボーンを簡略化して。5 本指から 3 本指にして

AI の動き: 薬指と小指のボーンが統合されます。

メッシュ結合

あなた:

体と衣装のメッシュを結合して

AI の動き: 複数の Skinned Mesh Renderer が 1 つに統合されます。

メッシュ結合の制約

メッシュを結合すると、個別のメッシュの ON/OFF 切り替えができなくなります。衣装の着せ替え(Modular Avatar)を使用している場合は、Modular Avatar が自動的にアップロード時にメッシュを統合するため、手動での結合は不要です。

最適化前後の比較 (compare_before_after)

最適化の効果を数値で確認します。

あなた:

最適化前後の比較を見せて

AI の動き: compare_before_after が実行されます。

AI の返答例:

最適化前後の比較:

項目 最適化前 最適化後 変化 ランク変化
ポリゴン数 52,000 35,000 -32.7% Good → Good
マテリアル数 6 1 -83.3% Poor → Excellent
ボーン数 142 88 -38.0% Medium → Good
PhysBone 6 4 -33.3% Medium → Good
メッシュ数 5 1 -80.0% Medium → Excellent
テクスチャメモリ 22 MB 10 MB -54.5% Medium → Excellent
Skinned Mesh 4 1 -75.0% Medium → Excellent

総合ランク: Poor → Good

あなた:

見た目の比較もスクリーンショットで見せて

AI の動き: 最適化前と最適化後のアバターを並べたスクリーンショットが撮影されます。

ワールドの最適化

アバターだけでなく、ワールドのパフォーマンス最適化も重要です。

ワールドの主な最適化項目

項目推奨値確認方法
ドローコール200 以下「ドローコール数を教えて」
ポリゴン数50 万以下「シーンのポリゴン数を教えて」
テクスチャサイズ1 枚あたり 2048x2048 以下「テクスチャサイズを確認して」
ライトマップベイク済み「ライトマップをベイクして」
オクルージョンカリング有効「オクルージョンカリングを有効にして」

ワールド最適化の例

あなた:

ワールドのパフォーマンスを確認して

AI の返答例:

ワールドパフォーマンス:
ドローコール: 156
ポリゴン数: 320,000
テクスチャメモリ: 85 MB
ライトマップ: ベイク済み
オクルージョンカリング: 未設定

推奨: オクルージョンカリングの有効化でドローコールを削減できます

あなた:

オクルージョンカリングを有効にして

AI の動き: オクルージョンカリング(カメラから見えないオブジェクトを描画しないようにする機能)が設定されます。

次のステップ

最適化が完了したら、以下のガイドに進んでください。