LAC: Avatar Compressor
Components

LAC Texture Compressor

複雑さに応じたテクスチャ圧縮コンポーネント

Texture Compressor は、アバターのテクスチャを分析し、その複雑さに基づいて圧縮します。複雑なテクスチャ(詳細なパターン、テキスト)は軽い圧縮を、シンプルなテクスチャ(単色、グラデーション)は強い圧縮を受けます。

Full View

使用方法

コンポーネントを追加

  1. アバターのルート GameObject(VRC Avatar Descriptor があるもの)を選択
  2. Inspector でAdd Componentをクリック
  3. Avatar Compressor > LAC Texture Compressorに移動、または「Texture Compressor」で検索

プリセットを選択

ニーズに合ったプリセットを選択します。

ほとんどのアバターにはBalancedをお勧めします。

アバターをビルド

VRChat SDK から通常通りアバターをビルドします。コンポーネントは自動的に:

  1. アバター内のすべてのテクスチャを分析
  2. 複雑さに基づいて各テクスチャの圧縮レベルを計算
  3. 圧縮コピーを作成(元のファイルは変更されません)
  4. 圧縮テクスチャを使用するようマテリアルを更新

プリセット

ショーケースアバター向けの最小圧縮。

設定
除数範囲1x - 2x
解像度範囲256px - 2048px
Min Source Size1024px
Skip If Smaller Than512px

視覚的品質が最優先のアバターに最適です。

視覚的品質を優先しつつ、適度な圧縮を許容。

設定
除数範囲1x - 4x
解像度範囲128px - 2048px
Min Source Size512px
Skip If Smaller Than256px

品質を維持しながらファイルサイズを削減したい PC アバターに適しています。

品質とファイルサイズのバランスが良い。(推奨)

設定
除数範囲1x - 8x
解像度範囲64px - 2048px
Min Source Size256px
Skip If Smaller Than128px

ほとんどのアバターに推奨。良好な視覚的品質を維持しながら、大幅なファイルサイズ削減を提供します。

QuestアバターやVRAM制限向けの強い圧縮。

設定
除数範囲2x - 8x
解像度範囲32px - 2048px
Min Source Size128px
Skip If Smaller Than64px

Quest アバターや VRAM 使用量を大幅に削減する必要がある場合に使用します。

最大のファイルサイズ削減。

設定
除数範囲4x - 16x
解像度範囲32px - 2048px
Min Source Size64px
Skip If Smaller Than32px

このプリセットは視覚的品質に顕著な影響を与える可能性があります。

ファイルサイズが重要な場合に使用します。

すべての設定を完全に制御。

Custom を選択すると、すべての設定が編集可能になります。また、カスタムプリセットアセットを使用して設定を保存・再利用できます。下記のカスタムプリセット詳細設定を参照してください。

ビルトインカスタムプリセット

上記のメインプリセットに加えて、カスタムプリセットのドロップダウンから中間プリセットを利用できます:

プリセット位置説明
High Quality+High Quality より高品質最高品質、最小限の処理
Quality+High Quality と Quality の間Quality より高品質、より軽い圧縮
Balanced+Quality と Balanced の間Balanced より高品質
Aggressive+Balanced と Aggressive の間Aggressive より高品質
Maximum+Aggressive と Maximum の間Maximum より高品質

これらのプリセットは、メインプリセットがニーズに合わない場合に、より細かい制御を提供します。

Texture Filters

処理するテクスチャタイプを制御:

フィルター説明
Main Texturesカラー/アルベドテクスチャ(_MainTex_BaseMap等)
Normal Mapsノーマル/バンプマップ(_BumpMap_NormalMap等)
Emission Mapsエミッションテクスチャ(_EmissionMap等)
Other Texturesメタリック、ラフネス、その他のテクスチャ

これらのフラグはコンポーネント単位の設定で、プリセットを切り替えても保持されます。

Skip Uncompressed Textures on Unknown Properties

Other Textures のサブオプションとして利用可能(デフォルトで有効)。

一部のシェーダーは、SPS のベイクデータ、マスク、ルックアップテーブルなど、ピクセル値そのものに意味を持つ非ビジュアルデータをテクスチャに格納します。これらを圧縮すると、見た目には問題なくともデータが破損する場合があります。

