Mirage Solo+Unity+GVR SDKでパススルーモードのデモをビルドする

# Mirage Soloのパススルーモードを見てみたい
Mirage Soloにパススルーモード？シースルーモード？ってやつがあるらしい。
（どっちが正式名称なのかよくわからないが、本記事ではパススルーとする。）
パススルーモードっていうのは、HMDを被っているのに現実も見えるすごいやつ！
とりあえず、凄そうなので、見てみたい。
GVR SDK for Unityに、パススルーモードのデモがあるらしいので、すぐに見られるだろう。
この考えは甘かった。初心者には、ひっかかりポイントが多かった。
ここに備忘録を残す。

## インストール編
### インストールするものと、ダウンロード先の一覧
インストールしたバージョンや、ちょっとした注意点は手順に書いてます。
そんなのわかるぜ！な人はダウンロード先へいって、じゃんじゃんやっちゃってください。

- Unity
    - https://unity3d.com/jp/get-unity/download/archive
- Android Studio（Android SDK）
    - https://developer.android.com/studio/index.html?hl=ja
- Android NDK
    - https://developer.android.com/ndk/downloads/revision_history.html?hl=ja
- JDK
    - https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- Google VR SDK
    - https://github.com/googlevr/gvr-unity-sdk/releases

### インストール手順
※当記事でインストールする諸々のバージョンは、2019年5月のバージョンです。
　ビルド環境は、Windows10 64bitです。
　各自で、適したものをインストールしてくださいね！
#### Unity
Unityのバージョンは、Unity 2018.3.14で実行しました。
現時点ではUnity2019が最新版ですが、不安定だとかなんとか言われているらしいので。

▼過去バージョンのUnityのダウンロードはコチラ
https://unity3d.com/jp/get-unity/download/archive

リンク先にいったら、自分の環境に適したものをダウンロード。
執筆者の環境はWindows10ですので、WinのUnityインストーラーをダウンロード。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/cc88e04f-d58c-2fac-c1ec-78dd09f06f2f.png)

ダウンロードしたら、インストーラーを実行。
インストールするコンポーネントで、Mirage Soloのビルドに必要なのは黄色の色つけたやつ。
たぶん。
**※Android Supportは必須です！
　Mirage SoloはAndroidで動いているので、これがないとビルドできません！他はなくてOK。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/916d8f2c-ca3c-7e75-d84f-5bab4f9bc4e0.png)

#### Android Studio（Android SDK）
Mirage SoloはAndroidで動いているらしいので、Android Studioをインストールする。
バージョンは、執筆時点で最新のAndroid Studio 3.4 for Windows 64-bit。

▼Android Studioのダウンロードはコチラ
https://developer.android.com/studio/index.html?hl=ja#downloads

リンク先で、Downloadボタンを押してダウンロードして、インストーラーを実行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/c621d831-e672-35b5-e5f6-cfad55acb843.png)

#### Android NDK
Android NDKは、リビジョン 16bをインストールしました。
最新版のリビジョン 19bをインストールしたら、Unityに16bにしろって怒られた。

▼過去バージョンのAndroid NDKはコチラ
https://developer.android.com/ndk/downloads/revision_history.html?hl=ja

リンク先にいったら、リビジョン 16bをダウンロード。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/acb8c5a1-1686-c7dd-1035-7a9dcaccc27d.png)

#### JDK
JDKは、最新版のJDK 12をインストール。

▼JDKはコチラ
https://www.oracle.com/technetwork/java/javase/downloads/index.html

上記のリンク先で、DOWNLOADボタンを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/e938d95a-6c34-ad37-05ab-7bb4567bf4f5.png)

Accept License Agreementにチェック。
Windowsのインストーラーをダウンロード。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/9f54f463-ae9b-f3ab-d222-ea551f7c714e.png)

#### Google VR SDK
執筆時点で最新版のGVR SDK for Unity v1.200.0をインストール。
このUnity Packkageに、パスルルーモードのデモが入ってます！

▼GVR SDKのダウンロード先
https://github.com/googlevr/gvr-unity-sdk/releases

リンク先にいったら「.unitypackkage」をクリックしてダウンロード。
ここで私は間違ってzipをダウンロードして、Unityにインポートしたら詰まった！
「.unitypackkage」をダウンロードだ！

後でUnityにインポートするので、わかりやすい場所に保存。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/00110730-eee2-f007-09f8-ef45c996b63e.png)

