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プレビューだけで、パッケージして実行すると大丈夫でした。