BRDF,Irradiance,Radianceの定義

レンダリングを扱うとたびたび出てくる、BRDF(双方向反射率分布関数), Irradiance(放射照度), Radiance(放射輝度)に関して簡単に説明したいと思います。

BRDFについて

BRDFというものは、Irradiance(放射照度)とRadiance(放射輝度)の比を関数で表したものです。大雑把に言うならば、Irradianceが物体に対する入射光で、Radianceが反射光です。つまり入ってきた光をどれだけ跳ね返すかの関数です。ただし、IrradianceとRadianceはしっかりとした定義が存在します。

Irradiance(放射照度)

Irradianceの定義は、微小平面(dA)あたり、どれだけの放射束(光束)(Φ)が照射されたかを表します。cosθは平面の法線と放射束の成す角度の余弦です。このcosθの値は、微小平面dAを放射束の方に投影する役割をしているものと考えることが出来ます。同じ放射束密度による照射ならば、法線と放射束の成す角度が大きいほうがIrradianceの値は小さくなります。(NdotLと同じ意味)

Radiance(放射輝度)

Radianceの定義は、投影微小平面(cosθdA)当たりの、単位立体角あたりの放射束(dΦ/dω)を表します。ここで注意が必要なのが、投影微小平面からの放射だということです。これは、Radianceが放射する側を基準にした値ではなく、観測する側を基準にした値であるということです。従って、例えば観測者から見て、同じ明るさに見える平面は、観測者と平面が成す角に関係なく、Radianceの値が同じになります。この例えは、まさにLambert散乱平面そのものです。Lambert散乱平面の単位平面当たりの放射束の分布はcosθですから、d^2Φ/dAdωはcosθとなります。これをcosθで割ったものがRadianceになるので、Lambert散乱平面のRadianceは一定となる訳です。

Lambert散乱モデルのBRDFの正規化

とある角度で、とある放射束密度で、Lambert散乱モデルの微小平面が照射された場合を考えます。これの反射はBRDF関数に従って、全半球方向に放射されます。この放射を半球で積分します。Lambert散乱モデルのRadianceは一定で、Irradianceに関しても、上記の条件を与えました。BRDF関数はRadianceとIrradianceの比なので、一定の値になります。この値をfとします。このfを用いて、微小平面からの放射を半球で積分します。ただし、Radianceの定義に注意です。Radianceは投影微小平面あたりの放射束なので、微小平面からの放射束を半球で積分する際は、cosθを掛けてやる必要があります。fは定数なので、cosθの半球積分となり、積分の結果はfπとなります。Irradianceが1であると仮定した場合、このIrradianceをBRDFで反射し、発生したRadianceの合計はfπとなります。エネルギー保存の法則に従えば、このfπは1を超えてはなりません。そうしないと、照射された放射束以上の放射をしてしまいます。値の範囲が0~1のAlbedo(反射能)(kd)を用いて、Lambert散乱モデルのBRDFをあらわすならば、以下の通りになります。

結局Lambertの正規化を行ったときと同じ式を手に入れましたが、アプローチが異なります。

 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中