はじめに
少し前に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
を追加します。
これで実行してみます。
無事に最初の青キューブと追加したシリンダーを持つことができました。
今回はここまで。次回はパススルーなどやっていきます。