Radiative Transfer方程式の拡散近似
はじめに
BSSRDFモデル や subsurface scattering の理論的背景には, Radiative Transfer方程式の拡散近似があります[JMLH01]. ただし[JMLH01]ではこのことを軽く触れているのみで, 詳細は[Ish78]へ委ねられています. 一方で, Radiation Hydrodynamicsの本[Cas04]を見ると, この話題はモーメント定式化[Tho81]を用いてわかりやすく整理されています. そこで, この記事では [Tho81, Cas04]を参考にしてRadiative Transfer方程式のモーメント定式化を行い, [JMLH01]にある拡散方程式を求めます.
Radiative Transfer方程式
位置 , 時刻
で方向
へ向かう光線の放射輝度を,
と書きます. このとき, 媒質内を進行する光線の放射輝度の変化は, Radiative Transfer方程式
によって与えられます. ここで は単位球面
上の積分を表します. そして
] は光速,
],
],
は媒質の散乱係数, 吸収係数, 消散係数です.
は散乱の位相関数で,
と規格化されているとします. また散乱は軸対称 の場合に限るとして, その異方性因子を
と定義しておきます[JMLH01].
なお, [JMLH01]にある Radiative Transfer方程式は放射輝度の時間変化を無視しているのですが, この記事では残して導出を進めます. ほかの分野と比較したくなった時に便利だからです.
Radiative Transfer方程式(\ref{eq:radiative_transfer})は, 放射輝度 に関する積分微分方程式となっていることに加えて, 位置
, 時間
, 方向
の6つの独立変数を持っています. 従って簡単には解けません. そこで次節では, Radiative Transfer方程式を方向
に依存しない方程式群へ展開する, モーメント定式化を導入します.
モーメント定式化
モーメント展開
単位球面上に値をとる関数 はモーメント展開によって,
と導入します[JAM+10].
これを使うと, 放射輝度
と展開されます. ここで
後のために, この記事では, 2次のモーメントも tensor irradiance
と書いておきます. また, 自己放射
と書いておきます.
Radiative Transfer方程式のモーメント定式化
それでは, (\ref{eq:define_moment})を使って Radiative Transfer方程式の0次と1次のモーメント式を求めていきます.
0次のモーメント式
Radiative Transfer方程式(\ref{eq:radiative_transfer})の0次のモーメントをとると,
となります.
1次のモーメント式
同様に, Radiative Transfer方程式(\ref{eq:radiative_transfer})の1次のモーメントをとると,
となります.ここで
Radiative Transfer方程式の拡散近似
前節で得た 0次のモーメント式には1次の量 が, 1次のモーメント式には2次の量
が表れます. このままではモーメント式の階層が無限に続いてしまうので, 放射輝度のモーメント展開(\ref{eq:moment_expansion})を1次で打ち切る近似[JMLH01]を行います
この近似は, 拡散近似と呼ばれています[Cas04]. これを, 1次のモーメント式(\ref{eq:rte_1st_moment})の第2項へ適用すると, 下記が得られます.
詳細
さらに, 平均自由行程
となります. これで, 文献[Ish78, JMLH01, JAM+10]の拡散方程式が求まりました.
まとめ
この記事では, 放射輝度の低次近似(\ref{eq:moment_expansion_1st_approximation})を取ることで, Radiative Transfer方程式(\ref{eq:radiative_transfer})から拡散方程式(\ref{eq:isotropic_diffusion_equation})が得られることを確認しました. ここで書いた内容が, Radiative Transfer方程式の拡散近似を用いた文献[JMLH01, JAM+10]などを読む際の助けになれば幸いです.
付録
この記事内で使った式を挙げます.
位相関数
の1次のモーメント
の1次のモーメントをとると,
放射輝度
の0次と1次のモーメント
これらは, が
に作用しないことから得られます.
の0次と1次のモーメント
(\ref{eq:pL_0th_moment}): の0次のモーメントを取ると
(\ref{eq:pL_1st_moment}):
参考文献
光子の集団としての光線について
これは レイトレ合宿7(https://sites.google.com/site/raytracingcamp7/ )のアドベントカレンダーの記事として作成しました .
はじめに
パストレーシングにおいて, 光は輝度 を運ぶ光線として表され, その光散乱をRendering方程式
ならびに Volume Rendering 方程式に基づいて計算することで, 写実的な映像を作り出すことができます. これらの基礎となるものは Radiative Transfer方程式であり[Arvo1996], 更にそれはBoltzmann方程式の一種であることが知られています[Cercignani1988]. Boltzmann方程式とは希薄気体の運動方程式です. その運動は, 相空間分布関数として表現した粒子の集団の時間変化として表現されるのですが, それならその分布関数と光線の概念は何らかの関係で結びついているはずです.
この記事では, Boltzmann方程式とRendering方程式の関係を考えるための準備として, 光子の集団を表す分布関数 と, 輝度
を運ぶ光線との間の対応関係について考えます.
相空間分布関数
いろいろな運動量を持って動き回る点粒子の集団を考えます. このとき, 位置 , 時間
において, 運動量が
である粒子数の密度を, 相空間分布関数
として表現します. この関数は, 運動量で積分すれば粒子数密度
を, 相空間体積要素で積分すれば, 粒子数
を与えるように規格化されているとします.
ここで, の単位は
なので, 分布関数を無次元にするために, プランク定数
] を使って
を掛けました.
光線中の光子の数
光線を一本の光のビームと考えて, それを構成する光子の分布関数が で与えられたとします. 光は振動の方向に応じて2つの偏光状態を取ることができるので, これを2つの異なる状態と数えて, 分布関数は
と規格化されているとします.
(\ref{eq:number_density})より, この式は(光子の個数密度)(空間体積要素)という意味を持っているので, 光子のエネルギー
から, 領域
内の放射エネルギー
]を,
と計算できるはずです.
そして, この量を次のように書き換えます.
内を進み, 面積
, 法線
の微小面を通過する光子
内の方向
へ光速
で進み, 面積
, 法線
の微小面を通過するとします(図). このとき, 相空間体積素片
は,
の間にビームが掃き進んだ体積として,
と書けます. さらに運動量体積要素
も, 極座標表示を使って
とします. そうすると, 放射エネルギーは
となります.
de Broglieの関係, および特殊相対性理論におけるエネルギーと運動量の関係によれば, 振動数が である光子のエネルギー
には,
という関係があります. 従って , そして
と書けば, 放射エネルギーは
と得られます. ここで導入した分光放射輝度
によって, 光のビームが運ぶ輝度と, 光子の分布関数の関係がわかりました.
黒体輻射
(\ref{eq:spectral_radiance}) により, 光子の分布関数を与えれば, その分光放射輝度を求めることができます. 温度
で熱平衡状態にある光子の分布関数, Planck分布
を(\ref{eq:spectral_radiance})へ代入すれば, 分光放射輝度はただちに
と黒体輻射の式として求まります. ここで, はボルツマン定数です.
さいごに
この記事では, パストレーシングにおける光線を光子の集団によるビームと考えて, 放射エネルギーと分光放射輝度を導入(\ref{eq:radiant_energy})し, 光子の分布関数との対応関係(\ref{eq:spectral_radiance})を求めました. この内容は, 主に[藤田1990]をもとにしています. 興味のある方は, そちらも併せて参考にしてください.
マイクロファセット法線分布関数を作ってみる
これは レイトレ Advent Calendar 2018 - Qiita の記事として作成しました .
はじめに
マイクロファセットモデルには, 法線分布関数というものがあります[Heitz2014].
"GGX"と唱えれば, いい感じにラフな見た目を作り出してくれるアレです.
この関数は, 入射光がどのくらいの範囲に散乱されるかを表す, 単位立体角当たりの(規格化された)面積分布を表しています.
マイクロファセット法線とハーフベクトルが等しいという仮定から, これは, 物体表面の微細構造による散乱の統計的な結果を, 鏡面で出来た3次元形状の面積分布に置き換えていると見てもいいのではないでしょうか.
この見かたが正しければ, 適当な形状の鏡を持ってきて, 単位立体角当たりの面積分布を作ることで, それに対応する法線分布関数が求まるはずです.
この機会にちょっと試してみます.
マイクロファセット分布関数を作ってみる
話を簡単にするために, 3次元形状は回転体に限るとしておきます.
法線 をもつ微小面
] に対して, 方向
から光のビームを打ち込むことを考えます.


次に, 光の当たった微小面


また, マイクロファセットの法線
と書き直すことができます. ここで,
と得られます. この
この名前を"全断面積"としたのは,
回転楕円体のマイクロファセット法線分布関数
以上の議論が正しければ, [TR1975] と同様にして, 回転楕円体からGGX分布が得られるはずです.
はじめに, 長半径を, 短半径を
とする回転楕円体
さいごに
この記事では, 鏡面を持つ回転体形状の, 単位立体角当たりの面積分布を考察することで, 法線分布関数を定義してみました. その一例として回転楕円体を考えたとき, GGX分布関数が得られることがわかりました.
微分散乱断面積との関連
この記事で行った光反射の考察はラザフォード散乱(https://en.wikipedia.org/wiki/Rutherford_scattering )を参考にしました. そして法線分布関数 と, 微分散乱断面積
は,
参考文献
[Heitz2014] Eric Heitz. Understanding the masking-shadowing function in microfacet-based brdfs. Journal of Computer Graphics Techniques (JCGT), 3(2):48–107, June 2014.
[TR1975] T. S. Trowbridge and K. P. Reitz. Average irregularity representation of a rough surface for ray reflection. J. Opt. Soc. Am., 65(5):531–536, May 1975.
*1:いま, 面積を求める計算を行っているからです.