平面反射

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

Windows
MacOS
Linux

平面反射

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

Planar_Reflections_00.png

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

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

Screen Space Reflections

Planar Reflections

  • Screen Space Reflection: 左の画像は Screen Space Reflection の限界を示しています。画像のエッジでかなりの量のリークが発生していることに注目してください。これは、SSR はオフスクリーンのオブジェクトを反射することができないためです。

  • 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 エディタを再起動したら、[Modes] パネルの [Visual Effects (ビジュアル エフェクト)] セクションで、[Planar Reflection Actor] を選択してレベルへドラッグします。

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

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

Planar Reflection アクタのプロパティの詳細

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

設定名

説明

Normal Distortion Strength

平面反射を歪める時に、法線の強度を制御します。

Prefilter Roughness

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

Distance from Plane Fade Start

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

Distance from Plane Fade End

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

Angle from Plane Fade Start

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

Angle from Plane Fade End

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

Prefilter Roughness Distance

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

Screen Percentage

ダウンサンプリング レートで、平面反射をレンダリングする GPU 時間を短縮できます。

Extra FOV

反射テクスチャへレンダリングする場合に追加で使用する FOV です。通常の歪みが反射テクスチャ外でのリーク発生の原因になっている場合に便利です。値が大きくなるほど平面反射へレンダリングするオブジェクトとトライアングルの数が増えるので、レンダリング スレッドと GPU 負荷が増えます。

平面反射の制約

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

  • 反射パスで有効にするレンダリング機能をどれにするか制御できません。

  • 動的シャドウは反射パスで正確になりません。

  • ターゲット フレーム レートにするためには、Planar Reflection に対して十分なリソースを確実に割り当ててください。

  • 一定のラフネス値のみサポートされ、マテリアルの代わりに Planar Reflection コンポーネント上で指定されます。

  • 可能な限り、ワールドに配置できる Planar Reflection アクタ数を 1 つに制約して、移動、回転、スケール操作でワールドに最も合うように調整します。複数の Planar Reflection アクタも使用できますが、カリングは錐台およびオクルージョンのみで、距離カリングは一切行わないので、注意して使用してください。このため、両方の Planar Reflection アクタをビューで同時に使用すると、プロジェクトのフレームレートに深刻な影響がでます。

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

平面反射のパフォーマンス

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

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

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

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

Planar Reflections Off

Planar Reflections On

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

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

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

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

Planar Reflections Off

Planar Reflections On

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

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

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信