Phongの正規化

前回のポストでLambert拡散反射の正規化を行いました。当然ですが、鏡面反射に関してもエネルギー保存の法則が適用されるので、反射するエネルギーの総量を把握する必要があります。

PhongシェーディングのSpecular項の正規化

まずは、いちばん積分しやすそうなPhongのSpecular項を積分してみます。ご存知の通り、PhongのSpecularはライトのベクトル(L)を平面上(N)で反射させたベクトル(R)と、観測者のベクトル(V)の余弦のべき乗で計算されます。
このSpecularの関数は、このままでは積分できません。ですので、L=R=Nと条件を限定し、平面の法線方向からライトが入射して、法線方向にSpecularが出現しているものとします。あとは観測者のベクトルを半球で積分すれば、限定条件下ですが、Specularの総量を計算することが出来るはずです。Specularの分布が大きい部分が、積分する半球を超える範囲で存在する場合を除けば、Specularの総量はこの量と、ほぼ同じになるはずです。
RとVの成す角をθとすれば、式は下記の通りになります。

漸化式を用います。

さらに、この式を部分積分します。cosを微分、sinを積分にまわします。

部分積分すると、もとの積分の式が出てくるので、漸化式を使って整理します。

元の式に当てはめると以下の様になります。

Specularの反射率ksを0~1で表している場合、正規化するにはこの値で割る必要があるので、正規化係数は(n+1)/2πとなります。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中