Upload
-
View
5.931
Download
5
Embed Size (px)
DESCRIPTION
BRDFの関数について記載しています。 フレネル、屈折率の計算部分など書きました。 学部生時代に書いたノートです。(2007年) 当時BRDFをJAVAで実装しまして、備忘録として残しました。 実装する上で理解するために作成したので、 少し噛み砕いた形で記載されているとおもいます。 もし何か質問がある場合は次までおねがいします。 @rocky_house
Citation preview
BRDF
双方向反射分布関数Yasuhiro Todoroki
理論
物体の情報(色、質感など)は、光源からのエネルギーが物体に反射してエネルギー情報が変化し、その変化したエネルギーを目が受取り、情報を判断する。
双方向という意味は、視点と、光源が入れ替わっても、受け取るエネルギーが等しいことを意味する。
つまり、現在の目の位置に、光源が、光源の位置に目が行った際、光源の位置に行った目が受け取るエネルギーは前のエネルギーと変化がない。( Helmoholtz の相反性)
BRDF とはその場所の色は、表面上の・形状、材質、特製など、様々な要因による。それらをオブジェクト毎に細かくモデル化し、描画する。
BRDFモデルによる質感表現
分布関数幾何減衰率フレネルの関数
の三つを用いて BRDF はモデル化される。
表面分布特性( BRDF のモデル化)
物体の表面は完全に滑らかではなく、材質によって異なっている。その表面の粗さ(光沢や艶と呼ばれる性質)に対する光現象をモデル化し、数式化する。つまり表面での凹凸によって生じる光の散乱を表現する。
金属のような材質感の表現に向く。
入射光反射光
表面の粗さ
光の散乱
表面分布特性( BRDF のモデル化)
物体の面は小さな凹凸を持つ微小面の集まりと考え、それら微小面が鏡面反射すると考える。
V
L
N
H
θθ
γ
微小面物体表面
H : L と V との垂直二等分線
H を法線ベクトルとする微小面が物体表面に存在すると考える。
H の分布は鏡面反射する微小面の向きの分布を表すと同時に表面の粗さによる鏡面反射光の輝度分布を表す。
つまり、この分布を求めることにより、鏡面反射の輝度が求まる。
cosγ = N ・ H
Microfacet Distribution Function 微小面勾配分布関数
7.02.0
cos4
1),('
))/(exp()(
2])(tan[
42
2
~
m
em
mDD
mCD
m
分布特性には、一般に次式の分布関数を用いる。
様々な分布関数が存在する
ガウス分布関数
ベックマン分布関数
γ は前述の角度
Cook と Torrance が使用した方式。 Reitz の分布関数より優れた理論根拠を持っているといった。Reitz の分布関数を使用すれば Blinn モデルとなる。 m が小さければ反射は鋭い指向性を持ち、大きいと反射光が散乱
する。
)(1
jnj
j mDwD
いくつもモデリングする場合は単純に和で求まる。
Wj の和は1である
cosγ = N ・ H
ブリン( Blin )
Microfacet Distribution Function 微小面勾配分布関数
幾何減衰率(The Geometrical Attenuation Factor)
VH
NVNHGc
))((2
},,1min{ GcGbG
物体表面の微小面は小さな凹凸をもっているので、これに光が当たると光の入射角と微小面の関わりによって光が遮れられる。
値が 1 より小さい時光は遮れられるから、この値を、入射角によって影響を受ける減衰率とみなすことができ、幾何学的減衰係数 G と定義できる。減衰率 G の範囲は 0( 完全なシャドウ ) ~ 1( シャドウなし ) である。また値は 1より大きいことはない。
直接光が遮られる 反射光が遮られる
※ それぞれ単位ベクトル
VH
NLNHGb
))((2
フレネルの方程式(The Fresnel Term)
i
t
cg
LHVHc
cgc
cgc
cg
cgF
1
)()(cos
1)(
1)(1
)(
)(
2
1),(
222
2
2
2
phone shading でいうところの鏡面反射係数( Ws(θ) )に相当する反射率 F ( λ,θ )を導入する。光の反射は光の波長に左右されることと、角度に依存することを考慮した鏡面反射率である反射率 F ( λ,θ )は以下の Fresnel の式を使用する。
θ :入射角ηλ : 屈折率
t
i 第一媒体
第二媒体
導体の媒質は光を減衰するため、物体の複素屈折率を考慮する必要がある。
ηλ= ηλ-ikλ kλ は物質の吸光率
BRDF の式の決定
微小面勾配分布関数 D ( γ )幾何学的減衰関数 G反射率 F(λ 、 θ)
以上から、 BRDF は一般化される。
Ispec は鏡面反射光の輝度
))((
)(),(
NLNV
GDFI spec
)(:)(),(),(
NV
KaKsNLGDVHKsKdI s
)(),(),( NLGDVHKsKdI s
反射率
光の波長 R,G,B
NL 光の入射角
H → L と V の harfVectorH = (L+V)/2D : Distributing function光の拡散率 : Backup 式 → D(NH)G : 減衰率(ざらざらを)表現
ブリン式に基づく
Kd ・ Tx ・ ρ(λ,θ)
全体の reflectance
鏡面反射環境光
ベクトルの掛け算
BRDF の式全体
)(
),max(
)(),(
)(),(
),(),(),(
KHFNLNV
NHcLV
NL
NHcLV
LVLVLV
n
s
n
s
sd
ρ(V,L) は二つに分解可能である。
ρd :diffρs :spec
Secular 成分について見ていくと、 phong のモデルとして以下の式が挙げられる。
しかしこの時 ,ρd(V,L)=ρd(V,L) でないため Helmoholtz の相反性を満たしていない。そのため相反性を満たす Neumann & Neumann の BRDF の式+金属物質の関係式 Frensel 項が追加された式は以下の通りである。
K は L か V のどちらか
Ashikhmin 照明モデル
Ashikhmin らは、この BRDF に異方性を追加した。異方性は、反射のパラメータ n を拡張。n に関して、従法線ベクトル方向 u 、接ベクトル方向 v に応じて反射率が違うものと設定。ここで、従法線ベクトルや接ベクトルは、それぞれの局所座標で直行する必要がある。
しかし場所に応じて向きは異なり、例えば、CDの裏面をレンダリングしようと思えば、 従法線ベクトルや接ベクトルは、CDの動径方向と、円周方向に取るのが適切である。
N
Ashikhmin 照明モデル
Ashikhmin らによる BRDF は、次のようになる。
)(),max(
)(),(
22 sincos
KHFNLNV
NHcLV
vu nn
s
nu = nv の異方性がないときには、 Ashikhmin らの BRDF は、 Neumann & Neumann の BRDF と一致
係数cにおいては以下の通り
1||cos),()( dLVVRAshikhmin らは、拡散光成分に関しても議論しており、彼らは、 Shirley らによる総エネルギーの保存を考慮した、拡散光に関する BRDF も導いたページに式を記載する。
Ashikhmin 照明モデル
))2
1(1)()2
1(1)(1(23
28),(
)(),max()(
)(
8
)1()1(),(
55
sincos2
1
2
122
NLNVRRLV
KHFNLNVHK
NHnnRLV
sdd
nnvu
ss
vu
Ashikhmin モデルで使われる BRDF の式