天天看點

圖形學基礎 關于光照的科普知識

圖形學,光照部分的基礎知識。

材質:

  物體本身對光會有不同的吸收、反射、透射等特性,另外物體本身也可能會有發光的特性。

  是以不同的材質對光的反應是不同的。

光源:

  在自然環境中,通常存在許多不同的光源,如太陽光、月光、燈光、星光、生物光等等。

  按照類型來分,它們可分為點光源、平行光源;

  按照構成光的色譜來分,可以分為單色光、複合光;

  按照實體性質來分,可以分為發射光、漫反射光、反射光、折射光等。

  自然場景通常是由許多不同的光綜合作用效果下的場景表達。

環境映射(Environment Mapping)

  環境映射(Environment Mapping)模拟了一個物體反射它周圍環境的表像,這就好像我們在池塘水面看到的映襯樹影的情形。

  尤其是在水面可視化、玻璃鏡面效果等模拟中,環境映射模型為更加真實的自然場景提供了更加沉浸感的技術實作。

光照的分類

  根據場景中是否隻考慮光源對物體的光照影響,可将照明類型分為局部照明和全局照明兩大類。

1.局部照明

  局部照明就是隻考慮光源對物體的照明,忽略了物體間的互相影響。

  但是因為真實場景中物體之間的照明關系往往是客觀存在的,是以局部照明是簡化的、不完整的實體模型。

  局部照明的模型一般可以表示如下:

圖形學基礎 關于光照的科普知識

  其中第一項是環境光,是為了場景的亮度需要而引入的一個虛拟的量。

  後面的求和項是考慮多個光源的情況。

  每個光源對物體的影響主要包括漫反射和鏡面反射兩部分。

  考慮了距離的影響,遠距離接收到的光強會較弱。

  中括号裡面第一項是漫反射項,第二項是鏡面反射項,其系數與物體本身的性質有關,指數部分是考慮物體的光潔度等因素。

  局部照明需要單獨考慮陰影算法。

2.全局照明

  全局照明不但考慮了光源對物體的照射,還考慮了物體間的互相作用,因為在多個物體的場景中,某個物體所受的光照影響不僅僅來自光源,還有來自周圍其他物體的反射投射光等間接照明,将周圍所有物體和場景的影響考慮進去以後建立的實體模型就是全局照明模型。

  全局照明的算法因為考慮全面,是以不需要關于陰影的附加算法,因為它本身已經計入了陰影的形成過程。

  關于全局照明有兩種基本的算法:光線追蹤法和輻射度法。

  其中光線追蹤法是關注于鏡面反射光的,因為根據折射反射定律,可嚴格追蹤鏡面反射的光線的方向。

  跟蹤光線進行追蹤,遇到物體後按一定公式分為折射或者反射光線,再繼續追蹤,知道滿足追蹤結束的條件,對所有光線追蹤完後,即可獲得場景光照資訊。

  一般采取逆向追蹤法,即從觀察到的點出發去反向追蹤到光源,可以節省掉不必要的計算。

  輻射度法是關注于漫反射光的,即從能量角度出發,光源照射物體後向各個方向均勻發光,根據朗伯定律,可以計算出漫反射到各個方向的光強大小,然後接着進行輻射,直到整個場景被照亮。

  注意由于漫反射是與視點無關的,是以與光線追蹤法不同,輻射度法是不依賴于視點的。

  

  以上是兩種最基本的全局光照算法,因為都隻着重考慮了光照的一種類型,是以叫做“部分的全局光照算法”。在此基礎上,還有衍生出的幾種全局算法,比如分布式光線跟蹤、二路光線跟蹤、多路方法等。

作者: 聖騎士Wind

出處: 部落格園: 聖騎士Wind

Github: https://github.com/mengdd

微信公衆号: 聖騎士Wind

圖形學基礎 關于光照的科普知識

繼續閱讀