4.19 から大きく変わる VR 解像度の調節方法
December 19, 2017

4.19 から大きく変わる VR 解像度の調節方法

作成 Sam Deiter

これまで UE4 Virtual Reality(VR) プロジェクトのレンダリング解像度の設定に使用していた cvar が、次回のアンリアル エンジン (UE4) リリース 4.19 から大幅に変わります。 新たに登場する cvar により UE4 サポート対象のすべての VR プラットフォームで VR プロジェクトの解像度調整がより簡単に行えるようになりますが、残念ながら、これまでのすべての UE4 VR プロジェクトとの後方互換性が破られます。この変更が VR プロジェクトに与える影響、また 4.19 へのアップグレード時に発生する可能性のあるパフォーマンス関連のバグの修正方法について説明します。

これまでの HMD 解像度の決定方法 (4.18 以前)

UE4 のこれまでのバージョンでは、エンジンが HMD 画面用の VR プロジェクトをレンダリングする場合、Screen Percentage cvar (r.ScreenPercentage) を使って解像度を決めてきました。 この方法は VR プロジェクトの解像度調節には適切でしたが、HMD ごとに必要な Screen Percentage 値が異なるため、使用する値を当てずっぽうで決めてしまうことが無きにしもあらずでした。その原因は、r.ScreenPercentage cvar が HMD に理想的な解像度ではなく表示パネルの解像度に合わせた比率を使ってレンダリング解像度を調節していたことでした。 この方法が採用された経緯については、VR and AR Technical Director Nick Whiting による こちらのプレゼンテーション資料 をご覧ください。

パネル解像度と歪み関数はサポート対象の HMD ごとに少しずつ異なるため、デバイスごとに異なる r.ScreenPercentage を設定する必要があります。 つまり 、ある HMD で良い結果を出した値を 別の  HMD で使っても同じ結果はでないということです。

4.19 以降の HDM 解像度の設定方法

そこで 4.19 から新たに登場した cvar が  vr.PixelDensity です。 HDM に理想的な値として現在使用している値を 1 とする標準値を使って調節することができます。値を下げるとレンダリング時間は速くなりますがアンダーサンプリングされ (ぼやける)、値を 1 より大きくするとスーパーサンプリングされます (非常に鮮明)。将来的には、VR プロジェクトの HMD コンポジタの解像度を調節する場合、 常に この vr.PixelDensity を使用し、 常に r.ScreenPercentage を 100に設定するようになります。 理想的な解像度の実行のために各 HMD で使用してきた  r.ScreenPercentage 値は 新しい vr.PixelDensity cvar ではどうなるのでしょうか。下表をご覧くさだい。
VRBlogScreenPerToVRPixel_1.jpg

PixelDensity_Chart.PNG

すべての HMD の vr.PixelDensity 値には、それぞれの HMD の理想の解像度で実行することを意味する「1」 が設定されています。さらに vr.PixelDensity にはもう 1 つメリットがあります。論理的に意味をなす値を使って VR プロジェクトの解像度を簡単に増減できるのです。

Number of pixel drawn = 2 x HMDs ideal width x HMDs ideal height x (vr.PixelDensity)²

たとえば、VR プロジェクトの レンダリング ピクセル数 を 20% 減らしたい場合、 vr.PixelDensity=1-0.2 と設定します。 逆に VR プロジェクトの レンダリング ピクセル数 を増やしたい場合は、 vr.PixelDensity=1+0.2と入力します。

r.ScreenPercentage から vr.PixelDensity への変更の注意事項

 r.ScreenPercentage cvar を調節するコードを開発する場合は、 vr.PixelDensity を使うこと、r.ScreenPercentage cvar のデフォルト値を 100 に戻して 4.19 以降へのバージョン アップによって発生する可能性のあるパフォーマンス関連の問題を回避するようにしてください。r.ScreenPercentage cvar への参照はすべて vr.PixelDensity cvar に置き換えてください。そうでないと、必要以上のピクセルをレンダリングすることになり、プロジェクトのパフォーマンスが著しく低下します。

この変更を行う場合、デフォルトの vr.PixelDensity=1 は 4.18 の r.ScreenPercentage=100よりも大きい解像度を指定することに留意して、広範囲にわたるパフォーマンス テストを必ず実施してください。 

ブループリントの設定:

VRPixelDensity_BP_Commandline.jpg

INI ファイルのセットアップ:

VRPixelDensity_DefaultEngine.jpg

変更に関するご質問は フォーラムにお寄せください。お待ちしています!