回答:
自然界のボリューム(参加メディアとも呼ばれる)の外観は、空気や水などの周囲の流体に浮遊しているほこり、水滴、プランクトンなどの小さな粒子によって引き起こされます。これらの粒子は固体オブジェクトであり、光は通常の表面と同じようにこれらのオブジェクトから屈折または反射します。したがって、理論的には、参加しているメディアは、表面が交差するだけの従来のレイトレーサーで処理できます。
もちろん、これらの粒子の数が多いため、実際にそれらを個別にレイトレースすることは不可能です。代わりに、それらは統計モデルで近似されます。粒子は非常に小さく、粒子間の距離は粒子サイズよりもはるかに大きいため、光と粒子の個々の相互作用は統計的に独立しているとモデル化できます。したがって、個々の粒子を空間内の特定の領域での「平均的な」軽い粒子の相互作用を表す連続的な量に置き換えることは妥当な近似です。
物理ベースの体積光輸送の場合、考えられないほど多くの粒子を、吸収係数と散乱係数の2つのプロパティを持つ連続的な参加媒体に置き換えます。これらの係数は、光線が媒体と相互作用する確率、つまり粒子の1つに当たる確率を距離の関数として計算できるため、光線追跡に非常に便利です。
吸収係数はで表されます。光線が参加している媒体の中のメートルを移動したいとします。吸収されない、つまり粒子の1つに当たらず、吸収される確率は `です。tが増加するにつれて、この確率がゼロになること、つまり、媒体をより長く移動するほど、何かにぶつかって吸収される可能性が高くなることがわかります。非常によく似たことが散乱係数ます。光線が粒子に当たらずに散乱する確率は; つまり、媒体を長く移動するほど、粒子にぶつかって別の方向に散乱する可能性が高くなります。
通常、これら2つの量は、単一の消衰係数ます。媒体と相互作用せずに(吸収も散乱もされずに)媒体をメートル移動する確率は、です。一方、メートル後にメディアと対話する確率はです。
物理ベースのレンダラーでこれを使用する方法は次のとおりです。光線が媒体に入ると、確率的に媒体の内部で光線を停止し、粒子と相互作用させます。相互作用確率の重要度のサンプリングは距離生成します。これは、光線が粒子にぶつかる前に媒体をメートル進んだことを示しており、次の2つのいずれかが起こります。光線が粒子によって吸収される(確率)、または散在する(確率)。
光線がどのように散乱するかは、位相関数によって記述され、粒子の性質に依存します。レイリー位相関数は、光の波長よりも小さい球状粒子(たとえば、大気)からの散乱を表します。Mie位相関数は、波長と同じサイズの球状粒子(水滴など)からの散乱を表します。グラフィックスでは、通常、元々星間塵からの散乱に適用されるHenyey-Greenstein位相関数が使用されます。
現在、グラフィックスでは、通常、無限の媒体の画像はレンダリングしませんが、ハードサーフェスで構成されるシーン内のメディアもレンダリングします。その場合、最初に光線が次のサーフェスに当たるまで完全に追跡し、関与する媒体を完全に無視します。これにより、次のサーフェスまでの距離ます。次に、前述のように、媒体内の相互作用距離サンプリングします。もし、光線は次の表面への途中で粒子を打つ、我々はどちらかそれを、それを吸収または散乱。もし、光線は通常どおり表面で無傷と相互作用を介してそれを作りました。
この投稿は、参加メディアによるレンダリングのほんの一部です。特に、空間的に変化する係数(雲や煙などに必要な係数)を完全に無視しました。興味がある場合は、スティーブマーシュナーのメモを参考にしてください。一般に、参加メディアは効率的にレンダリングすることが非常に難しく、ここで説明したものよりもはるかに洗練されたものにできます。あります容積フォトンマッピングは、光子ビーム、拡散近似、共同重点サンプリングとより。グラニュラーメディアに関する興味深い作品もあります これは、統計モデルが壊れたときに何をすべきかを説明します。つまり、粒子の相互作用は統計的に独立しなくなります。
それを行う1つの方法-これは正確に「移動」ソリューションではありませんが、うまく機能することができます。光線がボリュームを通過した距離を見つけ、いくつかの密度関数の積分を使用して、「もの」の量を計算しますヒット。
実装例へのリンクは次のとおりです:http : //blog.demofox.org/2014/06/22/analytic-fog-density/
ボリュームの効果に依存します。
光線の入射距離と光線の射出距離を計算するだけで、散乱に属さない均一なボリューム効果をシミュレートできます。
そうでない場合は、光線経路の統合を行う必要があります。これは、光線マーチングとも呼ばれます。セカンダリレイを撮影する必要をなくすために、レイマーチングは、深度マップ、ディープマップ、ブリックマップ、ライトシャドウイング用のボクセルクラウドなど、何らかのキャッシュと組み合わせられることがよくあります。この方法では、シーン全体を行進させる必要はありません。多くの場合、同様のキャッシュがボリュームの手続き型テクスチャに対して行われます。
テクスチャをボックス、球、平面などの適切なソフトエッジテクスチャを持つサーフェスプリミティブに変換することもできます。その後、通常のレンダリング手法を使用して、ボリューム効果を解決できます。これの問題は、通常多くのプリミティブが必要になることです。さらに、プリミティブの形状が均一すぎるサンプリングとして表示される場合があります。