シャドウイング

使用可能なシャドウイング手法と、それらの手法がサポートしているプロパティの概要について説明します。

Choose your operating system:

Windows

macOS

Linux

シャドウはオブジェクトがワールドに接地しているように見せ、見る人に奥行きや空間を感じさます。シャドウイングは、使用可能なすべての タイプのライト でサポートされており、ライトの可動性によって決まります。

サポートされているシャドウイング手法

ライトが使用するシャドウイングのタイプは、[Mobility (可動性)] の設定が[Static (スタティック)][Stationary (ステイショナリー)] [Movable (ムーバブル)] のどれに設定されているかで決まります。可動性は、ライトがキャストする必要があるのは、ライトマップと呼ばれるテクスチャにベイクされた事前計算されたシャドウ、リアルタイムで生成された動的シャドウ、または事前計算されたシャドウおよび動的シャドウイングの組み合わせを使用したシャドウのどれであるかを特定するうえで主要な指針となる要素です。

ライトの可動性は、レベル内の他のライトとは個別に設定できます。つまり、任意の可動性を組み合わせて使用して、シーンをライティングすることができます。

使用可能なシャドウイング手法は、次のとおりです。

一部のシャドウイングでは、機能させるために、[Project Settings (プロジェクト設定)] を有効にしたり、ライトの追加のプロパティを有効にしたりする必要があります。

  • シャドウ マッピング

    • ジオメトリをシャドウ深度マップにレンダリングするデフォルトのシャドウイング手法。このシャドウイング手法は、動的シャドウイングをサポートしているすべてのプラットフォームで機能します。ただし、シャドウイング距離を手動で設定する必要があり、コンポーネントごとでのみカリングされないため高ポリゴン シーンでパフォーマンスが低下します。また、この手法は、Nanite ジオメトリをサポートしていません。

  • 仮想シャドウ マップ

    • このシャドウイング手法は、仮想化したシャドウ深度マップにジオメトリをレンダリングします。シンプルな設定で高品質なシャドウを次世代プロジェクトに提供します。Nanite ジオメトリと使用する場合に高効率のカリングを実現します。

  • レイトレーシングのシャドウ

  • ライトマスによる事前計算されたシャドウ

    • この手法は、シーンのライティング データを使用して、レベル内のスタティック ジオメトリに適用されるライトマップ テクスチャを生成します。ジオメトリには、適切なライトマップ UV の追加設定が必要です。シーンのライティングの事前計算は、マシンのスペック、シーンの複雑度など、ライトのビルドにかかる時間を決定する要因に応じて異なります。

スタティック ライトおよび固定ライトのプレビュー シャドウイング

[Mobility] が [Stationary] または [Static] に設定されているライトを編集する場合、ライトは「ビルドされていない」と見なされます。プレビュー シャドウイング は、ライティングを再ビルドすると、シャドウの外観がどのようになるかを把握することができるものの、最終的なベイク結果を表すものではありません。

プレビューのシャドウであることを示すために、レベル エディタでは、これらのライトのシャドウには、Preview (プレビュー) というテキストが表示されます。

UnbuiltShadows.png

シャドウ上の Preview という表示は、レベル エディタで作業している間のみ表示されます。Play-In-Editor (PIE) または スタンドアローン ゲーム モードでプロジェクトを起動した場合、ビルドされていないシャドウに Preview というテキストは表示されません。

プレビュー シャドウを解消するには、ライティングをビルドする必要があります。ライティングのビルドを開始するには、メインメニューで、[Build (ビルド)] > [Build All Levels (全レベルをビルド)] を選択します。

built scene shadows

preview shadows

ビルドされたシーンのシャドウ

プレビュー シャドウ

プレビュー シャドウは、エディタで作業しているときに、レベルのビューポートの [Show (表示)] > [Visualize (視覚化)] メニューで [Preview Shadows Indicator (シャドウ インジケーターをプレビュー)] をオフにすると、無効にすることができます。

ライトのシャドウイング プロパティを設定する

使用可能な各 ライト タイプ で使用可能なプロパティは次のとおりです。

これらのプロパティは、ライトが選択されているときに、レベルの[Details (詳細)] パネルでアクセスできます。

directional light properties

sky light properties

point light properties

spot light properties

rect light properties

ディレクショナル ライト

スカイ ライト

ポイント ライト

スポット ライト

矩形ライト

画像をクリックするとフルサイズで表示されます。

光源の角度、半径、高さ、および幅

各ライト タイプに、光源の角度、半径、高さ、および幅を設定するオプションがあり、キャストするシャドウのサイズや形状を制御することができます。角度、半径、高さ、および幅を大きく設定すると、ライトの影響を受けるオブジェクトのシャドウがソフトになります。

以下の例では、左側のスポット ライトは光源半径が指定されていないため、シャープなシャドウが生成されています。右側のスポット ライトは、中程度の光源半径が指定されており、その光源からのオブジェクトの距離に応じてそのライトのシャドウがソフトになっています。

source radius example

レベル エディタのビューポートでスポット ライトを確認すると、ライトの光源半径が右側のスポット ライト上の黄色い球で表されていることがわかります。

source radius editor example

ポイント ライト、スポット ライト、矩形ライトのすべてで、編集時にリアルタイムで更新される光源サイズが表示されます。

point, spot, rect light source sizes

ポイント ライトとスポット ライトには、Source Length プロパティで光源半径の長さを制御する追加オプションがあり、蛍光灯のような円筒形のライト形状を作成することができます。

point and spot light source length

Attenuation Radius (減衰半径)

ポイント ライト、スポット ライト、矩形ライトの Attenuation Radius を使用すると、このライトが影響を及ぼす境界領域を設定できます。これは物理的に正確ではないものの、動的シャドウイングをキャストするライトの境界を固定することは、パフォーマンスを確保するうえで重要です。

以下の例では、左のスポット ライトの減衰半径は右のスポット ライトの減衰半径より小さく設定されています。なお、ライトは、その半径の最も遠いポイント内の領域にのみ影響します。

light attenuation radius example

ライトを選択すると、減衰半径の距離がその領域内のオブジェクトに影響を及ぼしていますが、その領域外のオブジェクトにはシャドウをキャストしないことがわかります。

light attenuation radius editor view

シャドウをキャストする

Cast Shadow では、選択したライトがシーンにシャドウをキャストするかどうかを制御します。

shadow casting on and off

左側はシャドウ キャストが有効で、右側はシャドウ キャストが無効。

ボリュメトリック シャドウイング

Volumetric Scattering Intensity を有効にすると、フォグの強度とライトの色を調整できます。このプロパティにより、ライトの強度を直接上げる必要なく、フォグに対するライトの影響を強めることができます。

シーンでこのプロパティが有効になっていると、ライトが ボリュメトリック フォグ に反映されます。

個々のライトのボリュメトリック フォグに対する影響は、Volumetric Scattering Intensity で制御できます。デフォルトでは、ライトのボリュメトリック シャドウは無効になっていますが、Cast Volumetric Fog で有効にすることができます。

ボリュメトリックシャドウ:無効(デフォルト)

ボリュメトリックシャドウ:有効

グローバル イルミネーションの間接ライティング

グローバル イルミネーション は、サーフェスに当たって、空間内でバウンスしたライトの間接ライティングをシーンに提供します。グローバル イルミネーションは、空間内のオブジェクトを接地させるために、サーフェスにフィル ライティングとソフト エリア シャドウを提供します。Unreal Engine では、Lightmass の事前計算されたベイク済みのグローバル イルミネーションと、Lumen の動的グローバル イルミネーションおよび スクリーン空間グローバル イルミネーション を使用した間接ライティングをサポートしています。

場合によっては、ライトの可動性によって、ライトがどの手法で影響を及ぼすかが決まります。

lumen-global-illumination example scene

Lumen 動的グローバル イルミネーションによるリアルタイムの間接ライティングを使用したシーン。

