Asset Description

Asset Description #

Asset DescriptionはAvatar Optimizerにアセットの情報を提供するためのファイルです。

なぜAsset Descriptionが必要なのか #

Avatar Optimizerは、Asset Descriptionで提供された情報を用いて最適化の失敗を防ぎます。

Asset Descriptionでは、以下の情報を提供することができます。

  • Meaningless Components
    Avatar Optimizerに無視されるべきコンポーネントを指定します。
  • Parameters Read By External Tools
    OSCツールなどの外部ツールから読み取られるパラメーターを指定します。
  • Parameters Changed By External Tools
    OSCツールなどの外部ツールから変更されるパラメーターを指定します。

各項目が必要な理由については以下の説明を参照してください。

Meaningless Components #

アバター上の不要な要素を削除するために、Avatar Optimizerはアバターに存在するすべてのコンポーネントのことを知る必要があります。
Avatar Optimizer v1.6.0でコンポーネントにAAOとの互換性をもたせるためのドキュメントとAPIが追加されましたが、 非破壊ツールでなく、ビルド時に処理を行わないようなツールでは、IVRCSDKPreprocessAvatarCallbackでコンポーネントを削除するのは少し面倒だろうと考えました。
そのため、Avatar Optimizerに無視してほしい、ビルド時やランタイムで処理を行わないコンポーネントを指定するためのシンプルな仕組みとして、Asset Descriptionがv1.7.0で追加されました。

なお、非破壊ツールの場合については、正しくない実行順で処理が行われた場合にAvatar Optimizerがコンポーネントを誤って削除してしまわないように、従来通りIVRCSDKPreprocessAvatarCallbackやNDMFを使用してAvatar Optimizerの処理よりも先にコンポーネントを削除することを推奨します。

Parameters Read By Extenral Tools #

PhysBoneやContact Receiverのようなコンポーネントは、OSCツールで読み取り可能なパラメーターを生成します。 そのようなパラメーターは、Animator ControllerやExpression Parameterに登録しなくても、OSCツールから読み取り可能であることが知られています。
そのため、Avatar Optimizerはそれらのパラメーターが単に使用されていないものなのか、OSCツールで読み取るためのものなのかを判別することができません。 登録されていないパラメーターがOSCツールで使用されていることは比較的少ないため、コンポーネントが生成するパラメーターがアバター上で全く使われていない場合にはコンポーネントが削除されることになります。

これを防ぐために、OSCツールから読み取られる目的のパラメーターをAsset Descriptionで指定することができます。

Parameters Changed By External Tools #

この情報は現在のAvatar Optimizerでは使用されていませんが、将来的に使用することが計画されています。

Avatar Optimizerは、一度も変更されないパラメーターを検知してアニメーターを最適化することを計画しています。 しかしながら、OSCツールのような外部ツールでパラメーターが変更される場合、この最適化はアバターの振る舞いを変えてしまうでしょう。

これを防ぐために、OSCツールから変更されるパラメーターをAsset Descriptionで指定することができます。

Asset Descriptionの作成 #

Asset Descriptionを作成するには、Projectウィンドウの右クリックメニューからCreate/Avatar Optimizer/Asset Descriptionを選択してください。
Avatar Optimizerはすべてのファイルの中からファイル検索を行うため、Asset Descriptionの名前、場所は自由です。

Asset Descriptionの編集 #

asset-description-inspector

Comment #

コメント欄はメモを書くためにご自由にお使いください。 Avatar Optimizerはコメントを無視します。

Meaningless Components #

Meaningless ComponentsはAvatar Optimizerに無視してほしいコンポーネントの型の一覧です。 コンポーネントのScript Assetを指定してください。 指定されたScript Assetの型のコンポーネントと、そのサブクラスのコンポーネントはAvatar Optimizerに無視されます。

Asset Descriptionでは実際のScene上のコンポーネントと同様に、Script AssetがguidとfileIDの形で保持されています。 そのため、クラス名を変更したとしても、シーン上のコンポーネントが壊れていない限り、Asset Descriptionでの指定も問題なく機能します。

Parameters Read By External Tools #

OSCツールなどの外部ツールから読み取られるパラメーターを指定します。

詳細は上のセクションを参照してください。

Parameters Changed By External Tools #

OSCツールなどの外部ツールから変更されるパラメーターを指定します。

詳細は上のセクションを参照してください。