圖形學中的光和輻射學(Radiometry)

最近重讀Realtime Rendering 一書,對書中光照模型等內容有些感受;準備寫些筆記記錄一下自己的認識。本篇先主要講講輻射學(Radiometry)和簡單光照模型;後面會講講BRDF及其實現吧。

光的本質其實很複雜,物理學至今仍沒完全搞清楚;它是一種電磁輻射但卻有波粒二相性。幸好我們研究的是圖形學不是量子物理。圖形學的光只是個近似;我們只要想象它會向空間發射帶有能量的光子(particles),然後這些光子會和物體表面發生作用(反射,折射和吸收)。最後的結果是我們看到了物體的顏色和各種紋理。
![Light Interactions][2]
然後因爲能量守恆,所以入射光等於被反射的光加吸收的光再加折射的光。

light incident at surface = light reflected + light absorbed + light transmitted

輻射學(Radiometry)

爲了計算物體表面的顏色值(Shading),我們首先必須考慮光在空間中的分佈以及能量是如何從光源傳播到物體表面的。這是輻射學的範疇。考慮如下圖所示的空間中的點光源:
![pointerlight][3]
在同一方向上,近處的較小的表面和遠處較大的接收到的光子能量應該相同。這說明方向角很重要;以該點爲頂點的圓錐內,所有表面接收到的光子能量是一樣的。
所以這裏要引出固體角的概念。

固體角(Solid Angle)

先看平面上角度的定義,然後再引申到空間。
![solidangle][4]
如上圖所示:平面上角度是所圍成的扇形的弧長除以半徑;

dφ = (dl*cosθ) / r

單位是弧度,整個圓周就是2π。
而引申到空間,就是圍成的圓錐在球體表面的投影除以半徑的平方。

dω = (dA*cosθ) / (r*r)

由半球面面積公式容易知道這個比值是常量,與球的半徑無關的。這就是我們要的方向角,整個球面就是4π。
![solid-angle-1][5]
從上面的圖可以計算出相對與球體座標:

dω = sinθdθdφ

這是後面要用到的結果。

Radiance & Luminance

光源首先是個輻射源,它會向周圍輻射能量Q;也就是其的基本物理量是功率W。然而,光源消耗的能量不可能全部轉換爲光能。光通量就是衡量光源中光能的那部分功率。
這裏還要插一部分關於可見光測量的概念。上面提到的都是輻射學,適用於所有電磁輻射。而具體到可見光,它的所有概念(如光通量,光照強度)都跟視覺函數有關。
如下圖:
![CIECurves][6]
這就是爲什麼人眼感覺綠光會比紅光或者藍光亮。明視覺下,同功率的光源,555納米的綠光看起來是最亮的。

輻射學(Radiometry) 色度學(Photometry)
輻射通量(radiant flux) Watt 光通量(luminous flux) lm
輻射照度(irradiance) 光照度(illuminance) lux
輻射強度(radiant intensity) 光照強度(luminance intensity)
輻射亮度(radiance) 光亮度(luminance) nit

這兩組概念在數量上的差別只是CIE的標準視覺函數;其物理意義差別在於色度學的概念引入了人的主觀感受,也就是同樣的能量,不同顏色的光人感受到的亮度不一樣。除了這個主觀因素,它們背後的物理意義是一樣的。所以下面的討論中有時並沒有區分這兩組概念;而實際圖形學用的都是RGB三分量。

光通量(Φ)
光源在單位時間內,向周圍空間輻射出使人眼產生感覺的能量,稱爲光通量。用符號Φ表示,實用單位爲流明(lm),簡稱流。單位電功率所發出的流明數(lm/w),稱爲發光效率。1流明相當於1/680W的單色光源輻射的能量。

Φ = dQ / dt

光源是向周圍輻射能量的,所以在每個方向上其光通量並不一定相同。比如手電筒,聚光前燈泡可能是均勻向四周發光,但聚光後它的光束全部向一特定範圍內發射,這樣該方向就會比較明亮。所以光源的明亮度是和方向有關,某一方向上輻射能量越多自然越亮。而與力學的單位比較,光通量相當於壓力,而發光強度相當於壓強。要想被照射點看起來更亮,不僅要提高光通量,而且要增大會聚的手段,實際上就是減少面積,這樣才能得到更大的強度。

發光強度(I)
光源在某一特定方向上單位立體角(球面度sr)內輻射的光通量,稱爲光源在該方向上的發光強度,簡稱光強,用符號I表示,單位爲坎德拉(cd),簡稱坎。 1(cd)=1(lm)/1(sr)。

![intensity_def][7]

實際經常要考慮的是光源照射某一表面的情況;也就是光相對於空間中某一表面A的分佈情況。
![irradiance][8]
E = dΦ / dA

照度(E)
衡量的是某一表面A上所有入射光的光通量。
還有個輻射出射照度(M,radiosity),是某一表面所有發出的光的光通量。
勒克司(lux,法定符號lx)是照度(Illuminance)的單位。等於1流明的光通量均勻照在1平方米表面上所產生的照度。

