一、光源模型概述
在成像系統中,光源作爲成像過程中的重要環節,需要對其進行良好的模型建立,從而深入理解在渲染或實際成像過程中的需求,通過理解光源模型,從而設置合理的曝光時間、光圈大小等參數,對實際工程應用領域也有非常重要的指導作用。
二、光源基礎模型
1. 定向光(Directional Light)
定向光是最簡單的光源模型,也叫平行光,通常用於模擬太陽、月亮這類無限遠的光。光照亮度 \(C_{light}\) 和光的方向 \(L\) 都是定值,除了光照亮度 \(C_{light}\) 可能會由於陰影而衰減。定向光沒有位置,當然,真實的光源都是有位置的。定向光對於光源到場景的距離遠大於場景大小的情況。例如:太陽,除了場景在太陽系星球的內部的情況。但有時爲了性能或者爲了一些特殊效果,也可以把定向光限制在一個“盒子”裏面,其方向仍然唯一不變,但顏色有所差異,比如盒子外的顏色爲純黑,而內部的顏色可以是常量也可以是某種插值獲得的結果。
2. 點光源(Punctual Light)
Punctual Light 不是按時赴約的光,而是有位置的光源。用 Punctual 是來自於拉丁語 puctues ,意思是點。點光源不僅有位置,而且均勻的射像空間中所有方向。點光源的方向 \(l\) 依賴於光的位置 \(p_{light}\) 和着色點的位置 \(p_0\) , \(l=\frac{p_{light} - p_0}{\vert p_{light} - p_0 \vert}\) .
也可以寫成:
\(d=p_{light} - p_0, r=\sqrt {\vec d \cdot \vec d}, l=\frac{d}{r}\),其中的 \(r\) 不僅可以用於方向向量的歸一化,而且可以來計算光照亮度的衰減。
點光源的強度會隨着距離增加而衰減,且與距離的平方成反比,即:
\(c_{light0}\) 是距離爲 \(r_0\) 處的光照亮度,由於點光源均勻的向四面大方發射光,將點光源抽象爲一個球面波,所以輻照度爲 \(E=\frac{\Phi}{4\pi R^2}\) 。
爲了防止 \(r=0\) 時,分母爲 0 導致出現無限大的光強,所以諸如 UE引擎 裏面會在分母上加一個小的參數:
這裏設置光源半徑最小值可能更符合實際光源的情況(實際光源有尺寸大小),這裏使用 \(r_{min}\) 作爲實際光源的尺寸:
此外,在實際運用中,通常爲了性能考慮,需要對隨距離平方衰減的光強再乘以一個窗口函數 (windowing function ),畢竟遠處的光很弱,我們可不想爲了這些微弱的光徒增計算量,如下圖展示了UE4裏面點光源及其半徑:
注意上圖中,在光源最大半徑範圍以外的區域,是沒有計算這個光源光照的,且交界處都有平滑過渡的感覺,所以需要合理設計窗口函數,使光強緩慢衰減且剛好在截止半徑處衰減爲0。
下圖展示了一種窗口函數對於光衰減的影響:
WindowFunction:
PythonCode:
import matplotlib.pyplot as plt
import numpy as np
LightRidian = 1
R0 = 2
Sigma = 0.0001
Rmax = 6
r = np.linspace(R0,10,100)
E = LightRidian*R0*R0/(r**2+Sigma)
F_window = 1 - (r/Rmax)**4
F_window_Res = (F_window + abs(F_window)) / 2
Res = E * F_window_Res
plt.plot(r, F_window_Res, color='red', label='F_window: WindowFunc')
plt.plot(r, E, color='green',label='E: Ridian')
plt.plot(r, Res, color='blue', label='E*F_window: Result')
plt.legend()
plt.show()
3. 聚光燈(Spotlight)
前面所述的點光源,其光強雖然會隨着距離而衰減,但是各個方向上是等同的,而此處的聚光燈,更進一步考慮了光強在不同方向上的函數分佈。即:
下面我們來確定 \(f_{dir}\) 函數,一個常見的聚光燈模型如圖所示:
錐之間的範圍稱爲半影(penumbra)。內外圓錐的內角分別爲和。聚光燈可計算一個聚光燈係數,範圍爲[0,1],代表某方向的放射比率。內圓錐中係數爲1(最亮),內圓錐和外圓錐之間係數由1逐漸變成0。另外,可用另一參數p代表衰減(falloff),決定內圓錐和外圓錐之間係數變化。方程式如下:
ue中的聚光燈如下圖:
三、光源模型軟件使用@IES Viewer
配光曲線是指光源(或燈具)在空間各個方向上的光強分佈。 在通過光源中心的測光平面上,測出燈具在不同角度的光強值。 從某一方向起,以角度爲函數,將各角度的光強用矢量標註出來,連接矢量頂端的連接就是照明燈具極座標配光曲線。 如果燈具有旋轉對稱軸 ,則只需用通過軸線的一個測光面上的光強分佈曲線就能說明其光強在空間的分佈,如果燈具在空間的光分佈是不對稱的,則需要若干測光平面的光強分佈曲線才能說明其光強的空間分佈狀況 。
🐶 IES文件作用:
- IES說到底就是一個燈具,把它導入照明運用的軟件中,如AGI、DIALux等計算軟件可導入IES文件使用,就可以看到這款燈具所有的配光參數,以及光通量等。
- 利用IES文件,我們可以省去很多的實踐時間,直接計算出某區域安裝這款燈具會達成什麼樣的效果。
- 可以更快速的做出照明設計工程亮化方案。
1. 配光曲線最常見的兩種表達方式
a. 直角座標表示法
對於聚光型燈具,由於光束集中在十分狹小的空間立體角內,很難用極座標來表達其光強度的空間分佈狀況,就採用直角從配光曲線表示法,以豎軸表示光強圖I,以橫軸表示光束的投角,如果是具有對稱旋轉軸的燈具則只需一條配光曲線來表示,如果是不對稱燈具則需多條配光曲線表示。
b. 極座標表示法
在通過光源中心的測光平面上,測出燈具在不同角度的光強值。從某一方向起,以角度爲函數,將各角度的光強用矢量標註出來,連接矢量頂端的連接就是照明燈具極座標配光曲線。如果燈具是有旋轉對稱軸,則只需用通過軸線的一個測光面上的光強分佈曲線就能說明其光強在空間的分佈,如果燈具在空間的光分佈是不對稱的,則需要若干測光平面的光強分佈曲線才能說明其光強的空間分佈狀況。
🌻 圖解配光曲線:
配光曲線解析:
- 峯值光強: 從圖中可以看出大概 \(I_{max}=1611cd\) ,峯值光強的大小決定照明的強度和照度。(當然影響照度和強度的因素還反光杯的角度和照射距離有關).
- 50% 峯值光強: \(1/2 I_{max}=805.5cd\),這裏主要是爲了看光束角.
- 半峯邊角: 在選定最大光強的平面上,兩個爲 50% 的最大光強之間的夾角稱爲半峯邊角。從上圖可以看出左右各 \(60°\) 相加約等於 \(120°\) ,光束角的大小決定光斑的大小,跟照射效果息息相關.
- 有效光束角(10% 峯值光強): 在選定最大光強的平面上,兩個爲 10% 的最大光強之間的夾角稱爲該平面的有效光束角。從上圖中可以看出左右大概各 \(80°\) 相加約等於 \(160°\) .
2. IES文件格式解析
IESNA:LM-63-1995 #測試標準
[TEST] # 測試燈具型號
[DATE] # 測試日期
[MANUFAC] MEGAMAN # 燈具廠商
[LUMCAT] LED Reflector Series # 燈具說明
[LUMINAIRE] ER0110-50H24D-G53-2800K # 光源參數
[LAMPCAT] ER0110-50H24D-G53-2800K # 光源色溫
[LAMP] AR111 # 光源型號
TILT=NONE
1 583.2 1.0 91 13 1 2 -0.111 -0.111 0 # 索引區
1.0 1.0 10
0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 # 數據區
...
IES Software GUI:
Reference
- Illuminating Engineering Society 照明工程協會軟件 IES Viewer
- 光源模型-知乎
- 光源類型-博客園
- learnopengl