計算機圖形學chap_第1頁
計算機圖形學chap_第2頁
計算機圖形學chap_第3頁
計算機圖形學chap_第4頁
計算機圖形學chap_第5頁
已閱讀5頁,還剩53頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

會計學1計算機圖形學chap

光照模型(Illumination

model),也稱明暗模型,主要用于物體表面某點處的光強度計算。簡單的光照模型復雜的光照模型3基本概念第2頁/共61頁真實感圖形繪制過程根據假定的光照條件和景物外觀因素,依據一定的光照模型,計算可見面投射到觀察者眼中的光強度大小,并將它轉換成適合圖形設備的顏色值,生成投影畫面上每一個象素的光強度,使觀察者產生身臨其境的感覺。4基本概念第3頁/共61頁真實感圖形繪制步驟在計算機中進行場景造型;進行取景變換和透視變換;進行消隱處理;進行真實感圖形繪制。5基本概念第4頁/共61頁簡單光照模型環境光漫反射光鏡面反射光光強衰減顏色處理610.1簡單光照模型第5頁/共61頁簡單光照模型中只考慮反射光的作用。

反射光由環境光、漫反射光和鏡面反射光三部分組成。7簡單光照模型第6頁/共61頁

特點:照射在物體上的光來自周圍各個方向,又均勻地向各個方向反射。P點對環境光的反射強度為環境光(Background

Light)圖1環境光的反射8第7頁/共61頁一個粗糙的、無光澤的表面呈現為漫反射。

特點:光源來自一個方向,反射光均勻地射向各個方向。由Lambert余弦定理可得點P處漫反射光的強度為:漫反射光(Diffuse

Reflection)圖2

漫反射第8頁/共61頁9若L和N都已規格化為單位矢量,則有漫反射光(Diffuse

Reflection)圖2

漫反射第9頁/共61頁10對于彩色漫反射光(Diffuse

Reflection)對于多個漫反射光源第10頁/共61頁11

鏡面反射遵循反射定律,入射光和反射光分別位于表面法矢的兩側。

如果觀察者正好處在P點的鏡面反射方向上,就會看到一個比周圍亮得多的高光點。鏡面反射光圖3

鏡面反射12第11頁/共61頁鏡面反射光圖3

鏡面反射鏡面反射情況由Phong模型給出:□

若R和V已規格化為單位矢量,則:第12頁/共61頁13

從視點觀察到物體上任一點P處的光強度I應為環境光反射光強度Ie、漫反射光強度Id以及鏡面反射光的光強度Is的總和:物體表面光強計算第13頁/共61頁14

光在傳播的過程中,其能量會發生衰減。光照模型中必須考慮光強衰減,否則會影響生成圖形的真實效果。

光強的衰減可以采用常數衰減、一次函數衰減和二次函數衰減等。15光強衰減第14頁/共61頁常用的二次衰減函數光強衰減第15頁/共61頁16選擇顏色模型(color

model)17面向硬件的顏色模型:RGB、CYM面向視覺感知的顏色模型:HSI為顏色分量指定光照模型顏色第16頁/共61頁以RGB顏色模型為例環境光強度:入射光強度:環境光反射系數:漫反射系數:鏡面反射系數:顏色第17頁/共61頁18光強計算公式:顏色第18頁/共61頁19只用一種顏色繪制整個多邊形

光源在無窮遠處,則多邊形上所有點的LN為常數,衰減函數也是一個常數。

視點在無窮遠處,則多邊形上所有點的VR為常數。

多邊形是景物表面的精確表示,即不是一個含曲線面景物的近似表示。21恒定光強第20頁/共61頁

Gouraud明暗處理方法,又稱為亮度插值明

暗處理,它通過對多邊形頂點顏色進行線性插值來繪制其內部各點,其步驟為:計算每個多邊形頂點處的平均單位法矢量;

對每個頂點根據簡單光照模型來計算其光強;在多邊形表面上將頂點強度進行線性插值。22Gouraud明暗處理第21頁/共61頁雙線性插值方法Gouraud明暗處理圖4

Gouraud明暗處理的雙線性插值第22頁/共61頁23

Phong明暗處理方法,又稱為法矢量插值明

暗處理,它對多邊形頂點的法矢量進行插值以產生中間各點的法矢量,其步驟為:計算每個多邊形頂點處的平均單位法矢量;

用雙線性插值方法求得多邊形內部各點的法矢量。

最后按光照模型確定多邊形內部各點的光強。24Phong明暗處理第23頁/共61頁矢量雙線性插值方法Phong明暗處理圖5

Phong明暗處理的矢量雙線性插值第24頁/共61頁2510.3透明處理圖6

透明表面的光強包括反射光和折射光26第25頁/共61頁透明處理圖7

簡單的透明處理第26頁/共61頁27透明處理圖8

光的折射第27頁/共61頁2810.4產生陰影29

陰影是由于物體截斷了光線而產生的,所以如果光源位于物體一側的話,陰影總是位于物體的另一側,也就是與光源相反的一側。

從理論上來說,從視點以及從光源看過去都是可見的面不會落在陰影中,只有那些從視點看

過去是可見的,而從光源看過去是不可見的面,肯定落在陰影之內。第28頁/共61頁產生陰影30產生具有陰影的圖形繪制算法

將視點移到光源位置,用多邊形區域排序消隱算法,將多邊形分成兩大類:向光多邊形和背光多邊形。

將視點移到原來的觀察位置,對向光多邊形和背光多邊形進行消隱,并選用一種光照模型計算多邊形的亮度,就可得到有陰影效果的圖形。第29頁/共61頁10.5模擬景物表面細節31

顏色紋理:通過顏色色彩或明暗度的變化體現出來的表面細節。幾何紋理:由于不規則的細小凹凸造成的。

顏色紋理取決于物體表面的光學屬性,而幾何紋理由物體表面的微觀幾何形狀決定。第30頁/共61頁10.5模擬景物表面細節32用多邊形模擬表面細節紋理的定義和映射凹凸映射第31頁/共61頁多邊形模擬表面細節33

簡單地模擬景物表面細節的方法是用多邊形,稱為表面圖案多邊形,來模擬紋理的結構和模式。

處理時,首先根據待生成的顏色紋理構造表面圖案多邊形,然后將表面圖案多邊形覆蓋到物體的表面上。第32頁/共61頁紋理映射和定義34

生成顏色紋理的一般方法,是預先定義紋理模式,然后建立物體表面的點與紋理模式的點之間的對應。當物體表面的可見點確定之后,以紋理模式的對應點參與光照模型進行計算,就可把紋理模式附到物體表面上。這種方法稱為紋理映射(Texture

Mapping)。第33頁/共61頁紋理映射和定義圖10由像素空間向紋理空間的映射第35頁/共61頁36凹凸映射37

1978年,Blinn提出了一種無需修改表面幾

何模型,即能模擬表面凹凸不平效果的有效方法——凹凸映射技術(Bump

Mapping)。第36頁/共61頁10.6整體光照模型與光線跟蹤38整體光照模型Whitted光照模型光線跟蹤算法第37頁/共61頁整體光照模型39

一個完整的光照明模型應該包括由光源和環境引起的漫反射分量、鏡面反射分量、規則透射分量以及漫透射分量等。

僅考慮由光源引起的漫反射分量和鏡面反射分量,而環境反射分量則簡單地用一常數來代替,這類光照模型稱為局部光照模型。

能同時模擬光源和環境照明效果的光照模型稱為整體光照模型。第38頁/共61頁Whitted光照模型

Whitted在簡單光照模型中增加了環境鏡面反射光和環境規則透射光,以模擬周圍環境的光投射在景物表面上產生的理想鏡面反射和規則透射現象。圖11物體表面的鏡面反射和投射第39頁/共61頁40光線跟蹤算法光線跟蹤(Ray

Tracing)方法基于幾何光學的原理,通過模擬光的傳播路徑來確定反射、折射和陰影等。圖12光線跟蹤算法41第40頁/共61頁光線跟蹤算法步驟42

從視點出發,確定穿過每個像素中心的光線路徑,然后,沿這束光線累計光強,并將最終值賦給相應像素。

對于每一像素光線,對場景中的所有物體表面進行測試以確定其是否與該光線相交,并計算出交點的深度,深度最大(z值)的交點即為該像素對應的可見點。然后,繼續考察通過該可見點的從屬光線(Secondary

Rays)。第41頁/共61頁光線跟蹤算法步驟

對每條從屬光線重復過程:與場景中的所有物體求交。然后遞歸地在沿從屬光線方向最近的物體表面上生成下一折射和反射光線。當由每個像素出發的光線在場景中被反射和折射時,逐個將相交物體表面加入到一個二叉光線跟蹤樹中。當樹中的一束光線到達預定的最大深度或到達某光源時,就停止跟蹤。43第42頁/共61頁光線跟蹤算法步驟圖13光線跟蹤及光線跟蹤樹44第43頁/共61頁光線跟蹤算法步驟45

可以從光線跟蹤樹的葉結點開始,累計光強貢獻以確定某像素處的光強大小。樹中每個結點的光強由樹中的子結點處繼承而來,但光強大小隨距離而衰減。像素光強是光線樹根結點處的衰減光強的總和。第44頁/共61頁光線跟蹤反走樣46

將光線跟蹤算法與過采樣方式結合起來,可歸納如下:對每一像素的角點計算光線跟蹤的光強。比較像素4個角點的光強,確定要進行細分的像素。對細分后新增的角點計算光線跟蹤的光強。然后,重復(2)和(3),直到各角點的光強比較接近為止。加權平均求出投影平面上各像素點的光強。第45頁/共61頁10.7

OpenGL中的光照處理47點光源全局光照表面材質透明處理第46頁/共61頁點光源48

在OpenGL場景描述中可以包含多個點光源,光源的各種屬性設置使用下面的函數指定。void

glLight{if}

(GLenum

light,

GLenum

pname,

TYPEparam);void

glLight{if}v

(GLenum

light,

GLenum

pname,

TYPE*param);第47頁/共61頁點光源p

n

a

m

e取值49默認值含義GL_AMBIENTGL_DIFFUSE(0.0,0.0,0.0,1.0) 光源中環境光分量(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中漫反射光分量GL_SPECULARGL_POSITIONGL_SPOT_DIRECTIONGL_SPOT_EXPONENTGL_SPOT_CUTOFFGL_CONSTANT_ATTENUATIONGL_LINEAR_ATTENUATIONGL_QUADRATIC_ATTENUATION(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中鏡面光分量(0.0,0.0,1.0,0.0) 光源的坐標位置(0.0,0.0,-1.0) 光源聚光燈方向矢量(0.0) 聚光指數180.0 聚光截止角1.0 固定衰減因子0.0 線性衰減因子0.0 二次衰減因子第48頁/共61頁點光源50點光源的顏色點光源的位置和類型聚光燈光強度衰減第49頁/共61頁點光源51

在OpenGL中,必須明確啟用或禁用光照。默認情況下,不啟用光照,此時使用當前顏色繪制圖形,不進行法線矢量、光源、光照模型、材質屬性的相關的計算。要啟用光照,可以使用函數:glEnable(GL_LIGHTING);

指定了光源的參數后,需要使用函數啟用light指定的光源:glEnable(light);第50頁/共61頁OpenGL全局光照在OpenGL中,下面的函數用于指定全局光照void

glLightMode{if}

(GLenum

pname,TYPE

param);void

glLightMode{if}v

(GLenum

pname,TYPE

*param);pname取值52默認值含義GL_LIGHT_MODEL_AMBIENT(0.2,

0.2,

0.2,

1.0)整個場景的環境光成分GL_FALSE如何計算鏡面反射角GL_LIGHT_MODEL_LOCAL_VIEW

ERGL_LIGHT_MODEL_TWO_SIDEGL_FALSE單面光照還是雙面光照GL_LIGHT_MODEL_COLOR_CONT

ROLGL_SINGLE_COLOR鏡面反射顏色是否獨立于環境顏色、散射顏色第51頁/共61頁OpenGL材質屬性在OpenGL中,下面的函數用于指定材質屬性void

glMaterial{if}

(GLenum

face,

GLenum

pname,

TYPE

param);void

glMaterial{if}v

(GLenum

face,

GLenum

pname,

TYPE

*param);pname取值53默認值

含義(0.2,0.2,0.2,1.0)材質對環境光的反射系數(0.8,0.8,0.8,1.0)材質對漫射光的反射系數材質對環境光和漫射光的反射系數(0.0,0.0,0.0,1.0)材質對鏡面光的反射系統0.0 鏡面反射指數(0.0,0.0,0.1,1.0)材質的發射光顏色GL_AMBIENTGL_DIFFUSEGL_AMBIENT_AND_DIFFUSEGL_SPECULAR

GL_SHININESS

GL_EMISSIONGL_COLOR_INDEXS(0,

1,

1)環境顏色索引、漫反射顏色索引和鏡面反射顏色索引第52頁/共61頁OpenGL材質屬性54OpenGL提供顏色材質模式:glEnable(GL_COLOR_MATERIAL);void

glColorMaterial

(GLenum

face,

GLenum

mode);顏色材質模式中,可以通過glColor函數來指定物體表面的顏色,而相應的材質屬性將通過顏色值和光源的RGB值計算出來。第53頁/共61頁透明處理55OpenGL中使用混合實現透明處理。

混合操作是指將輸入對象(源)的顏色值與當前存儲在幀緩存中的像素(目標)顏色值合并的過程。第54頁/共61頁透明處理56開啟混合操作glEnable(GL_BLEND);指定計算源因子和目標因子的計算方式void

glBlendFunc(GLenum

srcfactor,

GLenumdestfactor);第55頁/共61頁透明處理常量RGB混合因子alpha混合因子GL

_ZERO(0,

0,

0)0GL_ONE(1,

1,

1)1GL_SRC_COLOR(Rs,

Gs,

Bs)AsGL_ONE_MINUS_SRC_COLOR(1,

1,

1)-

(Rs,

Gs,

Bs)1-AsGL_DST_COLOR(Rd,

Gd,

Bd)AdGL_ONE_MINUS_DST_COLOR(1,

1,

1)-

(Rd,

Gd,

Bd)1-AdGL

_SRC_ALPHA(As,

As,

As)AsGL_ONE_MINUS_SRC_ALPHA(1,

1,

1)-

(As,

As,

As)1-AsGL_DST_ALPHA(Ad,

Ad,

Ad)AdGL_ONE_MINUS_DST_ALPHA(1,

1,

1)-

(Ad,

Ad,

Ad)1-AdGL_CONSTANT_COLOR(Rc,

Gc,

Bc)AcGL_ONE_MINUS_CONSTANT_COLOR(1,

1,

1)-

(Rc,

Gc,

Bc)1-AcGL_CONSTANT_ALPHA(Ac,

Ac,

Ac)AcGL_ONE_MINUS_CONSTANT_ALPHA(1,

1,

1)-

(Ac,

Ac,

Ac)1-AcGL_SRC_ALPHA_SATURATE(f,

f,

f);

f=min(As,

1-Ad)157第56頁/共61頁透明處理58進行混合計算

假定計算出的源和目標混合因子分別為(Sr,Sg,Sb,Sa)和(Dr,Dg,Db,Da),并且分別使用下標s和d區分表示源和目標的RGBA值,則混合后的RGBA值如下:(RsSr+

RdDr,GsSg+Gd

Dg,BsSb

+BdDb,AsSa

+AdDa)第57頁/共61頁10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論