はじめに
少し前にSteamVR Pluginを使ってVRアプリを開発していた経験がありますが、今はOpenXRが標準となり、Metaも独自SDKの開発にかなり力を入れていたりと、XRアプリ開発においては必須知識が増えつつあります。
しかし私はまったくその辺の知識がないので、手探りしつつ備忘録も兼ねてまとめていくのでみなさんの参考になれば幸いです。
注意
Meta Questが必要です。
1. プロジェクトの作成
Unityのバージョンは将来も見据えてUnity 6にしました。
Coreは普通のUniversal 3Dにしましょう。

2. Meta XR All-in-One SDKのインストール
2.1 インストール
初めての方はここらからアクセスしてMy Assetsに追加しましょう。
追加したら、Unityに戻って、Package Managerを開いて、
インストールが終わると再起動を求められるので、そのまま再起動しましょう。
無事にできていれば左上のタブ欄Meta XR Toolsタブが追加されています。
2.2 エラー解消処理
このままだといろいろエラーが出てしまうので、Project Setup Toolを開いて、
Fix AllとApply Allを押してエラーを解消します。
注意
画像ではPCアイコンの部分でのみFix Allを押していますが、その右側にあるアンドロイドとMetaアイコンの部分についても同様に選択してFix Allすることを強くお勧めします。
これを治さずに発生したバグで筆者は数時間溶かしました。。。。
Fix ALlを押しても解決しないやつがあると思います。これは内容に書いてある通り、OpenXR Pluginが入ってないからです。
同じProject Settingsウィンドウの一番下にあるXR Plugin Managementを選択して、インストールします。
インストールが終わったら、3つのチェックボタンが出てくるので、Open XRにチェックを入れましょう。
そのままYesを選択。
するとProject Validationが開くと思うので、こちらも同様にFix Allを押します。こちら処理にすこし時間がかかるのでちょっと待ちましょう。
無事にエラーがなくなりました。
注意
こちらも同様に、右側にあるアンドロイドとMetaアイコンの部分を選択してエラーがないことを確認してください。
先ほどのMeta XRに戻るとこちらもエラーが解消されているはずです。
3. Building Blocksの配置
Meta XR SDKの特徴として、主要機能をモジュール感覚で追加できることです。
Building Blocksを押すと、ウィンドウが開きます。
Coreを選択しましょう。
なんといってもまずは動作確認。なのでCamera Rigブロックを追加してHMDでUnityの世界を見られるようにしましょう。
ブロックをヒエラルキーにドラッグ&ドロップしても追加できますし、そのまま選択してSelect Blockを押しても追加できます。
追加したらこんな感じ。
4. 実際にMeta Quest3で確認してみよう
これで最低限の環境は整ったので、実際にQuest3で確認してみましょう。
4.1 Meta Quest Linkアプリの導入
PCとQuestの通信方法ですが、自分はAir Linkを使って無線で接続しています。
有線であろうが、無線のAir LinkであろうがPCにMeta Quest Linkアプリをインストールする必要があります。
公式の解説ページがあるのでこちらを参照してみてください。
ちなみに、デバイスを追加するフェーズでQuestをなかなか認識してくれないことがあると思いますが、そのときはMeta Quest Linkアプリを再インストールすると認識してくれるようになると思います。(これが一向によくならないのがQuestアプリ)
4.2 接続
Meta Quest Linkアプリの設定が終わったと仮定して次に進みます。
Quest本体を起動して、メニューバー?の左下にあるバッテリーや時間が表示されているボタンを押すとクイック設定が開くのでLinkを選択します。
無線のAir Linkの場合はAir Linkを使用トグルをオンにします。
有線接続の場合はオフのままでいいです。
事前に、Meta Quest Linkアプリで設定が完了していれば自分のPCが検出されるはずです。
起動するとこのような画面になります。
ここまでくればUnityとQuestの接続設定は完了です。
Unityに戻って、Playボタンを押して実行します。
QuestのほうにUnityのGameの画面が表示されていれば成功です。
5. カメラリグのもろもろ設定
今のヒエラルキーには、プロジェクト作成時に最初からある3つと、先ほど追加したQuest用のCamera Rigがある状態です。
Questに映像を出力しているカメラは、先ほど追加した[BuildingBolock] Camera Rigで、最初から存在しているMain Cameraはもう使われていないので、消しましょう。
気になるUnity内でのこのQuestの座標ですが、[BuildingBlock] Camera Rigのインスペクターを見てみると、初期のTracking Origin TypeはFloor Levelが選択されています。

これは、実行したときのQuestの位置がXとYの原点となり、高さのYはガーディアンの床の高さを引き継いでくれるようです。基本的にこのTracking Origin Typeを変更することはないと思います。

引用:https://www.docswell.com/s/Ovjang/ZP9V6X-MetaXRSDK66/65
6. ハンドトラッキングの導入
Metaのハンドトラッキングは優秀なので使わない手はありません。
Camera Rig追加時と同様に、Building Blocksを選択してHand Trackingを追加しましょう。
すると、Camera Rigの親オブジェクトの中の子オブジェクトとしてHand Tracking leftとrightが追加されました。
このまま実行すると、自分の手をトラッキングしたオブジェクトが描画されます。簡単ですね。
7. オブジェクトをつかむ
ハンドトラッキングができるようになったので、実際にUnity内のオブジェクトをつかんでみましょう。
今度はInteractionを選択して、Grab Interactionを追加します。このとき、必須ブロックであるInteractions Rigも同時に追加されます。
ヒエラルキーには新たに3つのオブジェクトが追加されました。
このまま実行してみましょう。
床にブロックがあるので実際につかんで動かしてみましょう。
7.1 任意のオブジェクトを掴めるようにする
この触れるブロックは少し特殊で、このオブジェクトにはHandGrabInstallationRoutineという謎の子オブジェクトがついています。
この子オブジェクト選択してインスペクターを見てみると、Meta XR SDKオリジナルのスクリプトがついていることがわかります。つまりこれがないとハンドトラッキングでさわることがないということでしょうか。
いろいろ調べていると、
掴めるようにしたいオブジェクトに対して、
- Rigidbody
- Grabbable
- Physics Grabbable
- Hand Grab Interactable
すべてを追加する必要があるようです。
参考ページ
今回は例としてシリンダーを掴めるようにしてみます。
3Dオブジェクトはヒエラルキーの場所で右クリックしてメニューを開いて追加します。
このままだとバカでかいサイズなので、x,y,zそれぞれのスケールを0.1にします。
続いて、掴めるようにコンポーネントを追加します。
Add Componentpを押してRigidbodyを検索して追加します。
今回は床を設置してないので、Is Kinematicにチェックを入れて、離したときに飛んでいかないようにしましょう。
次にGrabbableを追加します。これは設定そのままでいいです。これは絶対必須のコンポーネントだそう。
Physics Grabbableを追加します。これも設定そのまま。これを追加しないと離したときにおかしな挙動をするそう。
これはなくても問題なかったので、もしかしたら不要かもしれません。
最後にHand Grab Interactableを追加します。
これで実行してみます。
無事に最初の青キューブと追加したシリンダーを持つことができました。
今回はここまで。次回はパススルーなどやっていきます。









































