» VR開発メモトップへ

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

最終更新日:2022年11月17日
記事作成日:2022年01月21日

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

更新履歴

(2022年9月17日)UE5.1でLumenとNaniteが動いているらしいのを反映
(2022年4月10日)UE5正式版の変更を反映
(2022年1月21日)古いページを削除、UE4.27・UE5にあわせて新ページを作成


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

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

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

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

UE5についての注記

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

……という話のはずだったのですが、UE5.1でLumenとNaniteが動いている様子……!

プラグインについて

UEのVRサポートでは、Edit > Pluginsで適切なプラグインを有効にして使用します。OculusもSteam VRもKhronosのOpenXR規格に移行しようとしていますので、基本的にはOpenXRとついているものを使用する流れになりますが、まだ動作が安定していない場合があるようです。

プラグイン 対応プラットフォーム
OpenXR Oculus・Steam VR
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のProject > DescriptionのStart in VRが有効になっています。
  • Engine > Rendering > Forward Shadingがオンになっておりフォワードレンダリングになります。
  • Mobile Multi-Viewがオンに、Mobile HDRがオフになっていてモバイルではポストエフェクトが使えません。

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

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

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

Questの設定について

Project Settings > Plugins > OculusVRにQuest関連の各種設定があります。

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

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

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

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

Set Tracking OriginノードでEye Levelにした上で、Reset Orientation and Positionノードを使用します……が、OpenXRでは現在効かないようです。不具合のようで、こちらのスレッドに回避策が挙がっています。Oculusのヘッドセットでは、Project Settings > Plugins > OculusVRでXR APIをLegacy Oculus SDKにすると動きます。

Tips

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

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

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

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

デスクトップとVRを両方サポートするベストプラクティスは?

VictorLerp氏の回答です。

参考リンク

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