MRTK3とQuest3で、フルカラーパススルーを実現する方法です。
開発環境
いつものように、開発環境です。
- Windows11 Pro 23H2
- Unity 2022.3.13f1
- MRTK3
開発
準備
まずは普通にプロジェクトを作成しましょう。
テンプレートから3Dの空のプロジェクトを作成します。
はい、なんの変哲もない、空のプロジェクトです。
ここにMRTK3を導入していきます。
基本的にはMRTK3のドキュメントに従って行けば良いですが、注意点として、Oculus Integration、または、Meta XR SDK をUPMやストアから導入してはいけません。(MRTK3のドキュメントにも記載があります)
導入には、Mixed Reality Feature Tool (以下 MRFT) を使います。
下記ドキュメントから飛ぶと良いでしょう。
https://learn.microsoft.com/ja-jp/windows/mixed-reality/develop/unity/welcome-to-mr-feature-tool
MRFTでは、とりあえず使いそうなものを入れておきます。
あとから追加も可能なので、特に気にしなくて大丈夫です。
ここでUnityの再起動が入ります。
ついでに、確認用にキューブを置いておきましょう。
MRTK XR Rig というものが、Oculus Integration でいう、OVR Camera Rig です。
カメラと両手等のコンポーネントが付いています。
キューブは、(z, y, z) = (0, 1, 3) あたりにとりあえず置いています。
Unityの1は1mなので、3m先にあると遠いのですが、一旦仮です。
また、Quest3にビルドするので、ここで Android に Switch Platform しておきましょう。
Project Settings の中に、MRTK3 の項目ができていて、何やら赤くなっているので Assign MRTK Default のボタンを押してデフォルト設定にしておきます。
パススルー準備
続いてパススルーの準備です。
パススルーは、OpenXR の方で実現します。
UPMから、Unity OpenXR Meta と、Universal Render Pipeline も入れておきます。
URPの設定は特に問題ないと思いますが、下記ドキュメントに従って反映させておきます。
続いて、Project Settings の XR Plug-in Management のところで、OpenXR と、Meta Quest feature group にチェックを入れます。
何やら赤いマークが出ていますね。これをクリックすると、Project Validation のページへと飛びます。ここに出ているすべてのエラーを解消します。 Fix All のボタンを押してしまって良いです。
2つの外部パッケージを入れるようにメッセージが出ていますので、メッセージに従ってUPMから導入します。UPM の git で導入して行けば良いです。
一応パッケージのリポジトリのリンクを張っておきます。
- https://github.com/atteneder/KtxUnity
- https://github.com/atteneder/glTFast
いれたら再度 Project Validation の警告を消していきます。
Fix All して、残っているものをメッセージに従って、一つずつ消していきます。
私の環境でgITFだけ警告が残ってしまいましたが、入れてたら無視してね、と書いてあるので無視します。
最終的にこのようになるはずです。
さて、この記事を書いている人はポンコツなので、この時点で OpenXR の Hand API が無いことに気が付きます。
上部の警告マークに、不足しているものが色々と書いてあるのですが、音声認識等の機能は不要なので、Hand API 用のパッケージだけを入れます。再度 MRFT を起動して導入します。以下のパッケージを入れ忘れたようです。
- Mixed Reality OpenXR Plugin
- MRTK Input
これで無事 Subsystem for OpenXR Hand API が選択できるようになりました。
パススルー実装
実装とは書いたものの、コードは書きません。
MRTK XR Rig – Camera Offset – Main Camera
の、Main Camera に、AR Camera Background というコンポーネントを貼り付けます。
ここまでやったら一旦ビルドしてみます。
スカイボックスが表示されているのと、ハンドが有効になっていないのが確認できると思います。
まず、パススルーから対応していきます。
Main Camera の Camera Setting Manager の Opaque Display に設定されているスカイボックスが表示されているので、ここを Solid Color にします。
アルファ値が255になっていると思うので、0にしておきます。
次に、XR Plug-in Management の、OpenXR のページにある、Hand Tracking のチェックを忘れているので、そこにチェックを入れます。
これで再度ビルドを焼いてみましょう。
はい、MRTK3とフルカラーパススルー + ハンドレイ が実現できていますね。
まとめ
今回、最低限の表示しかしていませんが、MRTK3 + Quest3でパススルーして色々遊ぶベースにはなるものができたと思います。
ところでこれ、頭振るとハンドレイが左右にふらふらするんだけれど、どなたかこの解消方法知りませんか?