スカイライト

スカイライトを理解するための基本。

スカイライトはレベルの遠い部分をキャプチャし、それをライトとしてシーンに適用します。つまり、空の外観とそのライティング/反射が一致することを意味しています。 これは、空が大気圏またはスカイボックスの一番上の層状の雲、あるいは遠くの山々とつながっている場合でも同様です。使用するキューブマップを手作業で指定することもできます。

シーン キャプチャ

スカイライトでは、特定の状況下でのみシーンがキャプチャされます。

  • Static Sky Light (静的なスカイライト) は、ライティングのビルド時に自動的に更新されます。

  • Stationary Sky Light (固定スカイライト) または Movable Sky Lights (ムーバブル スカイライト) の場合は、リアルタイムキャプチャ が有効に設定されていない限り、ロード時に一度更新され、その後は Recapture (再キャプチャ) の呼び出し時にのみ更新されます。いずれも [Details (詳細)] パネルからアクセスできます。また、Recapture はゲーム内のブループリントを介して呼び出すこともできます。

    SkyLight_Recapture.png

    [Details (詳細)] パネルの [Sky Light (スカイライト)] セクションにある [Recapture (再キャプチャ)] ボタン

スカイボックスが使用しているテクスチャを変更した場合、更新は自動的には行われないため、上記のいずれかの方法で更新する必要があります。

スカイライトはローカル シャドウイングをサポートしており、室内エリアが空からのライトで照らされないようにできるため、空のライトを表現するためにはアンビエント キューブマップではなく、スカイライトを使用することを推奨します。

可動性

他の ライト タイプ と同様に、スカイ ライトの 可動性 は次のいずれかに設定できます。

skylightIcon.png

可動性

説明

Static (静的)

ゲーム内でライティングを変更することはできません。最速のレンダリング方法であり、ベイクされたライティングが可能になります。

Stationary (固定)

ライティングのビルド中に、静的なジオメトリのみからシャドウイングとライト バウンスがキャプチャされます。他のすべてのライティングは動的になります。この設定により、ゲーム中にライトのカラー、強度、キューブマップを変更することが可能となりますが、移動および部分的なライトのベイクはできません。

Movable (ムーバブル)

必要に応じて、ゲーム内でのライティングの移動と変更が可能です。

Static Sky Light (静的スカイライト)

Static (静的) に設定されているスカイライトは、レベル内の静的オブジェクト用のライトマップに完全にベイクされるため、負荷はまったくかかりません。ライトのプロパティを変更した場合、 当該レベルのライティングを再ビルドするまで、変更は反映されません。

Static Sky Light を使用する場合は、可動性が Static または Stationary に設定された、レベル内のアクタとライトのみがキャプチャされ、ライティングに使用されます。さらに、Static Sky Light でキャプチャされるのはマテリアルのエミッシブ効果のみです。 これはフィードバック ループを回避するためです。この理由から、すべてのスカイボックスに、[Unlit (ライティング無し)] に設定されたマテリアルが含まれることを確認してください。

Stationary Skylight (固定スカイライト)

Stationary Mobility が設定されているスカイライトは、Lightmass からベイクされたシャドウイングを取得します。レベル内に Stationary Sky Light を配置したら、ベイクされたシャドウイングを取得するために、ライティングを一度再ビルドする必要があります。それ以降は、スカイライトを再ビルドなしに好きなだけ変更することができます。Lightmass によってベイクされたスカイライト シャドウイングには、ベント法線 と呼ばれる指向性オクルージョン情報が格納されています。

Static または Stationary Mobility に設定されているコンポーネントとライトのみがキャプチャされ、固定スカイライトを含むライティングに使用されます。

他のすべての Stationary Light と同様に、直接ライティングのカラーは ブループリント あるいは マチネ を介してランタイム時に変更することができます。ただし、間接ライティングはライトマップにベイクされるため、ランタイム時には変更できません。間接ライティングの量は IndirectLightingIntensity で制御できます。

ディレクショナル ライトのみ

Stationary Sky Light に対して計算されたディレクショナル ライトとディフューズ GI

