Sky Atmosphere

SkyAtmosphere システムを使用して、時間帯を表現する機能と空気遠近法を用いた地上宇宙間のビューの遷移を備えた物理ベースの空と大気のレンダリングを作成できます。

Windows
MacOS
Linux

Unreal Engine 4 (UE4) の Sky Atmosphere コンポーネントは、物理ベースの空と大気をレンダリングするテクニックです。このコンポーネントは柔軟性が高く、日の出と日の入りの時間帯を持つ地球のような大気を作成することも、地球外の変わった特性を持つ大気を作成することもできます。また、適切な惑星の曲率で地上から空、さらに宇宙空間への遷移をシミュレートする空気遠近法も使用できます。

SkyAtmosphereDayDusk.png

Sky Atmosphere は以下を含めることで、惑星大気の関与媒質を介した光の散乱の近似を提供します。それにより、屋外レベルによりリアルさを与えたり、風変りな外観にしたりできます。

  • 大気中の太陽面の表現と、太陽光と大気の特性に応じた空の色を受け取る大気の指向性ライト。2 つ配置することができます。

  • 太陽の高度 (支配的な指向性ライトのベクターが地面と平行になるまでの距離) に応じて異なる空の色。

  • 散乱とファジーの設定の制御。これにより、大気密度の完全制御が可能になります。

  • 地上から空、さらに宇宙のビューに遷移するときのワールドの曲率をシミュレートする空気遠近法。

Sky Atmosphere コンポーネントを有効にする

次の手順に従って、レベル エディタの [Modes (モード)] パネルで、SkyAtmosphere コンポーネントを有効にします。

  1. Sky Atmosphere コンポーネントをシーンに配置します。

  2. シーンに 指向性ライト を配置し、その [Details (詳細)] パネルから [Atmosphere / Fog Sun Light (大気 / フォグ太陽光)] を有効にします。

    1. 複数の 指向性ライト を使用する場合、それぞれに [Atmosphere Sun Light Index (大気太陽光インデックス)] を設定します。例えば、太陽は「0」、月は「1」とします。

  3. スカイ ライト をシーンに配置して、Sky Atmosphere をキャプチャし、シーンのライティングに寄与させます。

大気の指向性ライトを調整する

指向性ライト[Atmosphere / Fog Sun Light (大気 / フォグ太陽光)] を有効にし、それぞれの [Atmosphere Sun Light Index (大気太陽光インデックス)] を設定すると、次のキーボード ショートカットを使用して各ライトの位置をすばやく調整できます。

  • Ctrl + L を押しながらマウスを動かすと、インデックス「0」を設定した指向性ライトが調整されます。通常、インデックス「0」は太陽です。

  • Ctrl + L + Shift を押しながらマウスを動かすと、インデックス「1」を指定した指向性ライトが調整されます。通常、インデックス「1」は月です。

これらの光源を移動すると、各指向性ライトの Sky Atmosphere コンポーネントで設定されたプロパティに基づいて大気に影響を与えます。

Sky Atmosphere モデル

UE4 で空と大気をシミュレートするには、現実世界の大気のルックアンドフィールを模倣したいくつかのプロパティが必要となります。これらのプロパティを使用して、適切かつ正確な方法で光を散乱させることにより、空と大気の外観を定義できます。デフォルトでは、UE4 の Sky Atmosphere コンポーネントは地球を表現します。

地球のような惑星の場合、大気は複数の気体層で構成されています。それら気体層自体は、固有の形状、サイズ、密度を持つ粒子と分子で構成されています。光子 (光エネルギー) が大気中に進入し、そこで粒子や分子と衝突すると、散乱 (反射) するか、吸収 (以下を参照) されます。

ParticleLightInteraction.png

(1) 太陽からの入射光。(2) 大気中の粒子。 (3) 方向が変わった光エネルギ。

Sky Atmosphere システムは、ミー散乱およびレイリー散乱を使用して吸収をシミュレートします。これらの散乱効果により、入射光が大気中の粒子や分子とどのように相互作用するかをシミュレートすることで、時間帯の遷移中に空の色を適切に変えることができます。

Sky Atmosphere コンポーネントを使用する場合、時間帯シミュレーションに応じて空の色が変わります。

レイリー散乱

光と小さな粒子 (空気分子など) との相互作用により、レイリー散乱 が発生します。このタイプの散乱は、光の波長に大きく依存します。例えば、地球の空では青が他の色よりも多く散乱することから、日中は空の色が青くなります。しかし、日没時の光線は大気中をさらに進む必要があることから、空は赤く見えます。光線が長い距離を進むと、青い光はすべって他の色より先に散乱してしまうため、夕焼けの色は黄色、オレンジ、赤の鮮やかなものとなります。

RayleighParticleShape.png

(1) 入射光。(2) 大気中の小さな粒子。(3) レイリー散乱した光エネルギー。

地球のような大気では、太陽光がの小さな粒子 (1) と大気中 (2) で相互作用するときに、大気全体でレイリー散乱が発生します。大気の上層は、地表近くの低層の大気と比較して密度が低くなっています (3)。

RaylightAtmosphereInteraction.png

大気中の粒子の密度を増減すると、光の散乱が増減します。

スライダーをドラッグすると、レイリー散乱スケールの増減の効果を確認できます。(左から右、1–3)

  1. 散乱が 減少 すると、大気中の光の散乱が少なくなります。これは、大気密度を地球の 10 分の 1 にした状態です。

  2. これは、地球と同程度の大気密度です。

  3. 散乱が 増加すると、大気中の光の散乱が増えます。これは、大気密度を地球の 10 倍にした状態です。

ミー散乱

大気中に浮遊する大きな粒子 (塵、花粉、大気汚染物質など) と光との相互作用により、ミー散乱 が発生します。これらの粒子はエアロゾルと呼ばれ、自然に発生したり、人間の活動によって生み出されたりします。ミー散乱理論に従う入射光は、通常、光を吸収します。これにより、光が遮られ、空は透明度が下がってぼやけて見えます。また、通常は、前方に散乱する光が多く、光源の周りに明るい光の輪を作ります。

MieParticleShape.png

(1) 入射光。 (2) 大気中の大きな粒子。 (3) ミー散乱された光エネルギー。

エアロゾル密度の増減により、空の鮮明さを調節し、ぼやけ感を出す効果があります。

スライダーをドラッグすると、ミー散乱スケールの増減の効果を確認できます。(左から右、1–3)

  1. 粒子の密度が 下がると、空がよりはっきりと見えるようになります。ぼやけが少なくなり、光の散乱の方向性が抑えられます。

  2. デフォルトのミー散乱スケールです。

  3. 粒子の密度が 増えると、空が遮られます。また、入射光の方向に強い前方散乱ローブが発生し、空がかすんで見えるようになります。

ミー位相

ミー位相 で、大気中のより大きなエアロゾル粒子と相互作用するときに、光がどの程度均一に散乱するかを制御できます。ミー散乱を使用すると、通常、前方に散乱する光が多く、上空の太陽面の周りなど、光源の周りに明るい光の輪を作ります。

MiePhaseFunctionShape.png

(1) 入射光。 (2) 大気中の大きな粒子。 (3) ミー散乱された光エネルギー。

大気中のミー散乱の均一性を制御するには、Mie Anisotropy プロパティを使用します。

スライダーをドラッグすると、[Mie Anisotropy (ミー異方性)] の増減の効果を確認できます。(左から右、1–3)

  1. Mie Anisotropy を 小さくすると、大気中の光がより均一に散乱します。この例では、値「0」を使用しています。

  2. デフォルト設定では、地球のような大気を模倣します。この例では、値「0.8」を使用しています。

  3. Mie Anisotropy を 大きくすると、光の散乱の方向性が高まり、光源の周囲で光が強くなります。この例では、値「0.9」を使用しています。

大気吸収

吸収される量と色を制御するには、[Absorption Scale (吸収スケール)][Absorption (吸収)] カラーピッカーのプロパティを使用します。以下の例は、[Absorption Scale (吸収スケール)] を増加させて単一の RGB カラーを除去する方法を示しています。

スライダーをドラッグすると、[Absorption Scale (吸収スケール)] の増減の効果を確認できます。(左から右、1–3)

  1. 大気吸収 なし

  2. デフォルトの地球のオゾンの吸収スケール。

  3. オゾン吸収スケールを 増加 させた状態。

吸収される量と色を制御するには、[Absorption Scale (吸収スケール)][Absorption (吸収)] カラーピッカーのプロパティを使用します。以下の例は、大気の吸収量を増やし、単一 RGB カラーの除去を行っています。

Absorption_GreenRemoved.png

Absorption_RedRemoved.png

Absorption_BlueRemoved.png

緑を吸収した状態

赤を吸収した状態

青を吸収した状態

光が大気中で散乱する方法によっては、さまざまな時間帯で一部の色の吸収が明確にはわからない場合があります。

高度分布

Sky Atmosphere コンポーネントを使用すると、地上から見た大気だけでなく、上空や宇宙から見た大気も制御できます。つまり、事実上、ワールドの曲率を定義すると、地上から上空、宇宙への遷移時に実世界の大気のように感じさせることができるということです。

これを実現するには、次のプロパティを使用します。

  • Ground Radius を使用して、惑星のサイズを定義します。

  • Atmospheric Height を使用して、大気との光の相互作用の評価を停止する大気の高度を定義します。

  • Use Rayleigh Exponential Distribution を使用して、密度の低下によりレイリー散乱効果が 40% に低下する高度 (キロメートル) を定義します。

  • Use Mie Exponential Distribution を使用して、密度の低下により ミー散乱効果が 40% に低下する高度 (キロメートル) を定義します。

スライダーをドラッグすると、[Rayleigh height (レイリー高度)] の増減の効果を確認できます。(左から右、1–3)

  1. レイリー大気高度: 0.8 キロメートル

  2. デフォルトのレイリー大気高度: 8 キロメートル

  3. レイリー大気高度: 80 キロメートル

惑星ビュー

宇宙空間 (または単に高い視点) からの惑星ビューを定義するとき、以下のような設定を使用して外観を定義できます。

地球の半径: 6360 km

地球の半径: 300 km

地球の半径: 300 km

地球の半径: 300 km

地球の半径: 300 km

大気高度: 100 km

大気高度: 100km

大気高度: 100 km

大気高度: 100 km

大気高度: 300kn

レイリー大気高度: 8 km

レイリー大気高度: 8 km

レイリー大気高度: 2 km

レイリー大気高度: 32 km

レイリー大気高度: 32 km

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

芸術的な表現

Sky Atmosphere コンポーネントは、物理ベースのプロパティに加えて、プロジェクトに特定の外観を定義するときに使用可能な芸術的な制御もサポートしています。

空気遠近法スケール

Aerial Perspective View Distance Scale プロパティを使用すると、空気遠近法で表示した時にサーフェスまでの距離を調整することで、サーフェスをより厚く見せることができます。

スライダーをドラッグすると、 Aerial Perspective View Distance Scale プロパティを変更できます。(左から右、1–3)

  1. このシーンにはいくつかの大気特性が設定されています。

  2. 同じシーンですが Aerial Perspective View Distance Scale をわずかに増加させています。

  3. 同じシーンですが Aerial Perspective View Distance Scale を 2 倍にしています。

指数関数的高さフォグ

ミー散乱は大気のコンポーネントであり、それ自体が高さフォグ シミュレーションとなっています。つまり、ミー散乱を使用している場合は、Exponential Height Fog コンポーネントを使用しなくてもシーンに高さフォグが追加されます (以下を参照)。

ExpoHeightFog.png

Exponential Height Fog コンポーネントは使わず、Sky Atmosphere コンポーネントから生成された高さフォグ。

ただし、プロジェクトで Exponetial Hight Fog コンポーネントが必要な場合は、[Project Settings (プロジェクト設定)] から [Support Atmosphere Affecting Height Fog (高さフォグに影響を及ぼす大気をサポート)] 設定で有効にすることができます。この設定は、高さフォグ自体の既存の偽色の上に追加されます。高さフォグに対する空と太陽の影響の強さは、Sky Atmosphere コンポーネントの [Height Fog Contribution (高さフォグの寄与)] プロパティを使用して制御できます。

スライダーをドラッグすると、Sky Atmosphere コンポーネントへの高さフォグの寄与度の増減を確認できます。(左から右、1–3)

  1. Sky Atmosphere コンポーネントからの高さフォグの寄与度がデフォルト。

  2. Sky Atmosphere コンポーネントからの高さフォグの寄与度が半分 (0.5)。

  3. Sky Atmosphere コンポーネントからの高さフォグの寄与度が 2 倍 (2.0)。

スカイ レンダリング オプション

空と空気遠近法は、レイ マーチングを使用して画面にレンダリングされます。ただし、特に解像度が 4K または 8K になりつつある今日のような状況で各ピクセルに対してこれを行うと、負荷が高くなる可能性があります。いくつかのルックアップ テーブル (LUT) で空が低解像度で評価されるのは、こうした理由からです。以下に、その LUT を示します。

デフォルトでは、これらすべての LUT がすべて評価されますが、以下の例を使用して、独自のプロジェクトのニーズを判断できます。

使用される LUT のタイプ

説明

FastSkyViewLUT

視点周辺のレイ マーチングされた空の輝度の緯度 / 経度テクスチャを保存します。空のピクセルにのみ適用されます。

AerialPerspectiveLUT

透過率と散乱輝度をフロクセル (カメラ錐台ボクセル) に保存します。これは、不透明なメッシュと透明なメッシュに 空気遠近法 を適用するために使用されます 。

MultipleScatteringLUT

レイ マーチング中に、複数の散乱の寄与を評価するために使用されます。

TransmittanceLUT

レイ マーチング中に、大気中および惑星上の任意の位置の太陽光からの残りの輝度を評価するために使用されます。

DistanceSkyLightLUT

均一位相関数使用する散乱イベントの後に、遮蔽されていない輝度を保存します。

これらの設定の多くで、プロジェクトの LUT のパフォーマンスとビジュアル品質を制御できます。それら設定の詳細については、「Sky Atmosphere リファレンス」 ページを参照してください。

Skydome (天空) メッシュを使用して空をレンダリングする

プロジェクトによっては、天空メッシュをワールド中に配置して、雲、星、太陽や、天体を空に合成する方法をアーティストが制御できるようにしたい場合があります。

Sky Atmosphere コンポーネントと連携するように天空メッシュを設定するには、マテリアルで次を有効にする必要があります。

  • マテリアルの [Details (詳細)] パネルで、[Material (マテリアル)] カテゴリの下にある [Is Sky (空かどうか)] を有効にします。

  • Blend モードを [Opaque (不透明)] に設定します。

  • Shading モードを [Unlit (ライティングなし)] に設定します。

のマテリアルは、ベース パス中に最後の不透明なメッシュとしてレンダリングされます。つまり、二重の寄与を避けるため、空気遠近法は適用されません。ただし、高さフォグとボリュメトリック フォグが使用されている場合は、引き続き適用されます。

このマテリアルでは、空、太陽面、雲、空気遠近法を自由に構成できます。また、雲や空の他の要素のライティングを計算する必要があります。

マテリアルでこれを実現するために使用可能なマテリアル式がいくつかあります。それらの式を見つけるには、マテリアル エディタで「SkyAtmosphere」と検索してください。

これらマテリアル式の詳細については、「Sky Atmosphere リファレンス」 ページを参照してください。

これらの式の一部を使用するときは、それらの値の評価を操作することから、天空メッシュの形状が重要となります。例えば、関数を使用して雲のライティングを評価する場合、天空ピクセルのワールド位置が大気中の雲のワールド位置を表すと想定できます。

時間帯サンプル レベル

UE4 では、Sky Atmosphere マテリアル式を使用したマテリアルと天空メッシュを示す実例テンプレート マップが利用可能です。

SkyAtmos_TimeOfDayMap.png

このレベルは、「Engine Content (エンジン コンテンツ)」フォルダの中にある「Engine/Maps/Templates」にあります。または、メイン メニューを使用して新しいレベルを作成し、TimeOfDay_Default レベルを選択できます。

ビジュアリゼーションとデバッグ

Sky Atmosphere のビジュアリゼーションおよびデバッグ ビューでは、大気の設定に加えた変更をリアルタイムで確認できます。

SkyAtmosVisualization.png

  1. [Hemisphere View (半球ビュー)] には、レイリー散乱とミー散乱を吸収とともに考慮した大気のビジュアル表現が表示されます。

  2. [Time-of-Day Preview (時間帯プレビュー)] には、Sky Atmosphere コンポーネントに適用される設定に基づいて、様々な時間帯が表示されます。

  3. [Graph View (グラフ ビュー)] には、Sky Atmosphere コンポーネントの設定された Ground Level (地面レベル) と Atmosphere Height (大気高度) 内のレイリー散乱、ミー散乱、吸収の値が表示されます。

次のコマンドを使用すると、Sky Atmosphere のビジュアリゼーションを画面上に描画できます。

r.SkyAtmosphere.Visualize 1

追加情報

  • 物理ベースのスカイ ライトのセットアップ

    • 太陽が天頂にあるとき、0.545 度の角直径に対して 120000 ルクス (または cd:sr*m^2) に設定する必要があります。

    • 天頂にある太陽によって垂直に照り付けられた白い拡散表面の合計ルクスは、約 150000 ルクスでなければなりません。

      • 空の寄与度はその合計の 20% になります。

      • HDR (Eye Adaptation) ビジュアリゼーション ツールに用意されている輝度 / 照度メーターを使用して、エンジンでこの値を測定する場合、アンビエント オクルージョンを無効にします ([Show (表示)]> [Visualize (視覚化)])。

      • Sky Atmosphere コンポーネントの Multiscattering は 1 に等しく、Earth Albedo はデフォルトで 0.4 (線形) です。

    • 月が天頂にあるとき、0.568 度の角直径に対して 0.26 ルクスに設定する必要があります。

  • 地面 / 下半球が暗くなるのはなぜですか。 地面に近い場合、フォグは発生しないため、散乱効果もフォグの色も得られません。つまり、仮想惑星の下半球は黒になります。これに対処するには、次を試してください。

    • シーンをテレインまたはメッシュで埋めて、惑星のサーフェスを表現します。

    • Exponential Height Fog コンポーネントを下半球のカラー フィラーとして使用します。

    • テレインまたはメッシュ サーフェスをより高い高度に配置します。

  • 空の 2 番目の指向性ライトから受ける影響が小さいのはなぜですか。 現在、2 番目の光源では多重散乱が評価されません。

  • 天空にテクセルが見えるのはなぜですか。 テクセルが空に表示される場合は、FastSkyViewLUT (r.SkyAtmosphere.FastSkyViewLUT.SampleCountMax) の解像度を上げてみてください。フォグのかかった要素にテクセルが表示される場合は、AerialPerspectiveCameraVolumeLUT (r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution) の解像度を上げます。

  • カメラが惑星の +Z 北極に近くないときでも大気ライトは機能しますか。 最適化のため、サーフェス ライティングに対する太陽光の透過率の効果は、カメラが惑星の最上部 (+Z 位置以上) にあるかのようにしか評価されません。これは、フィードバックに基づいて今後のリリースで改善される予定です。

  • 複数の惑星大気を一度に画面にレンダリングできますか。 現在、このバージョンの Sky Atmosphere システムではサポートされていません。

  • ノイズ、エイリアシング、異なる色のいくつかのリングが表示されます。 捕捉しづらい高スパイクを生成する高周波要素または値が地表近くの大気中にある場合、次の 2 つの方法のいずれかを使用してこれを解決できます。

    • r.SkyAtmosphere.SampleCountMax を使用して Sky Atmosphere のサンプル数を増やします。

    • ピクセルごとのレイ マーチングではなく、FastSky LUT を使用している場合は、r.SkyAtmosphere.FastSkyLUT.SampleCountMax を使用します。 詳細については、このページの「スカイ レンダリング オプション」 セクションを参照してください。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback