Trace And Optimize

Trace And Optimize (T&O) #

昔のバージョンではAutomatic Configurationという名前でした

このコンポーネントは、アバターを走査して自動的にできる限りの最適化を行います。 チェックボックスで自動的に行う最適化を選択することが出来ます。

このコンポーネントはアバターのルートに追加してください。(分類: Avatar Global Component)

Trace and Optimizeは「見た目に絶対に影響させてはならない」という前提の下で、かなり慎重に作られています。
そのため、見た目に影響が出たり、何らかのギミックが機能しなくなったりといった問題が発生した場合はすべて、例外なくAAOのバグとなります。
従って、問題が起きた際は報告していただければ、出来る限り修正いたします。

現在、以下の機能を使った自動最適化が可能です。

  • BlendShapeを最適化する
    以前はBlendShapeを自動的に固定・除去するという名前でしたが、機能が増えたため名前が変わりました。
    アニメーションなどを走査して、BlendShapeを自動的に固定・除去・統合することでBlendShapeの数を削減します。
  • 使われていないObjectを自動的に削除する
    アニメーションなどを走査して、使われていないObject(GameObjectやコンポーネントなど)を自動的に削除します。
    また、切り替えるものと一緒に使われていて、他の方法で使われていないPhysBooneコンポーネントを自動的に切り替えるようにします。
    • endボーンを残す
      親が削除されていないendボーン1を削除しないようにします。
  • PhysBoneの設定を最適化する
    PhysBoneの設定について、以下の最適化を行います。
    • 全く同じ設定のPhysBone Colliderを1つに統合します。
    • 不要な場合にIs Animatedのチェックを外します。
  • アニメーターの最適化
    Animator Controllerを最適化します。詳細はこのセクションを参照してください。
  • スキンメッシュレンダラーを統合する
    分かれている必要のないスキンメッシュレンダラーを統合します。
    場合により、自動では一部のメッシュを統合しないこともあるため、必要に応じてMerge Skinned Meshを使用してください。
    • マテリアルスロットの前後関係を変えることを許可する
      マテリアルスロットの前後関係を変えることで、アバターの描画負荷を減らせる場合があります。
      多くの場合、マテリアルスロットの前後関係は特に意味を持ちませんが、描画順に影響を与える場合もあるようです。
  • テクスチャを最適化する
    見た目に影響を与えずにテクスチャを最適化します。
    現在は、AvatarOptimizerが対応しているシェーダーが使用されているマテリアルに対してのみ、UVパッキングやテクスチャサイズの縮小を行います。

また、以下の設定で自動設定を調節できます。

  • MMDワールドとの互換性
    MMDワールドで使われるBlendShapeを固定しないなど、MMDワールドとの互換性を考慮した軽量化を行います。

加えて、以下の高度な最適化が利用出来ます。

  • 面積がゼロのポリゴンを自動的に削除する
    面積がゼロのポリゴンを削除します。 これは一部のシェーダーやアニメーションによるスケール変化を壊す可能性があるため、注意して使用してください。

他に、バグの回避などに使用するための高度な設定がありますが、それらは不安定であり、不用意に変更するべきではありません。 それらの機能については英語のTooltipやソースコード、または開発者の指示を参考にしてください。

component.png

アニメーターの最適化 #

この機能では、アニメーターに対して以下の最適化を行います。

  • AnyState式のレイヤーをEntry-Exit式に変換
    アニメーターコントローラーのレイヤーをできる限りEntry-Exit式に変換します。 また、以下の最適化により、AnyState式のレイヤーがBlendTreeに変換されることがあります。
  • Entry-Exit式のレイヤーをBlendTreeに変換
    アニメーターコントローラーのレイヤーをできる限りBlendTreeに変換します。
  • BlendTreeを統合
    複数のBlendTreeレイヤーを1つのDirect BlendTreeに統合します。
  • 使われていないレイヤーを削除する
    StateやTransitionがないレイヤーを削除します。

  1. AAOは名前がend(大文字小文字の区別なし)で終わるボーンをendボーンとして扱います。 ↩︎