See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
鏡面ハイライト - Wikipedia

鏡面ハイライト

出典: フリー百科事典『ウィキペディア(Wikipedia)』

鏡面ハイライトは、照明で照らされているつやのある物体上に現れる光の輝く斑点である(右図を見よ)。鏡面ハイライトは3次元コンピュータグラフィックスでは重要である。この効果は、あるシーンにおける光源に関して、物体の形状やその場所に対する非常に強い視覚的役割を果たしている。

目次

[編集] 微小面

鏡面反射という言葉は、光が光源から観察者に対して鏡のように、完全に反射することを意味する。鏡面反射は、光の入射方向と観察者の方向とのちょうど間に表面法線がある場合のみ見ることができる。この半角方向と呼ばれるものは、光の入射方向と観察者の方向との角度は2等分(ちょうど半分)されることである。つまり、光源の像が完全にくっきりと反射するので、鏡面反射する表面には鏡面ハイライトが現れることを示している。しかしながら、多くのつやあり物体にはぼやけた鏡面ハイライトが現れる。

この現象は微小面の存在を仮定することで説明可能である。ここで、物体の表面は、完全になめらかではなくて、多くの非常に小さな面から成っていて、それぞれが完全鏡面反射していると仮定する。微小面の法線となめらかな表面の法線との違いの度合いは、表面のなめらかさによって変わる。

鏡面ハイライトがぼやける理由はこれではっきりする。表面法線が入射角と観察者のほぼ真ん中を向いているなめらかな物体点では、微小面上の点の法線の多くは半角方向にあるので、鏡面ハイライトの光は明るく見える。ここで、だれかがハイライトの中心を動かすと、表面法線の向きと半角方向とがずれてしまう。つまり、多くの微小面における法線が半角方向ではなくなってしまう。それでハイライトの輝度は0に落ち込んでしまう。

鏡面ハイライトはしばしば反射した物体の色ではなく光源の色を反映する。この現象は、多くの材質は着色された表面上に薄い透明な材質の層を持っているからである。例えば、プラスチックは透明なポリマーの中に薄色付きビーズを入れて作られているし、人間の皮膚は着色された細胞の上に油脂や汗の薄い層をしばしば伴っている。このような材質では、等しく反射したすべてのカラースペクトルを持つ鏡面ハイライトが現れる。金のような金属質な材質上では、鏡面ハイライトの色は材質の色を反映する。

[編集] 微小面のモデル

微小面の分布予測には異なるモデルが何種類かある。たいていは微小面の法線は表面の法線の周りに一様に分布すると仮定している。このモデルを等方性と呼ぶ。もし、微小面が表面にとある方向に沿って、ある選択の元で分布しているならば、その分布モデルは異方性と呼ぶ。

[編集] Phong分布

Phongの反射モデルでは、鏡面ハイライトの輝度は、kspec = cosn(R,V)として計算できる。ここで、Rは表面での光の反射係数であり、Vは視点ベクトルである。

Blinn-Phongの陰影モデルでは、鏡面ハイライトの輝度はkspec = cosn(N,H)として計算\でき、Nは滑らかな表面での法線で、Hは半角(光線ベクトルLと視点ベクトルVとのちょうど真ん中)である。

定数nはPhong指数と呼ばれ、表面の見かけの滑らかさを制御するユーザが選択できる値である。これらの方程式は、微小面法線の分布は、角度に関連しておおよそガウス分布ないしピアソン2型分布に従うことを暗に示している。[1] 一方、このことは役に立つことは分かるし、信用できる結果を提示してはいるが、物理学を基礎としたモデルではない。

[編集] ガウス分布

ガウス分布を使うことで、もう少しいい微小面分布のモデルを作ることができる。鏡面ハイライトの輝度は以下の関数を使うことで計算できる。

k_{spec} = e^{- \left ( \frac{\angle (N, H)}{m} \right )^2}

ここで、mは0から1の間の定数で、表面の外見的ななめらかさを表す。

Material from this section adapted from: Glassner, Andrew S. (ed). An Introduction to Ray Tracing. San Diego: Academic Press Ltd, 1989. p. 148.

[編集] ベックマン分布

物理学に基づく微小面モデルはベックマン分布である。この関数は非常に正確な結果を返すが、計算コストもそれなりに高価である。

k_{spec} = \frac{1}{4m^2 \cos ^4 (N, H)} e^{ - \left ( \frac{\tan (N, H)}{m} \right )^2 }

ここでmは、平均的に表面の微小面の平均的な傾きである。

Material from this section adapted from: Foley et al. Computer Graphics: Principles and Practice. Menlo Park: Addison-Wesley, 1990. p. 764.

[編集] Heidrich-Seidel異方性分布

Heidrich-Seidel分布は単純な異方性分布であり、Phongモデルをベースとしている。これは、小さく平行な溝や糸、たとえばこすれた金属や繻子、髪の毛のようなものを持つ表面のモデルに使われる。この分布を用いた鏡面ハイライト輝度は、

k_{spec} = \left [ \sin(L, T) \sin(V, T) - \cos(L, T) \cos(V, T) \right ] ^n

ここでnはPhong指数である。Vは視点方向である。Lは光線方向、Tは表面上の点における平行な溝ないし糸の方向である。

[編集] Ward異方性分布

Wardの異方性分布は、異方性制御用としてαxαyというユーザが制御可能な2つのパラメータを使う。もしこの2つのパラメータが同じであればこれは等方性ハイライトとなる。この分布における鏡面反射式は、

k_{spec} = \frac{1}{\sqrt{(N\cdot L)(N \cdot V)}}\frac{N\cdot L}{4\alpha_x\alpha_y} \exp \left[ -2 \frac{\left(\frac{H\cdot X}{\alpha_x}\right)^2+\left(\frac{H\cdot Y}{\alpha_y}\right)^2}{1+(H\cdot N)} \right]

もしN-L<0かN-E<0であれば、鏡面反射項は0になる。すべてのベクトルは単位ベクトルになる。ベクトルVは表面上の点から視点へのベクトルである。Lは表面上の点から光源への方向、Hは半角方向である。Nは表面の法線であり、XYは異方性方向を示す法線面上の2つの直行ベクトルである。

[編集] Cook-Torranceモデル

Cook-Torranceモデルは{DFG}\over{E\cdot N}の形の鏡面反射項を使う。ここでDはベックマン分布項であり、D=\frac{e^{-(\frac{\tan \alpha}{m})^2}}{4 m^2 \cos^4\alpha}であり、Fフレネル項であり、F = (1.0 + E.N)λで表される。Gは幾何減衰項であり、微小面による自己陰影を記述する。これは以下の式、G = \min(1,\frac{2(H\cdot N)(E\cdot N)}{E\cdot H},\frac{2(H\cdot N)(L\cdot N)}{E\cdot H})で表される。これらの公式では、Eはカメラないし視点へのベクトルであり、Hは半角ベクトル、Lは光源へのベクトル、Nは法線ベクトル、αHNとの角度である。

[編集] 複数の分布を用いる

もし望むのであれば、異なる分布(普通は同じ分布関数で異なる値mnを使うことが多い)を重み付けた平均を取ってくっつけることができる。例えば全体的にざらざらであるよりも、ちょっとだけ滑らかでざらざらな箇所をもつ表面をモデリングするのには役に立つ。

[編集] 参照

  1. ^ Richard Lyon, "Phong Shading Reformulation for Hardware Renderer Simplification", Apple Technical Report #43, Apple Computer, Inc. 1993 PDF

[編集] 関連項目

他の言語


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -