1. 程式人生 > >CS184.1X 計算機圖形學導論 第7講 V1-3 學習筆記

CS184.1X 計算機圖形學導論 第7講 V1-3 學習筆記

線上 物體 創建 strong 公式推導 導論 幾何 ng- 解決方法

L7V1:OPENGL 著色:學習動機

1.光照的重要性

1)能夠真正顯示出形狀感知的外觀;

2)準確的著色和光照對對傳達物體的形狀非常重要;

3)著色的方式也十分重要:平面著色(GL_FLAT)、平滑著色(GL_SMOOTH)。

2.顏色

1)RGB模式:分為Red、Green、Blue三個通道

技術分享圖片

2)RGBA模式:OpenGL中常用此模式,A代表著透明度,每個通道占8bit,總共4字節。

L7V2:OPENGL 著色:Gouraud and Phong Shading

1.Gouraud Shading--標準的平滑著色

技術分享圖片

1)方法:采用線性插值的方法進行平滑著色;

2)變量說明:I1、I2

、I3分別為三個頂點的顏色值,Ip為所要求的顏色值,Ia、Ib為橫向掃描線上的交點;

3)公式推導:

a.首先沿Y軸方向插值,得到Ia、Ib

技術分享圖片技術分享圖片

b.在掃描線上沿X軸方向插值,得到Ip

技術分享圖片

4)極端情況:當以上公式分母等於0時,該公式無法進行插值;

解決方法:將模型細化,分割成足夠多的三角形。

2.Phong Shading (≠ Phong Illumination)

1)思想:不是對顏色進行插值,而是對法向量進行插值;

2)整個光照計算是逐個像素進行的;

L7V3:OPENGL 著色:光照和著色

1.光源

1)屬性:Position、Color;

2)衰減模型:

技術分享圖片其中:atten代表光強,d代表距離,kc

、kl、kq為常數;

3)常數設置(一般情況下,假設光源不存在能量衰竭):

a)點光源:(kc, kl, kq)=(0, 0, 1);

b)線光源:(kc, kl, kq)=(0, 1, 0);

c)面光源(方向光源):(kc, kl, kq)=(1, 0, 0),此處忽略光強衰減;

2.材質

1)計算法向量 -->進而計算漫反射、鏡面反射的反射方向;需要計算出每一個頂點的法向量;

一些由GLUT提供的圖形,GLUT已經計算好了法向量;

2)著色模式:

A)環境光(Ambient):即使沒有光照射到表面,仍然有光在屋內來回反射,並且產生了漫反射或環境光的感覺;需要設置一個環境光強度,一般來說很小,使不存在黑色的像素;

B)漫反射(Diffuse):對應粗糙不光滑的表面,如墻壁、地板;光均勻地向各個方向反射;

C)鏡面反射(Specular):對應於光滑的物體;

D)發射光(Emissive):對應於太陽光等光源,對應於直接看向光源發出的光,而不是反射方向的,在OpenGL中,想看到光源還必須創建光源的幾何體;

3.Phong Illumination

1)簡單依賴於視點的高光,不基於物理;

2)思想:a)在鏡面反射上,選擇視線和反射光線之間進行點積,更進一步,給cos項加上指數來控制表面的光澤度,高光到底有多亮;b)取光源、視線之間的角度的一半,求視線和法向的點積,這樣會更接近;

3)Phong Formula

技術分享圖片

4)Blinn-Phong Formula

技術分享圖片

CS184.1X 計算機圖形學導論 第7講 V1-3 學習筆記