ボリューム・空気・透明

ミー散乱

Mie Scattering

微粒子による霞と太陽周辺の散乱を表す。

5 / 10

インタラクティブデモ

デモを準備しています…

ミー散乱

ドラッグで視点を回転、Ctrl(⌘)+ スクロールでズーム。タッチ操作は 2 本指です。

ひとことで

ちり、花粉、水滴、排気ガスのような、光の波長と同じくらいかそれより大きな粒子(エアロゾル)による散乱です。レイリー散乱と違って色による違いがほとんどなく白っぽいこと、そして光の進む向きに強く散乱する(前方散乱)ことが特徴です。太陽の周りの明るい光の輪、地平線の白いかすみ、霧の中の街灯の光のにじみは、ミー散乱によるものです。

ゲームでの使いどころ

  • 空の太陽の周りの輝き:太陽を直接見たときの、周りの明るいにじみ(太陽のハロー)。
  • かすみ・霞・大気汚染:遠景を白くかすませて、湿度の高い夏の日や、霧の朝、都市のスモッグを表現する。
  • 霧の中の光源:車のヘッドライトや街灯が霧の中でぼんやり光の球になる。
  • 天候の変化:晴れと曇り・霧の日で、エアロゾルの量を変えるだけで空の印象が大きく変わる。

しくみ

色による違いが小さい:散乱の強さは波長にほとんど依存しないので、すべての色が同じように散らばり、白っぽく見えます。雲が白いのも同じ理由です。

前方散乱:散乱の向きは光の進む向きに強く偏っています。この偏りはヘニエイ・グリーンシュタイン型の位相関数で近似し、大気では g≈0.76g \approx 0.76〜0.80.8 がよく使われます(Cornette-Shanks の改良版を使うことが多い)。

pM(θ)=38π (1−g2)(1+cos⁡2θ)(2+g2)(1+g2−2gcos⁡θ)3/2p_M(\theta) = \frac{3}{8\pi}\,\frac{(1 - g^2)(1 + \cos^2\theta)}{(2 + g^2)(1 + g^2 - 2g\cos\theta)^{3/2}}

太陽の近くを見ると、散乱角が小さい(前方)ので、この位相関数の値が大きくなり、太陽の周りが明るく輝きます。

高さの分布:エアロゾルは地表近くに集中しています(1.2 km 程度で 1/e1/e)。そのため、地平線に近い、低い空気の層を長く通る視線ほど白くかすみます。

吸収もある:ミー散乱の粒子は光を散乱するだけでなく、少し吸収もします(消散係数を散乱係数の約 1.1 倍とするのが一般的)。

実装のポイント

  • レイリーと一緒に計算する:ミー散乱は単独ではなく、レイリー散乱と同じ積分ループで密度を 2 種類追って計算します。
  • 天候パラメーターにする:エアロゾルの量(散乱係数の倍率)を天候や地域で変えると、同じ仕組みで澄んだ高原の空から霞んだ都会の空まで作れます。
  • ブルームとの違い:太陽の周りのにじみは、ブルーム(レンズや目の中での光のにじみ)でも表現できますが、ミー散乱は大気そのものの明るさなので、太陽が物に隠れていても空は明るく残ります。

つまずきやすい点

  • 量が多すぎると白一色:エアロゾルを増やしすぎると、空全体が白く飛んで青空が消えます。
  • g が大きすぎる:太陽の周りだけが極端に明るい小さな点になり、不自然になります。
  • 地上の景色との整合:空だけかすませて、地上の遠景をかすませないと、景色が浮いて見えます。遠景には同じエアロゾルの量で空気遠近法をかけます(デモの木)。

デモで試すこと

  1. 「微粒子の量」を 0 にすると、レイリー散乱だけの深い青空になり、太陽の周りはすっきりします。量を増やすと、太陽の周りに明るい光の輪が広がり、地平線が白くかすみます。
  2. 「前方散乱の強さ g」を 0 にすると、光の輪が消え、空全体が均一に白っぽくなります。0.9 に近づけると、輪は太陽の近くに集中します。
  3. 「レイリー散乱も含める」をオフにすると、ミー散乱だけの、色のない白っぽい空になります。
  4. 奥の木ほど、かすみの色に溶け込んでいきます。

参考資料

Unreal Engine Sky Atmosphere ↗

分野全体の資料で、この項目を直接扱っているとは限りません。