## ビルド編
### ビルド編でやること一覧
1. Unityで新規プロジェクト作成
2. GoogleVRForUnity_1.200.0.unitypackageをUnityにインポート
3. デモシーン「HelloMR」を開く
4. JDKとNDKのビルドパスを設定
5. Build Settingを設定
6. ビルドする！パススルーでモノクロの景色が見える！

####1.Unityで新規プロジェクトを作成
適当にUnityの新規プロジェクトを作ります。
執筆時のバージョンはUnity2018.3.14f1
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/16c75299-b46b-9882-1d5e-ebf362cdbf93.png)

####2.GoogleVRForUnity_1.200.0.unitypackageをUnityにインポート
ダウンロードしておいたUnityパッケージをインポートする。
インポートする範囲はよくわからんので、とりあえず`ALL`で。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/b8a42d31-86bc-90a9-28e8-d5df86553f5d.png)

####3. デモシーン「HelloMR」を開く
先ほどインポートしたUnityパッケージ内の「HelloMR」シーンを開きます。
「HelloMR」シーンのパスは、Assets>GoogleVR>Beta>Demos>Scenes>HelloMRです。
このシーンで、パススルーモードを見ることができます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/899d99f8-af92-f457-c0c2-a657e1365024.png)

####4. JDKとNDKのビルドパスを設定
ダウンロードしといたAndroid JDKとNDKのビルドパスを設定。
設定画面の開き方は、`Edit`>`Preferences`で開けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/4f67fdfc-6b15-1940-a8a2-98c3d5ca71a6.png)

####5. Build SettingをAndroidに設定
`File`>`Build Settings`から、ビルド設定をします。
`Add Open Scenes`で「HelloMR」シーンをビルドするシーンに追加。
Platformは、`Android`を選択。
`Switch Platform`を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/e2076588-d458-1eac-63f4-091ee578a62e.png)

ビルド設定がAndroidに切り替わったら、更にPlayer Settingsをします。
Build Settingsの画面左下、`Player Settings`を押します。
Inspector欄に、Player Settingsが開きます。
Company NameとProduct Nameを適当に変更しましょう。
この2つをデフォルトのままにしておくとMirageSoloで実行できないので気をつけましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/be478011-d0dd-de6d-a7a7-cfdcadbbdb3e.png)


更に、Other Settingを開きます。
IdentificationのPackage Nameを、先ほど設定したCompany NameとProduct Nameに変更。
Minimum API Levelは、`API level 24`を選択。
ConfigurationのScripting Backendは、`IL2CPP`を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/fddfb2dd-45b4-6f60-d76c-d0dee6ae2875.png)

最後に、XR Settingsを設定する。
Virtual Reality Supportedにチェックする。
下の＋マークを押して、`DayDream`を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/d6783882-76af-e284-19ff-c54d4106e250.png)

Unity側の設定はこれでおしまい。


このあたりの設定は、Google VR SDKの公式情報を参考にしました。
英語とか何もわからないけれど、英語でしか書いてなくて、つらかった。

▼Quickstart for Google VR SDK for Unity with Android
https://developers.google.com/vr/develop/unity/get-started-android

####6. ビルドする！パススルーでモノクロの景色が見える！
Mirage Solo側の操作を操作します。開発者モードにしましょう。
`設定`>`すべての設定`>`システム`>`端末情報`の`ビルド番号`を、７回連打。
開発者モードがオンになります。
`デバッグ`>`USBデバッグ`をオンにします。

あとは、Mirage SoloをUSBでPCに接続！
Unityで、`Build & Run`！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312168/1361d8a0-8ab0-941c-a799-e838ce6ec6f5.png)
`Build & Run`をすると、Mirage Solo内に｢このPCとの接続を常に許可｣と出るのでチェックする。

うおおお！モノクロの世界が見える！見えたぞ～～！

## 参考
・UnityによるMirage Solo開発
https://qiita.com/monchi/items/8d9a6d1dd8f4b8606a61

・Unity＋Mirage Solo 開発メモ
https://framesynthesis.jp/tech/unity/daydream/

・Quickstart for Google VR SDK for Unity with Android
https://developers.google.com/vr/develop/unity/get-started-android

・IL2CPP
https://docs.unity3d.com/ja/2017.4/Manual/IL2CPP.html


※なんとなくこれでうまくいっていっただけなので、いらない設定とかもあるかも。