このオプションを有効にすると、未圧縮かつ未認識のシェーダープロパティに割り当てられたテクスチャが圧縮対象から除外されます。同じプロパティでも既に圧縮済み(DXT/BC/ASTC)のテクスチャは元から非可逆であるため引き続き処理されます。Unity Standard / URP / HDRP、lilToon、Poiyomi、UTS2 で定義されているプロパティは常にビジュアルテクスチャとして扱われ、この設定の影響を受けません。

Exclusions

Exclusions セクションには、テクスチャを圧縮対象から外す 2 つの方法 — テクスチャアセット指定と、アセットパスプレフィックス指定 — がまとめられています。

Excluded Textures

特定の Texture2D アセットを直接指定して除外できます。1 枚だけそのまま残したい、しかし凍結エントリにはしたくない、というケースに便利です。

  1. Inspector で Exclusions セクションを展開
  2. Textures+ Add Texture をクリック
  3. テクスチャアセットをフィールドにドラッグ、またはオブジェクトピッカーから選択

除外テクスチャは GUID で照合されるため、リネームや移動でも追従します。

「このテクスチャだけは触らないでほしい」場合は Excluded Textures、「圧縮はするが設定だけ手動で上書きしたい」場合は Frozen Textures を使い分けてください。

Path Exclusions

指定したプレフィックスで始まるアセットパスのテクスチャをすべてスキップします。以下の場合に便利です:

  • 他のツールが生成する一時アセットを除外
  • 変更すべきでない特定パッケージのテクスチャを保持

リストはデフォルトで空です。+ Add Path... をクリックすると、カスタムプレフィックスを直接入力するか、既知のプリセットから選択できます:

プリセットパス
VRCFury TempPackages/com.vrcfury.temp/

リスト内のいずれかのプレフィックスで始まるアセットパスのテクスチャはスキップされます。

Preview

Inspector でPreview Compression Resultsをクリックすると、ビルド前に圧縮分析を確認できます。

検索とフィルター

Frozen Textures セクションと Preview セクションはそれぞれ独立した検索ボックスを持っており、両リストを別々に絞り込めます:

  • 標準検索: テクスチャ名またはアセットパスの一部を入力してリストをフィルタリング(大文字小文字区別なし)。Preview 側はテクスチャカテゴリ(Main / Normal / Emission / Other)にもマッチします。Frozen 側はアセットパスを解決できない場合、テクスチャ GUID とのマッチにフォールバックします。
  • ファジー検索: Fuzzy をオンにすると、1 文字までの編集距離(挿入・削除・置換)を許容します。

検索中はセクションヘッダーにフィルタリング件数(例:Frozen Textures (3/10) または Preview (3/10 shown))が表示され、検索ボックスにも Showing 3 of 10 のように件数が表示されます。

サマリー

プレビューにはアバターのテクスチャの合計メモリ使用量が表示されます:

