Planar Reflections (平面反射)

光沢のある部分反射をキャプチャして表示する機能です。

Choose your operating system:

Windows

macOS

Linux

Planar Reflections

UE4 は、リアルタイムの Planar Reflection (平面反射) をサポートしています。Screen Space Reflections (SSR) よりも反射を正確に見せることができますが、レンダリング負荷は高くなります。これは、Planar Reflection の機能が、反射方向から再びレベルを正確にレンダリングするためです。

planarReflections_Banner.png

スクリーンスペース反射と平面反射の比較

レンダリングをするなら、Screen Space Reflection (SSR) の方が Planar Reflection よりはるかに効率的ですが、信頼性は劣ります。以下の画像を見れば、SSR と Planar Reflection の限度の違いが分かります。

Screen Space Reflections

Planar Reflections

  • Screen Space Reflections: 左の画像は Screen Space Reflection の限界を示しています。画像の端あるいはプールの一部で、反射が消え始めるカメラ ビューに向かってかなりの量の漏れが発生していることに注目してください。これは、SSR はオフスクリーンのオブジェクトを反射することができないためです。

  • Planar Reflections: 右の画像は同じレベルですが、Planar Reflection を有効にしました。プールのサイドと端でさえも画像に漏れがまったくなく、反射が一定かつ正確であることに注目してください。これは Planar Reflection がオフスクリーンのオブジェクトを反射することができるからです。

Planar Reflection を有効にする方法

プロジェクトでこの機能を使用するには、以下の手順を行います。

  1. メイン ツールバー で [Edit (編集)] > [Project Settings (プロジェクト設定)] を選び、[Project Settings (プロジェクト設定)] メニューで [Rendering] > [Optimizations (最適化)] セクションを開きます。

  2. [Support global clip plane for Planar Reflections (平面反射のグローバル クリップ プレーンをサポート)] の横にあるチェックボックスをクリックして、要求されたら UE4 エディタを再起動します。

    PR_Enable_PR_00.png

    Planar Reflection を有効にした後、UE4 エディタを再起動しないと、Planar Reflection は使えません。

  3. UE4 エディタを再起動したら、 [Place Actors] パネルの [Visual Effects (ビジュアル エフェクト)] セクションで、 [Planar Reflection Actor] を選択してレベルへドラッグします。

  4. Planar Reflection アクタをレベルに配置したら、 G キーを使ってこのアクタの表示 / 非表示を操作できます。 Move Rotate Scale ツールでも、Planar Reflection アクタの配置やサイズをうまく調整して、レベルのニーズに合わせることができます。

近くの反射マテリアルは、Planar Reflection アクタがレベルに追加されるとすぐに自動的に反映されます。レベルに配置されたスタティック メッシュも、法線で反射を歪めることで波のシミュレーションが可能です。

Planar Reflection アクタのプロパティ

Planar Reflection アクタには、反射の様子を大胆に変更できる様々なプロパティがあります。以下の表はこれらのプロパティの説明、および Planar Reflection の様子がどのようになるかの説明です。

PlanarReflectionProperties.png

プロパティ

説明

Normal Distortion Strength

平面の反射を歪めるときの法線の強さを制御します。

Prefilter Roughness

Planar Reflections テクスチャをプリフィルタするラフネス値です。低解像度のテクスチャを非表示にする場合に便利です。この値が大きいほど GPU 負荷も大きくなります。

Distance from Plane Fadeout Start

反射平面からこの距離でピクセルを受け取って、平面反射の平面反射のフェードアウトを開始します。

Distance from Plane Fadeout End

反射平面からこの距離でピクセルを受け取って、平面反射の平面反射を完全にフェードアウトします。

Angle from Plane Fade Start

反射平面からこの角度の法線のピクセルを受け取って、平面反射の平面反射のフェードアウトを開始します。

Angle from Plane Fade End

反射平面からこの角度の法線のピクセルを受け取って、平面反射の平面反射を完全にフェードアウトします。

Show Preview Plane

エディタで作業中に反射平面の表示を切り替えます。平面反射に影響は与えません。

詳細なプロパティ

Prefilter Roughness Distance

プリフィルタ ラフネス値が到達する距離です。

Screen Percentage

ダウンサンプル パーセンテージを使用すると、平面反射のレンダリングにかかる GPU 時間を短縮できます。平面反射によって生み出させる反射の質に直接影響します。

Extra FOV

反射テクスチャへのレンダリングに使用する追加の FOV です。法線ひずみにより、反射テクスチャ外の読み取りが発生している場合に便利です。値が大きくなると、平面反射にレンダリングが必要なオブジェクトと三角ポリゴンが増えるため、レンダリングのスレッドおよび GPU コストが増大します。

Render Scene Two-Sided

シーンを両面としてレンダリングするかどうかを指定します。反射面によってクリップされたオブジェクトの「下」で通常の歪みが読み取られるアーティファクトを非表示にするのに役立ちます。この設定を有効にすると、明るい空である可能性のある背景ではなく、クリッピングされた領域にメッシュの背面が表示されます。これを有効にする場合は、水面が反射をブロックしないため、水面を Hidden Actors に追加してください。

LOD Distance Factor

LOD で使用される距離をスケーリングします。シーン キャプチャでメイン ビューよりも低い LOD を使用することでシーン キャプチャ パスを高速化するには、1 より大きい値に設定します。

Planar Reflections アクタの Scene Capture プロパティ

Planar Reflections アクタでは、いくつかのプロパティを使って、キャプチャされるリアルタイム反射のパフォーマンス負荷を制御することができます。

PR_SceneCaptureProperties.png

プロパティ

説明

Primitive Render Mode

シーン キャプチャにレンダリングされるプリミティブを制御します。

  • Render Scene Primtive (Legacy) : シーンのすべてのプリミティブをレンダリングします。

  • Render Scene Primtives : Hidden Actors リストに追加されたものを除き、シーンのすべてのプリミティブをレンダリングします。

  • Use ShowOnly List : Show Only Actors リストにあるアクタのみをレンダリングします。

Hidden Actors

シーン キャプチャで非表示にするためにレベルで使用できる選択されたアクタのリスト。

Show Only Actors

Use ShowOnly List Primitive Render Mode を使用するときに、このシーン キャプチャによってレンダリングされるレベル内で使用できるアクタのリスト。

Capture Every Frame

キャプチャのコンテンツをフレームごとに更新するかどうかを指定します。無効にすると、コンポーネントは読み込み時に 1 回と移動する時に 1 回更新されます。

Capture on Movement

移動の際にキャプチャのコンテンツを更新するかどうかを指定します。ブループリントから手動でキャプチャする場合は無効です。

Always Persist Rendering State

Capture Every Frame が無効になっていてもレンダリング ステートを保持するかどうか指定します。モーション ブラーとテンポラル アンチエイリアシング (TAA) のベロシティの計算が可能になります。

Max View Distance Override

値が 0 より大きい場合、シーン キャプチャでレンダリングされたプリミティブに対して最大レンダリング距離 (センチメートル) を設定します。反射する平面が玄関や部屋のように閉ざされた領域である場合、反射からのカリング距離オブジェクトに使用することができます。

Capture Sort Priority

複数のキャプチャ コンポーネント間の相互依存を解決するため、GPU でシーン キャプチャをソートするためのフレーム内のキャプチャ優先度です。最も値が高いものが優先されます。

Profiling Event Name

GPU のプロファイリング時にプロファイリング イベントの名前を設定します。レベルで複数の Planar Reflections を使用している場合に、どの Planar Reflections が使用されているか認識するのに便利です。

詳細なプロパティ

General Show Flags

一般的な機能表示フラグで、一部の機能とアクタをレンダリングからシーン キャプチャに切り替えるために使用されます。たとえば、アンチエイリアシング、フォグ、スタティックメッシュ、スケルタルメッシュなどです。

Advanced Show Flags

一般的な高度な機能表示フラグで、一部の機能とアクタをレンダリングからシーン キャプチャに切り替えるために使用されます。たとえば、フォリッジ、インスタンス化されたスタティックメッシュ、Paper 2D スプライトなどです。

Post Processing Show Flags

ブルーム、自動露光、モーション ブラーの表示フラグをレンダリングからシーン キャプチャに切り替えます。

Light Types Show Flags

シーン キャプチャへレンダリングされているスカイ ライトの表示フラグをレンダリングからシーン キャプチャに切り替えます。

Lighting Components Show Flags

アンビエント オクルージョンとダイナミック シャドウの表示フラグをレンダリングからシーン キャプチャに切り替えます。

Lighting Features Show Flags

ライト機能の一般的な表示フラグをレンダリングからシーン キャプチャに切り替えます。たとえば、距離フィールド アンビエント オクルージョン (DFAO)、ライト関数、スクリーン スペース リフレクション (SSR) などです。

Hidden Show Flags

ライティングとポストプロセスの表示フラグをレンダリングからシーン キャプチャに切り替えます。

Planar Reflection の制約

