【UE5】VR開発あるある記
本日弊社ではUE5ジョイントウェビナーを開催しております。今回はウェビナーではちょっと採用しにくかった技術系の(筆者が遭遇した)VR開発でやりがちなあるあるを紹介させていただこうと思います。
RuntimeのOpenXRが切り替えられていない
VIVEやMetaQuestは現在Open XRを使用したVRを行っています。ただ、Open XRはどれか一つにしか設定できないため、使用する機器に合わせて設定しないと「アプリを開始したのにVRが始まらない!」といった事態が起きてしまいます。
SteamVRは「設定→OpenXR」から
Meta XRはMetaQuestLinkアプリの「設定→一般→OpenXRランタイム」から設定できます。
USBが規格に合っておらずFPSが低下する
PCVRを行う際、主に現在はTypeC-TypeC、あるいはTypeA-TypeCを使用する機器が一般的かと思いますが、機器ごとに「USB2.0」や「USB3.0」などの推奨ラインが設定されています。
推奨レベルでなくても動作しますが、FPSが極端に落ちるなどの現象が起きがちなため基準に合わせるのがおすすめです。
Steam VR/Meta Quest Link/その他接続用アプリケーションのアップデート
UEのOpenXRのみを使用している場合はあまり起こらないですが、MetaXRやVIVE OpenXRなどの外部Pluginを入れていると「ある日アプリを起動したらアップデートが始まってVRが動かない/特定の機能がうごかなくなった…」みたいなことが起こります。
プラグインのバージョン次第では「アプリのバージョン○○以降は動かない」といったことも起こることがあり、アップデートの際は要チェックです。
また、VIVEなど複数アプリケーションを経由して起動するタイプなどはアプリケーションのバージョンのかみ合いでも起動しなくなる場合があります。
SteamVRはバージョンをいくつか変更できるため、もし「アップデートしたら動かなくなった!」という場合はバージョンを変えてみると動く場合があります。
SteamVRでアドオンがブロックされている
クラッシュを起こしてしまったときに起こりがちです。
SteamVRの設定からスタートアップ/シャットダウンの設定の中で解除することができます。
開発者用の設定が有効になってない
Meta QuestではUEのVRプレビューなどでパススルーなどの一部機能を使用するために開発者モードをオンにする必要があります。
開発者モードをオンにするには、
・Metaアカウントを開発者登録する
・MetaQuestの端末をスマホアプリから開発者モードにする
・Meta Quest Linkで開発者ランタイム機能を有効にする
などを行う必要があります。
特にパススルーなどは設定をしないと動かないので気を付けましょう
バックグラウンドで動く他のOpenXRを使用したアプリの競合が起きている
知らず知らずにバックグラウンドで動いているアプリが機能を阻害している場合があります。
例えばUltraleapのアプリケーションが入っているとハンドトラッキングの機能が常時Leap側に占拠されて、どのVR機器もハンドトラッキング機能が使えない…、といったことがあります。(1敗)
今のところアプリケーションを削除するしか対策がないので、もしVRで特定の機能を使用したい場合、競合には気を付けましょう。
.apkを作成した際のAndroidのバージョン違いで動かない
世のほとんどのVR機器はAndroid製です。.apkでスタンドアロンのアプリとしてパッケージ化するには、きちんと現在のVR機器のAndroidのバージョンに沿って設定する必要があります、
バージョンは不定期的に上がっているため確認することが重要です。
このようなお知らせが出ていることが多いのでチェックしましょう
Open XR Pluginを抜くとなぜか動く
全く原因は不明ですが、Meta XRやVIVE OpenXR などを導入していている場合、OpenXRPluginを抜くと治る場合があります。(筆者はなぜかOpenXRPluginを抜かないとパススルーが動かない現象に襲われました)。VR機器固有のPluginにはそれぞれカスタムされたOpenXRプラグインが付属している場合が多いので抜いてもVRは動く…といったことが多いです。
OpenXRをいったん抜いてプロジェクト再起動→OpenXRを再度入れなおして再起動…とするとなぜか治ったりといったことも起きます。
MetaXRプラグインでは「5.3はOpenXRを抜かないとVRプレビューができない」と公言されていますが、それ以外ではなぜそうなのかわからない謎の現象です。
終わりに
VR開発にはWindowsで動くアプリケーション開発とはまた違った難しさがあります。この記事が皆様のVR開発の一助になれば幸いです。
良いVR開発ライフを!