UnityによるMirage Solo開発

#最初に
かつて[インターン先](https://www.honeycomb-lab.co.jp/)でMirage Soloによる開発についてまとめたのでこちらにも公開します。
なお、インターン先からの投稿の許可はいただいていますが、後日内容の編集がある可能性があります。ご了承ください。


MacでもWindowsでも構いませんが今回はMacで行いました。
なので若干Windowsとは異なる場合があります。
基本的にはAndroidの開発と共通しているところが多いです。

#Mirage Soloとは
6DoF対応のスタンドアロンVRHMD。
OSはGoogleのVR規格であるDaydream2.0。
スタンドアロンで動作するため、PCやスマートフォンが不要でHMDさえあれば気軽にVRを体験できます。
6DoFに対応しているため、頭の「回転」だけでなく「位置」もトラッキング出来ます。これによってVR空間でしゃがんだり、空間内に配置されたものに顔を近づけたりすることができます。（注１）
Mirage Soloとほぼ同時期の発売で同じスタンドアロンHMDであるOculus Goは3DoFで回転しか取れないため、その点ではMirage Soloの方が自由度は高いです。（注２）
また、画質はディスプレイの解像度は5.5インチ2560×1440と、ハイエンドVRには及びませんが、専用設計であるためスマホVRに比べるとはるかに綺麗に感じます。
一方で、Daydreamのアプリが少なかったり標準ブラウザが無かったりと、少し物足りない部分もあるかと思われます。

> 注１：デフォルトでは約1m×1mのセーフティ範囲が設定されています。開発者モードで解除出来ますがその状態でのアプリの申請は通りません。
> 注２：Oculus Goは「快適さ」や「安さ」において優れているのでどちらが良いかは人によって異なります。

# 各種インストール
## Unity
今回は2017.４.3f1を採用しています。
Unityの過去のバージョンは下のURLにあります。
https://unity3d.com/jp/get-unity/download/archive?_ga=2.105431431.540089069.1529304098-1012543397.1513824749
![IMG_0410.png](https://qiita-image-store.s3.amazonaws.com/0/262329/2f2e4906-1f30-17bd-23c5-ee3a4fc82cf5.png)



##Android SDK
まず下のリンクからAndroid Studioのインストーラをダウンロードします。
https://developer.android.com/studio/?hl=ja
あとはインストーラーに従ってインストールを完了します。

> ビルドがうまく通らない場合は右下の`Configure`から`SDK Manager`を選択しSDK Managerを起動し、正しいSDKがインストールされているかを確認してください。
![IMG_0411.png](https://qiita-image-store.s3.amazonaws.com/0/262329/28757e63-d7ff-277c-81bd-936e8165e519.png)


>それでもエラーが出る場合はAndorid SDK tools r25.2.5を[[Mac版はこちら](https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip)][[Windows版はこちら](https://dl.google.com/android/repository/tools_r25.2.5-windows.zip)]からダウンロードして、ユーザー/ユーザー名/ライブラリ/Android/sdkの中の`tools`をダウンロードしたものと置きかえる必要があります。


##JDK
JDKは現在最新である8の、Java SE Development Kit 8u171を使います。リンクからインストーラーをダウンロードし、あとは指示に従ってインストールを行います。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

##Google VR SDK
Unity用のGoogle VR SDKである、gvr-unity-sdk v1.130.1を下のURLからダウンロードします。
unitypackage版でいいです。
https://github.com/googlevr/gvr-unity-sdk/releases


# サンプル作成
## Google VR SDKの追加
まずUnityを起動したら先ほどダウンロードしたgvr-unity-sdk v1.130.1をインポートします。

## Android SDK・JDKの設定
`Unity`>`Preferences`>`External Tools`のうち、`Android`から
SDKの欄に、`ユーザー/ユーザー名/ライブラリ/Android/sdk`
JDKの欄に`/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home`
を入力します。
![IMG_0412.png](https://qiita-image-store.s3.amazonaws.com/0/262329/d7ea10cc-bcf8-b664-c16f-d729eb2bc807.png)

> Windowsの場合は
SDK`C:/Users/ユーザー名/AppData/Local/Android/sdk`
JDK`C:/Program Files/Java/jdk1.8.0_171`
がデフォルトになっていると思います。

## 何かオブジェクトを配置
cameraはデフォルトのもので大丈夫です。
今回は`GameObject`>`3D Object`>`Cube`をPosition(x:0 y:0 z:2) Rotation(x:0 y:45 z:45) Scale(x:0.5 y:0.5 z:0.5)で配置しました。

# ビルド＆実機に転送
## Unity上での Build設定
`File`>`Build Settings`から **Android** を選択し、`Add Open Scene`でSceneを追加します。
![IMG_0413.png](https://qiita-image-store.s3.amazonaws.com/0/262329/b357cb1f-ef6b-b9ad-4a66-d8ccf945844e.png)

その後`Player Settings`から`Other Settings`>`Identification`の`Package Name`を **好きな名前** に、`Minimum API Level`を **Android 7.0** にします。
![IMG_0414.png](https://qiita-image-store.s3.amazonaws.com/0/262329/6ad64f49-5d4a-1c1e-9ac6-899d2344be9d.png)


次に、同じ`Player Settings`から`XR Settings`>`Virtual Reality Supported`にチェックを入れ、SDKの中から**Daydream**を選択します。
![IMG_0415.png](https://qiita-image-store.s3.amazonaws.com/0/262329/0db4c443-b985-7fd3-2a41-5b9c4bd4bdc7.png)


これでUnityでの設定は完了です。

## Mirage Soloを開発者モードにする
ここからはMirage Solo側の設定です。
`設定`>`すべての設定`>`システム`>`端末情報`の`ビルド番号`を７回押すと開発者モードをONにできます。
開発者モードをONにしたら`デバッグ`から`USBデバッグ`をONにします。

##実機に転送
Mirage Solo本体をPCに繋いで、`Build & Run`で完了です。
この際に、Mirage Solo側でUSBデバッグの許可を確認される場合があるのでその時は`OK`を押してください。

# 実行結果
無事動きました……が！！
現在のところMirage Soloでスクリーンショットを撮って画像をアップするのは少々面倒なため今回は画像は割愛させていただきます。


### Mirage Soloでスクリーンショットを撮る方法（おまけ）
`設定`>`デベロッパー向けの設定`から`Enable VR screen recording via chords`を有効にしてください。すると、ボリュームup＋Daydreamボタンで動画、ボリュームdown＋Daydreamで静止画を記録できます。動画、静止画は本体ストレージに記録されているため、通知エリアの`Daydream screenshot`からmicroSDカードにコピーor移動、GoogleフォトへのアップロードをすることでPC等に画像を取り込むことができます。


#参考URL
- Unity＋Mirage Solo開発メモ
https://framesynthesis.jp/tech/unity/daydream/

- Mirage Soloから始めるDaydream開発
https://qiita.com/JackMasaki/items/a322fd29e4034431d032

- MacでUnityのAndroidビルドのセッティング
https://qiita.com/igara/items/f65c07d3e2d402a1e4c3

- Hothotレビュー　VR空間を歩き回れるスタンドアロンのHMD「Lenovo Mirage Solo with Daydream」実機レビュー
https://pc.watch.impress.co.jp/docs/column/hothot/1120215.html