本記事はNTTコノキュー アドベントカレンダー2024の記事になります。
はじめに
みなさんはもうMiRZA(ミルザ)を体験しましたか?
MiRZAとは、2024年10月16日に発売開始された、NTTコノキューデバイス社が自社開発したXRグラスです。 NTTコノキューデバイスは、NTTコノキューとシャープの合弁会社で、なんと日本製のXRグラスです!
XRに関わってついに(?)自社のデバイスが出るって驚きです。大学でOculus Rift DK2に驚いてから、まさかこんなことになるなんて・・・
ということで、しばらくはMiRZA関連の記事を量産していこうと思います!!!
MiRZA(ミルザ)とは
Snapdragon Spaces Technologyを採用した眼鏡型のXRグラスです。
https://www.devices.nttqonoq.com/mirza
スマートフォンとグラスを接続するタイプのデバイスで、アプリの実行はAndroidスマホ側で行われます。グラス側はセンサ・ディスプレイを持っているという形です。

無線接続がスゴイ
XRデバイスはウェアラブルデバイスの特性上、サイズと重量+マシンスペックのバランスを如何に取っていくか?がキモです。
その中で、現時点の技術ではかなり理想的な形式を実現しているのが、このMiRZAだと捉えています。
MiRZAはSpacesを採用しているので、アプリケーションの実行環境はスマートフォンになります。 そして、Qualcommの最新チップセット「Snapdragon® AR2 Gen1」を採用しているため、スマホとグラスとの接続は無線で行われます。

一般的に「AR/MR/VRデバイス」として認知されるデバイスは、MetaQuestやHoloLens2などのHMDだと思います。これらは、デバイスの扱いやすさを重視し、スタンドアローン型となっています。
デバイスが1つになっていることで扱いやすさは非常に優れています(VRといえばPC接続必須だった2016年ごろを思い出すと隔世の感)。
しかしその分、頭部への負担が大きく、ディスプレイ部が重くて動くとデバイスがズレたり、ズレないように頭にがっちり固定するので髪の毛がぐしゃぐしゃになったりします。日常的な利用というより、「やるぞ!」と気合を入れて使うものになってしまいます。

https://www.meta.com/jp/quest/quest-3/
https://www.microsoft.com/ja-jp/hololens/buy
そういう時代を経て、HMD部分の大幅な軽量化のアプローチとして、コントローラ(時には専用デバイス、時にはスマホ)と眼鏡型デバイスを接続する方式があります。
ただし、この接続は有線のものがまだまだ主流で、
- XREAL, Rokidなどのビックカメラで売ってるようなデバイス
- MOVERIOのような法人向けのデバイス
- (コントローラと処理部が別だけど)Magic Leap

https://www.magicleap.io/ja-jp/
https://www.xreal.com/jp/beampro
など、様々な種類が存在します。
これらは有線なので、ケーブルが引っ張ってグラスがズレたり、そもそもケーブルが引っかかってしまう可能性があります。
そんな中でのスマホとグラスの無線接続デバイスになるので、使い勝手面では非常に優れています。
機能がスゴイ
けどこんなに軽量化すると、使える機能も大幅に制限されるのでは?というのが課題です。 事実、(ターゲット・価格が異なるので当然ですが)XREAL, Rokidなどの最新型のARグラスは、基本的にはセンサやRGBカメラはグラスには搭載されておらず、「大画面でアプリをミラーリング出来る」ことが一番の提供価値になっています。
しかし、MiRZAはSpacesを採用しているので、MR(ここでは一応XREALなどの体験をARとして、あえて区別するために使い分けます)の体験できます。 具体的には、MRTKが使えます。アイトラッキング用のセンサは搭載されていないためアイトラッキングは出来ませんが、それ以外は基本的にHoloLens2/MagicLeapと同様の機能を利用することが可能です。 空間認識、ハンドジェスチャをアプリケーションに組み込むことができます。
本題
それでは、今回の記事ではMiRZAでのMRTKアプリ開発についてまとめます!
必要な環境
- Unity ※今回の記事はUnityでの開発になります
- Widows PC
筆者の環境
- Unity 2022.3.19f1
- PC(Alienware x14) Windows 11 23H2 22631.4460
- スマートフォン(AQUOS R9)
- MiRZA
全体の流れ
- UnityでSpaces環境を構築
- UnityでMRTK3環境を構築
- MRTK3 Sampleを使う
1. UnityでSpaces環境を構築
NTTコノキューよりMiRZAの公式開発ドキュメントを提供しております。
以下の手順に従って進めます。
https://www.devices.nttqonoq.com/developer/doc/setup/setup-guide
もちろんSpacesの環境構築なので、Qualcomm公式のドキュメントを参照してもOKです。
https://docs.spaces.qualcomm.com/unity/setup/setup-guide
※Spacesは様々なデバイスに対応しているプラットフォームなので、一部MiRZAが対応していない場合などがあります。よって、Qualcomm公式のドキュメントを参照して進めた場合に何か問題があれば、NTTコノキュー公式ドキュメントをご参照ください。 解決しない場合はお問合せで項目から「対応ソフトウェア開発関連」を選択し、ご連絡ください。

