...

6章:照明

by user

on
Category: Documents
13

views

Report

Comments

Transcript

6章:照明
6. 照明
1.
光源
環境光
2. 点光源
3. スポットライト
4. ディスタントライト
4. ローカル照明モデル
1.
1.
2. 表現方程式
2.
3.
4.
5.
BRDF
拡散反射
鏡面反射
アンビエント・拡散・鏡面の各要素をまとめる
グローバル照明モデル
表現方程式へのノイマン級数解法
2. 光線追跡
3. ラジオシティ
4. 確率的方法
1.
6. サンプルプログラム
6.1 光源
光源
波長λで出されるエネルギーの強さ(明暗度)と、
反射角度に特徴付けられる各点(x, y, z)から光を発する表面で、モデル化される
一般光源:照明関数
I x, y, z,  ,  ,  
視覚システムモデルは三色理論を基本とするベクトル
I  I r , I g , I b 
T
6.1 光源 / 環境光 (ambient light)
オブジェクト間の相互反射の精密な計算は困難なため、CGでは総総合反射を近似値とする
環境光:一定の光レベルがあると仮定し、これがシーンの各表面を照らすモデル
I a  I ar , I ag , I ab 
T
Global ambient : あらゆる光源から独立
OpenGL;
GLfloat global_amb[ ] = {0.2, 0.2, 0.2, 1.0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_amb);
6.1 光源 / 点光源
位置p0にある理想的な点光源は、強度I(p0)であらゆる方向に均等に光を発する
点光源から受ける照明の度合いは、距離の二乗に反比例して減衰する
減衰関数
f d  
1
a  bd  cd 2
6.1
d=光源から表面までの距離、a,b,cは係数
OpenGL
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, a);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, b);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, c);
6.1 光源 / OpenGLでの点光源
各光源は、位置、照明の量、拡散、反射光を個別に決定する
GLfloat light0_position[]={2.0, 22.0, 66.0, 1.0};
GLfloat diffuse0[]={0.0, 1.0, 0.0, 1.0};
GLfloat specular0[]={1.0, 1.0, 1.0, 1.0};
緑色拡散
緑色環境
白色鏡面
次に、照明と特定光源の両方を可能にする
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular0);
6.1 光源 / スポット光源とディスタント光源
スポット光源:
光源の頂点が位置p0にあり、方向Isを指し、幅が角度θにより定義されるコーン形状にモデル
化された細いビームの光源
θ =180°点光源
ディスタント光源(無限遠光源):
光源が表面から遠い場合は、平行光線でオブジェクトを照らす光源に置き換える
点光源に似ているが、光源の位置は方向で置き換える
GLfloat light0_direction[]={2.0, 2.0, 2.0, 0.0};
glLightfv(GL_LIGH0, GL_POSITION, light0_direction);
6.2 表現方程式
1つの光源と2つの表面A,Bを想定する
表面Aに当たった光が表面Bに反射し、またAに反射し返す、などとなる
この光の移動は、積分方程式で表されるが、一般には解けないので、さまざまな単
純化や近似化が行われている
ω方向にx離れる光エネルギーの量




L
x
,
ラジアンス 0
位置に対して3つの数量
方向に対して2つの数量
シーンには他の光源や、その他の反射表面がある
xにおける総入射光は、表面の粗さにより分散され

一定量 L r x, 
方向に反射される
出射ラジアンスLoは、発射ラジアンスの総量Leと反射ラジアンスLrとで表される



Lo  x,   Le  x,   Lr  x, 
6.2 
6.2 表現方程式
反射ラジアンス
シーンの位置Dからの光エネルギーが方向ωで反射する場合

Dからの入射方向     ,  


 
  


   n 






f
x
,
,
L
x
,

 から までの光エネルギー量 r
i


