Dual Render Fusionコンポーネント
このセクションでは、Dual Render Fusionに含まれるすべての新しいコンポーネントの機能について紹介します。
Dual Render FusionのセットアップガイドのProject Validatorの修正を適用するステップは、シーンに追加のコンポーネントを追加します。
これらのゲームオブジェクトを手動で作成するために、便利な機能が用意されています。
これらは2通りのメニューから使用できます。
- シーンのHierarchyで右クリックし、
XR > Dual Render Fusion
- メニューバーの
GameObject > XR > Dual Render Fusion
Dynamic OpenXR Loaderコンポーネント
Dynamic OpenXR Loaderコンポーネントは、ARグラスが接続された後にアプリがOpenXRをロードすることを可能にします。このコンポーネントは、Spaces Glass Statusコンポーネントと一緒に動作し、サポートされているARグラスの存在を検出し、設定されていればOpenXRを起動します。
OpenXRが接続を開始した時のUIの動作を制御するために、いくつかのコールバックが用意されています。これらのコールバックは、Spaces Lifecycle Eventsコンポーネントを通して開発者に公開されます。
Dynamic OpenXR Loaderは、シーン遷移に耐えられるように設計されています。
これはルートレベルのGameObjectに存在する必要があり、実行時に自動的にDontDestroyOnLoad
に設定されます。
Dynamic OpenXR Loaderは、アプリ起動時の初期に作成され、ARグラスの接続が検出された時にシーンに表示するXRコンテンツが無くても、アプリが終了するまで持続することを目的としています。
Dynamic OpenXR Loaderコンポーネントを使用するには、Project Settings > XR Plug-In Management
で、Initialize XR on Startupを無効にする必要があります。
これは通常、Fusionのプロジェクト設定の変更のメニュー項目を使った自動セットアップで設定されます。
Dynamic OpenXR Loaderのプロパティ
- Auto Start XR On Display Connected
- 有効の場合、サポートされているARグラスが接続されると、アプリは自動的にOpenXRを起動します。
- 無効の場合、開発者はXRが必要になる時に、Dynamic OpenXR Loaderコンポーネントの
StartOpenXR
メソッドを呼び出す必要があります。
開発者は、手動でOpenXRを開始および停止することができます。
DynamicOpenXRLoader.Instance.StartOpenXR();
...
DynamicOpenXRLoader.Instance.StopOpenXR();
StartOpenXR
は、サポートされているARグラスが接続されている場合にのみ成功します。
詳細はSpaces Glass Statusコンポーネントを参照してください。
OpenXRが起動を開始すると、メインスレッドは短時間ブロックされます。OpenXR が起動中であることを示すUIを表示し、読み込み完了時に完了したことを表示するのをお勧めします。
- Auto Manage XR Camera
- この機能を有効にすると、OpenXR の起動・停止時に、AR SessionとAR Session Originを含むゲームオブジェクトが必要に応じて有効/無効になります。
AR Foundation 5.0以降を使用している場合、Dynamic OpenXR Loaderコンポーネントは、代わりにXROriginコンポーネントを見つけて有効/無効を切り替えます。
-
Cannot Display Overlay Dialog Options Provider
- このオプションのフィールドは、OpenXRランタイムのアプリケーションで「他のアプリに重ねて表示」の権限が許可されていない場合に、ユーザーに表示するテキストをカスタマイズするために使用します。
この権限が許可さ れていない場合、Dual Render Fusionのコンテンツは描画できません。
- このオプションのフィールドは、OpenXRランタイムのアプリケーションで「他のアプリに重ねて表示」の権限が許可されていない場合に、ユーザーに表示するテキストをカスタマイズするために使用します。
-
Runtime Camera Permissions Dialog Options Provider
-
Application Too Old For Runtime Dialog Options Provider
- このオプションのフィールドを使用して、アプリケーションがOpenXRランタイムに対して古すぎる場合にユーザーに表示するテキストをカスタマイズできます。
-
Runtime Too Old For Application Dialog Options Provider
- このオプションのフィールドを使用して、OpenXRランタイムがアプリケーションに対して古すぎる場合にユーザーに表示されるテキストをカスタマイズできます。
-
Runtime Validation Failure Dialog Options Provider
- このオプションのフィールドを使用して、Older Runtime Compatibility機能が失敗のエラーをスローしたときにユーザーに表示されるテキストをカスタマイズできます。
Older Runtime Compatibility についての詳細は、専用ページをご覧ください。
これらのフィールドはSimple Dialog Options Providerコンポーネントを受け入れます。このコンポーネントはアプリケーション開発者によって実装されるべきで、メソッドを実装しなければなりません。
public override SimpleDialogOptions GetDialogOptions()
SimpleDialogOptions
の戻り値は各テキスト入力をカスタマイズする文字列を含みます。
- Title
- Message
- PositiveButtonText
- NegativeButtonText
このテキストは、希望するローカライゼーションのツールチェーンで動作するDialog Options Providerを実装することによって、ローカライズすることができます。
例えば、Unity.Localization
パッケージを使用している場合、Providerの開発者の実装は、単に文字列テーブルでローカライズされたテキストを検索することができます。
public class LocalizedSimpledDialogOptionsProvider : SimpleDialogOptionsProvider
{
public LocalizedString Title;
public LocalizedString Message;
public LocalizedString PositiveButton;
public LocalizedString NegativeButton;
public override SimpleDialogOptions GetDialogOptions()
{
return new SimpleDialogOptions()
{
Title = this.Title.GetLocalizedString(),
Message = this.Message.GetLocalizedString(),
PositiveButtonText = this.PositiveButton.GetLocalizedString(),
NegativeButtonText = this.NegativeButton.GetLocalizedString()
};
}
}
実装されているSimple Dialog Options Providerコンポーネントを、シー ン内のDynamic OpenXR Loaderコンポーネントに、直接アタッチすることをおすすめします。
Dialog Options Providerが指定されていない場合、Cannot Display Overlay Dialog Options Providerに以下のデフォルトの英語のテキストが使用されます。
- Title
- OpenXR Runtime permissions
- Message
- The 'Display over other apps' permission is required for the OpenXR runtime to render XR content. Select 'Configure' to grant this permission manually by selecting 'Snapdragon Spaces Services' from the list shown.
- Positive Button
- Configure
- Negative Button
- Not Now
Dialog Options Providerが指定されていない場合、Runtime Camera Permissions Dialog Options Providerには以下のデフォルトの英語のテキストが使用されます。
- Title
- OpenXR Runtime permissions
- Message
- Camera permissions for the OpenXR runtime are not granted. Some features might not work. Would you like to grant the camera permissions now? If you select yes, this application will close and you will need to re-start it.
- Positive Button
- Yes
- Negative Button
- Not Now
Spaces Glass Statusコンポーネント
Spaces Glass Statusコンポーネントは、アプリが動作しているデバイスタイプの情報にアクセスし、ARグラスの接続状態に関連する情報を取得するために使用されます。
Spaces Glass Statusコンポーネントは単独でも使用できますが、XRコンテンツのライフサイクルをより簡単に管理するために、Dynamic OpenXR Loaderコンポーネントと一緒に使用することをお勧めします。
Spaces Glass Statusは、シーンの遷移にも耐えられるように設計されています。
実行時に自動的にDontDestroyOnLoad
に設定されるルートレベルのGameObjectに存在する必要があります。(これは、Dynamic OpenXR Loaderと同じオブジェクトである可能性が高いです。)
Spaces Glass Statusは、アプリ起動時の初期に作成され、ARグラスの接続が検出された時にシーンに表示するXRコンテンツが無くても、アプリが終了するまで持続することを意図しています。
このコンポーネントは、Spaces Lifecycle Eventsコンポーネントを通して開発者にコールバックを公開します。
開発者はさらに、以下のように実行時にコードを通して、このデータを照会することができます。
Spaces Glass Statusの利用可能なデータ
グラスの接続状態(GlassConnectionState)
var connectionState = SpacesGlassStatus.Instance.GlassConnectionState;
- グラスの接続状態は
Disconnected
またはConnected
のいずれかです。
グラスのアクティブ状態(GlassActiveState)
var activeState = SpacesGlassStatus.Instance.GlassActiveState;