Mixed Reality Toolkit V3.0.0がGAされたので情報を整理した


# Mixed Reality Toolkit V3.0.0 がGAされました。

Mixed Reality ToolkitはXRデバイスに活用できるUnityを中心としたライブラリです。UX部品、イベント制御等XRコンテンツ開発でよく使う機能が提供されています。開発者はこのライブラリを利用することで自身のコンテンツ開発がとても楽になるというものです。

https://github.com/MixedRealityToolkit/MixedRealityToolkit-Unity/releases/tag/v3.0.0

元々はMicrosoft HoloLens向けに開発されていたHoloToolkitと呼ばれるライブラリからスタートし様々な進化を遂げてMRTK3（今のナンバリングだとMRTK V3?）として最新バージョンが整備されていました。それが先日GAされたので、最近の経緯とライブラリの基本的な話を備忘録的に整理しておきました。

1. 過去から現在のMRTKの変遷
1. MRTK V3で提供されているパッケージ（関連するライブラリ含む）
    1. Unityの最低サポートバージョン
    1. パッケージ一覧と機能概要
1. Get Started

## 1.過去から現在のMRTKの変遷

MRTK3については1年以上前、プレリリース版として提供されていました。当時、MRTKの出自やコンセプト、アーキテクチャを整理した記事も書いているので興味のある方は以下も参照してください。

https://qiita.com/miyaura/items/df5947d45cb3b86bbf18#mixed-reality-toolkit-3%E3%81%A8%E3%81%AF

Microsoft Learnには公式ドキュメントもあります。

https://learn.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/mrtk3-overview/?WT.mc_id=WDIT-MVP-5003104

今回は直近のMRTKの経緯を。
MRTKプロジェクトはMicrosoft社で運営されていたOSSプロジェクトの１つなのですが、昨年の大規模なレイオフによってMRTKの開発チームは解散しています。この時点でMRTKはMicrosoft社の運営から離れて有志によるOSSとして活動することになりました。

https://www.moguravr.com/microsoft-mrtk-team-dissolve/

その後も継続した開発はすすんでおり、少し前までプレリリース版としてPre.18がリリースされれていました。
そして先日、Microsoft社,Qualcomm社,Magic Leap社の3社による独立したプロジェクトとしてMixed Reality Tookitプロジェクトが立ち上がりました！そしてそのタイミングとほぼ同時でV3.0.0としてGAされました。

<details><summary>3社の共同運営に関するニュースなど。</summary>

「MRTK」がプロジェクトとして独立、運営にMagic Leapとクアルコム参画へ
https://www.moguravr.com/mrtk-independence-qualcomm-magicleap-join/

Microsoft Mixed Reality Toolkit 3 (MRTK3) moves to an independent organization within GitHub
https://techcommunity.microsoft.com/t5/mixed-reality-blog/microsoft-mixed-reality-toolkit-3-mrtk3-moves-to-an-independent/ba-p/3898941

Magic Leap Joins MRTK Steering Committee alongside Microsoft and Qualcomm Technologies
https://www.magicleap.com/news/magic-leap-joins-mrtk-steering-committee-alongside-microsoft-and-qualcomm

</details>

3社独立したプロジェクトになったことで、各社のノウハウを取り入れる形で今後も発展していくと思います。

### 以前から変更された部分

1社から3社の独立したプロジェクトとなったことから以前のMRTKから少しだけ変更されたところがあります。

* Githubプロジェクト
これまでは、Microsoft社による運営だったのでMicrosoft社のGithub管理下にあったものが変更されています。MRTK3からは以下のGithubリポジトリとなります。なお、これ以外のMRTKV2等は依然と同じプロジェクトでの管理になるようです。参考までに両方の情報を掲載しておきます。

https://github.com/MixedRealityToolkit/MixedRealityToolkit-Unity

https://github.com/microsoft/MixedRealityToolkit-Unity

* パッケージ名や名前空間
パッケージ名や名前空間には社名が入っていたので、これが削除されています。MRTK3をこれまで使っていたプロジェクトについてはライブラリの見直しが必要になります（あまりないとは思いますが）。あくまで名前変更だけですので、それ以外の機能面には影響はありません。

