Comments
Description
Transcript
L - 和歌山大学
ゲームグラフィックス特論 第9回 高度な陰影付け 2 物理的に正確な照明計算 放射照度 (Irradiance) と放射輝度 (Radiance) 3 平行光源 (directional lights) • 単一方向に進む光 • 太陽のように極端に遠方にある光源 • シーン中のどこでも同じ方向を向いている • 光線ベクトル L(ワールド座標系,単位ベクトル) • 光線の進行方向とは逆 L 無限の彼方 にある光源 4 放射束 (radiant flux) • 単位時間当たりのエネルギー • 単位 W (ワット) エネルギー量は同じ 発生 輸送 到達 5 放射照度 (irradiance) • L と直交する平面を通過する単位面積あたりのエネルギー • 単位 W/m2 L 6 面の照度 • 面の法線ベクトル N • N と L のなす角 θi • N と直交する面の照度 E • L と直交する面の照度 EL N L ! i E = EL cos✓i cos✓i = max(cos ✓i , 0) = max(N · L, 0) d N L ! i d cos! i 7 任意の方向から入射する光の照度 N ELk E= n X Elk cos✓ik k=1 合計になる ! ik 8 放射発散度 (radiant exitance) • 平面から放射される単位面積あたりのエネルギー • 単位 W/m2 • 入射光の照度は面の放射照度で計測する • 反射光の照度は放射発散度で計測する • 面の色 c = 放射発散度÷放射照度 • 0~1の値を持つ • 色によって異なる • CG では RGB のベクトルで表す N 9 放射輝度 (radiance) • ある点からある方向に放射されるエネルギー • 単位 W/sr・m2 • sr: ステラジアン(立体角) • 単位面積あたりに入射する放射点の単位立体角あたりのエネルギー • 一本の光線の明るさと色の計測値 立体角 単位面積 10 陰影付け • 材質特性(マテリアル)と光源情報をもとに視線ベクトル V 方 向の放射輝度 Lo を計算する EL N L ! i !o V Lo 11 拡散反射光の放射輝度 • 完全拡散反射面の拡散発散度 Mdiff,光源の放射照度 EL,光 線ベクトル L,拡散反射色 cdiff ,放射輝度 Ldiff Mdif f Ldif f = cdif f ⌦ EL cos✓i Mdif f = ⇡ EL Ldif f cdif f = ⌦ EL cos✓i ⇡ ⊗ : 要素ごとの積 Mdif f ✓i 𝜋 EL cos✓i 12 拡散反射光による陰影 13 鏡面反射光の放射輝度 • 拡散発散度 Mspec,入射光の放射照度 EL,光線ベクトル L, 視線ベクトル V,鏡面反射色 cspec,放射輝度 Lspec L+V 中間ベクトル H = |L + V| Mspec = cspec ⌦ EL cos✓i Lspec (V) m+8 m = cos ✓h Mspec 8⇡ cos✓h = max(H · N, 0) m:輝き係数 (shininess) m+8 m = cos ✓h cspec ⌦ EL cos✓i 8⇡ 14 鏡面反射成分による陰影 15 放射輝度 • 拡散反射成分と鏡面反射成分の和 Lo (V) = ✓ cdif f m+8 m + cos ✓h cspec ⇡ 8⇡ ◆ ⌦ EL cos✓i • 一般に使われている Blinn-Phong モデル Lo (V) = (cos✓i cdif f + cosm ✓h cspec ) ⌦ BL • BL: “明るさ (brightness)”・・・ ad hoc に決定 16 陰影付け方程式の実装 • n 個の光源 Lo (V) = n ⇢✓ X cdif f k=1 Kdif f ⇡ m+8 m + cos ✓hk cspec 8⇡ ◆ ⌦ ELk cos✓ik cdif f m+8 = , Kspec = cspec , Kdif f + Kspec 1 ⇡ 8⇡ Lo (V) = n X k=1 {(Kdif f + Kspec cosm ✓hk ) ⌦ ELk cos✓ik } 17 輝き係数 % m= 1 m = 10 m = 50 m = 90 $ # " ! &"'( &" &!'( )! )!'( )" )"'( 18 輝き係数によるハイライトの制御 m = 10 小 m = 50 m = 90 m 大 正規化しない場合 19 BRDF 双方向反射率分布関数 20 BRDF • Bidirectional Reflectance Distribution Function • 双方向反射率分布関数 • L 方向の微小立体角から入射する光の放射照度 dE に対す る V 方向の微小立体角への反射光の放射輝度 dLo の割合 dLo (V) f (L, V) = dE(L) dLo (✓o , o ) f (✓i , i , ✓o , o ) = dE(✓i , i ) N dE L dLo θo θi V φ φo φi t 21 光源が点の場合の BRDF • 光源が面積を持たない dLo (V) f (L, V) = EL cos✓i • 複数光源による放射輝度 Lo (V) = n X k=1 f (Lk , V) ⌦ ELk cos✓ik N EL L Lo θo θi V φ φo φi t 22 BRDF の特性 • 光の入射方向と放射方向は,それぞれ2つの自由度を持つ • 方位角φi , φo ,仰角θi , θo • したがって,BRDF は4変数の関数 • 入射方向と反射方向を入れ替えても成立する • f (L, V) = f (V, L) • ヘルムホルツの相反性 (Helmholtz reciprocity) • 等方性 (Isotropic) BRDF • 個々の方位角に依存しない • 相対的な方位角φに依存する • 3変数の関数 (θi , θo , φ) • エネルギー保存の法則 • 放射されるエネルギーは入射エネルギーを超えない 23 指向性半球反射率 • Directional-Hemispherical Reflectance • L 方向から入射した光の量に対する入射点を中心とする半球に放射さ れる光の量の割合 dB R(L) = dE(L) 0 R(L) 1 →色 • 光源が面積を持たないとき M R(L) = EL cos✓i dE L dB 24 指向性半球反射率と BRDF の関係 • BRDF から指向性半球反射率を求める Z R(L) = f (L, V) cos ✓o d!o ⌦ • BRDF が完全拡散反射面 (Lambertian) R(L) = ⇡f (L, V) • R(L) は色→cdiff cdif f f (L, V) = ⇡ • 放射輝度 n X cdif f Lo (V) = ⌦ ELk cos✓ik ⇡ k=1 dωo N θo Ω V 25 Phong のモデルの BRDF • Phong の陰影付けモデル Lo (V) = (cos✓i cdif f + cosm ↵r cspec ) ⌦ BL • EL = BL / π とみなして上式から BRDF の項を取り出すと cdif f cspec cosm ↵r f (L, V) = + ⇡ ⇡cos✓i N L θi V αr R 26 Phong のモデルの BRDF の特性 • cdiff • 指向性半球反射率により求まる • 0~1 の値を持つ • cspec • 0~1 の値を持つ • 指向性半球反射率 Rspec の値に上限はない cdif f cspec cosm ↵r f (L, V) = + ⇡ ⇡cos✓i • 上式で入射角 θi → 90° とすると鏡面反射率が大きくなりすぎる 27 鏡面反射項の指向性半球反射率 • 入射角 θi → 0°のとき最大値 2cspec / (m + 2) • 2 / (m + 2) で割る → cspec が指向性半球反射率の最大値に等しくなる cdif f m+2 f (L, V) = + cspec cosm ↵r ⇡ 2⇡ • エネルギー保存の法則 • cdiff + cspec ≤ 1 28 中間ベクトルを用いた場合 • Sloan と Hoffman • Blinn-Phong BRDF (1977) を正規化 (2008) cdif f m+8 f (L, V) = + cspec cosm ✓h ⇡ 8⇡ • これは微小面 BRDF(後述)に似ている • cspec はフレネル反射率(後述) RF(θi) に置き換える cdif f m+8 f (L, V) = + RF (✓i )cosm ✓h ⇡ 8⇡ • この cosmθh の項は正規分布関数に相当する L θ i N H θh V 29 表面下散乱を考慮する場合 • BRDF は表面下散乱を 考慮していない • 鏡面反射光も拡散反射光 も入射点から放射されると 考える(局所表面下散乱) • 表面下散乱がある場合 • 鏡面反射光は入射点で反 射するが拡散反射光の放 射位置は入射点と異なる • 入射位置から放射位置に 輸送される光が存在する 30 表面下散乱がある場合の反射光 31 BSSRDF • Bidirectional Surface Scattering Distribution Function • 双方向表面散乱分布関数 • BRDF を一般化したもの • 関数の入力として入射位置と放射位置を加える • f(L, V) → f(xi, xo, L, V) • 表面下散乱を含むために下記の光を考慮する • 入射方向に沿った光の割合 • 表面上のある点から別の点へ移動する光の割合 • 放射方向に沿った光の割合 • カメラが十分に遠い場合 • 入射位置と放射位置が一致すると近似できる 32 さらに一般化 • 材質は物体表面全体で均一ではない • 単一の物質でも粗さや汚れなどで変化する • SVBRDF (Spatially Varying BRDF), または SBRDF (Spatial BRDF) • 光の偏光 • 偏光面によって反射率や透過率が異なる • 光の輸送 • two BRDF • two BTDF (Bidirectional Transmission Distribution Function) 33 課題 • 表面下散乱を再現する場合について,スケールが大きくなる, あるいはカメラが遠くなるに従って,表面下散乱の影響が小さ くなる理由を考えなさい. 34 フレネル反射 表面反射と本体反射の配分 35 表面反射と本体反射 • 表面反射 (Surface reflection) • 物体の内部に進入せずに表面で発生する反射 • 鏡面反射 • 本体反射 (Body reflection) • 物体内部に進入した光が散乱して外部に再放出されることによって発 生する反射 • 拡散反射 • 反射の仕方による分類 → 反射する場所による分類 36 フレネル反射 (Fresnel Reflectance) Li = RF (✓i )L N Li Ri T Lt θi θi θt L L n1 n2 Lt = (1 スネルの法則n1 sin ✓i = n2 sin ✓t Lt = (1 -N sin2 ✓i RF (✓i )) L 2 sin ✓t n22 RF (✓i )) 2 L n1 正反射方向 Ri = 2(N · L)N L 37 フレネルの式 反射率 RF(θi) 1.0 屈折率の比 n 0.9 1.1 1.3 1.5 1.7 1.9 0.8 0.7 c = cos ✓i g= p 0.6 n2 + c2 + 1 n: 屈折率の比 1 (g c)2 RF (✓i ) = 2 (g + c)2 ✓ (c(g + c) 1+ (c(g c) 0.5 1)2 1)2 ◆ 0.4 0.3 0.2 0.1 入射角 0.0 0 10 20 30 40 50 60 70 80 90 38 Schlick の近似 反射率 RF(θi) 1.0 屈折率の比 n = 1.5 0.9 Fresnel Schlick 0.8 0.7 RF (✓i ) ⇡ RF (0 ) + (1 RF (0 ))(1 n1 ! 1, n2 ! n ) RF (0 ) = ✓ n 1 n+1 cos✓i )5 0.6 ◆2 0.5 0.4 0.3 0.2 0.1 入射角 0.0 0 10 20 30 40 50 60 70 80 90 39 内部反射 (Internal Reflection) • 光が透明な物体の内部から外部に出る時 n1 > n2 sin ✓t > sin ✓i N Ri T L θi θi θt -n n1 n2 入射角 θi が臨界角 θc を超えると 反射率 RF(θi ) = 1 となる p 1 RF (0 ) n2 p sin ✓c = = n1 1 + RF (0 ) 40 内部反射と外部反射の反射率 内部反射 RF(θi) 外部反射 RF(θi) 1.0 1.0 0.9 0.9 0.8 0.8 屈折率 の比 n 0.7 1/1.1 0.6 屈折率の比 n 1.1 1.3 1.5 1.7 1.9 0.7 0.6 1/1.3 0.5 1/1.5 1/1.7 0.4 0.5 0.4 1/1.9 0.3 0.3 0.2 0.2 0.1 0.1 入射角 0.0 0 10 20 30 40 50 60 70 80 90 入射角 0.0 0 10 20 30 40 50 60 70 80 90 41 拡散 BRDF 項 cdif f fdif f (L, V) = ⇡ ρ:散乱アルベド (albedo) ,射光強度に 対する反射光強度の比 cdif f = (1 拡散反射色は入射光から鏡面反射色を 引いたものに散乱アルベドをかけたもの cspec )⇢ fdif f (L, V) = (1 Shirley の式 fdif f (L, V) = ⇢ RF (✓i )) ⇡ 21 (1 20⇡(1 RF (0 )) 拡散反射色はフレネルの法 則と散乱アルベドで決まる (1 cos✓i )5 )(1 (1 cos✓o )5 )⇢ Ashikhmin と Shirley の式 fdif f (L, V) = norm (1 Rspec (L))(1 Rspec (V))⇢ κnorm はエネルギー保存を保証することにより決まる定数 42 微小面モデル 表面の粗さの影響 43 微小形状 (Micro geometry) 44 微小形状による効果 45 微小形状の高さと法線ベクトル 46 再帰性反射 (Retro-reflection) • 光の入射方向が視線と一致するときに最も明るくなる現象 • 滑らかな表面では入射光の正反射方向が最も明るくなる 47 微小面理論 (Microfacet Theory) • Torrance and Sparrow [1967] • “Theory for Off-Specular Reflection From Roughened Surfaces” • Blinn [1977] • “Models of Light Reflection for Computer Synthesized Pictures” • Cook and Torrance [1981] • “A Reflectance Model for Computer Graphics” 48 表面の粗さの微小面によるモデル化 • 表面の微小形状を微小面の集合として扱う • 微小面は平坦なフレネル反射する鏡であるとする • 表面特性は微小面の法線の分布で決まる • 分布には正規分布関数 (normal distribution function, NDF) を用いる • これを p(x) とする p(x) x 49 微小面の法線ベクトル L V V H V L H V L H V L H L H 50 微小面の法線が特定方向に向く確率 • 法線ベクトルが nµ 方向の立体角 dω の範囲を向いている確 率– p(nµ) dω N nµ p(nµ) p(nµ) dω dω nµ dω 51 中間ベクトルにもとづくフレネル反射率 N H L θh V αh αh • αh • L(またはV)と H のなす角 • θh • N と H のなす角 • フレネル反射率 • Schlickの近似 RF (↵h ) ⇡ RF (0 ) + (1 RF (0 ))(1 cos ↵h )5 52 微小面理論にもとづく BRDF p(H)G(L, V)RF (↵h ) f (L, V) = 4kp cos✓i cos✓o G(L, V):幾何減衰係数 (Geometrical Attenuation Factor) マスキング/シャドウィングの影響を表す関数 Z kp = p(H) cos ✓h d!h ⌦ p(θh) は通常対称(等方性をもつ) p(✓h )G(L, V)RF (↵h ) f (L, V) = 4kp cos✓i cos✓o 53 幾何減衰係数 G(L,V) マスキング ✓ シャドウイング 2(N · H)(N · L) 2(N · H)(N · V) G(L, V) = min 1, , H·L H·L ◆ 54 Torrance and Sparrow の BRDF • 幾何減衰係数 ✓ cos✓h cos✓o cos✓h cos✓i GT S (L, V) = min 1, , cos↵h cos↵h ◆ • 可視度項 1 GT S (L, V) 2 4 ⇡ = 0 = 0 cos✓i cos✓o 1+L·V H ·H cos2 ↵h 55 Smith の幾何減衰係数 • 表面の粗さに依存した2つの幾何減衰係数 • Sancer よって導かれ Stam が diffraction BRDF で用いたもの • Smith によって導かれ HTSG BRDF モデルで用いられたもの • 両方ともとても複雑で計算コストが高い • Schlick によって導かれた Smith のシャドウィング関数 GSmith (L, V) ⇡ k= r 2m2 ⇡ ✓ cos✓i cos✓i (1 k) + k ◆✓ cos✓o cos✓o (1 k) + k ◆ 56 Phong BRDF の微小面 BRDF • 微小面理論にもとづく BRDF p(✓h )G(L, V)RF (↵h ) f (L, V) = 4kp cos✓i cos✓o p(✓h ) 正規分布関数 4kp m+8 m cos ✓h cos のべき乗関数 8⇡ • 正規分布関数の代わりに cos の指数関数を用いた BRDF f (L, V) = ✓ G(L, V) cos✓i cos✓o ◆✓ ◆ m+8 m cos ✓h RF (↵h ) 8⇡ 57 微小面 BRDF における幾何減衰係数 • 正規分布関数の代わりに cos のべき乗関数を用いた BRDF f (L, V) = ✓ G(L, V) cos✓i cos✓o ◆✓ ◆ m+8 m cos ✓h RF (↵h ) 8⇡ • Blinn-Phong BRDF の鏡面反射項 fspec (L, V) = ✓ ◆ m+8 m cos ✓h RF (↵h ) 8⇡ • この比較から Blinn-Phong BRDF の(隠れた)幾何減衰係数 GBF は GBF (L, V) = cos✓i cos✓o 58 可視度項 (visibility term) • 正規分布関数の代わりに cos の指数関数を用いた BRDF f (L, V) = ✓ G(L, V) cos✓i cos✓o 可視度項 ◆✓ ◆ m+8 m cos ✓h RF (↵h ) 8⇡ • Blinn-Phong BRDF の可視度項:1 • →浅い角度から見たときに暗すぎる G(L, V) = cos✓i cos✓o 1/(cos✓i cos✓o ) • Ward BRDF の可視度項: • →浅い角度から見たときに明るすぎる • Neumann et al. : • Ashikhmin and Premože : G(L, V) = 1 1/ max(cos✓i , cos✓o ) 1/ cos ↵h max(cos✓i , cos✓o ) 1/(cos✓i + cos✓o cos✓i cos✓o ) 59 正反射ベクトルか中間ベクトルか 正反射ベクトル 中間ベクトル N N H R L L θh V αr θi θi L の反射ベクトル R と視線ベ クトル V とのなす角 αr V αh αh L と V の中間ベクトル H と法 線ベクトル N とのなす角 θh 60 レンダリング結果の違い 正反射ベクトルによるハイライト 中間ベクトルによるハイライト 篠原 靖知:“粗い物体の表面形状計測に基づく陰影付けモデルの決定および樹脂成 型物の質感設計への応用,” 和歌山大学システム工学部卒業論文 (2001) 61 現実のシーン 62 Oren-Nayer BRDF • 拡散反射面 (Lambertian facets) に微小面理論を適用 cdif f f (L, V) = (A + Bcos sin(min(✓i , ✓o )) tan(max(✓i , ✓o ))) ⇡ 2 A=1 0.5 2 + 0.33 2 B = 0.45 2 + 0.09 63 粗さ σ σ = 0.0 σ = 3.0 64 実装 Vproj Lproj cos =V =L N(N · V) N L N(N · V) Vproj Lproj = · |Vproj | |Lproj | θo θi φ Lproj t V Vproj φo φ i cdif f f (L, V) = (A + Bcos sin(min(✓i , ✓o )) tan(max(✓i , ✓o ))) ⇡ sin ✓i = |Lproj | |Vproj | |Lproj | |Vproj | , sin ✓o = , tan ✓i = , tan ✓o = |L| |V| N·L N·V cdif f f (L, V) = (A + Bcos min(sin ✓i , sin ✓o ) max(tan ✓i , tan ✓o )) ⇡ 65 異方性をもつ面 • 面の粗さが方向によって異なる (自宅の鍋) • 反射光の広がりが方向によって異なる (嫁の頭) 66 円柱に対する鏡面反射 67 異方性 BRDF • The Kajiya-Kay BRDF (The Banks BRDF) ndiff nspec l l θ'i t 拡散反射光 cos✓i0 = p 1 (l · t)2 t r' α'r v 鏡面反射光 t:円柱の軸ベクトル これを輝き係数 でベキ乗する θ´i:l と軸 t に直交する面がなす角 ⇣p ⌘ p cos↵r0 = max 1 (l · t)2 1 (v · t)2 (l · t)(v · t), 0 α´r:v と,円柱による反射光ベクトル r´ がなす角 68 実測にもとづく BRDF • 計測方法 • ゴニオメーター (Goniometer) • imaging bidirectional reflectmeter • イメージベースド手法 • データベース • Cornell University Program of Computer Graphics Measurement Data • Colombia-Utrecht Reflectance and Texture Database • MIT Anisotropic BRDF Measurement Data 69 計測 BRDF の表現 • BRDF の測定結果 • 巨大で密に標本化された4次元データ • SVBRDF では6次元 • ノイズを含んでいる • そのままではレンダリングに使えない • 計測値と一致する解析的な BRDF モデルを選択し パラメータを算出する • 非常にコンパクトな表現になる • レンダリングも速い • BRDF モデルの選択は単純だとは限らない • 複数の BRDF の項の重み付け和で表現する • Lafortune BRDF 70 BRDFのテーブル化 • BRDFは4変数の関数 • 多数の仰角と方位角に対するデータを配列に格納し,必要な BRDF値を補間により求める • 実験的に取得されたBRDF値にも応用できる • 実験データに含まれる雑音やデータの欠落の取り扱いに注意が必要である • 等方性の表面においてBRDFは3変数で表せる • 3次元テクスチャマップが応用できる • それでも非常にメモリを食う • BRDFデータのコンパクト化 • 以下のことを回避できる • 精密な理論モデルの評価(計算)コスト • 記憶容量の要求 • 取得したデータの雑音の影響 71 因数分解による方法 • BRDFは4変数の関数 • 入射角の仰角と方位角 • 反射角の仰角と方位角 • 因数分解による近似 • 4変数関数を二つの2変数関数の積の和で近似する f (✓i , i , ✓o , o) ⇡ n X j=1 pj (✓i , i )qj (✓o , o) 72 テクスチャの応用 • 関数 p, q をテクスチャで表す • n を大きくしなければならないかもしれない • BRDFを可能な限り少ない項で表現する • 多くの材質において大体納得できる結果を得るのに,高々一組 (n = 1) の2枚のテクスチャで充分 • McCool, “Homomorphic Factorization of BRDFs for High-Performance Rendering,” SIGGRAPH ’01 Proceedings, 2001. • Wynn, “Real-Time BRDF-based Lighting using Cube-Maps,” NVIDIA White Paper, 2001. p(ωi) q(ωo) • 問題点 • 光源ごとに少なくとも2枚のテクスチャアクセスが必要 • 光源として点光源と平行光線しか扱えない 73 • 次のプログラムは Phong モデルによる陰 宿題 Kajiya-Kay モデルによる 異方性反射の陰影付けを 実装してください. 影を付けた球を回転するアニメーションを 表示します. • https://github.com/tokoik/ggsample09 • これを Kajiya-Kay モデルの陰影に変更 してください. • 円柱の軸は接線ベクトル t 方向を向いて いるとします. • simple.frag をメールに添付してください. • 送り先 [email protected] 74 宿題プログラムの生成画像 Phong モデルの陰影 Kajiya-Kay モデルの陰影