本日はMetaQuestの学習枠です。
MetaHorizonの開発ドキュメントを読みながら実際に開発を行ってみました。
MetaHorizonの開発ドキュメント
MetaHorizonの開発ドキュメントを実際に手を動かしながら実行時のキャプチャをしていきます。
developers.meta.com
本記事は以下の「Meta XRインタラクションとUnity XRのスタートガイド」の記事を試します。
developers.meta.com
Meta XRインタラクションとUnity XRのスタートガイド
このチュートリアルではUnity OpenXR、Unity XR Hands、Meta XR Interaction SDK Essentialsを使ってUnityプロジェクトにMeta XR Interaction SDKをインストールして設定する方法を説明します。
Meta XR Interaction SDK Essentialsは全てのMeta XRインタラクションモデルのコア実装と、必要なシェーダー、マテリアル、prefabを提供します。
パッケージのインポートとインストール
Unityアセットストアにアクセスして自身のUnityアカウントでサインインします。
assetstore.unity.com

Meta XR Interaction SDK Essentialsページに移動します。
[Add to My Assets]を選択して、Unityアカウントのアセットにパッケージを追加します。
assetstore.unity.com

[Open in Unity (Unityで開く)]を選択してUnityエディターでPackage Managerウィンドウを開きます。

Meta XR Interaction SDK Essentialsを選択して[Install (インストール)]を実行するとインストールが開始されます。

次に[Unity Registry (Unityレジストリ)]を選択します。
「XR Hands」を検索してXR Handsパッケージを選択し、[Install (インストール)]を実行してパッケージをプロジェクトに追加します。

[In Project (プロジェクト内)]を選択し、XR Plugin Managementが少なくともバージョン4.5.0 を使っていることを確認します。
そうでない場合は最新の4.5.xバージョンの横にある[Update (アップデート)]を選択してXR Plugin Managementパッケージをアップデートします。

プロジェクトの設定
XR Handの依存関係を通じてInteraction SDKとOpenXRがインストールされている場合OpenXRを有効にする必要があります。
[Project Settings (プロジェクト設定)]ウィンドウで[XR Plug-in Management (XRプラグイン管理)]を開き、[OpenXR]を選択します。

[OpenXR]タブに移動します。[Interaction Profiles]の下で以下のプロファイルを有効にします。
・Oculus Touch Controller Profile (Oculus Touchコントローラープロファイル)
・Meta Quest Touch Pro Controller Profile (Meta Quest Touch Proコントローラープロファイル)

[OpenXR Feature Groups (OpenXR機能グループ)]の下で以下の機能を有効にします。
・Hand Tracking Subsystem
・Meta Hand Tracking Aim
・Meta Quest Support(Androidのみ)

[Project Validation (プロジェクトの検証)]タブに移動します。
プロジェクト検証ツールにより、プロジェクトの設定を最適化します。設定されている依存関係に必要な設定を適用します。

これでプロジェクトの設定は完了です。

リグを追加する
Interaction SDKではリグは仮想環境を確認し、グラブ、テレポート、ポークなどのアクションを開始できるようにする定義済みコレクションです。
Unity XRの場合、このリグはUnityXRInteractionComprehensiveというprefabに含まれており、すぐに使用可能なカメラ、手、コントローラーを自動でシーンに追加します。
これらのprefabは手動でシーンに追加するのではなくInteraction SDKのQuick Actionを使うことが推奨されています。
SDKは独自のカメラリグを使うため、Unityシーンで[Hierarchy]からデフォルトの[Main Camera]と[Global Volume]を削除します。

[Hierarchy]を右クリックして[Interaction SDK -> Add UnityXR Interaction Rig]を選択します。

シーンにOVRCameraRigが存在する場合はウィザードで自動的に検出されて表示されます。
カメラリグが存在しない場合は[Fix]をクリックすると、ウィザードによってカメラリグが作成されます。

[Craete]を実行してUnityXRInteractionComprehensiveを追加します。

これでリグの追加は完了です。

インタラクションを追加する
[Hierarchy]の下で右クリックし、[3D Object -> 作成するオブジェクトのタイプ(Cubeなど)]を選択します。

追加したGameObjectを右クリックして[Interaction SDK -> Add Grab Interaction (グラブインタラクションの追加)]を選択します。

QuickActionsウィザードが表示されます。全てのエラーを修正するため、ウィザードで[Fix All]を選択します。
これにより不足しているコンポーネントやフィールドが必要に応じて追加されます。

[Craete]を実行してグラブインタラクションを追加します。

これでインタラクションの追加は完了です。

このままだとシーンを開始したとき、プレイヤーが落下してしまうので[3D Object -> Plane]で床オブジェクトを追加します。

これでシーンの準備ができました。

プロジェクトをテストする
[File -> Build Settings]を選択して[Add Open Scenes]ボタンをクリックし、シーンを起動する準備をします。

[Build And Run (ビルドして実行)]を実行するか、Linkが接続されている場合は[Play (プレイ)]をクリックして動作を確認します。
