Unityで作ったVRアプリをOculusQuestでビルドする

#はじめに
[メディアアートを創った](https://note.com/shotashimura/n/nf5fc1791add9)際にVR技術に触る経験をしました。
ビルドにおける負荷の部分で詰まって何度も設定をやり直した結果、Unityで作ったVRアプリをOculusQuestで立ち上げするための簡易メモが完成したので、備忘録として書き残していきたいと思います。

実行環境：
Unityバージョン 2019.4.9.f1
macOS Catalina

##下準備
**①[Android Studio](https://developer.android.com/studio?hl=ja)のインストール。**
インストール後に推奨されるモジュールを追加。

**②UnityへAndroidのモジュールを追加**
`UnityHub → インストール`

![スクリーンショット 2020-09-05 21.04.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357734/3541521f-8f01-9b4c-adea-f191e9461cae.png)

**③ADB(Android Device Bridge)へのパスを通す**
ホームディレクトリの直下にある（ない場合は作る）
「.bash_profile」に下記を記述。

``` 
export PATH=$PATH:/Users/UserName/Library/Android/sdk/platform-tools
``` 

ADBに関する[参考ページ](https://akira-watson.com/android/path-environment.html#2)

**④Oculasアプリをスマートフォンで開き、開発者モードをオンにする**
`設定→OculusQuest端末番号→その他の設定→開発者モード`

![iOS の画像 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357734/52b46c4e-e2e6-6da3-59a0-e53dafb83479.png)


**⑤OculusQuestとPCを接続した状態で、下記コマンドをターミナルで入力**

``` 
adb devices
``` 

接続が成功していると、OculusQuestの端末番号が表示されます。

##Unity内のビルドの設定

**①SDKをセットする**
`Unity → Preferences  → External Tools`
Androidの項目の全てにチェックを入れる
![スクリーンショット 2020-09-05 23.30.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357734/f8464a63-cf72-6a68-fa83-af098669eafb.png)



**②ビルドするプラットフォームをAndroidへ変更**
![スクリーンショット 2020-09-05 23.36.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357734/e7ee0b09-de4d-8b80-a5d2-52d8415cd70e.png)

Texture Compressionを「ASTC」へ変更。Switch Platformをクリックして、Androidでビルドする設定に変更。


**③XR Plugin Managementをインストール**
`File → Build Setting→ Playser Setting`
左側の項からXR Plugin Managementを選択。インストール。

![スクリーンショット 2020-09-05 23.45.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357734/09baf434-2c50-aa11-7e23-5d78ea61b533.png)
Oculasをクリック
![スクリーンショット 2020-09-05 23.46.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357734/b75c3048-c95a-83f1-b088-400952e63eb0.png)

**④Buildするための設定**
Playser Setting内の設定を変更

`④-1 OtherSettingsの設定
・Color Spaceを「Linear」へ変更
・Auto Graphics APIsのチェックを外し、OpenGLES3だけを残す
・Multithreaded Renderingにチェックをつける`

`④-2 Identificationの設定
・Minimum API Levelを7.1へ変更
・Scripting BackendをIL2CPPへ変更
・API Compatibility  Levelを.NET 4.xへ変更`


##シーン内の設定

**①AssetStoreから[Oculus Integration](https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022)をインポートする。**
シーンの中でデフォルトで設定されているCameraを削除して、Oculus Integration内にあるOVRCameraRigをヒエラルキー内に入れると、Buildした時に360度カメラになります。

##ビルドをしてみる

`File→BuildSetting`内のAndroid PlatformでBuildすることで、「.apk」の拡張子を持つファイルを作ることが出来ます。
Buildした時点でOculusQuestの内部にはアプリが保存されていますが、作成した「.apk」のファイルをターミナルから入力することで、接続されたOculusQuest内にBuildすることが可能です。

既に作成してある「.apk」の拡張子を持つファイルをOculusQuest内にインストールするには、下記コマンドをOculusQuestとPCを接続した状態で入力。

``` 
 adb install -r　ファイルパス
``` 

##ハマったところや開発中に悩んだことなどのメモ

**①Buildをしても360度で見渡すことができない**
何度Buildしてもアプリを360度で見渡すことができず、「Made with Unity」と表示される真っ黒の画面かシーンがスクリーンのように平面でBuildされ、エラーもconsoleに出力されることがなかったのでお手上げ状態でしたが、段階的にBuildしていく中でとある処理が重すぎることに気が付き、パラメータを弄ったところ、無事にBuildすることが出来ました。


**②Buildしたファイルはどこにある？**
ビルドしたファイルは「提供元不明アプリ」としてOculasQuest内に保存されます。
以前のOculasQuestではメニュー内のライブラリの項目からアクセス出来ましたが、新しいUIではライブラリがなくなっており、アプリ一覧から探すことになります。
`アプリ → 全てのアプリ → 右上のタブ → 提供元不明`
非常に分かりにくい場所にあるので、要注意。
[参考記事](https://bibinbaleo.hatenablog.com/entry/2020/05/01/231137)

**③OculasQuest内で保存した内容をPCヘ移したい**
[Android File Transfer](https://www.android.com/filetransfer/)を利用。
録画したOculasQuest内の動画やファイルにアクセスすることができ、自分のPC内に保存することができます。

**④ファイルをGitHubで管理したい**
通常のターミナル操作だとUnityファイルの容量が重すぎるためにPush出来ず、Git LFSを利用。
[参考ページ](https://docs.github.com/en/github/managing-large-files/installing-git-large-file-storage)

###おわりに
以上、Unityで作ったVRアプリをOculusQuestでビルドする際のフローを要点だけ掻い摘んでまとめてみました。

それでは、また😊