Planar Reflection を使うとかなり現実的な反射を作成できますが、この機能には以下のような制約があります。

  • Planar Reflections を使用すると、シーン全体が 2 回レンダリングされるので、レンダリング スレッドと GPU でフレーム時間の半分の時間を割り当てる必要があります。

  • ワールドに置かれた Planar Reflections の数を制限します。1 ではまだ多すぎることが多いです。

  • 適切な大きさにして、見えない時にカリングできるようにします。

  • レベル内でレンダリング中の負荷が、そのまま Planar Reflection アクタのレンダリングの負荷になります。この機能を有効にすると、負荷はスクリーン比率に合わせてスケールしないので、トライアングルとドローコールのあるシーンではほとんどのパフォーマンス問題が発生します。

Planar Reflection のパフォーマンス

プロジェクトで Planar Reflection を有効にして使用すると鮮明で十分正確な反射を行うことができますが、プロジェクトのパフォーマンスに直接影響がでます。次のセクションでは、Planar Reflections を有効した場合にモバイル デバイスのみならずハイエンド PC プロジェクトにも見られるパフォーマンスの影響を見てみましょう。

UE4 ランチャーに入っている Kite & Infinity Blade Grass Lands プロジェクトの 4.12 バージョンを使って、Planar Reflections のパフォーマンスに及ぼす影響を説明します。

Planar Reflection のパフォーマンスと Kite のデモ

Kite Demo のランドスケープ テレインのサイズと変わる高さのために、レベル全体を囲むために単一の Planar Reflection アクタを追加しスケールすると機能しなくなり、パフォーマンスは非常に悪くなります。その代わり、Planar Reflection アクタはそれを必要とするレベルのエリアに合うように戦略的に配置およびスケールします。以下の画像で、Kite デモで使われた水面上で Planar Reflection に与えるビジュアルの影響を確認できます。

Planar Reflections オフ

Planar Reflections オン

Planar Reflections はレベルの見かけを大胆に変更しますが、パフォーマンスにもかなりの負荷を与えます。左側の Planar Reflections をオフにした 画像を見ると、レベル全体のレンダリング所要時間は 31 分です。右側の Planar Reflections をオンにした 画像では、レベル全体のレンダリング所要時間は 29.19 分です。これに平面反射のレンダリングに 23.07 分かかるので、Planar Reflections を有効にした場合のシーンのレンダリングの合計所要時間は 52 分になります。

GPU_Profile_PR_Off_00.png

GPU_Profile_PR_On_00.png

Planar Reflection オフ

Planar Reflection オン

クリックしてフルサイズで画像表示

クリックしてフルサイズで画像表示

Kite では完全に動的なライティングとシャドウイングが使われているために、Planar Reflection はレンダリングに 31 分かかります。Planar Reflection に再びレンダリングを行う場合、固定 / 事前計算されたライティングとシャドウイングを使用しているレベルの方がはるかに効率的です。

平面反射のパフォーマンスと Infinity Blade Dungeons

Infinity Blade Elven Ruins マップのサイズとレイアウトの関係で、平面反射は 1 つだけ必要で、レベルに配置された既存の水のスタティックメッシュに合わせてスケールされます。こちらの画像では、Planar Reflection を追加することで Elven Ruins マップ内の水に生じた視覚的な印象をの変化が分かります。

Planar Reflection オフ

Planar Reflection オン

Planar Reflection を追加すると水が生き生きと見えますし、パフォーマンスに及ぼす影響も Kite Demo と比べるとかなり小さいです。左側の Planar Reflection をオフにした画像を見ると、シーンのレンダリング所要時間は 11 分です。右側の Planar Reflection をオンにした画像を見ると、シーンのレンダリング所要時間は 1.67 分なので、レベルのレンダリングには約 13 分かかります。

GPU_Profile_PR_Off_01.png

GPU_Profile_PR_On_01.png

Planar Reflection オフ

Planar Reflection オン

クリックしてフルサイズで画像表示

クリックしてフルサイズで画像表示

Elven Ruins マップのレンダリング所要時間が 1.67 分だったのに対して、Kite Demo では 23.07 分になる原因は、Elven Ruins に使用したスタティックメッシュとマテリアルのビルド方法です。Elven Ruins マップとそのコンテンツはモバイル デバイス用に作られています。1 つのアセットに使われているトライアングル数とマテリアル インストラクション数に注意してください。このため、Planar Reflection を Elven Ruins マップで有効にすると、Kite Demo と比べてマップに使用しているアセットの複雑度とサイズが大幅に削減されるので、負荷が低くなります。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる