反射

UE4 に含まれる反射のサンプルの概要

Choose your operating system:

Windows

macOS

Linux

ReflectionHeader.png

このサンプルでは、アンリアル エンジン 4 のリアルタイムな反射機能を紹介します。シーンは、荒れ果てた地下鉄のターミナルです。あちらこちらで水が漏れ、セラミックタイルは埃にまみれ、配管は老朽化し、ボロボロになっている環境の詳細を表しています。このエフェクトを出すために使用した技術と機能の概要も一緒に説明します。

次の画像は、エフェクトを表現するために、シーンの中で反射のオンオフをブレンドしています。

Reflection Environment

反射環境はいろいろなポイントで静的レベルをキャプチャし、それを球体などシンプルな形状へ再投影します。アーティストは、 ReflectionCapture アクタを配置してキャプチャする点を選択します。反射は配置調整のため、編集中はリアルタイムで更新されますが、実行時は静的です。 キャプチャしたレベルをシンプルな形状に投影すると、反射のおおよその視差がわかります。各ピクセルは複数のキューブマップをブレンドして最終結果を表示します。小さい ReflectionCapture アクタが大きいアクタをオーバーライドするので、必要に応じて領域の反射の視差精度の微調整ができます。ブループリントの部屋の真ん中にキャプチャを配置した後に、部屋の隅に小さなキャプチャを配置することによって反射を微調整します。

reflection_environment.png

Reflection Environment と反射キャプチャに関する詳細は、 Reflection Environment (反射環境) を参照してください。

Reflection Capture アクタ

CaptureIcon.gif

Reflection Capture アクタは、レベル全体へ戦略的に配置するオブジェクトで、Reflection Environment へ反射データを入力します。

現時点で有効な反射キャプチャの形状は、球とボックスの 2 種類です。キャプチャ形状は、 キューブマップへキャプチャするシーンの一部、反射でレベルを再投影する形状、 またキューブマップ (影響範囲) から反射を受け取ることができるレベルの一部を制御するため大変重要です。

Reflection Environment と反射キャプチャに関する詳細は、 Reflection Environment (反射環境) を参照してください。

スクリーン スペース反射

スクリーン スペース反射は、地面など平面な表面上へオブジェクトを配置する際に役立つエンジン機能です。この反射は初期設定でアクティベートされて、より詳細な反射効果をもたらすために反射背景の結果とブレンドされます。

ScreenSpaceReflections.gif

Unreal Engine 4 のスクリーン スペース反射はデフォルト設定でアクティブになっていますが、設定によっては r.SSR.Quality 3 または r.SSR.Quality 0 などのコンソール コマンドを使用してトグルすることも出来ます。 以下はスクリーン スペース反射あり (r.SSR を 1 に設定) の場合と、スクリーン空間反射なし (r.SSR を 0 に設定) の場合の反射シーンの結果です。

反射の留意事項

反射に利用する背景を作成する際に、弊社のアーティストが留意している事項がいくつかあります。

Contrast

反射は全体的なライトやシャドウのコントラストが強い領域によりはっきりと明確に起こる傾向があります。反射は、現実世界と同様に、通常は暗い環境に「出現」しがちですが、強いライティング状態でキャストされます。そのため、ここで地下鉄のシーンを例に選びました。地下であるため、自然光の実光源を取り入れることができません。いくつかの照明設備は適度に間隔があけられ、どちらかと言えば強い光で輝いています。つまりシャドウと暗闇の領域が、ビューアーまたはプレイヤーに対して反射が引き立つ最高の位置になることを意味します。

Contrast.png

写実的な反射を作成したサーフェス

コントラストの使用に加えて、写実的な反射を作成時に、現実世界で実際に反射が表面に起こるタイプを考慮することも重要です。このデモコンテンツでは、濡れたコンクリート素材のフロアーと壁に陶磁器タイルが貼られた環境を選択しました。場面の大部分で水がぽたぽたと流れ落ちるさまが、背景全体へ反射性を追加しています。これはつまり、きれいなシーンを作成するためにマテリアルを巧妙に作成することが重要であることを意味します。

マテリアル作成に関する詳細は「 マテリアル 」と「 物理ベースのマテリアル 」を参照してください。

Subway.png

反射キャプチャの配置

ReflectionActors.png

程よく反射を取り入れるコツは、シーン全体に Reflection Capture アクタを配置することです。満足のいく結果を得るまでシーン全体へこれらのアクタをばらまきたくなる衝動に駆られると思います。しかし、このアクタの使用時に留意しなくてはいけない規則がいくつかあります。

  • Screen Space - Reflection Capture アクタにかかる負荷は、スクリーンを覆っている半径の大きさで決まります。この点は、パーティクルや動的ライトに似ています。つまり、キャプチャアクタの半径を過度に押しすぎないように気をつけなくてはいけません。

  • Overlap - 反射キャプチャ アクタの半径はオーバーラップすることができます。オーバーラップしたアクタは、反射のピクセル単位の負荷が増加する要因となります。スクリーン スペースが原因で増加した負荷と組み合わせたとき、大半径の反射キャプチャ アクタでシーンを覆うために、突如として法外なパフォーマンス負荷となるかもしれません。

  • Hierarchical Placement - リソースを保存して反射キャプチャアクタのレイアウトをきれいに保つには、階層レイアウトを使用することによって最低限のオーバーラップで確実な反射を設定することができます。このようなシステムでは、背景から反射を取り込む 1 つの大半径のキャプチャが配置されます。その後一連の小さなキャプチャアクタが詳細周りの反射を取り入れます。

LevelReflection.png

RED

大半径です。レベルと背景全体を反射します。

BLUE

よりローカライズされた反射です。それぞれの部屋をキャプチャします。

GREEN

小半径で詳細を反射します。重要な細かい詳細が必要な領域に配置します。

関連トピック

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