Oculus Questのアプリ制作やら（Unity）

#概要
前回、Oculus Questのセットアップ方法について記載しました。
今回はOculus Quest用のアプリをUnityで開発するための手順と、Oculus Questでアプリを起動するまでの流れを記載します。

#環境
+ Windows10
+ Unity2018
+ Android sdk 4.4(kitkat)
+ スマートフォン（ミラーリング用）

#手順
Oculus QuestはAndroidOSのため、Unity側のビルド設定でAndroidにプラットフォームを変更してビルドする必要があります。

1. Unityで新規プロジェクトを作成
2. Asset Storeから「Oculus Integration」をダウンロード・インポート
3. Unityで簡単なアプリ制作
4. Android用のビルドを行うためのプラットフォームを変更
5. ビルドしてapkファイル作成
6. Oculus Quest側でアプリの起動

#Unityで新規プロジェクトを作成
Unityを起動します。設定を3Dモードにして保存先とプロジェクト名を入力した後作成ボタンを押します。

#Asset Storeから「Oculus Integration」をダウンロード・インポート
Asset Storeタブを開き、「Oculus Integration」と検索し、ダウンロード・インポートします。

![unity1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/6d744fe6-dab2-29c4-fc5e-6e95308b1a33.png)

このアセットはOculusがサポートしている公式アセットで、Oculus Questのヘッドトラッキングやコントローラーのポジトラを容易に実現することができます。
これがなくてもOculus Quest用のアプリ開発は可能ですが、コントローラーやヘッドトラッキングを使わないと、ヘッドセットを使ってVRをする意味がほとんどないように思えるため、はじめからこちらのアセットを使用します。
インポートが完了するとProjectにOculusフォルダが追加されます。
![unity2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/b783aa0a-20d5-2a75-d743-a56eb02e4a28.png)
これで準備は整いました。
#Unityで簡単なアプリ制作
まず、ProjectにあるOculus/VR/prefabs/OVRCameraRig.PrefabsをHierarchyにドラッグ＆ドロップします。
![unity3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/750a3149-0cc4-13ca-8222-86cf65203c3c.png)
![unity4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/ebdae680-bb31-969e-a0fa-c3c5f3b99f03.png)

このOVRCameraRigの中にカメラが付いているため、初期のSceneに入っているMain Cameraは削除します。またOculus Questで覗いた際にskyboxだけではポジトラができているかわかりづらいのでSphereを追加しておきます。
![unity5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/c03cb560-bbef-07a7-7257-0a1b6f10f958.png)
![unity6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/ef804aeb-bd91-841e-76ae-fde977031826.png)

次に、OVRCameraRig ⇒ Inspector内のOVR Managerコンポーネント ⇒ Target Devices ⇒ Element0 を「Quest」に変更します。
![unity8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/2c5eae6a-ef3b-1d98-8cc5-170e9179d5df.png)

次に、Hierarchyの
OVRCameraRig/TrackingSpace/LeftHandAnchor/LeftControllerAnchor
OVRCameraRig/TrackingSpace/RightHandAnchor/RightControllerAnchor
にProjectのOculus/VR/prefabs/OVRControllerPrefab.Prefabsをドラッグ＆ドロップします。
![unity9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/525d6fe2-fbfd-c730-e6bc-7cb319fccd43.png)

Vtuberなどのモデルを動かす時はこのあたりにボーンの情報を入れるのかなと考えつつも次に進みます。
追加したOVRControllerPrefab ⇒ Inspector内のOVR Controller Helper ⇒ Controllerをそれぞれ「L Tracked Remote」と「R Tracked Remote」に変更します。
添付されている画像は「L Tracked Remote」に設定しているものです。「R Tracked Remote」も同様に設定してください。
![unity10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/76136b10-45e2-78ab-2b23-c40a38bbf95f.png)

![unity11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/cb4b11c1-9c97-bb4b-1639-ced84ecf7b3a.png)

よく見てみるとSceneにOculue Touchのコントローラーが浮いているのが見えますね。
これで完了です。
#Android用のビルドを行うためのプラットフォーム変更
前述しましたが、Oculus QuestのOSはAndroid OSのためAndroid用にビルドできるようにプラットフォームを変更します。
メニューバーにある File ⇒ Build Settingを選択します。
左下のPlatformをAndroidに変更し、Switch Platformを選択します。
※Switch Platformには数分程度時間がかかります。
※Android SDK、Android NDK、Java JDKは設定してあるものとします。また「Edit」⇒「Unity Preferences」⇒「External Tools」のAndroidの欄から設定してあるか確認することができます。
![unity12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/bc896710-eccc-9360-77ce-d65a409975e5.png)
![unity13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/ce0868b7-296b-55bf-daa1-236d1ef16900.png)

次にPlayer Settingを開きます。ここでは3箇所変更します。

+ Other Settings ⇒ Minimum API Levelを「Android 4.4 'kitkat'」に変更する。
+ XR Settings ⇒ Virtual Reallty Supportedをチェックを入れる。
+ Virtual Reality SDK リストの+ボタンを押下し、Oculusを追加する。

#ビルドしてapkファイル作成
最後に「Build and Run」ボタンを押下し、保存する場所を指定すると完了です。
![unity14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/c75008a4-3d9f-c50e-c2e1-ede2cbacf3ca.png)

#Oculus Quest側でアプリの起動
作成したアプリはOculus Quest側のHome/ライブラリ/提供元不明のアプリの中にプロジェクト名で入っています。それをコントローラーで選択すると起動することができます。

![Screenshot_20190625-160028.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440432/bb218561-7294-59a3-5304-3bfec41c72fc.jpeg)

写真を載せるためにAndroidのスマートフォンでOculus Questの画面をミラーリングしてスクリーンショットを撮ってみましたが画質が、、、

これで以上になります。
思っていたよりも簡単に制作することができた印象でした。とりあえず1つVIVE用に作っていたアプリをOculus Quest版に作り直してみようかな（笑）

#参考

+ [Unityで作ったアプリをOculus Questで動かす](https://qiita.com/pira/items/1c935f30d5ba6c020333)
+ [Oculus Quest に Unity で開発したアプリをいれる方法（Mac/Win)](https://qiita.com/Tomoyuki_Mikami/items/be9b3bf605a5d953be1b)