【 MRTK 】 Diagnostics System (診断システム) のプロパティについて

# はじめに
Mixed Reality Toolkit for Unity ( 以下、MRTK ) を使った開発をしている方であれば、必ずどこから設定するのか調べるであろう Diagnostics System ( 診断システム ) について、個人的に調査した内容を備忘録として残しておきます。

# Diagnostics System ってなに？
MixedReality Toolkit  Profile ( プロファイル ) から設定可能なプラグイン診断機能です。プロジェクトの実行中に診断を行うシステムが用意されています。

一番身近な例で言うと、[Visual Profiler](https://docs.microsoft.com/en-us/windows/mixed-reality/mrtk-unity/features/diagnostics/using-visual-profiler?view=mrtkunity-2021-05#frame-rate) ( 下図 ) が診断システムの一部の機能です。

<img width="600" alt="Visual Profile" src="https://img.esa.io/uploads/production/attachments/3505/2021/07/01/10862/9bbaeed4-9bab-4e4d-9d6a-f89a23cde27e.png">

Visual Profiler に表示されている情報について整理してみたいと思います。

| 項目 | 解説 |
| --- | --- |
| __Frame Rate__ <br/> ( フレームレート ) | フレームレートの単位は fps ( frame per second ) です。1秒間あたりのフレーム数です。HoloLens では 60 fps が最適とされています。 |
| __Frame Time__ <br/> ( フレーム時間 )  |  1フレームを処理するためにCPUで費やした時間 ( ms : ミリ秒単位 )<br/> 目標フレームレート : 60 fps を達成するためには、フレーム時間 16.6 ms を実現する必要があります。  |
| __Frame Graph__ <br/> ( フレームグラフ ) | フレームレートの履歴をグラフィカルに表示します。  |
|  __Memory Utilization__ <br/> ( メモリ利用率 )   |  メモリ使用率を表示します。 |

※ パフォーマンス診断は Unity Editor ( PC ) から実行した場合、実際のアプリケーションパフォーマンスを正確に反映しない場合があります。

> <img width="600" alt="image.png (23.1 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/07/01/10862/a883e45e-6534-4bd1-81d8-a68a2661560d.png">
>
> Diagnostic System ( 診断システム ) はプロダクト開発サイクル全体を通して有効にし、最終バージョンのリリースをする際の直前の変更として無効化することが推奨されています。


# 設定方法
MixedReality Toolkit 標準プロファイル では、各システムプロファイルの設定を変更することはできません。自分好みにプロファイルの内容を編集したい場合は、標準プロファイルを複製&編集するか、新規作成することになります。今回は、標準の HoloLens 2 用プロファイルを元に修正を加えていきたいと思います。

__DefaultHoloLens2ConfigurationProfile__ を標準プロファイルとして選択した状態

<img width="600" alt="image.png (154.4 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/30/10862/01d7fb29-64f2-476e-b2f8-905a07840741.png">

Copy & Customize (複製&編集) ボタンをクリックし、新しいプロファイルをクローンします。
作成後のプロファイルは、以下ディレクトリ配下に保存されます (標準)

- Assets/MixedRealityToolkit.Generated/CustomProfiles

<img width="600" alt="image.png (57.3 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/07/01/10862/a6d1d6e1-078b-4649-bf9a-79e9724b6c07.png">

MixedRealityToolkit 全体プロファイルをさきほど作成したカスタムプロファイルに切り替えることで、Diagonostics ( 診断 ) タブの編集が可能となります。 

<img width="600" alt="image.png (226.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/07/01/10862/a2bff3c2-96ec-47ce-af41-bef7f4cf2ae3.png">

|  項目 |  内容 |
| --- | --- |
| Enable Verbose Logging  (bool) | MRTK Componet 全体の詳細ログを記録します |
| Enable Diagnostics System (bool) | 診断システムを有効にします  |
| Diagnostic System Type | 診断システムタイプを選択します  |

## Diagnostic Settings

Diagnostic Settings を編集するためには、さらに DiagnosticsProfile をクローンする必要があります。

| 項目 | 内容 |
| --- | --- |
| __General Settings__ |  ---  |
| Show Diagnostics |  構成された診断オプションを診断システムが表示するかどうかを示します。無効にすると、構成済みの診断オプションはすべて非表示になります。 |
| __Profiler Settings__ | ---  |
|  Show Profiler  | Visual Profiler を表示するかどうかを示します。  |
| Frame Sample Rate | フレーム レート計算のフレームを収集する時間 (秒)。 範囲は 0 ~ 5 秒です。  |
| Window Anchor | プロファイラー ウィンドウを固定するビュー ポートの部分。 既定値は Lower Center です。 |
| Window Offset |  ビジュアルプロファイラーを配置するビューポートの中心からのオフセット。 オフセットは、 ウィンドウアンカー プロパティの方向になります。 |
| Window Scale |  プロファイラーウィンドウに適用されたサイズの乗数。 たとえば、値を2に設定すると、ウィンドウのサイズが2倍になります。 |
| Window Follow Speed |  ビューポート内の可視性を維持するためにプロファイラーウィンドウを移動する速度。 |

# Refs
- [診断システムの構成](https://docs.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/features/diagnostics/configuring-diagnostics?view=mrtkunity-2021-05) | Microsoft Docs 
- [診断の設定](https://docs.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/configuration/mixed-reality-configuration-guide?view=mrtkunity-2021-05#diagnostics-settings) | Microsoft Docs