方向   から位置xまでの入射ラジアンス Li  x, 
6.3

 
xに到着するエネルギーの一部 f r  x, ,  であり、 方向に反射される

 
n は、位置xの表面、Ωがxでの入射方向の半球となる    n  cos   とする
あらゆる可能な入射方向を考慮すると、反射ラジアンスは半球上で完全になり

d  は立体角となる、これを出射ラジアンスに置き換えると次式となる


 
   
Lo  x,   L e  x,    f r  x, , Li  x,     n d 

6.4 
6.3 ローカル照明モデル BRDF
表面でのローカル光分布をモデル化する
BRDF:光の反射を説明する二方向間反射率分布関数
表面位置に当たる光は、同じ表面位置で反射すると仮定する
位置に対して3つのパラメータ、各方向に対して2つのパラメータの7次関数
 
f r  x, ,  

Lr  x, 
   
Li  x,    n d 
6.5
BRDFの重要な特性
1つ目のBRDFが光の流れる方向から独立とするレムホルツの相反の法則
 
 
f r  x, ,   f r  x, , 
6.6
表面は受け取った以上の光を反射できないとする


 
   

f r x, , Li x,     n d   1 
6.7 
6.4 グローバル照明モデル / 拡散反射
拡散反射する表面は、光が表面に当たるとき全方向に反射する
ランベルトの拡散反射:反射方向は完全にランダムになる
反射ラジアンスは、入射ラジアンスに関係なく全方向に一定
BRDF関数において、
f r ,d x は定数


 から  までの光エネルギー分布は次式となる
 
 
f r , d  x Li  x    
6.8
反射係数kdを反射する入射拡散光の一部を表すとして、
点光源の強さを li とすると、表面のある位置における拡散反射方程式は
次式となる

I l .diff  k d I l l  n 
l
6.9 
が表面位置xからの点光源への
単位方向ベクトルとなり、どの位置
からみても、同じ値になる
6.4 グローバル照明モデル / 鏡面反射
一般に表面には何らかの欠陥があり,光が鏡面方向の
周りで小さな円錐状に反射する.この反射は光沢と
呼ばれる 図(a)
完璧な表面の場合のみ,鏡面方向に反射する 図(b)

   
s  2 , n n   
6.10
方向に対して球座標を用いて,BRDFにより完全な
鏡面反射を表す


 
f r  x,  ,    2  s sin 2    sin 2          6.11


  x   0 x  0,    ,  ,     ,  
①フレネルの反射・・・金属や誘電体
鏡面反射による反射ラジエンス


Lr x,  s    s x Li x,  
6.12
 s  x  は表面によって反射された入射光の一部
光の反射した一部がフレネルの反射係数により表すことが
できれば,フレネルの反射を得る事ができる
 s x   Fr    F0  1  F0 1  cos  
5
6.13
6.4 グローバル照明モデル / 鏡面反射
②屈折
屈折指数 の媒体内の光線に対し,屈折指数 の
透明素材に当たる光線は,オブジェクトの中で屈折する
光の量から計算できる
「スネルの法則」を使って,ノーマルnで滑らかな表面での
屈折光の方向は以下となる
2

 1 
  2
1     
 r       n n   1    1    n 

2
 2 




 n



6.14 
③フォンの鏡面モデル
近似モデル
 
 
I s  k s Lr h  n
ns
 lv
, h
lv
6.15 
Vは単位観察方向
Ks(0≦ks≦1)は入射する並行光が反射する一部
べき指数nsは光沢係数
100~500:金属表面
無限大:鏡
6.3 ローカル照明モデル / 各要素をまとめる
一点の光源に対して,表面の一点からアンビエント反射,
拡散反射,鏡面反射を結合できる
フォンのモデル
I  I ambient  I diff  I spec
 

 k a I a  k d I l l  n   k s I l h  n
 
6.16 
ns
RGB色表現に対して,3要素ベクトルとして,アンビエント,
拡散,鏡面係数を指定することで,表面色を設定できる
青色要素を前提としたフォンのモデル


 n