Movable Sky Light (可動スカイライト)

Movable に設定されたスカイライトは事前計算は一切使用しません。シーンをキャプチャするよう設定した場合、あらゆる可動性のコンポーネントとライトがキャプチャされます。

距離フィールド アンビエントオクルージョン

このプロパティを使用するには、[Project Settings (プロジェクト設定)] で メッシュ距離フィールド のオプションを有効にしておく必要があります。

Movable Sky Light のシャドウイングは、各剛体オブジェクト周辺で生成された符号付き距離フィールド ボリュームからの 距離フィールド アンビエント オクルージョン によって 提供されます。距離フィールド アンビエント オクルージョンは動的なシーンの変化に対応するため、剛体メッシュの移動や非表示が可能になり、オクルージョンにも影響を及ぼします。

クリックしてフルサイズ表示。

詳細と使用例については、「How to use Distance Field Ambient Occlusion (距離フィールド アンビエント オクルージョンの使用方法)」ページを参照してください。

事前計算された (Static または Stationary) Sky Light

ベイクされたライティングを Static または Stationary Sky Light で使う場合、ライティングとシャドウイングのデータはライトマップに格納されます。このセクションでは、 Lightmass でサポートされたこれらの機能の一部について説明します。

Static Sky Light の指向性の改善

Unreal Engine 4.18 より前のバージョンでは、Static Sky Light は三次の球面調和関数でライトマスで表現されていましたが、日の出や日没のディテールはキャプチャしていませんでした。 現バージョンでは、フィルタリングされたキューブマップを使ってより高い解像度をデフォルトで得られるようになりました。さらに Lightmass では、エイリアシングを避けるために、
ファイナルギャザーのレイの大きさに応じて適切な キューブマップ テクスチャの MIP を選択します。

このようなインタラクションの例については、[Engine Content] > [MapTemplates] > [Sky] から [SunsetAmbientCubemap] を参照してください。

三次元の球面調和 | (前)

フィルタ処理されたキューブマップ | (後)

明るさと色のバリエーションが多いスカイライトのキューブマップで遮蔽度がかなり高いシーンの場合にこの違いが顕著になります。

カメラ オブスキュラ

Static Sky Light の方向性が向上したため、開口部を十分に絞ることでピンホール カメラ エフェクト (カメラ オブスキュラ) を再現することができます。 開口部が小さくなるほど、スカイライトの指向性は高まります。

CO_Cubemap.png

CO_Result.png

スカイライトのソース キューブマップ

結果のライトビルド

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

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

Stationary Sky Light のベント法線

固定スカイライトについては、Lightmass を使って、静的および固定ライティングが可動ライティングとは別にベイクされ、方向性に関する情報が ベント法線 に格納されます。これは テクセルから最もオクルードされていない環境光源への方向です。ほぼオクルードされた領域では、スカイ ライティングにサーフェス法線ではなく、この方向を使用します。これによってひび割れの品質が改善されます。

Static Sky Light アンビエント オクルージョンのみ

ベント法線ありの Stationary Sky Light

最初の画像ではアンビエント オクルージョンのみのスカイライト、2 番目の画像ではベント法線オクルージョンありのスカイライトを示しています。ひび割れのサーフェスがライティングの方向を反映していることに注目してください。

詳細は「ベント法線マップ」を参照してください。

複数回のライト バウンス

スカイライトからの間接ライトで複数回のバウンスを有効にするには、[World Settings] > [Lightmass][Num Sky Lighting Bounces (スカイ ライティングのバウンス回数)] を調整します。

LightmassSettings.png

使用するスカイライトのバウンス回数の設定

バウンス回数:1

バウンス回数:10

スカイライトの複数バウンスによる効果を十分に表現するには、ほとんどの場合、マテリアルのディフューズ値を高く設定する必要があります。例えば、ディフューズ値が「.18」 (18% グレー) の場合、2 回目のスカイライトのバウンスは ライトが放射するエネルギーの「.18^3 = .006」しか寄与せず、 これはごくわずかなものです。ディフューズ値が「0.5」であると、2 回目のスカイライトのバウンスはライトが放射するエネルギーの 0.125 となり、より顕著なものになります。

