UE4 のプロジェクトを Oculus Go で実行するための環境づくり

Oculus Rift Advent Calendar 2018 19日目の記事です。

本当は前日の @3215 さんと同様な Oculus Go から RICOH THETA を操作するアプリを UE4 で作りたかったのですが、UE4初心者すぎて記事にするまでにいたりませんでした。

ですので、百番煎じくらいの内容になってしまい申し訳ありませんが、「UE4 のプロジェクトを Oculus Go で実行するための環境づくり」について、自分がうまくいった内容を書きたいと思います。

UE4 はインストール済みという前提です。




# 1. 環境
UE4 のバージョンは 4.21.1 です。

# 2. Oculus Go の準備
Oculus Go を開発モードにします。

これは、ペアリングしているスマホの Oculus アプリから行います。

手順(iOSの場合)は以下の通りです。

1. Oculus Go の電源を入れてから Oculus アプリを起動する
2. 設定タブを開く
3. 見つかった Oculus Go をタップして、ペアリングする
4. ペアリングが完了したら、「その他の設定」をタップする
 
<img src="https://qiita-image-store.s3.amazonaws.com/0/26659/7a58d070-29ed-eb28-9d54-558fd20ba108.png" width=30%>
5. 「開発者モード」をタップする
<img src="https://qiita-image-store.s3.amazonaws.com/0/26659/6a79b7b7-20ea-d93e-3ca8-fa08c46e020c.jpeg" width=30%>
6. 開発者モードのスイッチを ON にする
<img src="https://qiita-image-store.s3.amazonaws.com/0/26659/f01cde44-8750-fff7-e7ca-e6eb7dddd023.jpeg" width=30%>

これで Oculus Go 側の準備は完了です。