メトリック説明
Original圧縮前の合計メモリ使用量
After圧縮後の推定メモリ使用量
Savings削減割合と削減バイト数(例:40% (-1.5 MB)

テクスチャリスト

エントリは 3 つのセクションヘッダーの下にグルーピングされて表示されます:

  • Textures to Compress — 解析・圧縮対象のテクスチャ
  • Frozen Textures (Manual Override) — Divisor / Format / Skip を手動指定したテクスチャ
  • Skipped Textures — 処理されないテクスチャ(Skipped Textures 参照)

各テクスチャについて、プレビューには以下が表示されます:

  • テクスチャサムネイル - クリックすると Project ウィンドウでテクスチャがハイライトされます
  • テクスチャタイプラベル をサムネイル下に表示(Main、Normal、Emission、Other)
  • テクスチャ名 をサムネイルの右側に表示
  • 複雑さ(0–100%)を緑→赤のプログレスバーで表示
  • Size - {元の幅}x{元の高さ} → {推奨幅}x{推奨高さ} (÷N)、リサイズしない場合は {元の幅}x{元の高さ} (unchanged)
  • Format - 予想される圧縮フォーマット(例:BC7、DXT5、ASTC_4x4)とフォーマット情報(bpp など)
  • Freeze ボタン - クリックしてテクスチャを手動設定で凍結(Frozen Textures を参照)

セクション下部の Close Preview ボタンでプレビューを閉じます。

テクスチャサムネイルをクリックすると、Project ウィンドウでテクスチャアセットをすばやく見つけて選択できます。

複雑さスコアの解釈

スコアレベル圧縮
< 0.2非常に低い強い圧縮を適用
0.2 - 0.4低い圧縮に適している
0.4 - 0.6中程度適度な圧縮
0.6 - 0.8高い軽い圧縮のみ
≥ 0.8非常に高い最小限の圧縮

Skipped Textures

処理されないテクスチャは、スキップ理由とともに別途表示されます:

  • Too small: テクスチャが最小サイズしきい値より小さい
  • Filtered by type: テクスチャタイプがフィルターで無効化されている
  • User frozen (skipped): テクスチャが「Skip compression」有効で凍結されている
  • Runtime generated: アセットパスを持たないテクスチャ(ビルド中に動的に生成)
  • Excluded texture: テクスチャが Excluded Textures リストに含まれている
  • Excluded by path: テクスチャのアセットパスがパス除外パターンに一致
  • Uncompressed on unknown property: 未認識のシェーダープロパティに割り当てられた未圧縮テクスチャ。詳細は Skip Uncompressed Textures on Unknown Properties を参照。

プレビューは自動的に更新されません。プレビュー生成後に設定を変更した場合、ボタンを再度クリックして更新するよう警告が表示されます。

Frozen Textures

凍結テクスチャを使用すると、特定のテクスチャの圧縮設定を手動でオーバーライドできます。以下の場合に便利です:

  • 自動圧縮が重要なテクスチャに対して強すぎる場合
  • 特定のテクスチャをフル品質で保持したい場合
  • 特定のテクスチャに特定の圧縮フォーマットを使用する必要がある場合

テクスチャを凍結する

  1. Preview Compression Resultsをクリックしてテクスチャを分析
  2. 凍結したいテクスチャをリストで見つける
  3. テクスチャの横にあるFreezeボタンをクリック

テクスチャは「Frozen Textures」セクションに移動し、手動コントロールが表示されます。

凍結テクスチャの設定

各凍結テクスチャについて、以下を設定できます:

設定説明
Skip compression有効時、テクスチャは圧縮から完全に除外される
Divisor手動解像度除数(1、2、4、8、または 16)
Format圧縮フォーマットのオーバーライド(Auto、DXT1、DXT5、BC5、BC7、ASTC_4x4/6x6/8x8)

Skip compressionが有効な場合、テクスチャは処理されないため、DivisorとFormat設定は無効になります。

利用可能なフォーマット

フォーマット説明プラットフォーム
Auto自動フォーマット選択すべて
DXT1RGB のみ、4 bpp(効率的)Desktop
DXT5RGBA、8 bpp(アルファ付き)Desktop
BC5ノーマルマップ、8 bppDesktop
BC7最高品質、8 bppDesktop
ASTC_4x4モバイル最高品質、8 bppMobile
ASTC_6x6モバイルバランス、3.56 bppMobile
ASTC_8x8モバイル効率的、2 bppMobile

テクスチャを解凍する

手動オーバーライドを削除して自動圧縮に戻すには:

  1. Frozen Texturesセクションでテクスチャを見つける
  2. Unfreezeボタンをクリック

テクスチャは通常の自動処理に戻ります。

凍結テクスチャのアセットファイルが移動または削除された場合、Frozen Textures セクションに警告が表示されます。リストを整理するために、そのようなテクスチャを解凍してください。

Custom Presets

カスタムプリセットを使用すると、圧縮設定を再利用可能な ScriptableObject アセットとして保存できます。以下の場合に便利です:

  • 複数のアバター間で設定を共有
  • プラットフォーム固有の設定を作成(例:「PC/High Detail」「Quest/Optimized」)
  • プロジェクト間で一貫した圧縮設定を維持

カスタムプリセットの作成

  1. コンポーネントを Custom モードに設定
  2. 希望の設定を構成
  3. プリセットフィールドの横にある + ボタンをクリック
  4. 新しいプリセットの保存場所と名前を選択

現在の設定が新しいプリセットに自動的に保存されます。

  1. Project ウィンドウで右クリック
  2. Create > Avatar Compressor > Texture Compressor > CustomTextureCompressorPreset を選択
  3. プリセットに名前を付け、Inspector で設定を構成
  4. Menu Path フィールドを設定して、ドロップダウンメニューに表示されるようにする

カスタムプリセットの使用

  1. コンポーネントを Custom モードに設定
  2. Custom Preset ボタンをクリック
  3. 階層メニューからプリセットを選択

Menu Path が設定されているプリセットのみがドロップダウンメニューに表示されます。Menu Path のないプリセットは、プリセットフィールドにドラッグすることで割り当てできます。

Use-Only Mode と Edit Mode

Custom Preset ボタンからプリセットを選択すると、コンポーネントは Use-Only Mode になります:

モード説明
Use-Only Mode設定は読み取り専用で、プリセットのサマリーを表示
Edit Mode設定を変更するためのフルアクセス(Edit をクリックして切替)

Use-Only Mode では:

  • 設定サマリーが現在の構成を一目で表示
  • プリセットに Description が設定されている場合は表示
  • Edit をクリックして Edit Mode に切り替え

プリセット編集の制限

一部のプリセットは直接編集できません:

制限タイプアイコン説明
ロック済み🔒ユーザーがロックしたプリセット(Lock フィールドが有効)
ビルトイン🔒Avatar Compressor パッケージに同梱
外部パッケージ🔒他のパッケージから(例:プリセットパック)

制限されたプリセットを編集しようとすると:

  1. 確認ダイアログが表示されます
  2. Unlink を選択して編集を続行(設定がローカルにコピーされます)
  3. または Cancel でプリセットのリンクを維持

プリセット設定の管理

これらのアクションは、プリセットフィールドの横にあるアイコンボタンとして利用できます:

ボタンアクション説明
Save現在の設定をリンクされたプリセットに保存(編集可能な場合)
Discardプリセットから設定を再読み込みし、ローカル変更を破棄
+Create現在の設定から新しいプリセットを作成
Unlink現在の設定を維持したままプリセットとの接続を解除

アイコンボタンにカーソルを合わせると、各アクションの説明がツールチップで表示されます。

同期インジケーターは、ローカル設定がプリセットと一致しているかを表示します:

  • Modified: ローカル設定がプリセットと異なる
  • Synced: 設定がリンクされたプリセットと一致

プリセット設定

Inspector でカスタムプリセットアセットを編集する場合:

フィールド説明
Menu Pathドロップダウンでの階層パス(例:「PC/High Detail」)
Menu Orderメニューでの表示順(小さい値が先に表示、デフォルト:1000)
DescriptionUse-Only Mode で表示されるオプションの説明
Lockこのプリセットへの誤った変更を防止

Advanced Settings

これらの設定はCustomプリセットを使用している場合に利用可能です。

Editor Preferences

プロジェクト全体に影響する設定は Edit > Preferences > Avatar Compressor にあります。プロジェクト内のすべてのアバターに適用されます。

設定デフォルト説明
Enable Loggingオンビルド・プレビュー中にデバッグログを出力
Analysis BackendAutoAuto(GPU が利用可能なら GPU、そうでなければ CPU)または Software(CPU 強制)

Analysis Backend

テクスチャの複雑さ解析は GPU(Compute Shader)でも CPU でも実行できます。GPU バックエンドは大規模なアバターで高速ですが、supportsComputeShaderssupportsAsyncGPUReadback のサポートが必要です。CPU と GPU は数値誤差の範囲内で同一のスコアを返します。

バックエンド動作
Autoサポートされていれば GPU を使用、それ以外は CPU にフォールバック
Software常に CPU を使用。GPU ドライバが不安定な場合やデバッグ時に有用

GPU の初期化に失敗した場合、Avatar Compressor は警告を出してそのビルドだけ透過的に CPU にフォールバックします。設定を手動で切り替える必要はありません。

互換性

Texture Compressor は NDMF Optimizing フェーズ中に実行され、Modular Avatar の後、TexTransTool や Avatar Optimizer の前に動作します。これにより、アバターセットアップツールとの適切な統合を確保しながら、最終的なアバター最適化の前にテクスチャを最適化します。

On this page