MRTK3とQuest3でフルカラーパススルーを実現する


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の設定は特に問題ないと思いますが、下記ドキュメントに従って反映させておきます。

https://docs.unity3d.com/ja/Packages/com.unity.render-pipelines.universal@14.0/manual/InstallURPIntoAProject.html

続いて、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でパススルーして色々遊ぶベースにはなるものができたと思います。

ところでこれ、頭振るとハンドレイが左右にふらふらするんだけれど、どなたかこの解消方法知りませんか?


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です