漫談光照模型

2021-09-07 19:16:06 字數 1546 閱讀 5772

簡單點說,光照模型就是用一些數學公式模擬在真實環境下物體表面在光照下的顏色。這些模型包括但不限於之前講過的phong,blinn-phong(零基礎學習opengl--光照和高階光照篇中介紹,二者區別主要在於鏡面光照,blinn-phong測量的是法線與半程向量之間的夾角,而phong模型測量的是視線與反射向量間的夾角。blinn-phong的鏡面光分量會比馮氏模型更銳利一些)。

光照模型:

1.lambert模型:近似的描述某點的反射光強度為入射光和法線點乘再乘以材質顏色和入射光顏色。(這裡簡單的認為所有的反射光都是從入射點發出的並且不考慮吸收和折射,但實際不是,對塑料、大理石等適用)。

lambert:反射光的強度與表面法線和入射光線的余弦值成正比。

公式:c(diffuse) = c(light) * m(diffuse) * max(0, n · l);     // c表示顏色,m表示材質顏色,n表示法線向量,l表示入射光線單位向量。取max是防止物體被從後面來的光照亮。

2.phong模型:環境光+所有光照的lambert反射+反射光和視線點乘後的alpha次冪。考慮高光讓物體能夠表現出高光斑,當視線和反射光線重合時高光最強。

公式:c(specular) = (c(light) * m(specular))max(0, v · r)的m(gloss)次冪。//m(gloss)光澤度,光澤度越大,亮點越小。v是視線,r是反射光線。

3.blinn-phong模型:將phong中高光部分的反射光r點乘視線v替換為:法線n和半程向量h的點乘。其中,半程向量指光線和視線的中間向量。這樣效率會提高,另一方面零基礎學習opengl高階光照中也有講述phong的弊端。(之前很多年一直用這個,但是高光比較突兀)

phong,blinn-phong都是區域性光照模型,即不考慮渲染物體周圍的環境。全域性光照模型不僅考慮了光源直接照射的影響(直接光照),還考慮了物體所處環境反射光產生的間接光照。因此全域性關照包含:漫反射(直接光照)、高光反射(直接光照)、環境漫反射、環境反射。(漫反射:物體內部大量微粒子表面的反射或者說內部的散射)

物理渲染:

我們以前學過光通過介質後分出反射光線和折射光線,這種是理想情況,即交界是無限大的,完全平的平面。在這種情況下,光線不會在很多方向上發生散射,而是會分成兩束光,反射光和折射光。反射角等於入射角,但是折射角則取決於物質的折射率。

反射光:當物體表面的凹凸尺度大於光的波長時,物體表面好比有大量的細微的平滑表面,物體表面看起來的效果就是很多有著不同方向的表面點的反射效果的疊加。表面越粗糙,平面的方向差異性就越大,看到的就越模糊。

折射光:金屬對可見光有很高的吸收係數,折射的光被迅速吸收,而非金屬當折射光進入物質時,這些光會繼續在裡面的子物質上繼續互動,大多數情況下這些光在物質內的散射可以從裡面再反射出來。

brdf(雙向反射率分布方程):描述了反射(高光)和散射(漫反射)。

給定入射光線,brdf給出離開入射點的所有方向上反射光線和散射光線的分布。也可以理解為,給定觀察方向,給出這個視線方向上所有入射光線的分布。詳細見:本人部落格零基礎學習渲染--pbr(基於物理渲染)。

簡單光照模型(Lambert 光照模型)

環境光是對光照現像的最簡單抽象,因而侷限性很大。它僅能描述光線在空間中無方向並均勻散布時的狀態。很多情況下,入射光是帶有方向的,比如典型的陽光。如果光照射到比較粗糙的物體表面,如粉筆,由於這些表面從各個方向等強度地反射光,因而從各個視角出發,物體表面呈現相同的亮度,所看到的物體表面某點的明暗程度不隨...

8 光照模型 蘭伯特光照模型

光照模型就是乙個公式,使用這個公式來計算在某個點的光照效果。標準光照模型 在標準光照模型裡,我們把進入攝像機的光分為下面幾個部分 自發光 self luminous 如螢火蟲 高光反射 specular 漫反射 diffuse 向量點乘和叉乘 點乘 標量 代表a在b上的投影和b的乘積 a b a b...

OpenGL 光照模型

材質有三種,也就是對光有三種反射 材質被分為了三個屬性,也分別用三個引數來刻畫 對於乙個頂點,有四個向量來刻畫其光照 計算的時候也分為鏡面 漫和環境三類,之後再疊加起來即得到光照下的顏色 向量nlvr 求解顏色 鏡面反射 is rs max v r a,0 ls 環境反射 ia ra la於是 i ...