# 3. CodeWorks for Android のインストール
[Android 向けゲーム開発に必要な設定(Unreal Engine 公式ページ)](http://api.unrealengine.com/JPN/Platforms/Android/GettingStarted/1/index.html)
このページの内容にしたがって、UE4を実行するPCに CodeWorks for Android をインストールします。

これをインストールすることで、Oculus Go アプリ開発の前提となる Android 開発に必要な環境を揃えることができます。

このアプリケーションのインストーラですが、便利なことに UE4 に含まれています。
(私の環境だと以下のディレクトリにありました。)

```
D:\UE4\UE_4.21\Engine\Extras\AndroidWorks\Win64\CodeWorksforAndroid-1R7u1-windows.exe
```

インストーラを実行し、リンク先の手順にしたがってインストールしてください。
インストールが完了したら PC の再起動が必要になります。

# 4. UE4 プロジェクトの作成 / 設定
[Samsung Gear VR UE4 Quick Start(Unreal Engine 公式ページ)](https://docs.unrealengine.com/en-US/Platforms/GearVR/QuickStart)
このページの手順にしたがって設定していきます。

## プロジェクトの作成
UE4 を起動したら、まずはプロジェクトを作成します。

初回起動だとプロジェクト作成画面が表示されるので、「ブループリント」の「空のプロジェクト」を選択し、以下のように設定します。
(初回起動ではない場合は、「ファイル」 > 「新規プロジェクト」から作成します。)

* モバイル / タブレット
* スケーラブルな 3D・2D
* スターターコンテンツ無し

そしてその下でプロジェクトを保存する場所を設定し、プロジェクト名を入力したら「プロジェクトを作成」をクリックします。
![スクリーンショット__28_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/f5ccb337-da89-1743-7102-7245d8dce82f.png)


## プロジェクトの設定
1. 編集 > Plugins を選択し、左のペインを下までスクロールし「Virtual Reality」を選択、右のペインで「Oculus VR」を探し「Enabled」をチェックします。私の環境だと最初からチェックされていました。確認したら Plugins の画面を閉じます。
![スクリーンショット__14_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/6d070222-e150-a3a3-8c57-5c67eb1218b6.png)

2. レベルを指定する必要があるので、上のツールバーにある「現在のレベルを保存」をクリックし、名前をつけて保存します。
![スクリーンショット__15_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/b67b600b-38e3-9437-985c-9ed96b14d3eb.png)

3. 編集からプロジェクト設定を開き、左のペインで 「マップ&モード」 を選択します。「Default Maps」の「Editor Startup Map」と「Game Default Map」に 2. で保存したレベルを指定します。
![スクリーンショット__17_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/0a18c52f-dbcb-2197-194e-eee6df15789a.png)

4. 同じく プロジェクト設定の「エンジン」 - 「インプット」 を選択し、「Mobile」の「Default Touches Interface」のプルダウンメニューをクリックし、クリアします。「None」と表示されれば OK です。
![スクリーンショット__16_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/032dc6aa-6485-8805-fd44-20e853e11b75.png)

5. 次は「プラットフォーム」の「Android」を選択します。「Minimum SDK Version」と「Target SDK Version」を 19 に設定します。同じく「Enable FullScreen Immersive on KitKat and above devices」にチェックをつけます。
![スクリーンショット__19_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/7c5781fb-f3b4-5a5b-ed62-bc976995cfa1.png)

6. 同じ「Android」を下にスクロールし、「Advanced APK Packaging」の「Configure the AndroidManifest for deployment to Oculus Mobile」にチェックをつけます。
![スクリーンショット__20_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/4bfbba33-5569-fabf-dfc1-cd6d9cdccfdc.png)

7. 「プラットフォーム」の「Android SDK」を選択し、以下の内容を入力します。(以下のフォルダの場所はいずれも私の環境の場合です。これらのファイルは CodeWorks for Android をインストールすることで配置されます。)
    * Location of Android SDK: C:¥NVPACK¥android-sdk-windows
    * Location of Android NDK: C:¥NVPACK¥android-ndk-r14b
    * Location of ANT: C:¥NVPACK¥apache-ant-1.8.2
    * location of JAVA: C:¥NVPACK¥jdk1.8.0_77
    * SDK API Level: latest
    * NDK API Level: android-19
![スクリーンショット__21_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/720de512-cc24-1f4e-bbaf-ddba0a2e5f1e.png)


設定は以上です。

# 5. 実行
Oculus Go を PC に USB 接続したら、 UE4 に戻り上のツールバーの実行の横にある▼をクリックします。
すると「Pacific(xxxxx)」という Android 端末が表示されるはずです。
これが Oculus Go になります。
![スクリーンショット__23_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/23828c7e-e32e-d5c0-672d-d3a8f29449ad.png)



これを選択すると、ビルドが走りしばらく待つと　Oculus Go 上でプロジェクトが実行されます！！
右下の表示が以下のように Running に変わったら Oculus Go で実行中です。
Oculus Go をかぶって確認しましょう！！
![スクリーンショット__24_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/d0f64bf2-f772-b082-17ee-31f07d3b0496.png)

## ハマりポイント1
ちょっとタイミングは忘れてしまったのですが、どこかのタイミングで Oculus Go 上でPCとの接続許可を求めるメッセージが出てきます。コントローラで許可してください。

## ハマりポイント2
最初にプロジェクトを実行した時、以下のメッセージが表示されました。
![スクリーンショット__2_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/548288aa-0812-1121-5da9-25cbc0a39eb4.png)

このエラーは、プロジェクト設定の「プラットフォーム」　- 「Android」で、「今すぐ設定」を選択した上で、「Accept SDK License」をクリックすると、解消されます。
(UE4の再起動が必要かも)
![スクリーンショット__18_.png](https://qiita-image-store.s3.amazonaws.com/0/26659/ded995f3-83f6-33ae-4490-bb446570057f.png)

# リスペクト
参考にさせていただいた(というかほぼ同じ内容の)記事です。非常に助かりました。
ありがとうございます！！
[UE4 Oculus GoでVRアプリの開発を開始するまでの方法](http://unrealengine.hatenablog.com/entry/2018/05/04/232708)
[UE4でARとVR(OculusGo)をした。](http://bibinbaleo.hatenablog.com/entry/2018/07/19/165135)