【UE5.6】簡単になったパススルー機能を使ってみよう
UE5.6から、ベンダー固有の OpenXR 拡張を使用しないパススルーのサポートが実装されました
5.5までパススルーを使用するには、MetaQuestやVIVEなど固有のプラグインを導入する必要ありましたが5.6から汎用のパススルーが実装されました!
OpenXR パススルー
ベンダー固有の OpenXR 拡張を使用しないパススルーのサポートが実装されました。 詳細については、以下を参照してください。
デバイス非依存の OpenXR パススルーを UE 5.6 で有効にする手順:
- 次のいずれかで、
r.Mobile.PropagateAlpha=True
を設定します。
- エンジンの「
BaseEngine.ini
」ファイル- プロジェクトの「
DefaultEngine.ini
」ファイル- デバイス プロファイル
- これにより、アルファ レイヤーがデバイスに渡されるようになります。
- モバイル デバイスではない場合は、代わりに
r.PostProcess.PropagateAlpha=True
を使用します。 念のために、両方を使用することもできます。- 同じ
.ini
ファイル内で、xr.OpenXREnvironmentBlendMode=3
を設定します。
- これによって、ランタイムに
XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND
環境ブレンド モードが要求され、パススルーを使用するように要求されます。- そうするための代替方法 (おそらく望ましい方法) は、「Set Environment Blend Mode」ブループリント ノードを使用することです。 「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=Truexr.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をインストールして遊んでみましょう!
ボタンなどを押して切り替われば完成です!
以前までの手法に比べて、かなり簡単になった印象です。これを機に、パススルー機能を触ってみてはいかがでしょうか?