UE4.14・AndroidでVRの実機プレイまでの解説

  • 2
    Like
  • 0
    Comment

こちらは「裏 Unreal Engine 4 (UE4) Advent Calendar 2016」13日目の記事として紹介していきます。



全く裏情報とは言えないかもしれませんが、
androidの実機プレイ・VR用に実機で動作確認する所を解説していきます。
せっかくなので4.14を使用してみました。

UE4.14で対応しているモバイルVRのプラグインについて

GEARVR
GEARVR用のプラグインになります。
4.7.4以降のプロジェクトから利用可能みたいです。
UE4の初期に近い頃からあるプラグインでもあります。
GearVRについてはこちら

GoogleVR
GoogleのVRデバイスなどを利用した、
VRアプリを作れるプラグインになります。
UE4でDaydreamの対応しましたので、
付属のモーションコントローラーの操作も対応できます。
DayDreamの紹介

SimpleHMD
VRに対応できるプラグイン。
簡単にVRを体験するだけならこちらがおすすめ。

今回はGoogleVR(HMDのみ)とSimpleHMDの動作確認まで紹介します。

Androidの実機の準備とテスト

ue4はandroidsdkなどちゃんと用意されたものがあります。
ue4のバージョンは4.14になります。
まずはこちらからUE4用のADTをダウンロードします。
CodeWorksダウンロード

パソコンに対応したOSでダウンロードしてください。
8.png

ダウンロードしたら、
Android 1R5を選択してstandardでインストールします。

2.png

※注意点としては、VisualStudioがインストールされていないとNsightの所でインストールエラーが出ます。試すだけであれば不要なのでno actionでインストールしないようにしておくのがいいです。

インストールが終了したら再起動して完了になります。
次にue4のプロジェクトを作成して動作確認をしていきます。

プロジェクトの作成と動作確認

次に携帯端末用のプロジェクトを作成してテストします。
携帯用プロジェクトはモバイル対応で、スケーラブルな3D・2D表示にします。
スターターコンテンツは無しで大丈夫です。
1.png

androidの端末をUSB接続できるよう設定。
※usbデバッグの設定は下記リンクよりご確認ください。
端末設定のやり方はこちら!

空のプロジェクトでテストする場合はそもそも初期のmap(最初に起動したときに動作する画面)が無いので作成して、プロジェクト設定で作成したmapが初期起動するように設定してください。

7.png

後は起動オプションのところにドロイド君のマークがあり、それを選択すると実行が開始されます。
※先にビルドしてシェ―ダをモバイル用にビルドしておくとスムーズに進められます。

5.png

SimpleHMDプラグインの設定

プロジェクトから編集>pluginsを選択してプラグイン設定を開きます。

9.png
開いたら、SimpleHMDのチェックボックスのEnableにチェックを入れます。

10.png
チェックを入れたら再起動して、起動オプションから実機デバッグが行え、VR仕様に書き出されます。

SimpleHMDだとこんな感じになりました。
他の人がやっていたのを見た限りだと全画面だったような・・・
Screenshot_20161204-011147.png

GoogleVRプラグインの設定

※GoogleVRのHMDの設定になります。

まずは、googleVRプラグインを利用できるようにします。
方法は先ほどSimpleHMDと同様の流れで行います。

11.png

SimpleHMDの時とは違い、Android用のプロジェクト設定が必要になります。
編集>プロズジェクト設定>レンダリングを選択。
mobileHMDのチェックを外しておく。

12.png

左メニューの下のほうにあるプラットフォームからAndroidのsdkターゲットとfullscreen用の設定をします。
最初は赤の帯になっていますが、右側のボタンを選択してファイルの書き込みを可能にしましょう。
16.png

SDKのターゲットは21でロリポップ(Androidのバージョンは5.0)に設定しました。

13.png

GooglePlayサービスの対応も忘れず設定しておきます。

17.png

最後にAndroidSDKのSDKAPIレベルとNDKAPIのターゲットを同じ21に設定して完了になります。

15.png

プロジェクト設定などは以上になります。
あとは動作確認で説明したようにUSBで端末を接続して動作確認が出来たら完了です。

ちょっとロールボールのサンプルで動かしてみました。
思ったよりきれい(´∀`)
機種はXperiaZ4です。
Screenshot_20161204-160453.png

HMD用の変更とHMD用ブループリントについて

携帯のジョイスティック操作は基本使わないので、非表示にします。
編集>プロジェクト設定から左サイドのインプットを選択。
DefaultTouchInterfaceをなしにします。
18.png

下記の表はHMD用のブループリントの簡易説明表です。モバイル用ではなくPC用ですので、OculusRiftやViveなどで何か作っている方は参考程度に見てみてください。(間違ってたらぜひ指摘していただけるとありがたいです・・・・)
正式ドキュメントはこちら!

BlueprintのAction どういったものなのか
Enable HMD HMDでの表示の有効・無効
Enable LowPersistence Mode VR酔い対策となる低抵抗の有効化・無効化の設定(bool型で設定)
Get HMDDevice Name HMDのデバイス名を取得 (Text型・何もないとUnknownを返す)
Get Num Of Tracking Sensors 複数の位置センサーがある場合、接続している総数を返す (int型)
Get Orientation and Position 現在の位置と角度を取得する。位置センサーから外れたりすると、すると位置を0で返す。(位置はVector、角度はRotation)
Get Screen Percentage VR表示での画面全体の利用率を返します(float型)
Get Tracking Origin 位置センサーの原点を目線または床の高さから取得
Get Tracking Sensor Parameters HMDが有効な場合、ゲーム世界での位置と、センサーが反応する境界位置などを返します。センサーの範囲から外れたりすると全ての値が0で返ってきます。
Get VR Focus State VRのフォーカスの状態を取得(VRフォーカスを使っているのかと持っているのかをbool型で返す)
Get World to Meters Scale VRで見ているオブジェクトのスケール感を取得(float型で返してくれます。標準は100です。)
Has Valid Tracking Position 位置トラッキングが有効な状態かを返す(bool型)
Is Head Mounted Display Enabled HMDが有効な状態か返す(bool型)
Is in Low Persistence Mode lowPersistenceを利用しているかどうかを返す(bool型)
Reset Orientation and Position ヨーが正方向を向いているのと0の位置にいることと仮定してがロールとピッチの位置を0にリセットする(リセット後のヨーの角度とOptionで位置などもリセットするかどうかのenumを設定可能)
Set Clipping Planes VRで表示する際の領域の開始地点(NCP)とどこまで表示するかの終了地点(FCP)を設定する。(どちらもfloat型で設定)※呼び出されて設定されても.iniファイルには保存されないので注意が必要です。
Set Tracking Origin 位置センサーの原点を目線または床の高さから設定する(目線または床のどちらかをenumで設定可能)
Set World to Meters Scale VRで見ているオブジェクトのスケール感を設定(float型で設定します。)

最後に・・・

さらっとした説明で申し訳ないですが、以上になります。
それとVR関係で個人的に見ておくといいと思ったページをいくつか紹介します。
※他にもまだまだ沢山あるのでごく一部だけでもと思い、紹介しています。

バーチャルリアリティの開発(公式・日本語)
仮想現実 (VR) のベスト プラクティス(公式・日本語)
UE4のHMD関係のコンソールコマンドについて纏めました(おかずさん)