鏡面反射與Phong模型

2021-07-07 09:47:31 字數 945 閱讀 4264

在許多情形中,與景物的內部距離相比,光源與景物之間的距離大得多,例如太陽光照射乙個城市的情形。在這種情形中,可以假定從光源發出的照明作用在整個景物上是恆定的,可以完全不考慮由於距離所引起的變化。

下面再看鏡面反射的情形。鏡面反射是指來自具體光源的光線到達可見表面上的某一點後,主要沿著由入射角等於反射角所決定的方向傳播,從而使得觀察者從不同角度觀察時,這一點呈現的亮度並不相同。在任何有光澤的表面上都可以觀察到鏡面反射的效果。例如,用很亮的光照射乙個紅色蘋果,會發現最亮點不是紅色的,而是有些呈現白色,這是入射光線的顏色。這個最亮點就是有鏡面反射引起的。如果觀察者移動位置,會看到最亮點也隨之移動,這是因為光澤表面在不同方向對光線的鏡面反射是不同的。在理想的光澤表面上,例如非常好的鏡面上,反射光線只是在由入射角等於反射角所確定的方向上才有。這意味著此時在圖所示的鏡面反射示意圖中,只有當觀察者相對表面的方向v與反射光線的方向r之間的夾角α為零時,才能看到鏡面反射引起的反射光線。對於不是非常理想的光澤表面,例如乙個蘋果,反射光線引起的亮度隨著α的增大而迅速下降。

對實際物質來說,被鏡面反射的入射光的數量是與入射角θ有關的。如果將鏡面反射光的百分數記為w(θ),那麼就可以將計算表面亮度的式修改而得到

這裡可以假定反射光線的方向向量r和指向觀察點的向量v都已經正規化,即已經是長度為1的單位向量,於是可以簡單地利用向量內積計算余弦值:cosα=r.v。對w(θ),通常根據經驗選取乙個常數ks來代替,這樣上式可寫成下面更容易計算的形式:

實驗表明,應用上式已經可以得到很好的具有明暗表現的畫面,這個公式是形成具有明暗表現畫面的良好基礎。

對於彩色表面,上述各公式也可以應用,只需分別應用於對各顏色分量的計算。例如,選擇通常的紅、綠、藍顏色系統時,上述公式中有關亮度及反射係數等,就要看做是三元向量。通過分別對各顏色分量進行計算,就可以完成對彩色表面的亮度計算。

在對真實感影象的不斷研究探索中,人們還不斷提出一些更完美的光照明模型,或者對已有的光照明模型做出改進。這方面的研究工作是很多的。

858 鏡面反射

題目描述 有乙個特殊的正方形房間,每面牆上都有一面鏡子。除西南角以外,每個角落都放有乙個接受器,編號為 0,1,以及 2。正方形房間的牆壁長度為 p,一束雷射從西南角射出,首先會與東牆相遇,入射點到接收器 0 的距離為 q 返回光線最先遇到的接收器的編號 保證光線最終會遇到乙個接收器 示例 1 p ...

UnityShader鏡面反射計算與反射光向量推導

注 本文章主要講解計算方法及推導,原理暫不講解 鏡面反射 specular 又叫高光反射,主要可以來模擬非常光滑的平面受到光線照射所產生的反射效果,使得物體看起來更光滑有光澤。鏡面反射主要有兩種實現方式 phong模型 該模型中關鍵步驟就是計算反射光線。需要提前知道的資訊有 ks 物體材質的高光反射...

LeetCode 858 鏡面反射

題目 鏡面反射 有乙個特殊的正方形房間,每面牆上都有一面鏡子。除西南角以外,每個角落都放有乙個接受器,編號為 0,1,以及 2。正方形房間的牆壁長度為 p,一束雷射從西南角射出,首先會與東牆相遇,入射點到接收器 0 的距離為 q 返回光線最先遇到的接收器的編號 保證光線最終會遇到乙個接收器 示例 輸...