last modified: 2018-07-08 22:30:53
このページではMathJaxによる数式表示を行っています。対応しているブラウザーであれば少し待てば数式が表示されます。
(画面左下にMathJaxのタイプセットステータスが表示されます。)
環境によっては表示が崩れているかもしれません。その際はブラウザーを変更してみてください。

双方向(反射率|透過率|散乱)分布関数 (B(R|T|S)DF)

みなさんこんにちは!shockerです。このページはレイトレ合宿6のアドベントカレンダー1週目の記事として制作しました。レイトレの世界の深みに嵌れば嵌るほど、自分の基礎への理解の怪しさが怖くなってきたので、今回は基礎に立ち返って復習、BRDFやBTDF, BSDFについての記事を書いてみます。

光が物体に当たったときにどのように反射・透過するかの様相によって各物体固有の質感が決定されます。それはミクロな世界における光子と物体の間の大量の相互作用の結果ですが、光子ひとつひとつの動きを追うことは日常的なスケールの物体をレンダリングするという目的の上では割に合わない苦労です。光子ひとつひとつの動きは考えず、光の統計的な振る舞いをいくつかのパラメターで表現するモデルが考えられました。このページでは、そのようなモデルのうち、物体に入射して相互作用を起こした光は同じ位置から出射するという簡単化を付加されたモデルである、BRDF, BTDF, BSDFについて紹介します。

双方向反射率分布関数 (BRDF)

光が物体に当たると、巨視的な視点では平坦に見える反射面だとしても、ミクロな世界では細かな面の傾きのばらつきがあったり穴があったりするため、光は物体から離れる(反射する)までに複雑な過程を経ます。少なくとも日常的なスケールの光学現象を考える際に、そのようなミクロなスケールにおける光子の振る舞いをひとつひとつ考えることは割に合わない計算になりがちです。そこで、ある程度のまとまった光を考え、物体の反射特性を統計的な振る舞いとしてモデル化することが行われます。モデル化のレベルには様々なものが考えられますが、物体表面に入射した光が同じ点から反射するという仮定の下で物体の反射特性をモデル化したものにBidirectional Reflectance Distribution Fucntion (BRDF, 双方向反射率分布関数)があります。BRDFは物体表面上の位置(2次元)と入射方向、出射方向を変数とする6次元関数で、直感的な説明としては、ある点にある方向から入射した光が、どの方向にどの程度反射されるかを表しています。

BRDF
図1. BRDF
BRDFは物体表面の位置、入射方向、反射方向を変数とする6次元関数で、反射に関する物体表面の特性を表す。

上図では、白い矢印の角度で、ある点に入射した光がある分布(白線)を持って反射する様子を表しています。一方、緑の矢印の角度で入射した場合には、白とは異なる分布(緑線)を持ち得ます。当然違う点を考えればまた異なる分布となるかもしれません。上図では説明のため2次元空間内の方向分布(1次元関数)としていますが、実際には3次元空間内での方向分布(2次元関数)となるためBRDFは6次元関数です。なお、BRDFの物体表面上の位置による変化を考えず4次元の関数として考える場合もあります。その場合には位置による変化も考慮したものを明示的にSVBRDF (Spatially Varying BRDF)と呼びます。

BRDFの定義

ある点 $ \vx_i $ にある方向 $ \vomega_i $ から入射した光が別の点 $ \vx_o $ から別の方向 $ \vomega_o $ に向かって出射することを考えてみます。このとき、$ \vx_i $ に入射する放射束を $ d\Phi_i $、その放射束によって$ \vx_o $ から反射する放射輝度を $ dL_r $ で表します。一般的には $ dL_r $ は $ d\Phi_i $ に比例します。すなわち次に示すような関係を持ちます。 \begin{equation} dL_r = S d\Phi_i \label{eq:proportinal_factor_S} \end{equation} この比例係数 $ S $ は一般的には入射光の物体表面上の位置と入射方向、出射光の位置と入射方向に依存して変化する関数であるため次のように表されます。 \begin{equation} S = S(\vx_i, \vomega_i, \vx_o, \vomega_o) \label{eq:BSSRDF_parameters} \end{equation} ここで入射光と出射光の間の距離がゼロ、光は入射したところから反射していくという近似を考えれば、ある点 $ \vx $ の出射光に寄与するのは同じ点に入射した放射束のみとなります。そのような局所的な放射束は微小放射照度 $ dE_i(\vx, \vomega_i) $ で表すことができます。そしてある点 $ \vx $ を出射する放射輝度 $ dL_r(\vx, \vomega_o) $ と次のように関係付けることができます。 \begin{equation*} dL_r(\vx, \vomega_o) = f_r(\vx, \vomega_i, \vomega_o) dE_i(\vx, \vomega_i) \end{equation*} ここで、$ f_r $ をBRDFと呼びます。上式をBRDFに関して変形します。 \begin{equation*} f_r(\vx, \vomega_i, \vomega_o) = \frac{dL_r(\vx, \vomega_o)}{dE_i(\vx, \vomega_i)} = \frac{dL_r(\vx, \vomega_o)}{L_i(\vx, \vomega_i) \abs{\vomega_i \cdot \vec{n}} d\vomega_i} \end{equation*} この式より、BRDFは(ある方向から)入射する放射照度に対する反射される放射輝度の比を表していることがわかります。そして微小放射照度 $ dE_i $ は入射する放射輝度 $ L_i $ を使って $ dE_i(\vx_i, \vomega_i) = L_i(\vx, \vomega_i) \abs{\vomega_i \cdot \vec{n}} d\vomega_i $ と表せます。なぜ、入射する放射輝度ではなく放射「照度」なのかと疑問を持つかもしれません。物体表面の微小面積に降り注ぐエネルギーは同じ輝度でも光を当てる角度によって変化します。BRDFでは、物体の特性のみで反射特性を表現したいために入射に関しては放射照度となっています。また、そのためにBRDFの単位は $ \Brk{\mathrm{sr}^{-1}} $ となります。なお、BRDFでは入射方向を実際の光の向きとは逆向きに定義します(風向と同じ考え方ですね)。

BRDFは名前に「反射率」とあるため取りうる値の範囲が $ [0, 1] $ であると思うかもしれませんが、BRDFは確率密度関数のようなもの、というか実質それそのものであり値の範囲は $ [0, \infty) $ であり直接計測のできるものではありません。

ところで、入射点と出射点が同じであると言う近似を入れる前、式\eqref{eq:proportinal_factor_S}の $ S $ は「双方向散乱面反射率分布関数 (BSSRDF)」と呼ばれます。BSSRDFは式\eqref{eq:BSSRDF_parameters}にあるように、8次元関数で表されます。

ヘルムホルツの相反性

BRDFには「ヘルムホルツの相反性(reciprocity)」という重要な性質があります。(後述するBTDFには無い!)これは以下の式で表されます。 \begin{eqnarray*} f_r(\vx, \vomega_i, \vomega_o) = f_r(\vx, \vomega_o, \vomega_i) \end{eqnarray*} つまり、入射方向と出射方向を入れ替えても同じBRDFの値が得られることを意味しています。ここで勘違いしてはならないのが、例えば100の光が80で反射される入射、出射方向の組み合わせがあったとして、逆方向から80の光を入れて100が反射されるわけではないことです。当然ですが。この場合は逆方向から80の光が入ると64の光が反射されます。

エネルギー保存則

物体表面は受けた光エネルギー以上のエネルギーを反射ことはできないというエネルギー保存則を満たすため、BRDFは次の式を満たします。 \begin{eqnarray} \int_{\mathcal{H}^2} f_r \Prta{\vx, \vomega_i, \vomega_o} \absb{\vomega_o \cdot \vec{n}} d\vomega_o \leq 1 \hspace{5mm}\mbox{for all $ \vomega_i \in \mathcal{H}^2 $} \label{eq:BRDF_energy_conservation} \end{eqnarray} ここで、$ \mathcal{H}^2 $ は点 $ \vx $ 上の半球を表していますが、法線が向いている側の半球、反対方向の半球どちらに関してもこの式は成り立ちます。上の式は以下に示すように、$ 1 $ の微小放射照度を与えたときのある方向への微小放射発散度 $ dB_r $ を全方向に積分して、1以下にならねばならないこと(さらに、それがあらゆる入射方向に関して成り立つこと)を言っています。 \begin{eqnarray*} \int_{\mathcal{H}^2} dB_r(\vx, \vomega_o) = \int_{\mathcal{H}^2} L_r(\vx, \vomega_o) \absb{\vomega_o \cdot \vec{n}} d\vomega_o = \int_{\mathcal{H}^2} f_r \Prta{\vx, \vomega_i, \vomega_o} \cdot 1 \cdot \absb{\vomega_o \cdot \vec{n}} d\vomega_o \leq 1 \end{eqnarray*}

大まかな分類

理想拡散反射のBRDF
(a) (理想)拡散反射
理想鏡面反射のBRDF
(b) (理想)鏡面反射
光沢反射のBRDF
(c) 光沢反射
図3. BRDFの分類
BRDFは拡散反射、鏡面反射、光沢反射の3つに大別される。

BRDFはその反射特性から3つに大別することができ、あらゆる方向におおよそ等しく反射する拡散反射(Diffuse Reflection)、正反射方向にのみ反射する鏡面反射(Specular Reflection)、そして正反射方向を中心としてある程度の広がりを持って反射する光沢反射(Glossy Reflection)に分けられます。ただし光沢反射のこともまとめて鏡面反射と呼ぶことも少なくありません。拡散反射は非常にざらざらした物体表面によく見られ、全ての方向に完全に等しく反射する場合には理想拡散反射、ランバート反射と呼ばれます。鏡面反射は逆に綺麗に磨かれた滑らかな表面で起こります。

双方向透過率分布関数 (BTDF)

BTDF
図2. BTDF
BTDFは物体表面の位置、入射方向、透過方向を変数とする6次元関数で、透過に関する物体表面の特性を表す。

物体表面における透過現象のモデル化としてBidirectional Transmittance Distribution Function (BTDF, 双方向透過率分布関数)が考えられます。BTDFは名前からわかるようにBRDFの透過版であり、BRDFと同じく透過(屈折)現象が入射点と同じ点で起こるという仮定をおいています。$ f_t $ で表し定義としては次のようになります。 \begin{equation*} f_t(\vx, \vomega_i, \vomega_o) = \frac{dL_t(\vx, \vomega_o)}{dE_i(\vx, \vomega_i)} \end{equation*} ここで、$ dL_t $ は透過する放射輝度であり、透過である以上入射方向 $ \vomega_i $ と出射方向 $ \vomega_o $ は物体表面を挟んで異なる半球内にある必要があります。(同じ半球内であればBTDFは値を持ちません。) BTDFは物体表面上の位置(2次元)と入射方向、出射方向を変数とする6次元関数となり、単位は $ \Brk{\mathrm{sr}^{-1}} $ になります。BTDFに関してもBRDFと同様の透過の分布による大まかな分類が可能です。なお、透過だけして反射が一切無い物体というのは多分無いのでBTDF単独で考えることは恐らくないでしょう。後述するBSDFを考えることになります。

相反性

透過時の放射輝度の変化
図4. 透過時の放射輝度の変化
屈折によって光がより狭い立体角へと集中するため放射輝度に変化が生じる。

少し意外かもしれませんがBTDFはヘルムホルツの相反性を満たしません。上図のように屈折率の高い物質に光が半球上の全方向から入射することを考えた場合、それらの光は界面を挟んで反対側では半球よりも小さな範囲へと透過します。そのため明らかに光の密度、つまり放射輝度に変化が生じている事がわかります。これより透過の場合には入射方向、出射方向を入れ替えても相反性が成り立たないことがわかると思います。BTDFを $ f_t $ で、入射側、出射側の屈折率をそれぞれ $ \eta_i $, $ \eta_o $ で表すとBTDFは次の関係を持ちます[Walter2007]。 \begin{equation*} \frac{f_t(\vx, \vomega_i, \vomega_o)}{\eta_o^2} = \frac{f_t(\vx, \vomega_o, \vomega_i)}{\eta_i^2} \end{equation*} この式から考えると、放射輝度の代わりに「放射輝度を場の屈折率の二乗で割ったもの($ L \, / \, \eta^2 $, basic radianceなどと呼ばれる [Nicodemus1976])」を考えれば、相反性を持つことがわかると思います。basic radianceに対するBTDF ( $ f_{b, t} $ とでも書きましょう)を次のように考えます。 \begin{equation*} f_{b, t}(\vx, \vomega_i, \vomega_o) = \frac{f_t(\vx, \vomega_i, \vomega_o)}{\eta_o^2} \end{equation*} そして、このBTDFは相反性を持ちます。 \begin{eqnarray*} f_{b, t} \Prta{\vx, \vomega_i, \vomega_o} = f_{b, t} \Prta{\vx, \vomega_o, \vomega_i} \end{eqnarray*}

エネルギー保存則

BTDFは前述の通り、通常の放射輝度の範疇では相反性は持たないもののエネルギー保存則はBRDFと同様に満たします。 \begin{equation*} \int_{\mathcal{H}_-^2} f_t \Prta{\vx, \vomega_i, \vomega_o} \absb{\vomega_o \cdot \vec{n}} d\vomega_o \leq 1 \hspace{5mm} \mbox{for all $ \vomega_i \in \mathcal{H}_+^2 $} \end{equation*} ここで、$ \mathcal{H}_+^2 $、$ \mathcal{H}_-^2 $ はそれぞれ法線方向、逆方向の半球の範囲を表していますが、これらを入れ替えてもこの式は成り立ちます。 (相対)屈折率によって $ f_t $ の値が大きくなったり小さくなったりしますが、屈折によって光線が通過する範囲が半球内で変化するのでエネルギーの総量には影響はありません。

双方向散乱分布関数 (BSDF)

BSDF
図3. BSDF
BSDFはBRDFとBTDFの合成によって表される。

BRDFとBTDF両方を合わせたものをBidirectional Scattering Distribution Function (BSDF, 双方向散乱分布関数)と呼びます(二単語目がBRDF, BTDFの単語と比べると法則性が無いのが気になりますが...あと日本語訳書いちゃってますけどいまいちBSDFの訳を見た覚えが無い)。文字 $ f_s $ を使って次のように表されます。 \begin{equation*} f_s(\vx, \vomega_i, \vomega_o) = \frac{dL_o(\vx, \vomega_o)}{dE_i(\vx, \vomega_i)} = f_r(\vx, \vomega_i, \vomega_o) + f_t(\vx, \vomega_i, \vomega_o) \end{equation*} ここで、$ dL_o $ は反射・透過する放射輝度であり、どちらの半球内にあるかは問われません。BSDFは物体表面上の位置(2次元)と入射方向、出射方向を変数とする6次元関数となり、単位は $ \Brk{\mathrm{sr}^{-1}} $ になります。

相反性

BSDFはBTDFが相反性を持たないために、通常の放射輝度の範疇では同様に相反性を持たないことになりますが、basic radianceに関する相反性はBTDF同様に持ちます。BRDFを考えていることに等しい方向の組み合わせ(すなわち同じ半球内)の場合は屈折率が一致するため、次に示すようにbasic radianceに関する相反性の関係は通常の相反性の関係へ戻ります。 \begin{eqnarray*} \frac{f_s(\vx, \vomega_i, \vomega_o)}{\eta_o^2} &=& \frac{f_s(\vx, \vomega_o, \vomega_i)}{\eta_i^2} \hspace{5mm} \vomega_i, \vomega_o \in \mathcal{H}_*, \; *: +, - \\ f_s(\vx, \vomega_i, \vomega_o) &=& f_s(\vx, \vomega_o, \vomega_i) \hspace{5mm} \because \eta_o = \eta_i \end{eqnarray*} ちなみにbasic radianceに対応するBSDFのことを[Veach1998]ではそのままbasic BSDFと呼んでいます。

エネルギー保存則

BRDF、BTDFがエネルギー保存則を満たすようにBSDFも次の式を満たします。 \begin{equation*} \int_{\mathcal{S}^2} f_s \Prta{\vx, \vomega_i, \vomega_o} \absb{\vomega_o \cdot \vec{n}} d\vomega_o \leq 1 \hspace{5mm}\mbox{for all $ \vomega_i \in \mathcal{S}^2 $} \end{equation*}

BRDF / BTDFモデルの例

完全拡散BRDF (Lambert BRDF)

理想的な拡散BRDFは反射方向に依存せず、反射する放射輝度は入射する微小放射照度を考える際にかかるcos項(BRDF自体には含まれない項)にのみ依存します。ランバートの余弦則よりランバート(Lambert)BRDFとも呼ばれます。反射率 $ \rho $ の完全拡散BRDFは次の式で表されます。 \begin{equation*} f_r(\vomega_i, \vomega_o) = \frac{\rho}{\pi} \end{equation*} ここで疑問が生じるかもしれません。半球内のあらゆる方向に等しく反射するのなら分母は半球の立体角 $ 2\pi $ になると考える人も多いでしょう。$ \pi $ になる理由は,BRDFがあくまで入射する放射照度に対する「放射輝度」で表されているからです。放射輝度はある点からある方向に出るエネルギー量ですが、cos項によって割られているため、同じエネルギー量であっても出射方向によって放射輝度は変化します。そのため反射率を求める場合には、BRDFにcos項を乗じてから積分します。 \begin{equation*} \int_0^{2\pi} \!\!\! \int_0^{\frac{\pi}{2}} \frac{\rho}{\pi} \cos{\theta} \sin{\theta} d\theta d\phi = \rho \end{equation*}

完全鏡面BRDF

\begin{equation*} f_r(\vomega_i, \vomega_o) = F_r(\vomega_i) \frac{\delta(\mathrm{R}(\vomega_i) - \vomega_o)}{\absb{\vomega_i \cdot \vec{n}}} \end{equation*} 完全鏡面BRDFは厄介な存在でデルタ関数を使って上記のように記述されます。$ \mathrm{R}(\vomega) $ は法線に対して $ \vomega $ の鏡面反射方向を得る関数です。つまり $ \vomega_i $ と $ \vomega_o $ が完全に鏡面反射方向の関係にあるときのみBRDFが値を持ちます(それ以外では全てゼロ)。$ F_r $ は入射方向に依存する反射率で、典型的にはフレネル反射率などが当てはまります。デルタ関数がその特性から天下り的に定義されているように、完全鏡面BRDFも何か解きたい積分があってそこから定義されています。レンダリング方程式」の積分で扱う場合には、ある方向 $ \vomega_i $ から来た放射輝度 $ L_i $ に反射率 $ F_r $ がかかって $ \vomega_o $ 方向へ出ていくという特性を記述するために上記のように定義されます。デルタ関数は積分とセットで使って意味を持つので、上記BRDFの式は相反性を持たないように見えますが、それも恐らくデルタ関数の弊害です(詳しい人教えてください)。

完全鏡面BTDF

\begin{equation*} f_t(\vomega_i, \vomega_o) = \frac{\eta_o^2}{\eta_i^2} \Prt{1 - F_r(\vomega_i)} \frac{\delta(\mathrm{T}(\vomega_i) - \vomega_o)}{\absb{\vomega_i \cdot \vec{n}}} \end{equation*} 完全鏡面BTDFも完全鏡面BRDFと同じくデルタ関数を使って定義されます。$ \mathrm{T}(\vomega) $ は法線に対して $ \vomega $ の鏡面透過方向を得る関数です。屈折率による放射輝度の補正がかかっている点に注意してください。

マイクロファセットBRDF

\begin{equation*} f_r(\vomega_i, \vomega_o) = \frac{F(\vomega_i, \vomega_o) G(\vomega_i, \vomega_o) D(\vomega_i, \vomega_o)}{4 \absb{\vomega_i \cdot \vec{n}} \absb{\vomega_o \cdot \vec{n}}} \end{equation*} 物体表面が微小な面(microfacet)の集合で成り立っていると考え、その法線の分布 $ D $ や遮蔽関係の分布 $ G $ の数学的なモデルを考えたBRDFをマイクロファセットBRDFと呼びます[Walter2007]。

マイクロファセットBTDF

\begin{equation*} f_t(\vomega_i, \vomega_o) = \frac{\absb{\vomega_i \cdot \vomega_h} \absb{\vomega_o \cdot \vomega_h}}{\absb{\vomega_i \cdot \vec{n}} \absb{\vomega_o \cdot \vec{n}}} \frac{\eta_o^2 \Prt{1 - F(\vomega_i, \vomega_o)} G(\vomega_i, \vomega_o) D(\vomega_i, \vomega_o)}{\Prt{\eta_i (\vomega_i \cdot \vomega_h) + \eta_o (\vomega_o \cdot \vomega_h)}^2} \end{equation*} BTDFに関してもマイクロファセットモデルを考えることができます。

BxDFを基にした様々な反射・透過率

反射率とは入射放射束に対する反射放射束の比になります。ある微小面積 $ dA $ に立体角 $ \omega_i $ の範囲を通過して光が入射するとき入射する放射束 $ d\Phi_i $ は次の式で表すことができます。 \begin{equation} d\Phi_i = dA \cdot \int_{\omega_i} L_i(\vomega_i) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \label{eq:incident_flux} \end{equation} ここで$ \vomega_i $ は考えている立体角中の方向を表します。反射する放射束のうち立体角 $ \omega_o $ を通過する量 $ d\Phi_r $ は次の式で表すことができます。 \begin{equation*} d\Phi_r = dA \cdot \int_{\omega_o} L_r(\vomega_o) \abs{\vomega_o \cdot \vec{n}} d\vomega_o \end{equation*} 反射する放射輝度 $ L_r $ を入射光を使って表せば次の形に変形することができます。 \begin{equation} d\Phi_r = dA \cdot \int_{\omega_o} \int_{\omega_i} f_r(\vomega_i, \vomega_o) L_i(\vomega_i) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \abs{\vomega_o \cdot \vec{n}} d\vomega_o \label{eq:reflected_flux} \end{equation} したがって任意の入射光・出射光の形状、任意の入射放射輝度分布の組み合わせに対する一般的な反射率は、次に示すように式\eqref{eq:incident_flux}に対する式\eqref{eq:reflected_flux}の比として表すことができます。 \begin{equation*} \rho(\omega_i, \omega_o, L_i) = \frac{d\Phi_r}{d\Phi_i} = \frac{\displaystyle \int_{\omega_o} \int_{\omega_i} f_r(\vomega_i, \vomega_o) L_i(\vomega_i) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \abs{\vomega_o \cdot \vec{n}} d\vomega_o}{\displaystyle \int_{\omega_i} L_i(\vomega_i) \abs{\vomega_i \cdot \vec{n}} d\vomega_i} \end{equation*} ここで、入射する放射輝度の分布が等方的、つまり定数であると考えると上式は次のように簡単化できます。 \begin{equation} \rho(\omega_i, \omega_o) = \frac{\displaystyle \int_{\omega_o} \int_{\omega_i} f_r(\vomega_i, \vomega_o) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \abs{\vomega_o \cdot \vec{n}} d\vomega_o}{\displaystyle \int_{\omega_i} \abs{\vomega_i \cdot \vec{n}} d\vomega_i} \hspace{5mm} \Brk{\mathrm{dimensionless}} \label{eq:biconical_reflectance} \end{equation} これをbiconical reflectance (双円錐反射率とでも訳すべきでしょうか) [Nicodemus1977]と呼び、様々な反射率の基礎となります。ある広がりを持った入射光・出射光を単純に考えると二つの円錐形状が思い浮かぶと思うので、そこから双円錐という言葉になっているんだと思います。(しかし元論文では入射光や出射光を切り取る形状は特に指定していない気がする。)
例えば式\eqref{eq:BRDF_energy_conservation} で考えたような反射率、つまり入射光はある一方向、反射方向は半球全てといった反射率は、式\eqref{eq:biconical_reflectance}において入射光を切り取る立体角を $ d\vomega_i $、出射光を切り取る立体角を半球全て $ \mathcal{H}^2 $ とした場合に相当し、次のようになります。 \begin{equation*} \rho(\omega_i, \omega_o) = \abs{\vomega_i \cdot \vec{n}} d\vomega_i \frac{\displaystyle \int_{\mathcal{H}^2} f_r(\vomega_i, \vomega_o) \abs{\vomega_o \cdot \vec{n}} d\vomega_o}{\displaystyle \abs{\vomega_i \cdot \vec{n}} d\vomega_i} = \int_{\mathcal{H}^2} f_r(\vomega_i, \vomega_o) \abs{\vomega_o \cdot \vec{n}} d\vomega_o \end{equation*} 入射光をある一方向(directional)、反射方向は半球(hemispherical)とするこの構成の反射率のことをdirectional-hemispherical reflectance(無理やり日本語を考えるなら単方向-半球反射率とか?)と呼びます。
入射・出射光それぞれの形状の組み合わせに関して表1に示すように9種類の反射率を考えることができます。

表1. 9種類の反射率
1 Bidirectional Reflectance $ \displaystyle f_r(\vomega_i, \vomega_o) \abs{\vomega_o \cdot \vec{n}} d\vomega_o $
2 Directional-Conical Reflectance $ \displaystyle \int_{\omega_o} f_r(\vomega_i, \vomega_o) \abs{\vomega_o \cdot \vec{n}} d\vomega_o $
3 Directional-Hemispherical Reflectance $ \displaystyle \int_{\mathcal{H}^2} f_r(\vomega_i, \vomega_o) \abs{\vomega_o \cdot \vec{n}} d\vomega_o $
4 Conical-Directional Reflectance $ \displaystyle \frac{\displaystyle \abs{\vomega_o \cdot \vec{n}} d\vomega_o \int_{\omega_i} f_r(\vomega_i, \vomega_o) \abs{\vomega_i \cdot \vec{n}} d\vomega_i}{\displaystyle \int_{\omega_i} \abs{\vomega_i \cdot \vec{n}} d\vomega_i} $
5 Biconical Reflectance $ \displaystyle \frac{\displaystyle \int_{\omega_o} \int_{\omega_i} f_r(\vomega_i, \vomega_o) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \abs{\vomega_o \cdot \vec{n}} d\vomega_o}{\displaystyle \int_{\omega_i} \abs{\vomega_i \cdot \vec{n}} d\vomega_i} $
6 Conical-Hemispherical Reflectance $ \displaystyle \frac{\displaystyle \int_{\mathcal{H}^2} \int_{\omega_i} f_r(\vomega_i, \vomega_o) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \abs{\vomega_o \cdot \vec{n}} d\vomega_o}{\displaystyle \int_{\omega_i} \abs{\vomega_i \cdot \vec{n}} d\vomega_i} $
7 Hemispherical-Directional Reflectance $ \displaystyle \frac{1}{\pi} \abs{\vomega_o \cdot \vec{n}} d\vomega_o \int_{\mathcal{H}^2} f_r(\vomega_i, \vomega_o) \abs{\vomega_i \cdot \vec{n}} d\vomega_i $
8 Hemispherical-Conical Reflectance $ \displaystyle \frac{1}{\pi} \int_{\omega_o} \int_{\mathcal{H}^2} f_r(\vomega_i, \vomega_o) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \abs{\vomega_o \cdot \vec{n}} d\vomega_o $
9 Bihemispherical Reflectance $ \displaystyle \frac{1}{\pi} \int_{\mathcal{H}^2} \int_{\mathcal{H}^2} f_r(\vomega_i, \vomega_o) \abs{\vomega_i \cdot \vec{n}} d\vomega_i \abs{\vomega_o \cdot \vec{n}} d\vomega_o $

いずれの反射率も双円錐反射率(式\eqref{eq:biconical_reflectance}、表1中5番)の特殊系となっており、適切な立体角の範囲を双円錐反射率に代入することで導出できます。双円錐反射率の式を通じて様々な反射率がBRDFを用いて記述できることがわかります。全て単位は無次元となっていますが、bidirectional reflectanceと***-directional reflectanceは微小量となっていることには注意です。

BTDF (BSDF)を用いてbiconical transmittance (双円錐透過率)の概念も同様に考えることができると思います。そしてdirectional-hemispherical transmittanceやbihemispherical transmittanceはBSSRDFに関して考える際に実際に使うことがあります。

参考文献

  1. [Nicodemus1976] F.E. Nicodemus - "Self-Study Manual on Optical Radiation Measurements: Part I", 1976
  2. [Nicodemus1977] F.E. Nicodemus, J.C. Richmond, J.J. Hsia, I.W. Ginsberg, T. Limperis - "Geometrical Considerations and Nomenclature for Reflectance", 1977
  3. [Veach1998] Eric Veach, Leonidas J. Guibas - "ROBUST MONTE CARLO METHODS FOR LIGHT TRANSPORT SIMULATION", 1998
  4. [Walter2007] Bruce Walter, Stephen R. Marschner, Hongsong Li, Kenneth E. Torrance, - "Microfacet Models for Refraction through Rough Surfaces", 2007

Today : 00000006 Total : 00079865
Copyright © 2018 shocker.