動的グローバル イルミネーション手法の中には、ベイクされたグローバル イルミネーションを使用する Lumen など、事前計算済みのグローバル イルミネーションと組み合わせることができないものもあります。ただし、 ハードウェア レイ トレーシング とベイクされたグローバル イルミネーションを併用するなど、連携させることはできます。

Shadow Bias (シャドウ バイアス)

デフォルトのシャドウ マッピング手法を使用する場合、パフォーマンスとシャドウイング品質のバランスを保つために、レベル内のアセットのシャドウを生成するためのシャドウ マップはライトごとに設定されます。シャドウ マップには、カーブしたジオメトリック サーフェス上のファセット、セルフシャドウイングのアーティファクトなどの制限があります。これらの制限は、ライトの Shadow Biasing プロパティを使用して調整できます。

シャドウ バイアスは、光源からのセルフシャドウイングおよびコンタクト シャドウの強調の精度を向上させることができるライトごとの一連のプロパティです。バイアス設定は、特定の領域で最適な精度を保ちながら、別の領域ではセルフシャドウイングのアーティファクトを削減できるトレードオフを見出すうえで役立ちます。

デフォルトのシャドウバイアス設定

調節したシャドウバイアス設定

詳細については、「ムーバブル ライト」を参照してください。

Contact Shadows (コンタクト シャドウ)

コンタクト シャドウ は、ライトで採用されている他のシャドウイング手法に加えて使用する、ライトごとの追加機能です。これは、シーンの深度バッファを使用して、ピクセルの位置から光源に向かって光線を描く、スクリーン空間エフェクトです。そのため、場合によってはコンタクト シャドウの強調とシャドウの精度を向上させるうえで役立つものの、現在のカメラ ビュー内に表示されている要素で制限されます。

Contact Shadows Length プロパティでは、コンタクト シャドウの長さを定義します。値 1 ではコンタクト シャドウの長さが画面全体になり、0.5 では画面の半分になります。0 ではコンタクト シャドウが無効になります。値を小さくするとノイズが減少し、シーンによってはより正確に見える場合があります。

コンタクトシャドウ:無効

コンタクトシャドウ:有効

Lightmass の設定

ライトの Lightmass の設定は、 ライトの可動性[Static] または [Stationary] に設定されおり、ライティング ビルドが完了したときに、事前計算されたライティングに影響を及ぼします。

これらの設定は、ディレクショナル ライトの Source Angle を使用した、シャドウのベイクされたソフトネス、このライトの彩度の間接ライティングへの影響度、シャドウ指数によるシャドウの半影のフォールオフを制御します。

マテリアルおよびテクスチャを使用したシャドウイング

ライトでは、 ライト ファンクション および IES ライト プロファイル を使用してと、ライトとそのシャドウの各要素をさらに細かく定義することができます。

ライト ファンクション は、(色ではなく) ライトの強度をフィルタするために、ムーバブル ライト固定ライト の直接ライティングなど、ライトマッピングされていないライトに適用できるマテリアル タイプです。また、アニメートされたテクスチャを光源に適用する場合にも使用できます。たとえば、動く雲のディレクショナル ライトのシャドウのシミュレートなどが挙げられます。

light function on a spot light

IES ライト プロファイル は、実世界の測定データを使用した光源からの光の分布を記述するテクスチャです。IES ライト プロファイルは、特定の照明器具における輝度とフォールオフを図式化するライティング業界標準の方法です。

ies profile examples

ディスタンス フィールド シャドウイング

メッシュ ディスタンス フィールド は、シャドウイングからインタラクティブなマテリアルの作成、 Lumen による動的な間接ライティングや反射など、各種用途に使用できます。

Distance Field Shadows プロパティが有効な場合、スタティック メッシュのメッシュ ディスタンス フィールド表現は、ムーバブル 光源からソフト シャドウイングを生成するために使用されます。

このシャドウイング手法は、 ハードウェア レイ トレーシング仮想シャドウ マップなど、 光源角度、半径、サイズ によってシャドウの半影を制御する他の手法と似ています。

shadow maps versus distance field shadows

左はシャドウ マップ、右はメッシュ ディスタンス フィールドのシャドウ。

ディレクショナル ライト

ディレクショナル ライト には、大規模なワールドのライティングをシミュレートするために、この光源に関連する固有の設定が含まれています。

雲および大気のシャドウイング

ライトの [Atmosphere and Clouds (大気と雲)] セクションには、太陽による大気や雲への影響、雲からまたは雲へのシャドウのキャスト、シャドウの品質など、光源が Sky Atmosphere および Volumetric Clouds と相互作用する方法に影響を及ぼす設定とプロパティがあります。

cloud and atomosphere shadowing

Cascaded Shadow Maps (Cascade シャドウ マップ)

Cascade シャドウ マップは、カメラの視錐台を異なる Cascade (またはシャドウの詳細度) に分割し、シーン全体の動的シャドウイングを実現します。これにより、より距離の大きいシャドウを最適化し、必要な品質を確保します。つまり、カメラに近い位置では品質を上げ、カメラ位置から離れた場所では品質を下げます。

[Cascaded Shadow Maps] セクションの設定は、使用するカスケードの数、最大距離、品質を分散させる場所、および各カスケード間の遷移を指定します。

cascaded shadow maps from a directional light

カスケード シャドウ マップには、ユーザーが指定する最大距離があります。ただし、これより大きなオブジェクトにシャドウイングが必要な場合は、Far Shadow Cascades を使用することで、より遠距離のシャドウイング アートが可能になります。ただし、ここでの違いは、この距離でシャドウイングを行いたい指定のアセットを有効にする必要があることです。これを行うためには、レベルでアクタを選択し、そのアセットの Far Shadow を有効にします。

directional light far shadow

シャドウのパフォーマンスおよび最適化のオプション

シャドウのパフォーマンスは、プロジェクトで サポートされているシャドウイング手法 に応じて大幅に異なる場合があります。

このセクションで説明されているプロパティは、シーン内のライティングを最適化するための出発点です。特に動的ライトの場合、デフォルトのシャドウ マッピングなど、一部のシャドウイングの手法では、負荷が高くなる場合があります。

  • ポイント ライト、スポット ライト、矩形ライトの Attenuation Radius は、シーン内のライトの位置だけでなく、シャドウイングを行う必要のあるオブジェクトの数を制限するために重要です。これは、一部のシャドウイング方法、特にデフォルトのシャドウ マッピング手法では、負荷が高くなる可能性があるためです。

  • 動的ライトの Cast Shadows を無効にすると、シーンでシャドウがあまり影響を及ぼさない場合、ライトが大きな減衰半径で多くのオブジェクトに影響する場合、またはアセットに多くのジオメトリのディテールが含まれている場合に、パフォーマンスを向上させることができます。これは、主に従来のシャドウ マッピングを使用してライティングされた方法に影響します。ただし、フレーム コストを削減するため、すべての動的ライトで考慮することが重要です。

  • ライトで Max Draw Distance を設定すると、そのポイントまでのライトの動的シャドウイングの影響度が制限されます。1 つの領域で多数の小~中くらいのサイズのライトが影響を及ぼしているシーンでは、フレーム コストを削減するのに役立ちます。Max Draw Distance に加えて Max Fade Range を使用すると、そのライトは時間の経過に伴いフェードアウトするため、突然現れたり、消えたりすることがありません。

  • シャドウ マップ シャドウイング手法は、品質とパフォーマンスのバランスが取れた手法です。時には、パフォーマンスと引き換えに、品質を若干向上させる必要がある場合があります。Shadow Map Resolution プロパティを使用すると、選択したライトのシャドウ マップを大きくすることで、品質と引き換えにパフォーマンスを高めることができます。

  • ハードウェア レイ トレーシング シャドウ を使用する場合、[Ray Tracing (レイ トレーシング)] セクションの Samples Per Pixel プロパティを調整すると、ライトのレイ トレース シャドウにより多くのサンプルを適用することができます。サンプル数が少ないと品質が低下し、パフォーマンスが向上します。サンプル数が多いと (ノイズ除去アルゴリズムによりある程度) 品質が向上しますが、負荷が高くなります。