Unityで作ったアプリをOculus Questで動かす

# はじめに
先日Oculus Questを購入しました．
PC不要のスタンドアロンで6DoFのVR体験ができるのは本当に素晴らしいと思います．
とりあえずVRをやってみたい方には非常におすすめです．

一方でOculus Quest対応のアプリはまだまだ種類が少ないのが現状で，自分でアプリを開発してみたい方もいると思います．
本記事ではUnityで3DアプリをビルドしてOculus Questで動かすまでの手順を備忘録としてまとめます．

# 開発環境
Unity 2018.3.5f1
Open JDK 1.8.0_152 
Android SDK

Unityは最新版ではありませんが，2017.x以降なら同じような手順で開発できるようです(未確認)．

本記事ではUnity,JDK,Android SDKは導入済の前提で解説しています．
Unityがない場合は，公式サイトから入手できる [Unity Hub](https://store.unity.com/ja/download?ref=personal) からインストールしてください．
JDKがない場合は，[ORACLE Java SE download](https://www.oracle.com/technetwork/jp/java/javase/downloads/index.html) 等から入れてください，
Android SDKがない場合は，[Android Studio](https://developer.android.com/studio) 等から入れてください．

# Oculus Questの準備
## ペアリング
Oculus Questの初期設定を行います．
スマートフォンにOculusアプリをインストールしてヘッドセットとペアリングします．

<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/76a876b8-b5d6-269e-c060-4ef7902882df.jpeg">

## 開発者モードの有効化
最初に [Oculus Dashboard](https://dashboard.oculus.com/) でログインと開発者登録を行います．団体名に適当な名前を入力すればOKです．

次にOculusアプリから開発者モードを有効化します．
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/81171f3b-35aa-ff40-865a-2781260668be.jpeg">　　<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/af8ba437-0086-1f1f-b933-8dade2ae3c78.jpeg">　　<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/bf21329b-e63d-b249-65f8-aab9b9504133.jpeg">

開発者登録を行なっていないOculusアカウントでは開発者モードの有効化ができなかったので，作成したアプリを公開等するつもりがなくても必ず開発者登録が必要だと思われます．

# アプリの作成
## プロジェクトの作成
Unityで3Dのプロジェクトを作成します．プロジェクト名と保存先を入力して``作成``をクリックします．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/fc7709b1-7b2c-ab8a-c29f-3c539723daa2.png">

## Oculus用のアセットをインポート
UnityのAssetStoreから [Oculus Integration](https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022) をダウンロードしてインポートします．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/c603e2dc-84b9-ee39-5ef3-8640fced9d2c.png">
<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/39737cb8-e5e6-dbf1-e2e5-051d7d60674c.png">

## Build設定
File > Build Settings を開いてPlatformに``Android``を選択し．``Switch Platform``をクリックします．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/57372680-0167-8a93-3f6c-57925b9b29f5.png">

もしUnityにAndroid Build Supportのモジュールがインストールされていなければ，画面の指示に従ってダウンロード/インストールしてください．

---

次にBuild Settingsの左下にある``Player Settings``をクリックします．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/a5c96c91-0322-fb9c-4b51-e92db1c4932a.png">

Inspectorウィンドウの``Other Settings``を選択して，Minimum API Levelを19に変更します．
デフォルトではAPI Level 16に設定されていますが，Oculus用にBuildするためにはAPI Level 19（Android4.4）以上が必須です．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/e854de22-20b6-9585-6101-9baad90e0a63.png">

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/bfdbf7a6-4670-2052-d2b2-0f7da52545a2.png">

---

次にInspectorウィンドウの``XR Settings``から``Virtual Reality Supported``にチェックを入れます．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/ffe743f5-32ba-0eac-af95-e6bb1f06ffac.png">

Virtual Reality SDKsの追加で``Oculus``を選択します．
<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/b56b8ba1-c880-1ccd-253e-0c36d6624f87.png">

---

# Build And Run
PCとOculus QuestをUSB Type-Cケーブルで接続します．
macbook proのようにUSB-Cが挿さるPCで開発している場合はOculus Quest付属のケーブルでそのまま接続できます．
そうでないPCの場合は別途変換用のケーブルを用意する必要があります．

試しに現在のSceneに適当にキューブを配置してみて File → Build And Run をクリックします．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/34505f3e-ebac-4715-f411-e2381c97c732.png">

Buildが終わったらアプリが起動します．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/ff7ed680-3d44-6416-7553-be8a9f65602c.png">

無事にアプリが実行できました．

---

一度 Build And Run を実行したアプリケーションは，Oculus Quest内の ライブラリ > 提供元不明のアプリ から起動できます．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/d08046df-eaf6-400c-ce25-b248723688a4.png">

# Oculus Touchコントローラーの表示
最後にOculus Touchコントローラーを表示する方法を説明します．

初めに現在のSceneに Oculus > VR > Prefabs 内にある``OVRCameraRig``を追加します．
また，最初からSceneにあったCameraは不要なのでDeleteします．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/da854385-b018-1518-df5d-85d37ec5d1fa.png">

次にinspectorウィンドウから，``OVR Manager (Script)``の``Target Devices``を``Quest``に変更します．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/98a12c60-fc9c-e1d6-7e66-eb3bc233abc1.png">

次にOVRCameraRig内にある左右の``ControllerAnchor``に Oculus > VR > Prefabs 内にある``OVRControllerPrefab``を追加します．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/0d0d52b2-32b7-8972-ec93-ff6fc5b37ae5.png">

最後に左のコントローラーに追加した``OVRControllerPrefab``について，inspectorウィンドウの``OVR Controller Helper (Script)``から``Controller``の部分を``L TrackedRemote``に変更します．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/f45a2e67-3533-70db-de97-658265de5079.png">

もう一度Buildしてコントローラーが表示されればOKです．

<img width="780" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187083/7d4134a8-bab5-c7c8-e5e2-ec8f5c960471.png">

# おわりに
アプリ開発がんばっていきたい．
Oculus Questはいいぞ！

# 参考にさせていただいたサイト
* [【VR】Oculus Quest＋Unity開発](http://cycling.hateblo.jp/entry/2019/05/25/120551)
* [0から始めるQuestビルド](https://qiita.com/HhotateA/items/d42f2d2522c1fdd227b9)