Meta Avatars SDKプロジェクトをv29以降にアップグレードする
Meta Avatars SDKは、v24.xとv29.xの間で大きな変更が加えられました。このガイドでは、2つのバージョンの違いを説明し、バージョンv20.x以前からv29.x以降にアップグレードするための一般的な手順を紹介します。
Meta Avatars SDKのv20.xとv24.xの間、v24.xとv29.xの間には、一般公開されたバージョンがなかった点に注意してください。
Unityパッケージマネージャ
以前にUnityパッケージマネージャを使用してSDKをインストールしたことがある場合は、インストール済みパッケージの一覧でMeta Avatars SDKパッケージを見つけ、パッケージ名の横にある[Update (更新)]ボタンをクリックすることで、簡単に最新バージョンにアップグレードできます。
サンプルアセットとストリーミングアセットとの競合を防ぐため、アップグレードを実行する前に、次のディレクトリにあるサンプルファイルを削除することをおすすめします。
- Assets/Oculus/Avatar2
- Assets/Oculus/Avatar2_SamplesAssets
- Assets/Samples/Meta Avatars SDK
- StreamingAssets/BehaviorAssets
- StreamingAssets/Oculus
シェーダーとAvatarSdkManager
AvatarSdkManagerLibraryとAvatarSdkManagerMetaは廃止され、AvatarSdkManagerStyle2Metaに置き換えられました。SDKを制御するには、シーン内の古いマネージャprefabをAvatarSdkManagerStyle2Metaprefabに置き換える必要があります。AvatarSdkManagerMetaでは、適切なシェーダーでAvatar 2.0が表示されません。また、古いprefab (AvatarSdkManagerLibrary など)を使用すると、廃止警告が表示されます。
主な違いは、AvatarSdkManagerStyle2Metaが、アバターレンダリングのための新しいシェーダー(Style-2-Avatar-Meta.shader)を指しているということです。Style-2-Avatar-Meta.shaderに埋め込まれたファイルStyle2MetaAvatarCore.hlslには、シェーダーロジックが一括で含まれています。ここでの改善点は、Style2MetaAvatarCore.hlslが以前のシェーダーのバージョンよりも読みやすくなり、編集とカスタマイズが簡単になったということです。
MirrorSceneを読み込むことによって、AvatarSdkManagerStyle2Metaのシンプルな設定を確認することができます。
LightingExampleはそれよりも複雑な設定として、さまざまな照明環境における複数の異なるシェーダー間の実行時切り替えを提供します。
Warning: Replacing AvatarSdkManagerLibrary with AvatarSdkManagerStyle2Meta Unregisters Tracked Input Managers
AvatarSdkManagerLibraryをAvatarSdkManagerStyle2Metaに置き換えると、アバターエンティティについてトラッキング入力カテゴリに登録されているマネージャの登録が解除されます。確実に正しく機能するようにするため、それらのマネージャのすべてのインスタンスを更新して、AvatarSdkManagerStyle2Metaを使うようにしてください。品質設定とパフォーマンス
OvrAvatarEntityには、より高品質のアバターを作成可能な、[Quality (品質)]という新しいオプションがあります。この設定の切り替え用トグルは_creationInfo.renderFilters.qualityの中にあります。[Avatar Entity (アバターエンティティ)] > [Creation Info (作成情報)] > [Render Filters (レンダリングフィルター)] > [Quality (品質)]の下の[Unity Object Inspector (Unityオブジェクトインスペクター)]からアクセスできます。例えば、MirrorSceneでは、AvatarまたはMirror Avatarのいずれかをクリックしてインスペクター内で該当するオプションを探すことで、この属性を表示することができます。
Avatar 2.0では、この設定のデフォルトは「ライト」レベルです。より忠実度の高いアバターには「スタンダード」品質を使用しますが、追加のパフォーマンスコストがかかります。「ウルトラライト」は現時点ではAvatar 2.0ではサポートされていません。
v24.xより前のバージョンのSDKではこの設定は存在せず、アバターは現在「ライト」と呼ばれる設定と同等レベルでした。
最高品質のアバター(「スタンダート」)にはメモリコストがかかります。メモリ使用量に厳しい制限がある場合は、「ライト」に戻してください。
最初のアバターを読み込んだ後で品質レベルを切り替えることはできないことに注意してください。
最新のSDKには、品質レベルごとに33個のプリセットアバターGLBファイルが含まれています。それらは汎用のアバターで、ディスクからロードできますし、ロードに失敗した場合のフォールバックとしても使えます。ファイル名はPresetAvatars_Quest*.zipおよびPresetAvatars_Rift*.zipといいます。24.xからアップグレードする場合、プリセットアバターが少なくなったため、zipファイルのサイズが小さくなります。v24.xより前のバージョンからアップグレードする場合、新しい品質レベルのため、zipファイルの数が増えています。
これらの.zipファイルは構築時にStreamingAssetsにコピーされるため、APK/Questのビルドのサイズが大きくなることがあります。Preset Selector (プリセットセレクター)を使用して、ビルドにパッケージ化しないように選択することができます。また、必要なプリセットのみを解凍して保持し、再度圧縮することで、より小さなサブセットにまとめることもできます。サポートしていない品質レベルのプリセットを含めないようにすることもできます(例えば、常に「ライト」の品質アバターを使用する場合は、「スタンダード」のプリセットアバターを省くことができます)。
プリセットセレクターには、メニューオプションの[MetaAvatarSDK] > [Assets (アセット)] > [Sample Assets (サンプルアセット)] > [Preset Selector (プリセットセレクター)]からアクセスできます。
Disable Fastload Avatars
ファストロードアバターが有効になっていると、アバターが消える可能性があるという既知の問題があります。v24.0の場合、これを回避するため、[AvatarSdkManager] > [Enable Fastload Avatar (ファストロードアバターの有効化)]でファストロードアバターを無効にしてください。v24.1以上の場合、このオプションは無効であり、非表示になっています。関連するコードは、今後のリリースで削除される予定です。スキニング
アバターのスキンニングに加えられる変更について、アプリ開発者が心配する必要はありません。ただし、「GPUスキニング」(OVR_GPU)は廃止されており、「コンピュートスキニング」(OVR_COMPUTE)に置き換えられていることに注意してください。
社内テストの結果、96のアバターが存在するシーンにおいて、OVR_COMPUTEスキニングによってアバターの読み込み時間とメモリ使用量が約50 %改善され、視覚的忠実度の高いアバター(新しい「スタンダード」品質のアバター)によるパフォーマンス損失の一部が補填されるということがわかりました。
スキニングとは、インプット(コントローラーの位置、頭の動き、適用されたアニメーション、表現など)を1つ以上の所定のアバターに適用する処理のことです。新しいデフォルトである「コンピュートスキニング」は、この演算を実行するために「コンピュートシェーダー」を使用します。「コンピュートスキニング」は、SDKのアップグレードにより自動的に有効になるはずです。廃止されたスキニングタイプを使用している場合、廃止警告が表示されます。
エラー対策として、内蔵型のUnityスキナーであるUNITYスキニングが提供されていますが、デバッグ時にのみ使用することをおすすめします。
異なるスキニングタイプを比較したものを、SkinningTypesExampleシーンで見ることができます。このシーンでは、複数のスキニングタイプを有効化し、OvrAvatarSkinningOverride monobehaviorを通して並べて表示しています。
リグアップデート
MetaアバターSDKは2021年に導入されましたが、既存アプリとの互換性を保つ必要があったために、想定していたペースでビジュアル改善を進めることが難しいという問題がありました。v24では、リグ自体をターゲットにするのではなく、リグ抽象化を通してコアシステムを再構築しました。これにより、アプリを壊すことなく、アバターのビジュアル改善をより早く進めることが可能になります。
Meta Avatars SDK v29.xで、ついにリターゲティングをサポートするアバターのアニメーションソリューションが提供されるようになりました。ただし、以前のバージョンのSDKで、一部の開発者が再生時にネットワークストリームを記録する独自のシステムを構築していることを承知しています。ストリームデータは
ライブネットワーキングでのみ使用されるものであり、v29以降との互換性を確保するためには、ストリームデータの再作成または再記録が必要になるかもしれません。Unityヒューマノイドと互換性のある既存のアニメーションは、v29.x以降のアニメーションソリューションを通じてリターゲットできます。
アバターエディター
v24.xより、OpenAvatarEditorクラスに含まれるアバターエディター起動ロジックに変更が加えられ、新しいOculus.Platform.CAPI.ovr_Avatar_LaunchAvatarEditor APIを使うようになりました。AvatarEditorDeeplinkフォルダーとNewtonsoft JSON、そしてIPCのDLLが削除されました。