Hololends2セットアップから開発で得た知見を片っ端からメモした雑記

前知識0でHolo1も触っていない私が得た知見を勢いだけでまとめたものです。
開発が完了したタイミングで清書をする予定です。
今は知見を積んでいる状態です。

# 使用するUnityのバージョン
2019のLTSを推奨していました。本環境は2019.4.10f1を仕様しています。

こちらから最新の2019LTSをDL推奨。
https://unity3d.com/unity/qa/lts-releases

忘れずUWPを追加しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/c2d16fae-d5ed-f8cb-269e-2410074b6bce.png)

> UnityProjectの設定

こちらが参考になりました。
https://docs.microsoft.com/ja-jp/windows/mixed-reality/recommended-settings-for-unity

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/6b3e6b4c-d960-ed18-938a-280defb5abb3.png)

UWPにSwitchPlatformしたところ警告が出ていますね。
VisualStudioの環境構築が足りていないと警告が出るようです。
その場合の対応はこちらが参考になりました。
https://qiita.com/chomado/items/38baafdfd96892d3b41d

MRTKもインストールしました。VRを開発した方ならVRTKと言えば察しがつくかと思います。入力系の処理がいい感じにラップしてある便利ツールだと思っていただければよいかと思います。Unity2019をインストールしたのはMRTKのサポートが保証されているからです。
https://github.com/microsoft/MixedRealityToolkit-Unity/releases

Microsoft.MixedReality.Toolkit.Unity.Foundation.X.X.X.unitypackage
をDLしましょう。(X.X.X　はバージョン)

# WiondowsとHololoends2の設定

こちらが参考になりました。
https://medium.com/kadinche-engineering/hololens-2-%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%82%92%E3%81%97%E3%81%A6%E5%AE%9F%E6%A9%9F%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%99-7a15bfe5e088


# MRTKを導入した状態でビルドしたらエラーがでるんですけど。。

```
Assets\MixedRealityToolkit.Providers\WindowsMixedReality\WindowsMixedRealityArticulatedHand.cs(418,73): error CS0246: The type or namespace name 'HandJointKind' could not be found (are you missing a using directive or an assembly reference?)

Assets\MixedRealityToolkit.Providers\WindowsMixedReality\WindowsMixedRealityArticulatedHand.cs(111,17): error CS0246: The type or namespace name 'HandMeshObserver' could not be found (are you missing a using directive or an assembly reference?)

Assets\MixedRealityToolkit.Providers\WindowsMixedReality\WindowsMixedRealityArticulatedHand.cs(382,33): error CS0246: The type or namespace name 'HandJointKind' could not be found (are you missing a using directive or an assembly reference?)

Assets\MixedRealityToolkit.Providers\WindowsMixedReality\WindowsMixedRealityArticulatedHand.cs(412,26): error CS0246: The type or namespace name 'JointPose' could not be found (are you missing a using directive or an assembly reference?)

I am running on Windows 10 Insider preview with OS build : 18362.30 Version : 1903

Also I double checked with build setting Minimum SDK is 10.0.10240.0 Target SDK version is “Latest installed”
```
かなりハマりました。
エラーコードでググると下のページがみつかりましたが、エラーがとれませんでした。
https://stackoverflow.com/questions/55706007/facing-issue-when-i-build-the-mixedrealitytoolkit-unity-v2-sample-project

原因は、Windows10SDKの未インストールでした。
https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk/
インストーラーからSDKをDLしたのちUnityEditorを再起動したところビルドできました。
人にとっては、Libraryフォルダを削除したら直ったりBuildSettingsのMinimumPlatformVersionを10.0.10240.0に選択すえうと直ったりと色々な原因がありそうです。

# (自分の環境で最適化した)Unityの設定

MRTK導入エラーで設定をいじくりまわした結果、複数のサイトから適用した形になりましたのでスクリーンショットを共有します。（あくまで私の環境でのベストですので）

BuildSettings
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/bf6dc1ed-c84b-d02c-7ea7-d28c1f755a6c.png)

BuildSettings->PlayerSettings->XRSettings
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/d76287c9-c237-c7d1-369e-69d1b053120a.png)
EnableDepthBufferShariungをオフにする情報はMS公式のYoutube動画で言っていたので正しいんじゃないですかね(他のサイトだとONにしていたりするのでちょっと不安)
https://www.youtube.com/watch?v=q1cvbJP2miM&frags=wn&ab_channel=%E6%97%A5%E6%9C%AC%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E5%85%AC%E5%BC%8F%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB

PublishingSettingsのCapabilitiesのチェック入れ忘れも気をつけてください。SpatialPerceptionとかね。

Edit->ProjectSettings->Quality
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/33484a35-2d3a-fe97-1339-65f73903e6bd.png)
QualityLevelをVeryLowに
上部のDefaultテキストの右部にある▼マークから変更です。

Window->Rendering->Lighting
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/1c4d4222-a1e1-c920-a7f9-92a4a5c8ffd2.png)
RealLightingはオフにしたほうがいいらしいです

# (自分の環境で最適化した)VisualStudioInstaller

VisualStudioのバージョンは2019(2017だとダメでした)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/d57d3c87-4f1a-8d77-08b3-6404ad4a2fa6.png)
・C++デスクトップ開発
・ユニバーサルWIndwosプラットフォーム開発
・Unityによるゲーム開発

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/bce7eb98-8439-0ea2-0dd7-710b219adfad.png)
個別のコンポーネントからUSBデバイスの接続を選択しておくと有線接続で実機に転送できるようになります。

# (自分の環境で最適化した)VisualStudio

前提としてUnityでビルドして吐き出されたプロジェクト名.sinを開いておいてください。

プロジェクト名(UniversalWindows)を右クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/0ce08abc-502b-8b47-87d0-2fb28e0631de.png)
・スタートアッププロジェクトに設定
・プロパティ->デバッグ->コンピューター名にHololends2がアクセスしているIPアドレスを入力(入力すると無線接続でビルドができます)

Hololends側からIPアドレスを確認するには
設定アプリの「ネットワークとインターネット」→ 現在つながっているネットワークの「詳細オプション」をタップすることで確認できました。

詳しくはこちら
https://medium.com/kadinche-engineering/hololens-2-%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%82%92%E3%81%97%E3%81%A6%E5%AE%9F%E6%A9%9F%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%99-7a15bfe5e088

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/921be167-ea72-d737-46ac-452bb89d7b62.png)
Release、ARM64
を選択。ARM64に選択しないと実機でエラーになり動作しませんでした(5敗)。

> プロファイラ、Development Consoleを消す

https://www.hiromukato.com/entry/2020/07/02/175932

# UnityEditorからリモートでデバッグする

WindowsStoreからHolographic Remoting PlayerをインストールしたのちUnityEditorから設定を行えばできました（Hololends側でもHolographic Remoting Playerを起動をわすれないように）

DL先
https://docs.microsoft.com/ja-jp/windows/mixed-reality/holographic-remoting-player



公式できれいにまとめてくれていました。
https://docs.microsoft.com/ja-jp/windows/mixed-reality/holograms-100#chapter-5---verify-on-device-from-unity-editor

# 起動時に毎回PIN入力を行わないようにする

ロビー画面？で
アカウント→サインインオプション→サインインを求めるタイミング
で行えるようです。

こちら参考にしました。
https://blog.hololab.co.jp/entry/2020/01/20/000000

# QR対応(QRマーカーを読み込む)

試すだけならサンプルをダウンロードするのが楽そうです。
https://github.com/chgatla-microsoft/QRTracking/tree/master/SampleQRCodes

自分の環境はQRマーカーを読む機能を追加で行いたかったのでNugetパッケージからのインストールを行いました。

Nugetパッケージをまずインストールしたのち、NugetからQRマーカーを読むＳＤＫをインストールするそうな。

まずは下リンクから最新の「NuGetForUnity.X.X.X.unitypackage
」をＤＬしUnityにインポート。
https://github.com/chgatla-microsoft/QRTracking

NuGetウィンドを表示し「Microsoft.MixedReality.QR」と検索したら出てきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/758f3e1c-c6b4-2efc-a400-d524e0a5499a.png)

使い方はこちらを参考にしました
https://docs.microsoft.com/ja-jp/windows/mixed-reality/qr-code-tracking?WT.mc_id=MR-MVP-5003868

PacageManagerから
２つDL

・WindowsMixedReality

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119898/8a51c8b6-9276-34d2-1a74-426e1a86f0ef.png)