| - | これまで | これから |
|:-:|:-:|:-:|
| パッケージ名  | com.microsoft.mixedrealitytoolkit.XXXX  | org.mixedrealitytoolkit.XXXX  |
| 名前空間  |  Microsoft.MixedReality.Toolkit.XXXX | MixedReality.Toolkit.XXXX  |

## 2. MRTK V3で提供されているパッケージ（関連するライブラリ含む）

MRTK3のライブラリについては基本的な情報です。GA以前から公開されていたPublic Preview版と大きな違いはありません。

### 1. Unityの最低サポートバージョン

MRTK V3.0.0 については最低サポートバージョンはUnity 2021.3.22f1またはそれ以降となっています。

### 2. パッケージ一覧と機能概要

| パッケージ名 | バージョン | 概要 |
|:-:|:-:|:--|
|org.mixedrealitytoolkit.data|1.0.0-pre.18|DataBindingに関するパッケージ。あるデータソースを利用して実行時に動的にコンテンツを生成するための機能です。|
|org.mixedrealitytoolkit.accessibility|1.0.0-pre.18|アクセサビリティに関するパッケージ。オブジェクトの音声読み上げ、テキストの色反転などアクセサビリティに配慮したコンテンツ作成に活用できる機能です。|
|org.mixedrealitytoolkit.audio|3.0.0|オーディオに関するパッケージ。遮蔽物があった場合に音が遮られるなど音を使ったコンテンツ開発に活用できる機能です。|
|org.mixedrealitytoolkit.core|3.0.0|MRTK3の基本的なパッケージ（必須）。MRTKの基本機能が入っています。各サブシステム、イベント制御の基本機能など。|
|org.mixedrealitytoolkit.diagnostics|3.0.0|コンテンツの分析に関するパッケージ。フレームレートやメモリの使用状況などを調査する際に便利な機能が提供されています。|
|org.mixedrealitytoolkit.extendedassets|3.0.0|拡張アセット。MRTKのデモやサンプルで使われているオーディアやフォント、モデルなどが含まれています。|
|org.mixedrealitytoolkit.input|3.0.0|入力系制御に関するパッケージ。Unity XR Interaction ToolkitとMRTKのイベント制御を組み合わせた入力系の機能を提供しています。|
|org.mixedrealitytoolkit.spatialmanipulation|3.0.0|空間操作に関するパッケージ。3Dオブジェクトを操作するための機能です。ハンドトラッキングによるオブジェクトをつかむ、回転、拡大縮小、Gazeに合わせて動くオブジェクトなどの機能が提供されています。|
|org.mixedrealitytoolkit.standardassets|3.0.0|MRTK標準アセットパッケージ。標準で提供されているボタンなどに使われるマテリアルなどを提供。|
|org.mixedrealitytoolkit.tools|3.0.0|開発時に利用するツールに関するパッケージ。現在は独自のサブシステムを構築するために必要な機能が提供されています。|
|org.mixedrealitytoolkit.uxcomponents|3.0.0|UX部品（ボタンなど）に関するパッケージ。こちらのパッケージはUGUIベースのUX部品が提供。MRTK3は配置の容易さからUGUIの機能部品も提供されており、必要に応じてUGUIベースで開発が可能。UGUIでのイベント制御もプロキシを介して通常の3Dオブジェクトと同じようにイベント制御が可能。|
|org.mixedrealitytoolkit.uxcomponents.noncanvas|3.0.0|UX部品（ボタンなど）に関するパッケージ（3Dオブジェクト）。こちらは3Dオブジェクトで構成されたUX部品です。主要な部品はUGUI版と同じ|
|org.mixedrealitytoolkit.uxcore|3.0.0|UX部品の共通パッケージ|
|org.mixedrealitytoolkit.windowsspeech|3.0.0|音声認識に関するパッケージ。名前にある通りWindows用の音声認識機能を提供|

MRTK3プロジェクトとしては移管されていないMRTK関連のプロジェクト

