【HoloLens】MRTKv2 ToolKitの設定

# <font color="DarkCyan">MRTKv2.1はProfileを使用するよ〜</font>

<font color="DarkSlateGray">導入手順については過去に説明したものがあるのでそちらを参考してください。</font>
・例）[【HoloLens】MRTK2.1を使って実機ビルド](https://qiita.com/atomicZAMURAI/items/3118c98e6ce71c2fc9bc)

<font color="DarkSlateGray">Profileの設定を変更していくことでSpatialMappingを使う設定であったり、Cameraの設定などを変更していきます。
基本的にはDefaultで用意されているものを使用しますが、SaptialMappingが重かったり、DefaultではついてくるCPUパワーを表示する機能などを非表示にしたいときなどがあると思われます。
その際にはクローンして独自にProfileを変更していくことが求められます！</font>

## <font color="DarkCyan">Toolkitを適用する</font>

![スクリーンショット 2019-12-09 23.14.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/81f91a6b-66da-c07b-f960-de48458f0b4a.png)
<font color="DarkSlateGray">こちらのボタンを押すことでSceneにMixedRealityToolkitが追加されます。</font>
![スクリーンショット 2019-12-09 23.17.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/6136cf81-e283-3332-e496-9e5801f6fe77.png)

<font color="DarkSlateGray">
InputやBoundaryなど見たことある項目が移動しているのがわかるかと思います。MixedRealityの基本設定をこちら管理しているようです。PlaySpaceにはカメラが入っています。実行してみると、</font>

![スクリーンショット 2019-12-09 23.20.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/b7b87248-2c0f-50e8-cd5e-efb8d1bebdde.png)

<font color="DarkSlateGray">
このように追加されている項目もあるようです。
手のオブジェクトもここに追加されていたので、Toolkitで設定されたものを格納するのが***MixedRealityPlaySpace***ということのようですね。
私は、自前で作ったやつはごちゃごちゃになると嫌なので、SceneContentのような空のGameObjectに入れて管理しています。実行自体に影響などはないので、GameObjectの置き場所などは特にどこでもいいようです。
</font>

### <font color="DarkCyan">編集方法</font>
<font color="DarkSlateGray">
先ほどToolkitを画面に追加しましたが、Inspectorを見てみると***MixedRealityToolkit***というScriptがついています。見てわかる通り、cameraの設定、spatialMappingの設定やらなんやら全部ここで設定します。
</font>

![スクリーンショット 2019-12-09 23.29.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/bc9d1566-bd7d-653b-176f-234e256fa816.png)
<font color="DarkSlateGray">
***Active Profile***という項目で設定するProfileを切り替えます。現在のところDefaultで下記の３Profileが用意されています。
</font>

- <font color="DarkSlateGray">DefaultMixedRealityToolkitConfiguratioProfile</font>
- <font color="DarkSlateGray">DefaultHoloLens1ConfigurationProfile</font>
- <font color="DarkSlateGray">DefaultHoloLens2ConfigurationProfile</font>
- 
<font color="DarkSlateGray">基本的にDefaultの設定のままでBuilできます。CPUバーなどが邪魔！といったようなことがなければDefaultのままで大丈夫です。</font>
<font color="DarkSlateGray">
では自分でカスタマイズする際にはどうするのかというと、
</font>

![スクリーンショット 2019-12-09 23.36.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/c41d7955-318a-77a0-bb48-367cdb80b007.png)

*The Mixed Reality Toolkit`s core SDK profiles can be used to get up and running quickly*
→　
Mixed Reality ToolkitのコアSDKプロファイルを使用して、すぐに起動して実行できます

*You can use the default profiles provided, copy and customize the default profiles, or create your own*
→　
提供されているデフォルトのプロファイルを使用するか、デフォルトのプロファイルをコピーしてカスタマイズするか、独自のプロファイルを作成できます

<font color="DarkSlateGray">せっかくなので、最初から作っていきたいと思います。</font>

### <font color="DarkCyan">Profileの作成</font>

<font color="DarkSlateGray">***Create new Plofiles***を選択すると新しいProfileのinspectorに移動します。</font>
![スクリーンショット 2019-12-10 0.31.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/862d8752-ac79-813e-6ce8-7bc04a0c4adc.png)

<font color="DarkSlateGray">ここでCameraやSpatial Awerenessなどの項目ごとのProfileを作成していきます。</font>

# <font color="DarkCyan">各種項目の設定見てみよう〜</font>
## <font color="DarkCyan">Camera</font>
※記載済
<details><summary>展開</summary><div>

<img width="685" alt="スクリーンショット 2019-12-18 08.53.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/9d9fdd49-683a-05ac-633c-71d4c8f2e6dc.png">
これがdefaultのProfileの設定です。
各項目を詳しく見ていきましょう　[参照:Getting started with MRTK](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/CameraSystem/CameraSystemOverview.html)

#### Opaque Display Setting
不透明ディスプレイの設定って直訳ですが、おそらくVRでの設定のことだと思われます。。。あいまいです

#### TransParent Display Setting 
透明デイスプレイの設定なので、HoloLensのような現実に映し出すようなデバイスでの設定です。

#### Near Clip
実機の際に、近くにあるオブジェクトの描画範囲が指定できます。
近くにいると結局途切れて見えてしまうので、ある程度NearClipは上げてもいいのかなと思います。

<details><summary>Near Clip訳</summary><div>

- 公式原文
The near clip plane is the closest, in meters, that a virtual object can be to the camera and still be rendered. For greatest user comfort, it is recommended to make this value greater than zero.

- Google翻訳
ニアクリッププレーンは、仮想オブジェクトを<font color="firebrick">カメラに近づけてレンダリングできる距離に最も近いメートル単位です</font>。ユーザーの快適性を最大限に高めるには、この値をゼロより大きくすることをお勧めします。

</div></details>

#### FarClip
遠くのオブジェクトをどこまでレンダリングするかの設定です。

<details><summary>Far Clip訳</summary><div>

- 公式原文
The far clip plane is the furthest, in meters, that a virtual object can be to the camera and still be rendered. For transparent devices, it is recommended that this value be relatively close as not to overly exceed the real world space and break the application's immersive qualities.

- Google翻訳
ファークリッププレーンは、仮想オブジェクトをカメラに近づけて<font color="firebrick">レンダリングすることができる最も遠いメートル単位です</font>。透過的なデバイスの場合、この値は実世界のスペースを過度に超えないように比較的近く、アプリケーションの没入感を損なうことをお勧めします。

</div></details>

#### Clear Flags
昔カメラで設定をSkyBoxからSolidColorに変更したと思いますが、これです。
**実行したらカメラの設定変えたはずなのに！って人はここです！！**

<details><summary>Clear Flags訳</summary><div>

- 公式原文
- The clear flags value indicates how the display is cleared as it is drawn. For virtual reality experiences, this value is most often set to Skybox. For transparent displays, it is recommended to set this to Color.

- Google翻訳
クリアフラグの値は、描画時に表示がクリアされる方法を示します。バーチャルリアリティエクスペリエンスの場合、この値はほとんどの場合Skyboxに設定されます。<font color="firebrick">透明ディスプレイの場合、これを[色]に設定することをお勧めします</font>

</div></details>

#### Quaritty Setting
カメラのクオリティ、描画に関する項目ですが、ここの設定は全体の設定が上書きされてしまうようなので特に意識しないでいいと思います。
詳しく知りたい方は、unityの公式をみると詳細が記載されています。
[参照 : UnityDocument [Quality (品質)]](https://docs.unity3d.com/ja/current/Manual/class-QualitySettings.html)

<details><summary>Quality Setting訳</summary><div>

- 公式原文
The quality settings value indicates the graphics quality that Unity should use when it renders the scene. The quality level is a project level setting and is not specific to any one camera. For more information, please see the Quality article in Unity's documentation.

- Google翻訳
品質設定値は、Unityがシーンをレンダリングするときに使用するグラフィック品質を示します。<font color="firebrick">品質レベルはプロジェクトレベルの設定であり、どのカメラにも固有のものではありません。</font>詳細については、Unityのドキュメントの品質に関する記事を参照してください。

</div></details>

#### Background Color
今までカメラにSolidColorと選択して背景色を黒色にしたと思いますが、それです。
HoloLensでは背景を黒が透明？のような意味になってくるので黒にしましょう

<details><summary>Background Color訳</summary><div>

- 公式原文
If the clear flags are not set to Skybox, the background color property will be displayed.

- Google翻訳
クリアフラグがSkyboxに設定されていない場合、背景色のプロパティが表示されます。

skybox以外では背景カラーの選択が必要とのことです。

</div></details>

</div></details>

## <font color="DarkCyan">Input</font>
※更新中

<details><summary>展開</summary><div>
</div></details>

## <font color="DarkCyan">Boundary</font>
※更新中

<details><summary>展開</summary><div>
</div></details>

## <font color="DarkCyan">Teleport</font>
※更新中

<details><summary>展開</summary><div>
</div></details>

## <font color="DarkCyan">Spatial Awareness</font>
※更新中

<details><summary>展開</summary><div>
</div></details>

## <font color="DarkCyan">Diagnostics</font>
※更新中

<details><summary>展開</summary><div>
</div></details>

## <font color="DarkCyan">Scene System</font>
※更新中

<details><summary>展開</summary><div>
</div></details>

## 更新ログ
- 12/7 Profileの設定方法を記載
- 12/18 Cameraの設定を記載