HeadwornのシーンをDRFに対応させる方法
このページ では、機能サンプル等のHeadwornで動作することを前提としたシーンを、DRFで動作させる方法を紹介します。
セットアップ手順
1. DRFに必要なオブジェクトの追加
-
以下のDRF用のシーンを開きます。
Assets/Samples/Snapdragon Spaces/X.X.X/Fusion Samples/Scenes/ControllerPrefabSampleScene

-
上記のDRF用のシーン内で、以下のオブジェクトをCopyします。
Fusion InteractionFusion Scene ManagerDynamic OpenXR Loader

-
DRFに対応させたいHeadwornのシーンを開き、CopyしたオブジェクトをPasteします。

2. SpacesLifecycleEventsの設定
Fusion Scene Managerオブジェクトを選択します。SpacesLifecycleEventsコンポーネントで、以下の設定を行います。On OpenXR Unavailable()に、以下のオブジェクトをGameObject.SetActiveのチェックを無効にして登録します。UISample AssetsXR Origin (XR Rig)
On OpenXR Started()に、以下のオブジェクトをGameObject.SetActiveのチェックを有効にして登録します。UISample AssetsXR Origin (XR Rig)

非アクティブにする理由について
上記の手順を行うことで、On OpenXR Unavailable()の場合にゲームオブジェクトは非アクティブになり、On OpenXR Started()の場合にゲームオブジェクトはアクティブになります。
- 「グラスがスマホと接続される前」→「OpenXRが利用不可」→「
On OpenXR Unavailable()」 - 「グラスがスマホと接続された後」→「OpenXRが起動した後」→「
On OpenXR Started()」
それぞれのゲームオブジェクトについての補足
XR Origin (XR Rig):グラスと接続されていない場合は、Main Cameraは不要なので非アクティブにします。UI:UIをMain Cameraに追従させる機能を動作させるために、Main Cameraがアクティブになってから、UIのオブジェクトをアクティブにする必要があります。Sample Assets:カメラへのアクセス等の権限の取得が完了し、グラスのセンサーを使用した機能が利用可能になるのを待つために、グラスと接続された後にオブジェクトをアクティブにする必要がある場合があります。
非アクティブにするオブジェクトについて
上記は機能サンプルのシーンを元にする場合の説明です。Headwornのシーンによっては、シーン構造が異なる可能性があります。
その場合でも、基本的にはHeadwornのシーンに元々あったオブジェクトを、同じようにSpacesLifecycleEventsコンポーネントで設定を行えば問題ありません。
※AR SessionオブジェクトやSpaces XR Simulatorオブジェクトは、特に設定を行う必要はありません。
3. Headworn用のポインターの削除
XR Origin (XR Rig)/Camera Offset/Spaces Simple Interaction/Controller Manager/Host Controller Pointerオブジェクトを削除します。

4. Triger Actionの変更
ポインターによる操作について
Headworn用のシーンのUIは基本的には、DRF用のポインターでも操作出来ます。 しかし、空間アンカーのようにUI以外の操作にポインターを使用する場合は、設定を変更する必要があります。
Sample Assets/XXX Sample Controllerオブジェクトを選択します。AnchorSampleControllerコンポーネントのTrigger Actionを以下のInput Actionに変更します。Controller Prefab/Select (Input Action Reference)
Input Actionについて
DRF用のポインターが使用するInput Actionについては以下の手順で確認できます。
Hierarchy内の以下のオブジェクトを選択します。Fusion Interaction/Canvas Controller/Controller Position Head Mirror/Controller Relative Position/Pointer/Device Pointer
XR ControllerコンポーネントのSelect Action内で参照しているInput Actionを左クリックします。

5. 権限の要求
DRF用の権限の要求方法について
「カメラへのアクセス」や「ネットワークへアクセス」の権限を必要とするシーンの場合、DRF用の方法で権限を要求する必要があります。