バウンスを追加するごとに分散不可のビルド時間が増加するため、スウォーム分散 を使用していない場合は十分に注意してください。

リアルタイム キャプチャ

Real Time Capture (リアルタイム キャプチャ) モードでは動的でスペキュラな環境ライティングが提供されるため、シーン要素上でのリアルタイムの反射を含む、時間帯に応じた動的なシミュレーションが可能になります。

このモードは、スカイライトの可動性が [Stationary (固定)]、[Dynamic (ダイナミック)] に設定されており、使用するスカイライト コンポーネントの [Details (詳細)] パネルで [Real Time Capture (リアルタイム キャプチャ)] が有効になっている場合に使用できます

SkyLight_RTCMode.png

このモードでは、キャプチャした反射とシャドウイングに対して以下のコンポーネントをサポートしています。

次は、このモードを使用する際の追加の注意事項です。

  • ボリュメトリック フォグはサポートされていません。

  • リアルタイム キャプチャを実行するには、シーン内に Sky Atmosphere コンポーネントを配置しておく必要があります。今後のリリースでは、この要件なしにリアルタイム キャプチャをサポートする予定です。

  • メイン ビューでのメッシュのレンダリングを無効にすることで、リアルタイム キャプチャ モードでのみメッシュをレンダリングすることが可能です。

  • 各アクタで Visible in Real Time Sky Captures が有効になっている場合のリアルタイム キャプチャの反射と比べて、メイン メニューには異なるスカイドーム メッシュを表示することができます。

  • リアルタイム キャプチャ モードでは、Cloud Ambient Occlusion が有効に設定されている場合に、ボリュメトリック クラウドからのアンビエント シャドウイングをワールドにキャストすることができます。

  • リアルタイム キャプチャ モードではすべての計算が GPU で処理されるため、RecaptureSky ブループリント ノードよりも速く、より効率的です。ゲームプレイの停止や遅延の原因となり得る CPU での処理は一切行われません。

  • ボリュメトリック クラウドを使用している場合、パフォーマンスは使用しているクラウド マテリアルの複雑さに応じて大幅に異なります。ボリュメトリック クラウド コンポーネントの Reflection Sample Count Scale および Shadow Reflection Sample Count Scale の値を調整することで、シーン内の視覚的要素を重視しながら、パフォーマンスとのトレードオフを制御できます。

反射の品質

スカイライトによりキャプチャされる反射の品質は、Cubemap Resolution プロパティにより定義されます。このプロパティでは、2 の累乗値 (64、128、256 など) を使って、キャプチャされたシーンのテクスチャ解像度を指定します。

この値を高く設定することで品質は向上しますが、トレードオフとしてパフォーマンスが低下します。設定した値は、最も高い解像度のキューブマップ ミップ (テクスチャの LOD) に適用されます。

スライダーをドラッグして、スカイライト キューブマップのそれぞれの解像度を確認してください。低解像度 (64)、デフォルトの解像度 (128)、高解像度 (256) が用意されています。

上記の例では、スクリーン スペース リフレクション (SSR:スクリーン スペース リフレクション) が無効になっていることに注意してください。反射は単にスカイライトの結果です。

タイム スライスの最適化

リアルタイム キャプチャ モードでは、フレームごとに完全なシーンの処理を実行するのではなく、タイム スライス というパフォーマンス最適化機能を活用して、キャプチャしたシーンをいくつかのフレームに分散します。この最適化機能によってフレームごとのコスト (負荷) が軽減され、フレームごとのリアルタイム キャプチャの完全処理にかかるコストが、一部のプラットフォームに対して過度に高くなることを回避できます。

例えば、スカイ (空) とボリュメトリック クラウド (雲) を含む 128x128x6 HDR キューブマップを使って PlayStation 4 上で実行したキャプチャは次のようになります (コストをミリ秒で測定):

  • 128x128 キューブマップに対する、フレームごとの 完全 処理にかかるコストはおよそ 1.465 ミリ秒です (内訳は以下のとおり):

    • スカイとクラウドにかかるコスト - 0.60 ミリ秒

    • キューブマップ ミップの生成にかかるコスト - 0.05 ミリ秒

    • スペキュラ畳み込みにかかるコスト - 0.80 ミリ秒

    • ディフューズ放射にかかるコスト - 0.015 ミリ秒

  • 9 フレームのタイム スライス を使って同じ処理を行った場合のコストは、最もコストのかかるステップにおいて最大 0.20 ミリ秒です。

タイム スライスにかかるコストは最もコストが高いフレームと同程度であるため、単一フレームのキャプチャを複数のフレームに分散することで、スカイライトのリアルタイム キャプチャを常にプロジェクトのコスト予算内に抑えることができます。また、こうすることでフレーム予算に余裕が出るため、スカイやクラウドなど、他の領域の品質を高める機会も生じます。

タイム スライスはデフォルトで有効になっていますが、r.SkyLight.RealTimeReflectionCapture.TimeSlice. コンソール コマンドを使って設定することもできます。

ムーバブル オブジェクトからのシャドウイング

可動オブジェクトから環境内へのソフト シャドウイングには、スケルタルメッシュの場合は カプセル シャドウ を、 剛体メッシュの場合は 距離フィールド間接シャドウィング を使用します。これらを正しく使用するには、別の設定を行う必要があります。そのためには、正しく機能するように別途設定が必要です。

プロパティ

UI では厳密に区別されていませんが、スカイライト コンポーネントのプロパティは、Sky Light と Light という 2 つのカテゴリに大きく分類されます。これらには、アクタの [Details (詳細)] パネルからアクセスできます。スカイライトのプロパティは Sky Light アクタに特有なもので、ライトのプロパティはすべての Light アクタに共通するものです。一部のプロパティについては、下の表で示すように、詳細設定セクションを展開して表示する必要があります。

SkyLightSettings.png

プロパティ

説明

Sky Light

Real Time Capture

有効にすると、動的ディフューズとスペキュラ ライティングのためにスカイがキャプチャされて畳み込まれます。SkyAtmosphere、VolumetricCloud のコンポーネント、さらに Sky マテリアルを含むスカイドームが考慮されます。

Source Type

遠くのシーンをキャプチャして光源として使用するか、特定のキューブマップを使用するかを設定します。シーンをキャプチャすると、スカイライト位置から [Sky DistanceThreshold] の値よりも遠くにある対象がすべて含まれます。

SLS Captured Scene

キャプチャしたシーンからスカイライトを構築します。スカイライト位置から SkyDistanceThreshold 値よりも遠方にある対象がすべて含まれます。

SLS Specified Cubemap

指定したキューブマップからスカイライトを構築します。

Cubemap

Source Type が SLS_SpecifiedCubemap に設定されている場合に、スカイライトに使用する Cubemap を指定します。

Cubemap Resolution

最上位で処理されるキューブマップ ミップの最大解像度です。2 テクスチャの累乗値にする必要があります。

Sky Distance Threshold

スカイライトからの特定の距離で、この点を越えたあらゆるジオメトリは空の一部として扱われます。反射キャプチャでも使用されます。

Capture Emissive Only

エミッシブ マテリアルのみをキャプチャします。すべてのライティングをスキップするため、キャプチャのコストが下がります。Capture Every Frame の使用時に推奨します。詳細設定 (Advanced) に含まれています。

Lower Hemisphere is Solid Color

下半球から放たれるすべてのライトをゼロに設定するかどうかを指定します。下半球からの光の漏れを防ぐのに便利なプロパティです。詳細設定 (Advanced) に含まれています。

Lower Hemisphere Color

カラー ピッカーを使って下半球の色を選択します。詳細設定 (Advanced) に含まれています。

Light

Intensity Scale

ライトが放出するエネルギーの合計です。

Affects World

ライトがワールドに影響を及ぼすことができるかどうか、または無効かどうかを設定します。

Cast Shadows

ライトにシャドウをキャストさせるかを設定します。

Indirect Lighting Intensity

ライトからの間接光の効果をスケーリングします。0 にするとこのライトのグローバル イルミネーション (GI) を無効にします。

Volumetric Scattering Intensity

このライトからのボリュメトリック散乱 (スキャタリング) の強度です。Intensity と Light Color を調節します。

Casts Static Shadows

ライトに静的オブジェクトからシャドウをキャストさせるかどうかを設定します。また、Cast Shadows を True に設定する必要があります。詳細設定 (Advanced) に含まれています。

Casts Dynamic Shadows

動的オブジェクトからライトにシャドウをキャストさせるかを設定します。また、Cast Shadows を True に設定する必要があります。詳細設定 (Advanced) に含まれています。

Affect Translucent Lighting

ライトが半透明処理に影響を及ぼすかどうかを設定します。小さいライトが多数存在する場合に無効にすると、GPU 時間を短縮することができます。詳細設定 (Advanced) に含まれています。

Transmission

スカイライトからのライトが、サブサーフェス錯乱プロファイルを持つサーフェスの中を透過するかどうかを設定します。ライトを Movable に設定しておく必要があります。詳細設定 (Advanced) に含まれています。

Cast Volumetric Shadow

ライトがボリュメトリック フォグを投影するかどうかを設定します。詳細設定 (Advanced) に含まれています。

Cast Deep Shadow

ライトが高品質の髪ストランドのセルフ シャドウをキャストするかどうかを設定します。このオプションを有効にすると、このライトに対して追加の GPU 負荷が生じます。詳細設定 (Advanced) に含まれています。

Cast Ray Traced Shadows

ライト シャドウをシャドウ マッピングまたはレイトレースで計算するかどうかを設定します (使用可能な場合)。詳細設定 (Advanced) に含まれています。

Affect Ray Tracing Reflections

レイトレースによる反射が有効な場合、ライトが反射のオブジェクトに影響を及ぼすかどうかを設定します。詳細設定 (Advanced) に含まれています。

Affect Ray Traced Global Illumination

レイトレースによるグローバル イルミネーションが有効な場合、ライトがグローバル イルミネーションに影響を及ぼすかどうかを設定します。詳細設定 (Advanced) に含まれています。

Deep Shadow Layer Distribution

ディープ シャドウのレイヤー分布を変更します。0:リニア (均一なレイヤー分布)、1:指数関数 (小さなシャドウ付近ではよりディテール)。Cast Deep Shadow をオンに設定しておく必要があります。詳細設定 (Advanced) に含まれています。

Atmosphere and Cloud

Cloud Ambient Occlusion

大気中で空の寄与を雲が遮蔽するかどうか (多重散乱の段階的フェードアウト)。

Cloud Ambient Occlusion Strength

アンビエントオクルージョンの強度。大きな値を指定するほどライトをさらに遮蔽します。

Cloud Ambient Occlusion Extent

カメラ周辺のクラウド アンビエントオクルージョン マップに使用する、キロメートル (km) 単位で表したワールド空間の半径。

Cloud Ambient Occlusion Map Resolution Scale

クラウド アンビエントオクルージョン マップの解像度をスケーリングします。この解像度は r.VolumetricCloud.ShadowMap.MaxResolution でクランプされます。

Cloud Ambient Occlusion Aperture Scale

ボリュメトリック クラウドの評価に起因する、スカイ オクルージョンに対する円錐形の絞り角を制御します。値に 1 を設定すると半球全体を考慮するため、オクルージョンがぼやけます。値に 0 を設定すると一方向のオクルージョン (垂直) を考慮するため、オクルージョンが明確になります。

制限事項

以下は、スカイライトと併用すると便利ですが、まだ実装されていない機能です。

  • 可動オブジェクト (キャラクター) から環境へのソフト シャドウイングはスカイライトに統合されておらず、現時点では別の複数の機能を実装する必要があります (追加のレンダリング コストがかかります)。

  • SkyLightComponent のブループリント関数 RecaptureSky() を使用することはできますが、処理にかかるコストが高く、少なくとも 120 ミリ秒が必要になり、ゲームプレイの停止や遅延につながります。

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