Mixed Reality Toolkit V2.6.0のリリースノート（2021.02.06時点)

# 早くもMRTK v2.6.0のリリースノートが更新

リリース時期は実は過ぎてるっぽいんですがMRTK V2.6.0のリリースノートがdevブランチに上がっていたので一通りチェックして確認してみました。
多くの機能強化が行われているわけではないのですが「Reading Mode」という少し特殊な機能が入るようです。

## MRTK 導入の注意事項

ARM64アーキテクチャーでHoloLens 2用のUWPを作成する場合、Visual Studio 2019のバージョンによってコンパイラ問題がありうまく動作しません。解決策としてはVisual Studio 2019をVersion 16.8以降にアップロードするか、「com.microsoft.mixedreality.toolkit.tools」を導入して回避コードが実行されるようにプロジェクトを構成する必要があります。

## 主な新機能

### Add support for OpenXR

OpenXRに対応。現時点ではX64 or ARM64のみ対応でUnity 2020.2以降が必須。
参考サイト

* [the MRTK/XRSDK getting started page](https://microsoft.github.io/MixedRealityToolkit-Unity/version/mrtk_development/Documentation/GettingStartedWithMRTKAndXRSDK.html)
* [Unity's forum post](https://forum.unity.com/threads/unity-support-for-openxr-in-preview.1023613/)
* [Microsoft's documentation](https://aka.ms/openxr-unity-install)


### HP Motion Controllers now supported with MRTK

HP Reverb G2用のモーションコントローラーにネイティブ対応

### Teleportation with the teleport gesture now supported on all platforms

全てのプラットフォームでテレポートジェスチャーによる移動が可能に。
主にOculus Quest 2などVR系で使う仕組みですね。
![HandTeleport.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/bf79ed4b-8dfa-c1de-ff84-9cfa7c23d743.gif)

### Directional Indicator and Follow Solvers Graduated from Experimental

試験的機能だったSolverのバリエーションDirectional IndicatorとFollow が正式にサポート。Directional Indicatorは視野外に出たオブジェクトの方向を指し示すSolverです。見落としがちな視野外のオブジェクトをユーザに見せるために必要な機能です。FollowはHoloLens 2でアプリケーションのウィンドウを視野内に追従する操作をMRTKでも使えるようにしたものです。Radial Viewとほぼ同じ機能ではあるんですが、視野角内で追従するオブジェクトを作ることができます。Radial Viewと大きく異なるのは視野の水平方向と垂直方向の動きを別々制限できるので、「垂直方向はあまり動かずに水平方向だ追従」といったことが可能になります。

### Input Recording Service improvements

MRTKにはハントトラッキング等のオペレーションをレコーディングして再生するための機能が提供されています。レコーディング用のサービス[InputRecordingService],再生用のサービス[InputPlaybackService]となっています。
このレコーディングはあるフォーマットに従って記録されるのですがそれのフォーマットが変更になったとのことです。詳細は[サイト](https://microsoft.github.io/MixedRealityToolkit-Unity/version/mrtk_development/Documentation/InputSimulation/InputAnimationFileFormat.html)に記載されていますが、記録される操作に「カメラ位置」「ハンドトラッキング」「アイゲイズ」が含まれているのですが、これらのデータが存在するかを示すためのbooleanのパラメータが追加されています。

### Reading mode

今回のレベルアップで追加される機能ではこれが大きな追加になると思います。Reading Modeの追加です。HoloLens 2向けの機能で視野分解能を調整することができる機能です。Hololens 2の描画エリアについてはディスプレイの描画領域に合わせてコンテンツを出力していますが内部的には射影行列を持っていて、HoloLens 2の視野角いっぱいにコンテンツが表示できるように調整されているようです。Reading Modeはこの射影行列を変更することで、視野角分解能を調整し、見た目の解像度を調整する機能となっているようです。

[公式ドキュメント](https://docs.microsoft.com/ja-jp/hololens/hololens2-display#hololens-2-%E3%81%AE%E7%94%BB%E8%B3%AA%E5%90%91%E4%B8%8A%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AB%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E6%94%B9%E5%96%84%E3%81%8C%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8B)にも記載がありますが平たく言うと、視野角を犠牲にしてディスプレイの高解像度化が行えるというもの。
実際に機能をOn/Offにした場合の見え方の違いを画像で取った結果です。Readming ModeをOnにすると文字が少しシャープに見えます。特に「M」の字を見てもらうとわかりやすいかともうのですが、斜めの線のエッジ部分がかなり違ってみると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/3792c5a2-a973-3183-8399-e74f1e0bd1fe.png)

[プルリクエスト](https://github.com/microsoft/MixedRealityToolkit-Unity/pull/8808)の内容を見る限りでは通常HoloLens 2が持ってる平均33ピクセル/度という解像度を視野角30%犠牲にして平均66ピクセル/度程度まで上げることでテキストの描画品質を向上させるための機能のようです。
この機能自体は常用するためのものではなく、必要に応じて（おそらく細かい部分を確認する等）で切り替える使い方をするとのこと。
現時点での注意事項としてはこの機能を有効にするためにはStereo RenderingをMulti Passにする必要があるというものです。ただし、これ自体はバグだという記載があるのでのちに改善はされると思います。

### Support for 3D app launchers on UWP

UWPの3Dランチャーの設定ができるように。HoloLensでは一度起動したアプリは空間にウインドウや3Dオブジェクトで表示されます。再開する時はそれぞれのオブジェクトを操作して復帰することが可能です。通常はウィンドウが出るだけですが設定を行えば3Dオブジェクトで表示することができていました。（詳細は以下のリンク先参照）。

* [Create 3D models for use in the home](https://docs.microsoft.com/ja-jp/windows/mixed-reality/distribute/creating-3d-models-for-use-in-the-windows-mixed-reality-home)
* [Creating 3D Icons for your Mixed Reality UWP app](https://winplatform.wordpress.com/2017/09/06/creating-3d-icons-for-your-mixed-reality-uwp-app/)
* [3Dモデルランチャが作れるようになった](https://www.tattichan.work/entry/2017/10/23/3D%E3%83%A2%E3%83%87%E3%83%AB%E3%83%A9%E3%83%B3%E3%83%81%E3%83%A3%E3%81%8C%E4%BD%9C%E3%82%8C%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F)
* [HoloLensで3D app launcherをアニメーションする](https://www.tattichan.work/entry/animated3dapp)

今回の修正で3Dランチャーを容易に導入できる形になりました。設定は[Project Settings]-[Mixed Reality Toolkit]-[Build Settings]の中にあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/e024bd62-d4c9-5f13-a2f8-9abaf0c64203.png)




## 破壊的アップデート


### Certain fields of imported GLTF objects are now capitalized
デシリアライズ関連の問題により、インポートされたGLTFオブジェクトのいくつかのフィールドが大文字で始まるようになりました。影響を受けるフィールドは以下の通りです。

* ComponentType
* Path
* Interpolation
* Target
* Type
* Mode
* MagFilter
* MinFilter
* WrapS
* WrapT.

### Input animation binary file has an updated version 1.1 format

上記の機能の中にもあったレコーディング機能のフォーマットが変わったという話。

### MSBuild for Unity support

UnityのMSBuildのサポートが削除(v2.5.2 以降)

## 既知のバグ

### OpenXR

Holographic Remoting と OpenXR には、ハンドジョイントが利用できない。アイトラッキングは動作しますが、アイトラッキングのサンプルシーンは現在互換性がない。XR セッションが確立される前にエディタで呼び出された場合、いくつかの OpenXR API が DllNotFound 例外を返すという問題もある。

### Some Mixed Reality Toolkit Standard Shader features require the Foundation package

Unity package managerでインポートすると、MRTK標準シェーダスクリプト(例: HoverLight.cs)がStandard Assetsパッケージ内のシェーダとは共存しない。この機能を利用するには、Foundationパッケージをインポートする必要があります。

### CameraCache may create a new camera on shutdown

Unity EditorでLeapMotionプロバイダを使用している場合など特定条件で、シャットダウン時にCameraCacheがMainCameraを再作成することがある。詳細については、[こちら](https://github.com/microsoft/MixedRealityToolkit-Unity/issues/8459)

### FileNotFoundException when examples are imported via Unity Package Manager
プロジェクトのパスの長さによっては、Unity package manager経由でサンプルをインポートすると、FileNotFoundException メッセージが発生することがあります。原因はいつものパスの長さなので、プロジェクトパスの長さを短くして対処。
### No spatializer was specified. The application will not support Spatial Sound
空間サウンドに関連する設定がされていない場合、"No spatializer was specified "という警告が表示されます。空間サウンドを使用する必要がない場合はこの設定をしていないことが多いため警告で表示されます。解決方法は何か選択するというものです。

### NullReferenceException: Object reference not set to an instance of an object (SceneTransitionService.Initializ

EyeTrackingDemo-00-RootScene を開くと、SceneTransitionService クラスの Initialize メソッドで NullReferenceException が発生することがあります。このエラーは、Scene Transition Service の設定プロファイルがアンセットされていることが原因です。解決するには、以下の手順を使用してください。

### Oculus Quest
現在、スタンドアロンプラットフォームをターゲットにした場合にOculus XRプラグインを使用する際に既知の問題があり。アップデートについては Oculus バグトラッカー/フォーラム/リリースノートをチェックしてください。

### UnityUI and TextMeshPro
TextMeshProの新しいバージョン(1.5.0+または2.1.1+)では、ドロップダウンのデフォルトのフォントサイズと太字の文字間隔が変更されるという既知の問題が発生