【UE5.6】簡単になったパススルー機能を使ってみよう

UE5.6から、ベンダー固有の OpenXR 拡張を使用しないパススルーのサポートが実装されました

5.5までパススルーを使用するには、MetaQuestやVIVEなど固有のプラグインを導入する必要ありましたが5.6から汎用のパススルーが実装されました!

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5-6-release-notes?application_version=5.6#openxr%E3%83%91%E3%82%B9%E3%82%B9%E3%83%AB%E3%83%BC

OpenXR パススルー

ベンダー固有の OpenXR 拡張を使用しないパススルーのサポートが実装されました。 詳細については、以下を参照してください。

デバイス非依存の OpenXR パススルーを UE 5.6 で有効にする手順:

  1. 次のいずれかで、r.Mobile.PropagateAlpha=True を設定します。
    • エンジンの「BaseEngine.ini」ファイル
    • プロジェクトの「DefaultEngine.ini」ファイル
    • デバイス プロファイル
    • これにより、アルファ レイヤーがデバイスに渡されるようになります。
    • モバイル デバイスではない場合は、代わりに r.PostProcess.PropagateAlpha=True を使用します。 念のために、両方を使用することもできます。
  2. 同じ .ini ファイル内で、xr.OpenXREnvironmentBlendMode=3を設定します。
    • これによって、ランタイムに XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND 環境ブレンド モードが要求され、パススルーを使用するように要求されます。
    • そうするための代替方法 (おそらく望ましい方法) は、「Set Environment Blend Mode」ブループリント ノードを使用することです。 「3」を渡します。
    • この関数を使用して、必要に応じてパススルーを有効または無効にすることができます。
  3. 同じ .ini ファイル内で、xr.OpenXRInvertAlpha=Trueを設定します。
    • これは、XR_EXT_composition_layer_inverted_alpha 拡張を使用して (利用可能な場合)、Unreal Engine の透過処理ベースのアルファ レイヤー (1=透明、0=不透明) を、HMD ランタイム内でオパシティベースのアルファ レイヤー (1=不透明、0=透明) に反転させます。
    • そうしないと、パススルー映像を表示する領域でレベル ジオメトリが表示され、その逆も同様になります。

これら 3 つの設定項目で変更できるのは、ランタイム時の環境ブレンド モードのみです。 PropagateAlpha と OpenXRInvertAlpha はキャッシュされ、起動時のそれらの値がセッション中ずっと使用されます。

この機能は、Meta Quest 3 でテストされています。 次の両方がサポートされていれば、他の OpenXR ランタイムおよびデバイスでも機能するはずです。

  • XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND 環境ブレンド モードによるパススルーのサポート
  • XR_EXT_composition_layer_inverted_alpha のサポート

また、Meta Quest 3 では、次の行が Android マニフェストに追加されている必要があります。 これは、bPackageForMetaQuest が true であれば自動的に追加されます。

XML

<uses-feature android:name="com.oculus.feature.PASSTHROUGH" android:required="false" />

そこまで手順も多くないのでせっかくなので使ってみましょう。

DefaultEngine.iniにコマンドを記述する

VRテンプレートでプロジェクトを作成し、 projectfile/confige下のDefaultEngine.iniを何かしらのテキストエディタで開きます。

[/Script/Engine.RendererSettings]の最後のほうに、記述を追加します。

r.Mobile.PropagateAlpha=True
r.PostProcess.PropagateAlpha=True

xr.OpenXRInvertAlpha=true

保存します。

今回はMetaQuest向けなので、r.PostProcess.PropagateAlpha=Trueはなくてもよいですがおまじないで。

Set Environment Blend Modeを設定する

今回はVRと切り替えをおこないたいので、BPでEnvironment Blend Modeの切り替えを記述します。

今回はVRpawnに書きました。

Set Environment Blend Modeは

1=普通のVR

3=パススルーです。

2はARグラス向けだとかで不明。今回は使いません。

パッケージ化して試してみる。

この記事ではMetaQuest向けパッケージについて記述しません。

UE5.6向けにAndroidのモジュールを落としたり、Android.batを実行したりして環境を整えます。

SDKレベルなどはこちらで。

SDK Level=33

NDK Level=32
Target SDK Version =33
Minimum SDK Version =33

また、Package game date inside .apk?がオンになっていることを確認します。

デフォルトでオンのはずですが、Package for Meta Quest devices.もオンになっているか確認します。

確認出来たらパッケージ化。

Side Questや公式のVR Android File Manager for QuestなどでApkをインストールして遊んでみましょう!

ボタンなどを押して切り替われば完成です!

以前までの手法に比べて、かなり簡単になった印象です。これを機に、パススルー機能を触ってみてはいかがでしょうか?

エンジニアリング事業部からの最新情報をお届けします