第十一章 真實感圖形技術
1,簡單光照明模型
2,多邊形繪制方法
3,透明
4,整體觀照明模型
5,光線跟蹤算法
第十章 真實感圖形繪制
光照模型 (Illumination Model):計算某
一點的光強度的模型
11.1 真實感圖形的 特點
? 能反映物體表面顏色和亮度的細微變化
? 能表現物體表面的質感
? 能通過光照下的物體陰影,極大地改善場景的
深度感和層次感,充分體現物體間的相互遮擋
關系
? 能模擬透明物體的透明效果和鏡面物體的鏡面
效果
影響觀察者看到的表面顏色的因素
① 物體的幾何形狀
②光源 位置、距離、顏色、數量、強度、種類
③環境 遮擋關系、光的反射與折射, 陰影
④視點位置
⑤物性 材料、顏色、透明度 折射性
⑥表面光潔度
光源
① 幾何性質
– 點光源
– 線光源
– 面光源
② 光譜組成
– 白色光等能量的各種波長可見光的組合
– 彩色光
– 單色光
11.2 真實感圖形學早期發展
? 1967年,Wylie等人第一次在顯示物體時
加進光照效果,認為光強與距離成反比。
? 1970年,Bouknight提出第一個光反射模
型,Lambert漫反射+環境光
? 1971年,Gouraud提出漫反射模型加插值
的思想
? 1975年,Phong提出圖形學中第一個有影
響的光照明模型
相關物理知識
? 光的傳播
– 反射定律:入射角等于反射角,而且反射光
線、入射光線與法向量在同一平面上
光源 法向量
入射光 反射光
視線
折射定律
– 折射定律:折射線在入射線與法線構成的平
面上,折射角與入射角滿足
入射光
折射光
?
?
2
?
1
?
1
2
s in
s in
??
???
能量關系
– 在光的反射和折射現象中的能量分布:
– 下標為 i,d,s,t,v的能量項分別表示 為入射光強,
漫反射光強,鏡面反射光強,透射光強,吸
收光強
– 能量是守恒的
i d s t vI I I I I? ? ? ?
11.3 簡單光照明模型
模擬物體表面的光照明物理現象的數學
模型-光照明模型
簡單光照明模型 亦稱局部光照明模型,
其假定物體是不透明的,只考慮光源的
直接照射,而將光在物體之間的傳播效
果籠統地模擬為環境光。
可以處理物體之間光照的相互作用的模
型稱為整體光照明模型
簡單光照明模型
光照射到物體表面,主要發生:
反射
透射(對透明物體)
部分被吸收成熱能
反射光,透射光決定了物體所呈現的顏
色
簡單光照明模型 -環境光
假定物體是不透明的(即無透射光)
? 環境光,在空間中近似均勻分布,即在任何位置、
任何方向上強度一樣,記為 Ia
? 環境光反射系數 Ka,在分布均勻的環境光照射
下,不同物體表面所呈現的亮度未必相同,因為它們
的環境光反射系數不同。
? 光照明方程(僅含環境光),Ie = KaIa
Ie為物體表面所呈現的亮度。
簡單光照明模型 - 環境光例子
? 具有不同環境光反射系數的兩個球
0.1?aI
4.0?aK 8.0?
aK
簡單光照明模型 -環境光
? 缺點:雖然不同的物體具有不同的亮度,
但是同一物體的表面的亮度是一個恒定
的值,沒有明暗的自然過度。
簡單光照明模型
? 考慮引入點光源。
? 點光源:幾何形狀為一個點,位于空間中的某
個位置,向周圍所有的方向上輻射等強度的光。
記其亮度為 Ip
? 點光源的照射,在物體的不同部分其亮度也不
同,亮度的大小依賴于物體的朝向及它與點光源之間
的距離,
簡單光照明模型,-漫反射 角度
余弦的推導
? 漫反射
– 粗糙、無光澤物體(如粉筆)表面對光的反射
– 光照明方程
? 漫反射的亮度
? 點光源的亮度
? 漫反射系數
? 入射角
漫反射光的強度
只與入射角有關
]2,0[c o s ??? ?? dpd KII
pI
dK
?
dI
簡單光照明模型 -漫反射
? 將環境光與漫反射結合起來
一般取 Ia= (0.02~0.2)Id
? 例子
)( NLKIKIIII dpaade ?????
簡單光照明模型 -漫反射
缺點:對于許多物體,使用上式計算其反
射光是可行的,但對于大多數的物體,
如擦亮的金屬、光滑的塑料等是不適用
的,原因是這些物體還會產生鏡面發射。
簡單光照明模型 -鏡面反射
? 鏡面反射
– 光滑物體(如金屬或塑料)表面對光的反射
? 高光
– 入射光在光滑物體表面形成的特別亮的區域
簡單光照明模型 -鏡面反射
? 理想鏡面反射
? 觀察者只能在反射方向上才能看到反射
光,偏離了該方向則看不到任何光。
簡單光照明模型 -鏡面反射
? 非理想鏡面反射
? P為物體表面上一點,L為從 P指向光源的單位
矢量,N為單位法矢量,R為反射單位矢量,V
為從 P指向視點的單位矢量
光滑平面
I = Ip K scosna
鏡面
簡單光照明模型 -鏡面反射
? 鏡面反射
? Is為 鏡面反射光強。 點光源的亮度
– Ks是與物體有關的鏡面反射系數。 n為 鏡面反射指數,n越
大,則 Is隨 a的增大衰減的越快。
– n的取值與表面粗糙程度有關。
– n越大,表面越平滑(散射現象少,稍一偏離,明
暗亮度急劇下降)
– n越小,表面越毛糙(散射現象嚴重)
ansps KII c o s? nsps RVKII )( ??
或
pI
簡單光照明模型 -鏡面反射
– 反射方向計算
– L在 N上的投影矢量為 Ncosu,則 S+L= Ncosu
記矢量 S= Ncosu -L
則有 R= Ncosu +S
? ? LLNNLNR ????? 2c o s2 ?
N
R
L V
??
S S
簡單光照明模型 -Phong光照明模型
? 簡單光照明模型模擬物體表面對光的反
射作用,光源為點光源
? 反射作用分為
– 物體間作用用環境光 (Ambient Light)
– 漫反射 (Diffuse Reflection)
– 鏡面反射 (Specular Reflection)
簡單光照明模型 -Phong光照明模型
? Phong光照明模型的綜合表述:由物體表
面上一點 P反射到視點的光強 I為環境光
的反射光強 Ie、理想漫反射光強 Id、和鏡
面反射光 Is的總和。
])()([ nsdpaa
sde
RVKNLKIKI
IIII
?????
???
簡單光照明模型 -Phong光照明模
型的實現
? 對物體表面上的每個點 P,均需計算光線
的反射方向。為了減少計算量,假設:
– 光源在無窮遠處,L為常向量
– 視點在無窮遠處,V為常向量
– ( H?N)近似( R?V),H為 L與 V的平分向量
N HL R
a
Vb
H----L和 V的角平分線
? 對所有的點總共
只需計算一次 H的
值,節省了計算
時間
簡單光照明模型 -Phong光照明模型
? Phong模型幾何
P
L N H
R
V
簡單光照明模型 -光的衰減
? 光的衰減
兩個階段:
1)從光源到物體表面的過程中的衰減
2)從物體表面到人眼過程中的衰減
總的效果:物體表面的亮度降低
? 光照明方程
1)有效衰減函數的加入
2)深度暗示技術的加入
簡單光照明模型 -光的衰減
? 光的衰減
– 光在光源到物體表面過程中的衰減
– 光強按 1/d2 進行衰減:
缺點:當 d很大時,變化很小;當 d很小時,變
化很大。
? 衰減函數
? 光照明方程
)1,1m i n ()( 2
210 dcdcc
df ???
])()([)( nsdpaa RVKNLKIdfKII ?????
簡單光照明模型 -光的衰減
– 光在物體表面到人眼過程中的衰減
? 深度暗示( Depth Cueing)技術:最初用于線框
圖形的顯示,使距離遠的點比近的點暗一些。經
過改進,這種技術同樣適用于真實感圖形顯示。
? 設前參考面 Z=Zf,后參考面 Z=Zb;其比例因子
分別為 Sf和 Sb( Sf和 Sb e[0,1])。給定物體上一
點的深度值 Z0,該點對
應的比例因子 S0按如下
方式確定
前參考面
后參考面
簡單光照明模型 -光的衰減
? 當 Z0 >Zf時,取 S0=Sf
? 當 Z0
? 當 Z0e [Zb,Zf]時,取
? 原亮度 I按比例 S0與融和亮度 Idc混合,目
的是獲得最終用于顯示的亮度 I’, Idc由
用戶指定,
)( 00 b
bf
bf
b ZZZZ
SSSS ?
?
???
dcISISI )1( 00 ????
簡單光照明模型 -光的衰減
? 特例:
? 取 Sf=1,Sb=0,Idc=0,則當物體位于參考面
之前時,S0= Sf= 1,I’ =I,即亮度沒有
被衰減。當物體位于后參考面之后時,
S0 = Sb =0,I’ =Idc=0,即亮度衰減為 0。
而當 Z0e [Zb,Zf]時,I’ =S0I,亮度被部分
衰減。由此可以產生較好的效果。
dcISISI )1( 00 ????
簡單光照明模型 -彩色場景的產生
? 產生彩色
– 選擇合適的顏色模型 ----RGB模型
– 為顏色模型中的每一種基色建立光照明方程
?
?
?
?
?
?????
?????
?????
])()([)(
])()([)(
])()([)(
n
sBdBpBaBaBB
n
sGdGpGaGaGG
n
sRdRpRaRaRR
RVKNLKIdfKII
RVKNLKIdfKII
RVKNLKIdfKII
簡單光照明模型 -彩色場景的產生
– 系數分解
? 上述各等式中,右端的矢量用來控制表面的基本
顏色,當選定了物體表面的顏色之后,它們就固
定不變了。用戶通過調節 Ka,Kd,Ks來改變表
面的反射率。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
dB
dG
dR
a
aB
aG
aR
C
C
C
K
K
K
K
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
dB
dG
dR
d
dB
dG
dR
C
C
C
K
K
K
K
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
sB
sG
sR
s
sB
sG
sR
C
C
C
K
K
K
K
簡單光照明模型 -彩色場景的產生
– 新的光照明方程
– 統一表示
?
?
?
?
?
?????
?????
?????
])()([)(
])()([)(
])()([)(
n
sBsdBdpBaBdBaB
n
sGsdGdpGaGdGaG
n
sRsdRdpRaRdRaR
RVCKNLCKIdfICKI
RVCKNLCKIdfICKI
RVCKNLCKIdfICKI
])()([)( nssddpada RVCKNLCKIdfICKI ????? ??????
BGR,,??
簡單光照明模型 -多個光源
? 采用多個光源
– 采用 m個光源的光照明方程
?
?
???
??
m
i
n
issiddpi
ada
RVCKNLCKIdf
ICKI
i
1
])()([)( ???
???
簡單光照明模型 -多個光源
– 例子:其中 a圖:線框圖 b圖:環境光
c圖:增加漫反射 d圖:增加鏡面反射
e圖:增加光的衰減 f圖:兩個點光源
Phong光照明模型的 不足
? Phong光照明模型是真實感圖形學中提出
的第一個有影響的光照明模型
? 經驗模型,Phong模型存在不足:
– 顯示出的物體象塑料,無質感變化
– 沒有考慮物體間相互反射光
– 鏡面反射顏色與材質無關
– 鏡面反射大入射角失真現象
11.4 多邊形繪制方法
? 分類,均勻著色與光滑著色
? 均勻著色
方法:任取多邊形上一點,利用光照明方
程計算出它的顏色,用這個顏色填充整
個多邊形
適用場合,1)光源在無窮遠處;
2)視點在無窮遠處;
3)多邊形是物體表面的精確表示;
多邊形繪制方法
? 缺點:產生的圖形效果不好。
? 如左圖:相鄰兩個多邊形的法向
不同,計算出來的顏色也不同,
因此造成整個物體表面的顏色過
渡不光滑。
? 如何解決?
? 光滑著色,亦稱插值著色
Gouraud著色方法
Phong著色方法
Gouraud著色方法
? Gouraud于 1971年提出,又被稱 Gouraud
明暗處理
? 基本思想:在每個多邊形頂點處計算顏
色,然后在各個多邊形內部進行線性插
值,得到多邊形內部各點顏色。即它是
一種 顏色插值著色方法。
? 注意,Gouraud著色方法并不是孤立的處
理單個多邊形,而是將構成一個物體表
面的所有多邊形(多邊形網格)作為一
個整體來處理。
Gourand 著色方法
? 對多邊形網格中的每一個多邊形,
Gourand 著色處理分為如下四個步驟:
– 步驟
1、計算多邊形的單位法矢量
2、計算多邊形頂點的單位法矢量
? 與某個頂點相鄰的所有多邊形的法向平
均值近似作為該頂點的近似法向量
? 計算出的平均法向一般與該多邊形物體
近似曲面的切平面比較接近
Gouraud著色方法 -頂點法向計算
?
?
?
??
n
i
n
i
i
v
Ni
N
N
1
1
Gourand 著色方法
3、利用光照明方程計算頂點光強(顏色)
4、對多邊形頂點光強(顏色)進行雙線性
插值,獲得多邊形內部各點的光強(顏色)
Gourand 著色方法 -光強插值
? 雙線性光強插值:假設待繪制的三角形投影為
P1P2P3,Pi的坐標為 (xi,yi),i=1,2,3;一條掃描
線與三角形的兩條邊分別交于 A(xA,yA),B(xB,yB)
兩點。 P(x,y)是 AB上的一點。 A點的顏色 IA由 P1、
P2點的顏色 I1,I2線性插值得到
B
AB
A
A
AB
B
P
BB
B
AA
A
I
xx
xx
I
xx
xx
I
I
yy
yy
I
yy
yy
I
I
yy
yy
I
yy
yy
I
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
3
31
1
1
31
3
2
21
1
1
21
2
Gourand 著色方法 -增量算法
? 采用增量算法可以加速計算。
? 1)當掃描線 y遞增一個單位變為 y+1時,
IA,IB的增量分別為 DIA, DIB,即
31
31
21
21
,1,,1,
yy
II
I
yy
II
I
IIIIII
BA
ByByBAyAyA
?
?
?D
?
?
?D
D??D?? ??
其中:
Gourand 著色方法 -增量算法
? 2)當 x遞增一個單位時,IP的增量為 DIP即
AB
AB
P
PxPxP
xx
II
I
III
?
?
?D
D??
?
其中:
,1,
Gourand 著色方法
? 優點,能有效的顯示漫反射曲面,計算量小
? 缺點:
? 1、高光有時會異常
? 2、當對曲面采用不同的多邊形進行分割時會產生不同
的效果。
? 3,Gouraud明暗處理會造成表面上出現過亮或過暗的
條紋,稱為馬赫帶( Mach_band)效應
? 改進- Phong提出雙線性法向插值,以時間為代價,解
決高光問題
Phong著色方法
? 基本思想:通過對多邊形頂點的法矢量進
行插值,獲得其內部各點的法矢量,又稱
為法向插值著色方法。
– 步驟
1、計算多邊形單位法矢量
2、計算多邊形頂點單位法矢量
3、對多邊形頂點法矢量進行雙線性插值,獲
得內部各點的法矢量
4、利用光照明方程計算多邊形內部各點顏色
Phong著色方法 -法向插值
NA由 N1,N2線性插值得到:
B
AB
A
A
AB
B
P
BB
B
AA
A
N
xx
xx
N
xx
xx
N
N
yy
yy
N
yy
yy
N
N
yy
yy
N
yy
yy
N
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
3
31
1
1
31
3
2
21
1
1
21
2
Phong著色方法 -增量算法
? 采用增量算法可以加速計算。
? 1)當掃描線 y遞增一個單位變為 y+1時,
NA,NB的增量分別為 DNA, DNB,即
31
31
21
21
,1,,1,
yy
NN
N
yy
NN
N
NNNNNN
BA
ByByBAyAyA
?
?
?D
?
?
?D
D??D?? ??
Phong著色方法 -增量算法
? 2)當 x遞增一個單位時,IP的增量為 DIP即
AB
AB
P
PxPxP
xx
NN
N
NNN
?
?
?D
D??
?
其中:
,1,
Phong著色方法
優點:
Phong著色方法繪制的圖形比 Gouraud方法更
真實,體現在兩個方面:高光區域的擴散,產
生正確的高光區域
缺點:
1,Phong著色方法計算量遠大于 Gouraud著
色方法
2、在處理某些多邊形分割的曲面時,Phong
算法還不如 Gouraud算法好。
增量式模型示例
? 牛的三角網格模型
? 用簡單光照明模型顯示
? 用增量式光照明模型顯示
插值多邊形繪制方法
? 著色方法存在的問題
– 不光滑的物體輪廓:物體邊緣輪廓是折線段
而非光滑曲線
插值著色多邊形繪制方法
– 透視變形
– 方向依賴性
插值著色多邊形繪制方法
– 公共頂點處顏色不連續
– 頂點方向不具有代表性
11.5 透明
? 現實世界中有許多透明物體,如玻璃等。
透過透明物體,可以觀察到其后面的景
物。如何模擬這種透明效果呢?
? 模擬透明的最簡單的方法是忽略光線在
穿過透明體時所發生的折射。雖然這種
模擬方法產生的結果不真實,但在許多
場合往往非常有用。例如:我們有時希
望能夠看到透過某透明物體觀察其后面
的景物,而又不希望景物應為折射而發
生變形。
透明效果的簡單模擬
? 不考慮透明體對光的折射以及透明物體
本身的厚度
? 光通過物體表面不改變方向
? 產生簡單透明效果的方法
插值透明方法
過濾透明方法
),( yx
a
I
b
I
透明體
不透明體
簡單透明 -插值透明
? 假設:多邊形 1是透明的,它
位于觀察者與不透明的多邊形
2之間。像素的顏色 I?由 A,B
兩點的顏色 I?1和 I?2插值產生,
即
? 其中 Kt1是多邊形 1的透射系數。
? Kt1范圍( 0,1)
? Kt1 =0表示多邊形完全不透明,
所以 I? = I?1
? Kt1 =1表示多邊形完全透明,
所以 I? = I?2
21 11 )1( ??? IKIKI tt ???
簡單透明 -插值透明
? 為了產生逼真的效果,
通常只對兩個多邊形表
面顏色的環境光分量和
漫反射分量采用
?
? 進行計算,得到的結果
再加上多邊形 1的鏡面反
射分量作為像素的顏色
值。
21 11 )1( ??? IKIKI tt ???
簡單透明 -過濾透明
? 過濾透明方法將透明物體看
作一個過濾器,有選擇的允
許某些光透過而屏蔽了其余
的光。對右圖有:
? 其中 Kt1仍是多邊形 1的透射系
數,但不再局限于 (0~1)。 Kt1
越大,多邊形 2的顏色透過來
的越多。 Ct?對不同的顏色各
不相同。 Ct? =0表示某種顏色
的光不能透過多邊形 1。
21 1 ???? ICKII tt??
簡單透明
? 無論采用插值透明方法還是采用過濾透
明方法,當多邊形 1之前還有其它的透明
多邊形時,I?都要遞歸計算。
? 簡單透明比較容易結合到多邊形繪制算
法中。
考慮折射的透明
? 折射定律
? 其中,?i, ?t分別是入射
光線在空氣,物體中的
折射率,?i, ?t分別是入
射角和折射角
i
t
t
i
?
?
?
? ?
s in
s in
考慮折射的透明 -透射矢量的計算
– 設單位入射光矢量為 I
(方向與光線的入射
方向相反),單位法
矢量為 N,單位透射
光矢量為 T,則
INT
INM
M
IN
t
NMT
ti
i
t
i
i
ti
i
t
t
????
??
?
?
?
?
??
?
?
?
?
?
???
????
?
?
??
??
)c o sc o s(
c o s
c o s
s i n
i
s i n
c o s
令
考慮折射的透明
? 當光線從高密度介質向低密度介質時,
?i>?t,即 ?t>?i。如果入射角不斷增大,到
一定的程度,折射角 ?t?90度,此時透射
光線沿著平行于分界面的方向傳播,稱
此時的 ?i為臨界角度,記為 ?c 。當 ?i > ?c
時,發生全反射,透射與反射光合二為
一。
? 如何產生帶有折射的透明效果呢?
光透射模型的研究
? 早期簡單透射現象的模擬
? 1980年,Whitted光透射模型,首次考慮
了光線的折射現象
? 1983年,在 Whitted的基礎上,Hall光透
射模型,考慮了漫透射和規則透射光
11.6 整體光照明模型
簡單光照模型(亦稱局部光照模型)不考
慮周圍環境對當前景物表面的光照明影
響,忽略了光在環境景物之間的傳遞,
很難表現自然界復雜場景的高質量真實
感圖形。為了增加圖形的真實感,必須
考慮環境的漫射、鏡面反射和規則投射
對景物表面產生的整體照明效果。
整體光照明模型
? 物體表面入射光的構成
( 1)光源直接照射
( 2)其它物體的反射光
( 3)透射光
? 局部光照明模型僅考慮了( 1)
整體光照明模型
? 例如:從視點觀察到的物體 A表
面的亮度來源于三方面的貢獻:
( 1)光源直接照射到 A的表面,然
后被反射到人眼中的光產生的。
( 2)光源或其它物體的光經 A物體
折射到人眼中的光產生的。
( 3)物體 B的表面將光反射到物體
A的表面,再經物體 A的表面反
射到人眼中產生的。
? 局部光照明模型僅考慮了( 1)
Witted光照模型
? Whitted光照模型基于如下假設:
? 物體表面向視點方向 V輻射的光亮度 I?由三
部分組成:
( 1)光源直接照射引起的反射光亮度 Il?。
( 2)來自 V的鏡面反射方向 R的其它物體反
射或折射來的光的亮度 Is?。
( 3)來自 V的透射方向 T的其它物體反射或
折射來的光的亮度 It?
Witted光照模型
? Witted光照模型,I?= Il? + Ks Is? + KtIt?
? 或
– Is?為鏡面反射方向的入射光強度; Ks為鏡面
反射系數,為 0~ 1之間的一個常數
– It?為折射方向光強,Kt為透射系數,是 0 ~
1之間的常數
– Il?的計算可采用 Phong模型
因此,關鍵是 Is和 It的計算。如何計算呢?
?????? tttsssl ICKICKII ???
Witted光照模型 -反射、折射方向計算
? 已知視線方向 V,求其反射方向 R與折射
方向 T( N是表面的法向方向 )
? 視線 V的反射方向 R
? 折射方向 T
N
V
R
L
T
i
?
i
?
t
?
i
?
t
?
VVNNR ??? )(2
INT ti
t
i
????
?
?
?
???
?
)c o sc o s(
令
光線跟蹤算法的基本原理
? 自然界中光線的傳播過程
光源 物體表面 物體表面
人眼
? 光線跟蹤過程 ----光線傳播的逆過程
光線跟蹤算法的基本原理
? 從視點向每個 象素發出一
條光線,它與場景中的一
些物體表面相交,最近的
交點即為可見點,記為 P,
像素的亮度即由 P點的亮
度確定。由 Whitted光照
模型可知,P點的亮度由
三部分組成:其中 Il?可以
直接由局部光照模型計算
得到。
光線跟蹤算法的基本原理
? 為了求 Is?和 It?,從 P點發出反射光線和透射光線,它分別交場
景中的物體表面于 Ps和 Pt,Ps和 Pt點的亮度即分別為 Is?和 It?,
將它們求出代入 Whitted模型即可。但是,Is?和 It?同樣由
Whitted模型確定,即 Whitted模型是一個遞歸式,從而計算 Is?
和 It?需要重復以上的計算過程,計算局部光亮度、發出反射光
線與透射光線。。。可以用一棵光線樹來表示
光線跟蹤算法的基本原理
? 遞歸終止條件:
1、光線不與場景中的任何物體相交
2、被跟蹤的光線達到了給定的層次
3、由于 Ks和 Kt都小于 0,當光線經過反射
和折射后,其亮度會衰減。因此可以預
先設置一個閾值,在進行光線跟蹤時,
若被跟蹤光線對像素亮度的貢獻小于這
個閾值,便停止跟蹤。
光線跟蹤算法 -算法描述
設置視點,投影平面以及窗口的參數;
For (窗口內的每一條掃描線)
for (掃描線上的每一個像素)
{ 確定從視點指向像素中心的光線 ray;
像素的顏色 =RayTracing(ray,1);
}
光線跟蹤算法描述Color RayTracing(Ray ray,int depth)
{ 求 ray與物體表面最近的交點 P;
if (有交點)
{ 用局部光照明模型計算 P點的 Ic;
color = Ic;
if ( depth
{ 計算 ray的反射光線;
Is=RayTracing(反射光線,depth+1);
if (物體是透明的)
{ 計算 ray的透射光線;
It=RayTracing(透射光線,depth+1);
}
color = Ic + Is + It ;
}
} else color = black;
return color ;
}
光線跟蹤算法
根據光線跟蹤基本原理,假設在顯示分辨率為
N× M的屏幕上生成圖形,必須從視點出發通過
屏幕向景物發射 N× M條光線。設每根光線在場
景中經過反射和折射平均派生出 d根光線,并
設每一景物交點朝光源發射 m 條陰影探測光線,
則總的光線數增加至 (m+1)dNM。當 m為 2,d為 5,
N為 800,M為 600時,其光線數目是 720萬條。
這意味著需進行 720萬次直線與景物的求交計
算才能完成圖形的繪制。龐大的求交量使圖形
繪制耗費大大增加。生成一幅中等復雜程度的
真實感圖形需要數分鐘至數小時。
光線跟蹤算法
優點:
能夠方便的產生陰影,模擬鏡面反射與
折射現象。
缺點:
計算量大,每一條光線都要與場景中的
物體進行求交、計算光照模型等。