Realityエクスペリエンスを構築するための基本的なコンポーネントや、共通のインタラクションや、UIコントロールを共有するオープンソースプロジェクトです。Toolkit(MRTK)の開発者であるYoon氏による説明記事の書き出しを引用させていただきました。基本機能の説明が網羅されている上、日本語化もされており、とても読みやすい内容になっています。MRTKは元々HoloToolKit(HTK)と呼ばれるHololens用のSDKからスタートしています。その後、WinMRへの対応が加えられたことで現在のMRTKの基盤が作られました。現在はそれをブラッシュアップしたSDKがMRTKv2として提供されています。(※以後本記事ではMRTKはMRTKv2を指すこととします)MRTKを採用するメリットとしてMRデバイス要素(入力、UI、インタラクション)の共通化に加え、VR/ARといったMRに限らないXRデバイスの抽象化という側面が挙げられます。現状のXRデバイスには独自のプラットフォームに対応したSDKがそれぞれ存在し、実装する側は適切なSDKを入手しアプリに組み込む必要があります。Integration、ARCore、ARKitなどが挙げられます。単一のプラットフォームを対象にしたアプリを作る場合であれば問題ありませんが、複数のプラットフォームを対象とする場合、開発者側で各環境ごとに適切なSDKを利用するように実装を行う必要があるため都合が悪くなってきます。それを解決するための取り組みとしてKhronosにより業界全体を巻き込むOpenXRが推進されるなど、増えていくデバイスをどのように抽象化し生産性を高めるかは現在のXR開発においてとても大きなポイントとなっています。今後MRTKを採用することはこの問題に対する1つの解決策になっていくかもしれません。MRTKはオープンソースプロジェクトとなっているため、GitHubにて誰でも実装や議論の流れを追うことができます。https://github.com/microsoft/MixedRealityToolkit-Unity開発段階のブランチもコミットされているため、それらをプルすればまだリリースされていない機能を試せますし、実装中に見つけたバグや困った点はIssueを作り対応を求めたりすることができます。実際に使ってみる「ボタンを押したら、テキストを変更する」というシンプルなアプリを作りながらMRTKの挙動を確認していきたいと思います。Configure」を選択します。よって作成されたScriptableObjectが一覧で表示されます。介して、シーンと結び付けることで挙動の変更を行います。この操作を行なうと開いているシーンのヒエラルキーが以下のように変更されると思います。このシーンにMRTKが提供しているボタンのプレハブをシーンに設置します。Projectで「Button」と検索すると、同名のプレハブが見つかると思うのでそれをシーンに持ってきます。ボタンにイベントを登録ボタンにイベントを登録したいと思います。以下のようなテキストに更新を行なうスクリプトを用意して、ボタンにアタッチします。これでアプリは完成です。UnityEditorで実行UnityEditorで動かしてみましょう。このようにMRTKが指の操作をエミュレートしてくれて、ボタンを押したときにログが出力されているのがわかります。次にこのアプリを実機ビルドしたいと思います。MRTKを駆使して作ったアプリなので様々なXRデバイスでそのまま動いてほしいところです。(OpenVR)こちらも無事動きました。やったことはOpenVRのSDKをXRSettingで追加したぐらいです。(ARFoundation)こちらも無事動きました。ARはデフォルトのサポートに含まれていなかったので、いくつかの追加対応を行う必要がありました。対応を行ったのは以下のポイントです。カメラ設定タップイベントの取得部分カメラには以下のように変更を加えます。最終的には以下のようになっていれば大丈夫です。ARFoundationのカメラをインポートして、そのカメラにMRTKの設定を追加したという流れになります。タップイベントの取得は以下のように変更を加えます。最終的には以下のようになっていれば大丈夫です。実装しているクラスのみが受け取れるイベントとなっています。追加でアタッチする必要がありました。ある操作がどのようなイベントを発行するかは各種コントローラーのクラスを追うことで確認できます。以下のようなスクリプトをシーンに配置して想定するイベントが実際に発行されているのか確認してみるのもよいかと思います。v2.0.0ではプラットフォームをAndroidにするとエディタでのみMRTKStandardShaderが上手く動作せずピンクになってしまいます。これは以下の方法で抑制することができるようです。5.0#endifhttps://github.com/microsoft/MixedRealityToolkit-Unity/issues/2517おわりに今回はMRTKを簡単に使ってみるという内容でした。個人的には単純なアプリとはいえ、XRデバイス間の移植がわずかな手間で行えたことにとても手応えを感じました。MRTKにはまだまだ便利な機能や抽象化のための工夫が揃っており、今後また新たな情報を共有できればと思います。切り替えを試してみた。Norén%d人のブロガーが「いいね」をつけました。