I B k aB I aB   f i d I lBi  k dB li  n   k sB hi  n 


i 1
n
s
6.17 
GLfloat ambient[]={0.15, 0.15, 0.15, 1.0};
GLfloat diffuse[]={1.0, 0.75, 0.0, 1.0};
GLfloat specular[]={0.0, 0.9, 0.9, 1.0};
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPEVUALR, specular);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, 96.0);
6.4 グローバル照明モデル / ノイマン級数解法
ローカル照明モデルの限界
 表現方程式へのノイマン級数解法
例:1つの光源と2つの表面AとB
表面Aに到達した光の一部がBに反射し,またAに反射する
式6.2または式6.4において,計算する量が式の両辺に存在して,計算を困難にしている
解決の方法:右辺の入射ラジアンスをラジアンスに対する表現に帰納的に置き換える
表現方程式を積分演算子Kで表現する
L0  Le  KL0
L0はラジアンスニ対応し,Leは発光ラジアンスに対応する.関数gに応用される積分演算子Kは以下と
なる
 
   
Kg   f r  x,  ,  g  x,    n d  6.18

この帰納計算により,表現方程式の解法はノイマン級数となる

L0  Le  KLe  K 2 L e  K 3 Le     K m Le
6.19
m 0
演算子Kは,光線から目までの光の経路に沿って光表面相互作用に対応する
ノイマン級数は,光追跡アルゴリズムの基盤となる
6.4 グローバル照明モデル / 光線追跡
光線追跡(ray tracing)
ローカル照明の考え方の延長
光線は逆方向に処理される:すべての光線は観察者の目から始まり,シーンのオブジェクトに向かって画面を通過し,最
後に光源に届く
光線r


r x,    x  d
6.20 
xは光線の起源, ωは光線の方向, dは光線に沿って動いた距離
ラジアンスを計算するために光線が交差する最短距離(最小のd)にあるオブジェクトを見出す
各交差点に対し,方向ωsで反射光,方向ωrで屈折光が発生
この経路に沿って他のオブジェクトにもあたるので,光線追跡は2分木構文解析処理となる
光線の木ののどは交差点であり,辺が光線である
アルゴリズムの反復的性質は,光線の木の各ノードに対し,
光線追跡処理の再帰呼出しにより実施する
交差点pを指定し,光線方向にある出射ラジアンスL0を算出
する
表面ノーマルn,BRD Fr,鏡面係数ka,kd,ksを知る必要がある
ピクセルの色は全てのローカルラジアンスの和として,その経路に
沿って一次線の各交点に対して計算する
ラジアンスは,木の葉から始め根に向かって加算する
6.4 グローバル照明モデル / ラジオシティ
建物の内部などのような完全に拡散する表面のあるシーンに適している
手法:
シーンを小さく平らな多角形あるいはパッチに分割し,それぞれが十分に拡散し,
一定の陰影を出すものものとする
課題:
陰影の計算式を解くこと
2段階で解く
1. 2つ1組のパッチを想定し,1つのパッチを離れる光のエネルギーが他方に
与える影響の形状係数を定義する
2. 表現方程式はパッチのラジオシティに対する一次方程式へと変換される
形状係数Fjk:
表面kに達する表面jから出るラジアンスの一部の量で,Fkk=0
形状係数の計算は,表面j上の位置で,単位半径で半球を位置づけ,2番目の
表面kは半球上に投影され,次の半球の基盤へと投影される
形状係数は,半球の基盤のエリヤによって分割される半球の基盤に投影され
るエリヤとなる
ラジオシティ方程式
シーンでのNの拡散表面を仮定した表現方程式から導かれる
N
Bk  Ek   k  B j F jk
6.21
j 1
1   k Fkk Bk   k  Bk F jk
jk
 Ek , k  1,2,  , N
6.22 
6.4 グローバル照明モデル / 確率的方法
6.5 プログラム:照明とOpenGL
Fly UP