對於理想的單一方向光源(directional light),其照度在它的方向上是常數E。而實際的光源,其照度往往和物體與光源距離有關。可以考慮下圖所示的點光源。
![Inverse_square_law][9]
在某一方向角內,發光強度是I;該方向上所有面照射到的光通量是一樣的。但是,很明顯離光源越近光線越密集,單位面積上的光通量也越大。

E = I*ω / A
ω = A / (r*r)
E = I / (r*r)

對更一般的情況,有:

dΦ = I*dω = E*dA
L = I/dA = E/dω

而圖形學中經常使用和關心的量是亮度(L)。這是因爲人眼或是圖像傳感器感受到的光強是和這個亮度成正比的。

而圖形學中最關鍵的計算是Shading;也就是計算物體表面任意點相對於Camera位置的亮度(L)。Camera相當於人的眼睛,它觀察到的值直接正比與亮度。

而一般物體本身並不發光,人眼觀測到某一點的亮度是直接正比於該點附近微小面dA所接收到的光強,也就是照度E,如下圖所示:
![lightdistribute][10]

光亮度(luminance)
是表示發光面明亮程度的,以L表示,指發光表面在指定方向的發光強度與垂直於指定方向的發光面的面積之比,單位是坎德拉/平方米。

空間中光的分佈是和方向有關的;對於某一位置p上的微小表面dA,radiance是:
![radiance][11]
而其他物理量則可以表示爲:
![radiometryfunctions][12]
Radiance在空間中的分佈實際取決於位置和方向;它是一個5個參數的函數:L(x1,y1,z1,θ,φ) 3個參數決定位置,另外兩個決定方向(θ,φ是球面座標)。
Radiance&Luminance有這麼幾個特性:

  • 圖像傳感器、人眼或者照相機感受或測量的量直接正比於Radiance
  • 圖形學中主要就是計算這個量
  • 在光線傳播方向(Ray)上,Radiance是保持不變的
  • Radiance是和距離無關的。
    首先看第3點,也就是光從一個微表面傳播到另一個微表面,L值是一樣的,如下圖:
    ![lightrayradiance][13]
    這個可以由能量守恆得到證明,即出射光和入射光的能量L*dω*dA是一樣的。
    ![lightrayradianceCalc][14]
    然後看第1點,這也是爲什麼我們最關心也是最後的計算結果是亮度的原因。考慮下圖所示的簡單傳感器模型:
    ![sensor][15]
    盒子裏後擋板黑色區域是圖像傳感器,它的感光面積是a;而整個裝置的孔徑是A。所以當該裝置裝好後,它的可感受光的區域就確定了,也就是相當於圖形學裏Camera的視錐體確定了。所以整個感光面接收到的光的能量是:
    ![sensorfunction][16]
    如果空間中光亮度L是恆定的,則傳感器接收到的光通量正比於亮度L。由以上推導可以看出圖像傳感器裝置的輸出受光亮度影響,它的輸出信號應該取決於傳感器裝置自身幾何參數(a,A)和空間光亮度。

光源模型

一般圖形學主要光源模型是單一方向光和理想點光源。其中前者是Luminance在它的方向上常量;後者是整個空間發光強度I是常量。
下圖是兩者光源的物理量:
這裏寫圖片描述

還有一種Spot light,其實是點光源的擴展;它是在某範圍內發光強度是一個和方向有關的簡單函數。具體參考Realtime Rendering一書第七章。

BRDF

前面說過,光照射到物體時會發生一些列作用(反射,折射和吸收)。而對於一般不透明物體,主要是反射和吸收;也就是物體會吸收一部分波長的光,然後反射另一部分波長的光。這種反射特性可以量化爲物體表面的材質(Material)。最終的結果是我們看到了一個被照亮的物體。而且物體表面的顏色明顯與空間中光的分佈和觀察者的角度有關。
BRDF函數(Bidirectional Reflection Distribution Function),就是一個描述當光照射到物體表面時有多少光被反射的函數。
上面一節說過,圖形學主要關心的是Radiance;這裏被反射的光怎麼量化呢?其實也就是要計算被反射光的Radiance或者Luminance(L)。而從上一節分析可知,它取決於觀測角度和入射光線照度。表面某一點的特定觀察角度的被反射光的Radiance除以入射光線照度,應該是一個和物體材質有關的常量係數:
![BRDF][17]
BRDF一般有6個參數,如圖所示:
![brdf_func][18]
u,v是物體表面座標,也就是texture採樣的座標。圖形學裏很多時候使用的是位置無關的BRDF函數;也就是這種材質反射特性是一致的。而實際的物體一般反射特性和位置有關,不同表面區域可能不同,比如木頭。一種解決這個問題的辦法是引入表面紋理。
有了BRDF函數,我們就有了反射光亮度計算公式:
![reflectancefunction][19]
這裏只是粗略提了一下BRDF,後面會詳細講講這個東西。這個函數其實是現在圖形學光照模型裏的核心內容之一了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章