| パッケージ名 | バージョン | 概要 |
|:-:|:-:|:--|
|com.microsoft.mixedreality.adaptivecards.mrtk|3-0.1.0-pre.4|Adaptive Cardsを利用するためのパッケージです。Adaptive Cardsについては[Microsoft Learn - アダプティブ カードの概要](https://learn.microsoft.com/ja-jp/adaptive-cards/?WT.mc_id=WDIT-MVP-5003104)|
|com.microsoft.mrtk.graphicstools.unity|0.5.12|パフォーマンスに配慮しつつ、視覚的効果を上げるための便利な機能が提供。[Microsoft Learn - グラフィックスツールとは - MRTK3](https://learn.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/mrtk3-graphicstools/?WT.mc_id=WDIT-MVP-5003104) |

## 3. Get Started

MRTK3での開発を体験するためには公式ドキュメントとして提供されています。

https://learn.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/mrtk3-overview/getting-started/overview?WT.mc_id=WDIT-MVP-5003104

新規でプロジェクトを生成する手順の公式ドキュメントは以下に公開されています。

https://learn.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/mrtk3-overview/getting-started/setting-up/setup-new-project?WT.mc_id=WDIT-MVP-5003104

大まかな手順は以下の通りです

1. 空プロジェクトの作成
1. Mixed Reality Featureツールによるパッケージのインポート
1. MRTKプロファイルの設定
1. OpenXRの設定
1. 空シーンの作成

以下はいくつかのポイントを紹介します。

### 1. 空プロジェクトの作成

空プロジェクトについては

### 2. Mixed Reality Featureツールによるパッケージのインポート

空プロジェクトを作った後はMRTK3をインポートします。パッケージはgithubに公開されています。自分で必要なパッケージをインポートしてください。ただし、MRTK3は機能毎にパッケージが分かれているのですが、いくつかのパッケージは依存関係があります。

https://github.com/MixedRealityToolkit/MixedRealityToolkit-Unity/releases/tag/v3.0.0

パッケージの依存関係を考慮してパッケージをインポートしたい場合はMixed Reality Feature Toolを利用することができます。現在はPublic Preview版のパッケージも選択できるたけ表示が増えています。インポートする場合は3.0.0の方を選択してください。

| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/61b9546f-6fd5-2bdd-3522-a398acb42a07.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/c672cea7-19b8-0e4f-9177-b9122a6f6c15.png) |
|:-:|:-:|

### 3. MRTKプロファイルの設定

MRTKプロファイルはMRTK3のサブシステム毎の設定を管理するための設定項目になります。特に変更の必要がなければパッケージの中に標準的な設定済みのMRTKプロファイルがあるのでそれを利用することが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/f30a40c1-1d00-5fcf-08b9-7a19967c6176.png)

### 4. OpenXRの設定

OpenXRについてはデプロイ先のデバイスに応じて設定を行います。

* HoloLens 2の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/b7d6872c-be13-af48-b6f8-1e1b553449b4.png)

* Snapdragon Spacesの例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/1b858799-e66c-85ca-2a4c-c75088badf39.png)

### 5. 空シーンの作成

空シーンについてはいくつかのコンポーネントを追加するだけで利用可能になります。新規でシーンを作成し[Main Camera]を削除します。その後Projectパネルから[MRTK XR Rig]をパッケージの中から検索し、PrefabをHierarchyにコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/05be4656-8c3b-52f3-cdb6-fa0411d198a9.png)

Unity Editor上でデバッグ実行する際に、キーボードでハンドトラッキングをシミュレーションしたい場合は、[MRTK XR Rig]と同様の手順で[MRTK Input Simulator]を追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/77e262cd-79fc-03ab-bcb2-8042e9b51d26.png)

## まとめ

MRTK3がGAされたので最近のMixed Reality Toolkitの状況を整理しました。
１社から3社独立のプロジェクトになったことでクロスプラットフォーム開発もより加速する予感がします。今後はGAもされたので便利な機能について調査した内容も共有していきたいと思います。