Language:
Page Info
Engine Version:

リフレクション

ReflectionHeader.png

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

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

反射背景

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

reflection_environment.png

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

Reflection Capture アクタ

CaptureIcon.gif

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

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

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

スクリーン空間反射

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

ScreenSpaceReflections.gif

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

反射の留意事項

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

コントラスト

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

Contrast.png

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

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

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

Subway.png

反射キャプチャの配置

ReflectionActors.png

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

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

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

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

LevelReflection.png

RED

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

BLUE

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

GREEN

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

関連トピック