ViveFocusとUnityでVRアプリを作る方法

#はじめに
某氏がViveFocusを貸してくださったので記事を書きます。
#Vive Focusとは？
Vive Focusとは、HTCのスタンドアロン型HMDです。現在中国でのみ販売されており、日本では年内の発売らしい。
現在はHMDは6軸、コントローラは3軸ですが、アップデートによりコントローラも6軸になるらしい。アップデートってレベルじゃねーぞ。
じゃあどういう風に6軸にするの？ってことなんですがどうも正面についた２つのカメラでコントローラのポジトラを行うらしい。[googleの研究、中国語です](http://baijiahao.baidu.com/s?id=1599410256347673256&wfr=spider&for=pc)　
ちなみにwindowsMRのHMDもこの仕組みらしいです。
さらに言うと正面のカメラをつかってARもできることを売りにしているようなんですけど、今のところARをやってるサンプルがほぼなくて頭を抱えています。日本語の記事は皆無だし中国や米国の記事もほぼないという…公式のドキュメントもないし…
情報提供待ってます…
#1.Androidの開発環境を整える
ViveFocusはAndroidベースなのでまずUnityでAndroidビルドができるようにする必要があります。
##1.1 Unityのバージョン確認
ViveFocusでの開発に必要なWaveSDKはUnity2018をサポートしていないみたいです。（ビルドは通るものの実機で実行できない）
![キャプチャ5.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/4a39f78e-aac0-07b6-9098-6f74f5d320ba.png)
ちゃんと2017にしましょう。(本当の推奨は5.6.3らしいんですけど流石に古すぎ。UnityHUBでも取り扱ってないのでアレ。Unity2017でも動作はしたので多分2017で大丈夫だと思います)
##1.2 AndroidSDKのインストール
[OculusGoのとき](https://qiita.com/Hirai0827/items/f62588cc7d5c6c17e364)もやったんですけど最新版をぶち込むだけじゃ動作しないので気を付けましょう。AndroidSDKをインストールします。
Edit>Preference>ExternalTools
![キャプチャ6.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/e8e76560-58aa-0861-4035-5d0cdf904e7f.png)
・SDKのdownloadをクリック
・リンク先のページでAndroidStudioをダウンロード
・指示通りAndroidStudioをインストール、これで最新版のSDKが入る

しかしFocusのビルドはAPIlevel25でしかできないらしく、これを追加でインストールする必要があります。

・AndroidStudioを開いてConfigureからSDKmanagerを開く
![キャプチャ7.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/38643aa2-9c31-aac0-ca8f-e5401c4ab799.png)
・SDKManagerのAPIlevel25のチェックボックスをクリックしApplyをクリックしてインストール
![キャプチャ8.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/72dca7b5-5a67-5e0e-0217-d55bdad357f9.png)
Unityに戻って先ほどのDownloadボタンの隣のbrowseボタンを押せば自動でSDKのパスを設定してくれるはずです。
##1.3 AndroidSDKのtoolsの置き換え
AndroidSDKのなかのtoolsが最新版だとSDKが認識されないみたいなので古いバージョンの物で差し替えます。
[Windowsはこのリンクで](https://dl.google.com/android/repository/tools_r25.2.5-windows.zip)
[Macはこのリンクで](https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip)
インストールしてください。zipを解凍して中のtoolsをSDKフォルダの中のtoolsと入れ替えます(元のtoolsは適当に改名しておきましょう)
##1.4 JDKのインストール
Edit>Preference>ExternalTools
![キャプチャ6.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/e8e76560-58aa-0861-4035-5d0cdf904e7f.png)
からJDKのDownloadボタンをクリック、リンク先の**JavaSE8**のJDKをインストールしましょう（最新版のJDKだとエラーを吐きます）
![キャプチャ9.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/fb4f271e-4e8c-db9c-8837-1246ed46a17e.png)
インストーラの指示通りにすればJDKもインストールされます。
これもBrowseボタンを押せば自動でパスを設定してくれるはず。
##1.5 UnityのプラットフォームをAndroidに変更
File>BuildSettings>androidをクリック>SwitchPlatformをクリック
これでAndroid開発環境の準備が整いました。なげぇんだよ！！！！
#2.ViveFocusのビルドに向けて設定する
ここからも長いんで頑張っていきましょう
##2.1 ViveFocusのデベロッパーになる
https://developer.vive.com/us/wave/
![キャプチャ11.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/40270d27-0ffa-d096-95e8-8fba8310e44e.png)
Become a Developerを押すとViveのアカウントを作るよう指示される。googleアカウントとかで登録できるのでFacebookアカ限定のOculusより良心的。
##2.2 WaveSDKを落とす
アカウント登録を済ませると基本情報が書かれたデベロッパーズサイトに飛ぶので
![キャプチャ12.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/ec490a0f-be15-f927-2d12-9eea8676951b.png)
MaterialDownloadを押して
![キャプチャ13.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/afbe7e34-4485-22f0-78b3-893390163d89.png)
WaveSDKをダウンロードします。
##2.3 Unityで色々と設定をする
SDKを解凍すると中にplugin/Unity/wavevrっていうunitypackageがあると思うのでそれをインポート。
Unity上部のツールバーにWaveVRってのが追加されるはずなのでそれを押してPreference>DefaultPreferenceDialogをクリック
開いたウィンドウに同意を続ければAndroidのBuildSettingをいい感じにやってくれる。
BuildSettingsからPlayerSettingsを選んでCompanyNameとProductNameを変更
さらにOtherSettingsからPackageNameを変更
BuildSettingのDevelopmentBuildをオンにすれば主な準備完了です。
##2.4 UnityをVRに対応させる
Focusを使ってVRっぽくするには独自のカメラオブジェクトを使う必要があります。
Asset/WaveVR/Prefabsの中のWaveVRをシーンに配置。これがカメラの位置になります。
![キャプチャ14.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/bb897bfa-2aa4-2627-69c0-095d839dd5d5.png)
実行してみるとこんな感じ。VRっぽい
![キャプチャ15.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/58325df7-4359-a664-b9a2-df340364bdb2.png)
##2.5 実機ビルドをする
Windowsの場合はADBが必要です。
[こちら](https://andmem.blogspot.com/2014/04/installjdkandroidsdkadb.html)を参考にADBを使えるようにしましょう
ちなみにSDKmanagerがこのサイトとは違うデザインになっていてわかりづらいですが、GoogleUSBDriverはここにあります。
(さっきと同じくConfigureから行ける)
![キャプチャ16.PNG](https://qiita-image-store.s3.amazonaws.com/0/256231/6a532b46-b4ed-51c2-70ff-e7800c7ac152.png)
USBでPCとHMDをつなぐと、HMDのほうの画面に「充電しますか？ファイル転送しますか？」という画面が出ているので
ファイル転送の方を選択する(OculusGoの時もそうだったけどHMD側に表示されるの気づかな過ぎて詰む)
あとはUnity側でBuild&Runすれば自動でHMDのほうにapkが行き、実行される。

**これにて実装完了です！お疲れさまでした。**

#最後に
相変わらず一番面倒なのはAndroidの環境整備っていうのがなんだかなという気持ちです。
マジでUnity2018じゃ動作しないので気を付けましょう。i時間ぐらい詰みました。
AR周りのことも調べてみたくはありますが正直文献が少なすぎて未開の魔窟と化しているのでアレです。力のある開闢部隊の皆様にすべてを任せたいです。
次回は(できたら)Controller周りの実装を紹介しようと思います。