OVR Scene Quick Previewで変更したシーンのOculus Go/Quest実機確認を爆速にする

# はじめに

Oculus Go/Questのアプリはビルドが長く実機確認に時間がかかります。ところが以下のツイートでOVR Scene Quick Previewを使うと爆速で開発できるらしいので使い方を調べました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">OVRSceneQuickPreviewやべえな。爆速でQuest開発できる。 <a href="https://t.co/4ioNkJCVkr">pic.twitter.com/4ioNkJCVkr</a></p>&mdash; よしたか (@TyounanMOTI) <a href="https://twitter.com/TyounanMOTI/status/1216188973745225729?ref_src=twsrc%5Etfw">January 12, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 使い方

[OVR Quick Scene Preview](https://developer.oculus.com/documentation/unity/latest/concepts/unity-build-android-tools/#ovr-quick-scene-preview)に使い方があるので参考にしました。

## 動作環境

- 必須のもの
    - Unity2018.1以上
    - [Oculus Integration](https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022) 1.42.0以上
- 推奨するもの
    - USB 3.0ケーブル。転送速度が50%向上するようです。比較対象が書いてませんが恐らくUSB2.0と比べた場合と思われます。

## 前準備

まずは前準備として以下の手順でアプリとシーンをビルドしてGo/Questに転送します。ここはまだ時間がかかります。

1. Unityのビルド設定を開いてデバイスにGo/Questが見えている事を確認します。
1. メニューの`Oculus > OVR Build > OVR Scene Quick Preview`を選択して同名のダイアログを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8995/2054914d-c6e9-5854-0f05-199a99297a31.png)
1. 2つ目のボタンの`Build and Deploy App`をクリックして転送用アプリをビルドしてGo/Questにインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8995/0750acd1-de6a-67b7-281d-273f1ff56864.png)
    1. Go/Questにアプリがインストールされると`Status`に緑で`APK installed. Ready to build and deploy scenes.`と表示されます。
    1. Go/Questでは正面に白いパネルが表示されていますがまだシーンは表示されません。
1. 1つ目のボタンの`Open Build Settings`をクリックしてプレビューしたいシーンをビルド設定に追加します。シーンは少ない程ビルドが速くなるので1つが一番良いのですが複数追加する事もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8995/f643ea0a-ec10-ca9f-433d-e1a956b66e48.png)
    1. シーンを追加すると`Scenes`の下にシーン名が表示されてボタン名が`Build and Deploy Scene(s)`に変わります。
1. ボタン名が変わった`Build and Deploy Scene(s)`をクリックしてシーンをビルドしてGo/Questに転送します。
    1. Go/Questで正面の白いパネルに転送されたシーン情報が表示されて3秒後に消えます。

## 爆速プレビュー

1. 前準備で追加したシーンを変更します。
1. `OVR Scene Quick Preview`ダイアログを開きます。
1. 1つ目のボタンの`Build and Deploy Scene(s)`をクリックしてシーンをGo/Questに転送します。
1. 変更した内容によりますが**数秒**で実機に反映されます。

# 仕組みとオプション

## 仕組み

プロジェクトのシーンを複数のAssetBundleに分割してそれをロードするアプリを経由する事で素早く実機確認できる仕組みとなっています。2つ目のボタンでビルドしたアプリがロード用アプリで1つ目のボタンでシーンをAssetBundleにビルドしています。
またロード用アプリの白いパネルがあるシーンは`Assets/Oculus/VR/Editor/Scenes/OVRTransitionScene.unity`に格納されています。

ビルドしたロード用アプリとシーンのアセットバンドルはプロジェクトフォルダ内の`OVRAssetBundles`に保存されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8995/f3edb351-2583-6d78-2385-63b85c018dbb.png)


## オプション

- Force Restartチェックボックス
    - チェックするとAssetBundle化したシーンをロードする時にアプリを再起動します
- Bundle Management
    - Delete Device Bundlesボタン
        - Go/Questに転送したAssetBundleを削除します
    - Delete Local Bundlesボタン
        - PCでビルドしたAssetBundleを削除します
- Use optional APK package nameチェックボックス
    - チェックするとロード用アプリのパッケージ名の最後に`.transition`を追加します
- Launch Appボタン
    - Go/Questでロード用アプリを起動します
- Open Build Settingsボタン
    - Unityのビルド設定を開きます
- Uninstall APKボタン
    - Go/Questからロード用アプリをアンインストールします
- Clear Logボタン
    - OVR Scene Quick Preview下部のログメッセージをクリアします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8995/639c198c-3170-8cee-205f-c3e34d852f81.png)