» VR開発メモトップへ

Unreal Engine VR開発メモ(UE4.27・UE5以降対応)

最終更新日:2022年01月21日

UE4.27およびUE5以降でVRアプリケーションを開発する方法やTipsをメモしています。

更新履歴

(2022年1月21日)古いページを削除、UE4.27・UE5にあわせて新ページを作成


Unreal EngineのVRサポートについて

Unreal EngineはデフォルトでVRに対応しており、Quest、Rift、Valve Index、HTC Viveほか主要な一通りのヘッドセットで動作するアプリケーションを作ることができます。

また、UE4.27およびUE5以降ではKhronosのOpenXR規格を使用する新しいテンプレートプロジェクトが用意されました。新規プロジェクトでGamesカテゴリのVirtual Realityテンプレートで作成できます。

エディタの プレイ(Play) > VRプレビュー(VR Preview) を選択し、ヘッドセットをかぶるとPCに接続したヘッドセットですぐプレビュー実行できます。コントローラーでオブジェクトを投げたり、テレポート移動したりできます。Escキーで終了します。

UE5についての注記

UE5 Early Access 2でのVirtual Realityテンプレートについて、手元ではWindows向けにパッケージすると動かなかったり、リアルタイムシャドウが正常に表示されない不具合が起きており不安定かもしれません。

なお、Virtual RealityテンプレートはUE5 EA2よりUE4.27のほうが新しいそうです(UE5もmainブランチに最新があるとのことです)。

また、UE5の注目の機能であるNaniteとLumenはVRに対応していません。Epicのエンジニアの回答によれば、どちらも近い将来に対応する見込みはなさそうです。

プラグインについて

UEのVRサポートでは、Edit > Pluginsで適切なプラグインを有効にして使用します。OculusもSteam VRもKhronosのOpenXR規格に移行しようとしていますので、基本的にはOpenXRとついているものを使用する流れになりますが、まだ動作が安定していない場合があるようです(たとえばOpenXRおよびOculus OpenXRで「Reset Orientation and Position」ノードでリセンターができない現象が起きました)。

プラグイン 対応プラットフォーム
OpenXR Oculus・Steam VR
Oculus OpenXR Oculus(OpenXRを使用)
Oculus VR Oculus(古いVRAPIを使用)
SteamVR Steam VR
Varjo OpenXR ※Marketplaceにあり
Microsoft OpenXR ※Marketplaceにあり

その他、以下のような関連プラグインがあります。

プラグイン 詳細
Online Sybsystem Oculus Oculusのプラットフォームサービス
Oculus Audio Oculusの空間オーディオ
Steam Audio Valveの空間オーディオ
OpenXREyeTracker OpenXRのXR_EXT_eye_gaze_interaction拡張
OpenXRHandTracking OpenXRのXR_EXT_hand_tracking拡張
OpenXRMsftHandInteraction OpenXRのXR_MSFT_hand_interaction拡張

Virtual Realityテンプレートについて

Virtual Realityテンプレートでは、Settings > World SettingsでGameModeにVRGameModeが設定されており、プレイヤーキャラクターとしてVRPawnが生成されます。VRPawnのブループリントを開くとテレポート、グラブ、スナップターン等の処理が入っています。Project Settings > Inputにこれらのアクションが登録されており、各ヘッドセットのコントローラー操作がアサインされています。

また、観客カメラが用意されています(レベルのBP_VRSpectator)。実行中にTabキーを押すと観客カメラに切り替わり、WASD/QEキー等で移動できます(ヘッドセットは主観カメラのままです)。

その他、以下のような設定がされています。

  • Project SettingsのStart in VRが有効になっています。
  • Engine > Rendering > Forward Shadingがオンになっておりフォワードレンダリングになります。
  • Mobile Multi-Viewがオンに、Mobile HDRがオフになっていてモバイルではポストエフェクトが使えません。

Epicのエンジニアによる新しいVirtual Realityテンプレートの解説動画があります(3時間あります)。

VR関連のブループリントノードについて

HMD全般のノードが「インプット > ヘッドマウントディスプレイ」および「Input > Head Mounted Display」にあります。

位置トラッキングについて

トラッキング基準位置を変更するには

Virtual Realityテンプレートでは、VRPawnのEvent BeginPlayでSet Tracking Originが実行されています。デフォルトでは床を基準にしたFloor Levelになっていますので、必要ならEye Levelに変更した上で、レベルのPlayer Startをプレイヤーの頭の位置に移動します。

位置トラッキングをリセットするには

Set Tracking OriginノードでEye Levelにした上で、Reset Orientation and Positionノードを使用します。OpenXRを使用するプラグインでは効かない場合があるようです。

Tips

キーボードイベントが反応しない

Virtual Realityテンプレートでは観客カメラの移動等のためにいろんなキーが割り当てられており、それと衝突している可能性があります。 Project Settings > Engine > Inputを確認してみてください。

レベルを再読み込みするとトラッキング位置が元に戻ってしまう

Open Levelでレベルを再読み込みするとReset Orientation and Positionでリセットしたトラッキング位置が元に戻ってしまう現象が起きました。この現象が起きたのはVRプレビューだけで、パッケージして実行すると大丈夫でした。

参考リンク

書いた人:こりん(@korinVR
» VR開発メモトップへ