OpenGL_17_点光源
1,
(環境光,漫射光和鏡面反射光),這三種模型都是基于平行光的。平行光只是通過一個向量來表示,沒有光源起點,因此它不會隨著距離的增大而衰減
點光源:它有光源起點而且有衰減效果,距離光源越遠光線越弱。
平行光的方向是恒定的,但點光源光線的方向是變化的,四處擴散。
點光源向各個方向均勻照射,因此點光源的方向要通過計算物體到點光源之間的向量得到,這就是為什么要定義點光源的起點而不是它的方向。
但3D圖形中這個公式計算的結果看上去效果并不好。例如:當距離很近時,光的強度接近無窮大了。另外,開發者除了通過設置光的起始強度外無法控制點光源的亮度,這樣就太受限制了,因此我們添加了幾個新的因素到公式中使對其的控制更加靈活:
在分母上添加了三個光衰減的參數因子,一個常量參數,一個線性參數和一個指數參數。當將常量參數和線性參數設置為零且指數參數設置為1時,就和實際的物理公式是對應的了,也就是這個特殊情況下在物理上是準確的。當設置常量因子參數為1時,調節另外兩個參數整體上就有比較好的衰減變化效果了。
常量參數的設置是要保證當距離為0時光照強度達到最大(這個要在程序內進行配置),然后隨著距離的增大光照強度要慢慢減弱,因分母在慢慢變大。
控制好線性參數因子和指數參數因子的變化,就可以實現想要的衰減效果,線性參數主要用于實現緩慢的衰減效果而指數因子可以控制光強度的迅速衰減。
2,
3,
4,
轉載于:https://www.cnblogs.com/liuhan333/p/6629641.html
總結
以上是生活随笔為你收集整理的OpenGL_17_点光源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 2315:Football Ga
- 下一篇: Asp.net操作数据库方法