なお、Spaces公式サイトからDiscordにも参加ができますが、

MiRZAチャンネルが出来たのでこちらでも質問が出来ます。

2. UnityでMRTK3環境を構築
MRTKとは
(公式より引用)
MRTK3 は、Unity 用 Microsoft Mixed Reality ツールキットの第 3 世代です。 これは、Unity でのクロスプラットフォーム Mixed Reality 開発を促進するための Microsoft 主導のオープンソース プロジェクトです。
https://learn.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/mrtk3-overview/
HoloLens2などMicrosoft社のデバイスを中心に使われているフレームワークです。Microsoft社が開発・提供しておりますが、その汎用性からMagicLeapやQuestなど、様々なXRデバイスが対応しています。 HoloLens2を中心にもっとも使われているのは「MRTK2」ですが、最新版の「MRTK3」が2022年ごろに登場し、現在は「MRTK3」が主流になっています。 そして、2023年に運営委員会にMagicLeap社とクアルコム(Qualcomm technologies)社が加わり、Microsoft社の手から離れています。
https://www.moguravr.com/mrtk-independence-qualcomm-magicleap-join/
そういう経緯もあり(順番は前後してますが)、SpacesでもMRTKが公式対応しています。GithubリポジトリのコントリビューターもQualcomm社の方などが関わっています。
ということで
こちらもNTTコノキューのドキュメントを参照ください。

ゼロからプロジェクトを作成して進める場合は
の順番で進めます。 なお、私はMRTK3の手のプレハブを使用する場合の方で進めました。
新規プロジェクトの使用は手間、、、という場合は、MRTK3のサンプルからセットアップでも良いです。
私の環境ではバージョンはv1.0.2209.0 Previewでした。

注意
AndroidのAPI Levelは29以上に設定する必要があります。 私の環境ではデフォルトで22だったため、修正しました。 「Build Settings」>「Player Settings」>「Player」>「Androidマークのタブ」>「Other Setting」
「Other Settings」の中から「Identification」>「Minimum API Level」でSDKのバージョンを選択します。
3. MRTK3 Sampleを使う
1, 2を踏まえて環境構築が出来たので、サンプルを使ってみたいと思います。
MRTK3のサンプルをそのまま使います。 左手をコントローラ、右手をハンドトラッキングとして、サンプルシーンの操作をコントローラと手で行えるようにします。
まず使うSceneの選定です。今回はHandInteractionExamples, HandMenuExamplesを使います。

それぞれのSceneでこちらの通りSpacesの設定、コントローラの設定を行ったら、 ハンドトラッキングのセットアップを行います。 MRTKの設定は最終的に、
- 「MRTK Hands Aggregator Subsystem」と「Subsystem of OpenXR Hands API」のチェックボックスが両方とも有効になっている
- 「Microsoft Hand Tracking(これは隣に「?」マークが付いているもので、Microsoft版)」のチェックボックスだけを有効にして、他のHand Trackingのチェックボックスを無効にする
これでOKです。

手の可視化はお好みで、私はMRTKのままで進めました。
公式ドキュメントにも記載のとおり、MiRZAでのアプリ起動の場合y軸が合っていない場合があります。 そのため、HandInteractionExamplesの方は、y軸を0.5に変更しました。

HandMenuExamplesのContentは全てハンドトラッキングで動かせるため、上記対応は不要です。
シミュレータでハンドトラッキングの確認を行うため、ProjectSettings>XR Plug-in Management>Hand Tracking Simulation にて、Enableにチェック。

Unity上で実行し、ハンドトラッキングがシミュレートします。 ハンドトラッキングはUnity上で実行する際にスペースキー押下で表示ができます。表示されているコンテンツのクリックなどもシミュレータ上で実行可能です。


あとは2つのSceneを追加し、ビルドします。

MiRZA上で実行し、無事完了です。
グラス側での見え方は・・・無理やり撮影しました。MRTKのコンテンツが表示されていることがわかると思います。


スマートフォン側はSpacesのコントローラーが表示されます。

最後に
MiRZAでMRTKを使ってみました。HoloLens2やQuestにも対応しているフレームワークなので、今まで使っていた方はMiRZAへのコンテンツ移植もハードルが低くなると思います。 MRTK/Spacesを使っていた方は、ぜひMiRZA開発をご検討ください!
なお、私の方で企画・開発している作業支援ソリューション「NTT XR Real Support」(https://www.nttqonoq.com/service/real-support/)はMiRZA発売と同時に対応しております!
MiRZAで使える世界初の作業支援ソリューションですので、こちらも興味ある方はぜひお声がけください。 MiRZA購入者は、最大2週間の無料お試しも可能です。