計算機圖形學10課件_第1頁
計算機圖形學10課件_第2頁
計算機圖形學10課件_第3頁
計算機圖形學10課件_第4頁
計算機圖形學10課件_第5頁
已閱讀5頁,還剩117頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1基本概念簡單光照模型基于簡單光照模型的多邊形繪制第十章真實感圖形繪制1基本概念第十章真實感圖形繪制12真實感圖形繪制:通過綜合利用數學、物理學、計算機以及心理學等知識在計算機圖形輸出設備上繪制出能夠以假亂真的美麗景象。光強(度):描述物體表面朝某方向輻射光的顏色,它既能表示光能大小又能表示其色彩組成的物理量?;靖拍?真實感圖形繪制:通過綜合利用數學、物理學、計算機以及心理學23光照模型(Illuminationmodel),也稱明暗模型,主要用于物體表面某點處的光強度計算。簡單的光照模型復雜的光照模型基本概念3光照模型(Illuminationmodel),也稱明暗34真實感圖形繪制過程

根據假定的光照條件和景物外觀因素,依據一定的光照模型,計算可見面投射到觀察者眼中的光強度大小,并將它轉換成適合圖形設備的顏色值,生成投影畫面上每一個象素的光強度,使觀察者產生身臨其境的感覺。基本概念4真實感圖形繪制過程基本概念45真實感圖形繪制步驟在計算機中進行場景造型;進行取景變換和透視變換;進行消隱處理;進行真實感圖形繪制?;靖拍?真實感圖形繪制步驟基本概念56簡單光照模型環境光漫反射光鏡面反射光光強衰減顏色處理10.1

簡單光照模型6簡單光照模型10.1簡單光照模型67簡單光照模型中只考慮反射光的作用。反射光由環境光、漫反射光和鏡面反射光三部分組成。簡單光照模型7簡單光照模型中只考慮反射光的作用。簡單光照模型78特點:照射在物體上的光來自周圍各個方向,又均勻地向各個方向反射。P點對環境光的反射強度為環境光(BackgroundLight)圖1環境光的反射8特點:照射在物體上的光來自周圍各個方向,又均勻地向各個方向89一個粗糙的、無光澤的表面呈現為漫反射。特點:光源來自一個方向,反射光均勻地射向各個方向。由Lambert余弦定理可

得點P處漫反射光的強度為:漫反射光(DiffuseReflection)圖2漫反射9一個粗糙的、無光澤的表面呈現為漫反射。漫反射光(Diffu910若L和N都已規格化為單位矢量,則有漫反射光(DiffuseReflection)圖2漫反射10若L和N都已規格化為單位矢量,則有漫反射光(Diffus1011對于彩色漫反射光(DiffuseReflection)對于多個漫反射光源11對于彩色漫反射光(DiffuseReflection)1112鏡面反射遵循反射定律,入射光和反射光分別位于表面法矢的兩側。如果觀察者正好處在P點的鏡面反射方向上,就會看到一個比周圍

亮得多的高光點。鏡面反射光圖3鏡面反射12鏡面反射遵循反射定律,入射光和反射光分別位于表面法矢的兩1213鏡面反射情況由Phong模型給出:鏡面反射光圖3鏡面反射若R和V已規格化為單

位矢量,則:13鏡面反射情況由Phong模型給出:鏡面反射光圖3鏡面1314從視點觀察到物體上任一點P處的光強度I應為環境光反射光強度Ie、漫反射光強度Id以及鏡面反射光的光強度Is的總和:物體表面光強計算14從視點觀察到物體上任一點P處的光強度I應為環境光反射光強1415光在傳播的過程中,其能量會發生衰減。光照模型中必須考慮光強衰減,否則會影響生成圖形的真實效果。光強的衰減可以采用常數衰減、一次函數衰減和二次函數衰減等。光強衰減15光在傳播的過程中,其能量會發生衰減。光照模型中必須考慮光1516常用的二次衰減函數光強衰減16常用的二次衰減函數光強衰減1617選擇顏色模型(colormodel)面向硬件的顏色模型:RGB、CYM面向視覺感知的顏色模型:HSI為顏色分量指定光照模型顏色17選擇顏色模型(colormodel)顏色1718以RGB顏色模型為例環境光強度:入射光強度:環境光反射系數:漫反射系數:鏡面反射系數:顏色18以RGB顏色模型為例顏色1819光強計算公式:顏色19光強計算公式:顏色1920恒定光強Gouraud明暗處理Phong明暗處理10.2

基于簡單光照模型的多邊形繪制20恒定光強10.2基于簡單光照模型的多邊形繪制2021只用一種顏色繪制整個多邊形光源在無窮遠處,則多邊形上所有點的L?N為常數,衰減函數也是一個常數。視點在無窮遠處,則多邊形上所有點的V?R為常數。多邊形是景物表面的精確表示,即不是一個含曲線面景物的近似表示。恒定光強21只用一種顏色繪制整個多邊形恒定光強2122Gouraud明暗處理方法,又稱為亮度插值明暗處理,它通過對多邊形頂點顏色進行線性插值來繪制其內部各點,其步驟為:計算每個多邊形頂點處的平均單位法矢量;對每個頂點根據簡單光照模型來計算其光強;在多邊形表面上將頂點光強度進行線性插值。Gouraud明暗處理22Gouraud明暗處理方法,又稱為亮度插值明暗處理,它通2223雙線性插值方法Gouraud明暗處理圖4Gouraud明暗處理的雙線性插值23雙線性插值方法Gouraud明暗處理圖4Gourau2324Phong明暗處理方法,又稱為法矢量插值明暗處理,它對多邊形頂點的法矢量進行插值以產生中間各點的法矢量,其步驟為:計算每個多邊形頂點處的平均單位法矢量;用雙線性插值方法求得多邊形內部各點的法矢量。最后按光照模型確定多邊形內部各點的光強。Phong明暗處理24Phong明暗處理方法,又稱為法矢量插值明暗處理,它對多2425矢量雙線性插值方法Phong明暗處理圖5Phong明暗處理的矢量雙線性插值25矢量雙線性插值方法Phong明暗處理圖5Phong明252610.3

透明處理圖6透明表面的光強包括反射光和折射光2610.3透明處理圖6透明表面的光強包括反射光和折射2627透明處理圖7簡單的透明處理27透明處理圖7簡單的透明處理2728透明處理圖8光的折射28透明處理圖8光的折射282910.4

產生陰影陰影是由于物體截斷了光線而產生的,所以如果光源位于物體一側的話,陰影總是位于物體的另一側,也就是與光源相反的一側。從理論上來說,從視點以及從光源看過去都是可見的面不會落在陰影中,只有那些從視點看過去是可見的,而從光源看過去是不可見的面,肯定落在陰影之內。2910.4產生陰影陰影是由于物體截斷了光線而產生的,所以2930產生陰影產生具有陰影的圖形繪制算法將視點移到光源位置,用多邊形區域排序消隱算法,將多邊形分成兩大類:向光多邊形和背光多邊形。將視點移到原來的觀察位置,對向光多邊形和背光多邊形進行消隱,并選用一種光照模型計算多邊形的亮度,就可得到有陰影效果的圖形。30產生陰影產生具有陰影的圖形繪制算法303110.5

模擬景物表面細節顏色紋理:通過顏色色彩或明暗度的變化體現出來的表面細節。幾何紋理:由于不規則的細小凹凸造成的。顏色紋理取決于物體表面的光學屬性,而幾何紋理由物體表面的微觀幾何形狀決定。3110.5模擬景物表面細節顏色紋理:通過顏色色彩或明暗度3132模擬景物表面細節用多邊形模擬表面細節紋理的定義和映射凹凸映射32模擬景物表面細節用多邊形模擬表面細節3233多邊形模擬表面細節簡單地模擬景物表面細節的方法是用多邊形,稱為表面圖案多邊形,來模擬紋理的結構和模式。處理時,首先根據待生成的顏色紋理構造表面圖案多邊形,然后將表面圖案多邊形覆蓋到物體的表面上。33多邊形模擬表面細節簡單地模擬景物表面細節的方法是用多邊形3334紋理映射和定義生成顏色紋理的一般方法,是預先定義紋理模式,然后建立物體表面的點與紋理模式的點之間的對應。當物體表面的可見點確定之后,以紋理模式的對應點參與光照模型進行計算,就可把紋理模式附到物體表面上。這種方法稱為紋理映射(TextureMapping)。34紋理映射和定義生成顏色紋理的一般方法,是預先定義紋理模式3435紋理映射和定義圖9紋理映射中紋理空間、物體空間和像素空間的變換35紋理映射和定義圖9紋理映射中紋理空間、物體空間和像素3536紋理映射和定義圖10由像素空間向紋理空間的映射36紋理映射和定義圖10由像素空間向紋理空間的映射3637凹凸映射1978年,Blinn提出了一種無需修改表面幾何模型,即能模擬表面凹凸不平效果的有效方法——凹凸映射技術(BumpMapping)。37凹凸映射1978年,Blinn提出了一種無需修改表面幾何373810.6

整體光照模型與光線跟蹤整體光照模型Whitted光照模型光線跟蹤算法3810.6整體光照模型與光線跟蹤整體光照模型3839整體光照模型一個完整的光照明模型應該包括由光源和環境引起的漫反射分量、鏡面反射分量、規則透射分量以及漫透射分量等。僅考慮由光源引起的漫反射分量和鏡面反射分量,而環境反射分量則簡單地用一常數來代替,這類光照模型稱為局部光照模型。能同時模擬光源和環境照明效果的光照模型稱為整體光照模型。39整體光照模型一個完整的光照明模型應該包括由光源和環境引起3940Whitted光照模型Whitted在簡單光照模型中增加了環境鏡面反射光和環境規則透射光,以模擬周圍環境的光投射在景物表面上產生的理想鏡面反射和規則透射現象。圖11物體表面的鏡面反射和透射40Whitted光照模型Whitted在簡單光照模型中增加4041光線跟蹤算法光線跟蹤(RayTracing)方法基于幾何光學的原理,通過模擬光的傳播路徑來確定反射、折射和陰影等。圖12光線跟蹤算法41光線跟蹤算法光線跟蹤(RayTracing)方法基于幾4142光線跟蹤算法步驟從視點出發,確定穿過每個像素中心的光線路徑,然后,沿這束光線累計光強,并將最終值賦給相應像素。對于每一像素光線,對場景中的所有物體表面進行測試以確定其是否與該光線相交,并計算出交點的深度,深度最大(z值)的交點即為該像素對應的可見點。然后,繼續考察通過該可見點的從屬光線(SecondaryRays)。42光線跟蹤算法步驟從視點出發,確定穿過每個像素中心的光線路4243光線跟蹤算法步驟對每條從屬光線重復過程:與場景中的所有物體求交。然后遞歸地在沿從屬光線方向最近的物體表面上生成下一折射和反射光線。當由每個像素出發的光線在場景中被反射和折射時,逐個將相交物體表面加入到一個二叉光線跟蹤樹中。當樹中的一束光線到達預定的最大深度或到達某光源時,就停止跟蹤。43光線跟蹤算法步驟對每條從屬光線重復過程:與場景中的所有物4344光線跟蹤算法步驟圖13光線跟蹤及光線跟蹤樹44光線跟蹤算法步驟圖13光線跟蹤及光線跟蹤樹4445光線跟蹤算法步驟可以從光線跟蹤樹的葉結點開始,累計光強貢獻以確定某像素處的光強大小。樹中每個結點的光強由樹中的子結點處繼承而來,但光強大小隨距離而衰減。像素光強是光線樹根結點處的衰減光強的總和。45光線跟蹤算法步驟可以從光線跟蹤樹的葉結點開始,累計光強貢4546光線跟蹤反走樣將光線跟蹤算法與過采樣方式結合起來,可歸納如下:(1)對每一像素的角點計算光線跟蹤的光強。(2)比較像素4個角點的光強,確定要進行細分的像素。(3)對細分后新增的角點計算光線跟蹤的光強。然后,重復(2)和(3),直到各角點的光強比較接近為止。(4)加權平均求出投影平面上各像素點的光強。46光線跟蹤反走樣將光線跟蹤算法與過采樣方式結合起來,可歸納464710.7OpenGL中的光照處理點光源全局光照表面材質透明處理4710.7OpenGL中的光照處理點光源4748點光源在OpenGL場景描述中可以包含多個點光源,光源的各種屬性設置使用下面的函數指定。

voidglLight{if}(GLenumlight,GLenumpname,TYPEparam);voidglLight{if}v(GLenumlight,GLenumpname,TYPE*param);48點光源在OpenGL場景描述中可以包含多個點光源,光源的4849點光源pname取值默認值含義GL_AMBIENT(0.0,0.0,0.0,1.0)光源中環境光分量GL_DIFFUSE(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中漫反射光分量GL_SPECULAR(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中鏡面光分量GL_POSITION(0.0,0.0,1.0,0.0)光源的坐標位置GL_SPOT_DIRECTION(0.0,0.0,-1.0)光源聚光燈方向矢量GL_SPOT_EXPONENT(0.0)聚光指數GL_SPOT_CUTOFF180.0聚光截止角GL_CONSTANT_ATTENUATION1.0固定衰減因子GL_LINEAR_ATTENUATION0.0線性衰減因子GL_QUADRATIC_ATTENUATION0.0二次衰減因子49點光源pname取值默認值含義GL_AMBIENT(0.4950點光源點光源的顏色點光源的位置和類型聚光燈光強度衰減50點光源點光源的顏色5051點光源在OpenGL中,必須明確啟用或禁用光照。默認情況下,不啟用光照,此時使用當前顏色繪制圖形,不進行法線矢量、光源、光照模型、材質屬性的相關的計算。要啟用光照,可以使用函數:glEnable(GL_LIGHTING);指定了光源的參數后,需要使用函數啟用light指定的光源:glEnable(light);51點光源在OpenGL中,必須明確啟用或禁用光照。默認情況5152OpenGL全局光照在OpenGL中,下面的函數用于指定全局光照

voidglLightMode{if}(GLenumpname,TYPEparam);voidglLightMode{if}v(GLenumpname,TYPE*param);pname取值默認值含義GL_LIGHT_MODEL_AMBIENT(0.2,0.2,0.2,1.0)整個場景的環境光成分GL_LIGHT_MODEL_LOCAL_VIEWERGL_FALSE如何計算鏡面反射角GL_LIGHT_MODEL_TWO_SIDEGL_FALSE單面光照還是雙面光照GL_LIGHT_MODEL_COLOR_CONTROLGL_SINGLE_COLOR鏡面反射顏色是否獨立于環境顏色、散射顏色52OpenGL全局光照在OpenGL中,下面的函數用于指定5253OpenGL材質屬性在OpenGL中,下面的函數用于指定材質屬性

voidglMaterial{if}(GLenumface,GLenumpname,TYPEparam);voidglMaterial{if}v(GLenumface,GLenumpname,TYPE*param);pname取值默認值含義GL_AMBIENT(0.2,0.2,0.2,1.0)材質對環境光的反射系數GL_DIFFUSE(0.8,0.8,0.8,1.0)材質對漫射光的反射系數GL_AMBIENT_AND_DIFFUSE材質對環境光和漫射光的反射系數GL_SPECULAR(0.0,0.0,0.0,1.0)材質對鏡面光的反射系統GL_SHININESS0.0鏡面反射指數GL_EMISSION(0.0,0.0,0.1,1.0)材質的發射光顏色GL_COLOR_INDEXS(0,1,1)環境顏色索引、漫反射顏色索引和鏡面反射顏色索引53OpenGL材質屬性在OpenGL中,下面的函數用于指定5354OpenGL材質屬性OpenGL提供顏色材質模式:

glEnable(GL_COLOR_MATERIAL);voidglColorMaterial(GLenumface,GLenummode);顏色材質模式中,可以通過glColor函數來指定物體表面的顏色,而相應的材質屬性將通過顏色值和光源的RGB值計算出來。54OpenGL材質屬性OpenGL提供顏色材質模式:5455透明處理OpenGL中使用混合實現透明處理。混合操作是指將輸入對象(源)的顏色值與當前存儲在幀緩存中的像素(目標)顏色值合并的過程。55透明處理OpenGL中使用混合實現透明處理。5556透明處理開啟混合操作glEnable(GL_BLEND);指定計算源因子和目標因子的計算方式

voidglBlendFunc(GLenumsrcfactor,GLenumdestfactor);56透明處理開啟混合操作5657透明處理常量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透明處理常量RGB混合因子alpha混合因子GL_ZE5758透明處理進行混合計算假定計算出的源和目標混合因子分別為(Sr,Sg,Sb,Sa)和(Dr,Dg,Db,Da),并且分別使用下標s和d區分表示源和目標的RGBA值,則混合后的RGBA值如下:(RsSr+RdDr,GsSg+GdDg,BsSb

+BdDb,AsSa

+AdDa)58透明處理進行混合計算585910.8OpenGL中的紋理映射voidglTexImage1D(GLenumtarget,GLintlevel,GLintcomponents,GLsizeiwidth,GLintborder,GLenumformat,GLenumtype,constGLvoid*texels);voidglTexImage2D(GLenumtarget,GLintlevel,GLintcomponents,GLsizeiwidth,GLsizeiheight,GLintborder,GLenumformat,GLenumtype,constGLvoid*texels);voidglTexImage3D(GLenumtarget,GLintlevel,GLintcomponents,GLsizeiwidth,GLsizeiheight,GLsizeidepth,GLintborder,GLenumformat,GLenumtype,constGLvoid*texels);5910.8OpenGL中的紋理映射voidglTexI5960紋理映射啟用紋理

glEnable(GL_TEXTURE_1D); glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_3D);60紋理映射啟用紋理6061紋理映射在啟用紋理之后,需要建立物體表面上的點與紋理空間的對應關系。在繪制基本圖元時,在glVertex函數調用之間調用glTexCoord函數明確指定當前頂點所對應的紋理坐標。讓OpenGL自動生成紋理坐標。

61紋理映射在啟用紋理之后,需要建立物體表面上的點與紋理空間6162基本概念簡單光照模型基于簡單光照模型的多邊形繪制第十章真實感圖形繪制1基本概念第十章真實感圖形繪制6263真實感圖形繪制:通過綜合利用數學、物理學、計算機以及心理學等知識在計算機圖形輸出設備上繪制出能夠以假亂真的美麗景象。光強(度):描述物體表面朝某方向輻射光的顏色,它既能表示光能大小又能表示其色彩組成的物理量?;靖拍?真實感圖形繪制:通過綜合利用數學、物理學、計算機以及心理學6364光照模型(Illuminationmodel),也稱明暗模型,主要用于物體表面某點處的光強度計算。簡單的光照模型復雜的光照模型基本概念3光照模型(Illuminationmodel),也稱明暗6465真實感圖形繪制過程

根據假定的光照條件和景物外觀因素,依據一定的光照模型,計算可見面投射到觀察者眼中的光強度大小,并將它轉換成適合圖形設備的顏色值,生成投影畫面上每一個象素的光強度,使觀察者產生身臨其境的感覺?;靖拍?真實感圖形繪制過程基本概念6566真實感圖形繪制步驟在計算機中進行場景造型;進行取景變換和透視變換;進行消隱處理;進行真實感圖形繪制?;靖拍?真實感圖形繪制步驟基本概念6667簡單光照模型環境光漫反射光鏡面反射光光強衰減顏色處理10.1

簡單光照模型6簡單光照模型10.1簡單光照模型6768簡單光照模型中只考慮反射光的作用。反射光由環境光、漫反射光和鏡面反射光三部分組成。簡單光照模型7簡單光照模型中只考慮反射光的作用。簡單光照模型6869特點:照射在物體上的光來自周圍各個方向,又均勻地向各個方向反射。P點對環境光的反射強度為環境光(BackgroundLight)圖1環境光的反射8特點:照射在物體上的光來自周圍各個方向,又均勻地向各個方向6970一個粗糙的、無光澤的表面呈現為漫反射。特點:光源來自一個方向,反射光均勻地射向各個方向。由Lambert余弦定理可

得點P處漫反射光的強度為:漫反射光(DiffuseReflection)圖2漫反射9一個粗糙的、無光澤的表面呈現為漫反射。漫反射光(Diffu7071若L和N都已規格化為單位矢量,則有漫反射光(DiffuseReflection)圖2漫反射10若L和N都已規格化為單位矢量,則有漫反射光(Diffus7172對于彩色漫反射光(DiffuseReflection)對于多個漫反射光源11對于彩色漫反射光(DiffuseReflection)7273鏡面反射遵循反射定律,入射光和反射光分別位于表面法矢的兩側。如果觀察者正好處在P點的鏡面反射方向上,就會看到一個比周圍

亮得多的高光點。鏡面反射光圖3鏡面反射12鏡面反射遵循反射定律,入射光和反射光分別位于表面法矢的兩7374鏡面反射情況由Phong模型給出:鏡面反射光圖3鏡面反射若R和V已規格化為單

位矢量,則:13鏡面反射情況由Phong模型給出:鏡面反射光圖3鏡面7475從視點觀察到物體上任一點P處的光強度I應為環境光反射光強度Ie、漫反射光強度Id以及鏡面反射光的光強度Is的總和:物體表面光強計算14從視點觀察到物體上任一點P處的光強度I應為環境光反射光強7576光在傳播的過程中,其能量會發生衰減。光照模型中必須考慮光強衰減,否則會影響生成圖形的真實效果。光強的衰減可以采用常數衰減、一次函數衰減和二次函數衰減等。光強衰減15光在傳播的過程中,其能量會發生衰減。光照模型中必須考慮光7677常用的二次衰減函數光強衰減16常用的二次衰減函數光強衰減7778選擇顏色模型(colormodel)面向硬件的顏色模型:RGB、CYM面向視覺感知的顏色模型:HSI為顏色分量指定光照模型顏色17選擇顏色模型(colormodel)顏色7879以RGB顏色模型為例環境光強度:入射光強度:環境光反射系數:漫反射系數:鏡面反射系數:顏色18以RGB顏色模型為例顏色7980光強計算公式:顏色19光強計算公式:顏色8081恒定光強Gouraud明暗處理Phong明暗處理10.2

基于簡單光照模型的多邊形繪制20恒定光強10.2基于簡單光照模型的多邊形繪制8182只用一種顏色繪制整個多邊形光源在無窮遠處,則多邊形上所有點的L?N為常數,衰減函數也是一個常數。視點在無窮遠處,則多邊形上所有點的V?R為常數。多邊形是景物表面的精確表示,即不是一個含曲線面景物的近似表示。恒定光強21只用一種顏色繪制整個多邊形恒定光強8283Gouraud明暗處理方法,又稱為亮度插值明暗處理,它通過對多邊形頂點顏色進行線性插值來繪制其內部各點,其步驟為:計算每個多邊形頂點處的平均單位法矢量;對每個頂點根據簡單光照模型來計算其光強;在多邊形表面上將頂點光強度進行線性插值。Gouraud明暗處理22Gouraud明暗處理方法,又稱為亮度插值明暗處理,它通8384雙線性插值方法Gouraud明暗處理圖4Gouraud明暗處理的雙線性插值23雙線性插值方法Gouraud明暗處理圖4Gourau8485Phong明暗處理方法,又稱為法矢量插值明暗處理,它對多邊形頂點的法矢量進行插值以產生中間各點的法矢量,其步驟為:計算每個多邊形頂點處的平均單位法矢量;用雙線性插值方法求得多邊形內部各點的法矢量。最后按光照模型確定多邊形內部各點的光強。Phong明暗處理24Phong明暗處理方法,又稱為法矢量插值明暗處理,它對多8586矢量雙線性插值方法Phong明暗處理圖5Phong明暗處理的矢量雙線性插值25矢量雙線性插值方法Phong明暗處理圖5Phong明868710.3

透明處理圖6透明表面的光強包括反射光和折射光2610.3透明處理圖6透明表面的光強包括反射光和折射8788透明處理圖7簡單的透明處理27透明處理圖7簡單的透明處理8889透明處理圖8光的折射28透明處理圖8光的折射899010.4

產生陰影陰影是由于物體截斷了光線而產生的,所以如果光源位于物體一側的話,陰影總是位于物體的另一側,也就是與光源相反的一側。從理論上來說,從視點以及從光源看過去都是可見的面不會落在陰影中,只有那些從視點看過去是可見的,而從光源看過去是不可見的面,肯定落在陰影之內。2910.4產生陰影陰影是由于物體截斷了光線而產生的,所以9091產生陰影產生具有陰影的圖形繪制算法將視點移到光源位置,用多邊形區域排序消隱算法,將多邊形分成兩大類:向光多邊形和背光多邊形。將視點移到原來的觀察位置,對向光多邊形和背光多邊形進行消隱,并選用一種光照模型計算多邊形的亮度,就可得到有陰影效果的圖形。30產生陰影產生具有陰影的圖形繪制算法919210.5

模擬景物表面細節顏色紋理:通過顏色色彩或明暗度的變化體現出來的表面細節。幾何紋理:由于不規則的細小凹凸造成的。顏色紋理取決于物體表面的光學屬性,而幾何紋理由物體表面的微觀幾何形狀決定。3110.5模擬景物表面細節顏色紋理:通過顏色色彩或明暗度9293模擬景物表面細節用多邊形模擬表面細節紋理的定義和映射凹凸映射32模擬景物表面細節用多邊形模擬表面細節9394多邊形模擬表面細節簡單地模擬景物表面細節的方法是用多邊形,稱為表面圖案多邊形,來模擬紋理的結構和模式。處理時,首先根據待生成的顏色紋理構造表面圖案多邊形,然后將表面圖案多邊形覆蓋到物體的表面上。33多邊形模擬表面細節簡單地模擬景物表面細節的方法是用多邊形9495紋理映射和定義生成顏色紋理的一般方法,是預先定義紋理模式,然后建立物體表面的點與紋理模式的點之間的對應。當物體表面的可見點確定之后,以紋理模式的對應點參與光照模型進行計算,就可把紋理模式附到物體表面上。這種方法稱為紋理映射(TextureMapping)。34紋理映射和定義生成顏色紋理的一般方法,是預先定義紋理模式9596紋理映射和定義圖9紋理映射中紋理空間、物體空間和像素空間的變換35紋理映射和定義圖9紋理映射中紋理空間、物體空間和像素9697紋理映射和定義圖10由像素空間向紋理空間的映射36紋理映射和定義圖10由像素空間向紋理空間的映射9798凹凸映射1978年,Blinn提出了一種無需修改表面幾何模型,即能模擬表面凹凸不平效果的有效方法——凹凸映射技術(BumpMapping)。37凹凸映射1978年,Blinn提出了一種無需修改表面幾何989910.6

整體光照模型與光線跟蹤整體光照模型Whitted光照模型光線跟蹤算法3810.6整體光照模型與光線跟蹤整體光照模型99100整體光照模型一個完整的光照明模型應該包括由光源和環境引起的漫反射分量、鏡面反射分量、規則透射分量以及漫透射分量等。僅考慮由光源引起的漫反射分量和鏡面反射分量,而環境反射分量則簡單地用一常數來代替,這類光照模型稱為局部光照模型。能同時模擬光源和環境照明效果的光照模型稱為整體光照模型。39整體光照模型一個完整的光照明模型應該包括由光源和環境引起100101Whitted光照模型Whitted在簡單光照模型中增加了環境鏡面反射光和環境規則透射光,以模擬周圍環境的光投射在景物表面上產生的理想鏡面反射和規則透射現象。圖11物體表面的鏡面反射和透射40Whitted光照模型Whitted在簡單光照模型中增加101102光線跟蹤算法光線跟蹤(RayTracing)方法基于幾何光學的原理,通過模擬光的傳播路徑來確定反射、折射和陰影等。圖12光線跟蹤算法41光線跟蹤算法光線跟蹤(RayTracing)方法基于幾102103光線跟蹤算法步驟從視點出發,確定穿過每個像素中心的光線路徑,然后,沿這束光線累計光強,并將最終值賦給相應像素。對于每一像素光線,對場景中的所有物體表面進行測試以確定其是否與該光線相交,并計算出交點的深度,深度最大(z值)的交點即為該像素對應的可見點。然后,繼續考察通過該可見點的從屬光線(SecondaryRays)。42光線跟蹤算法步驟從視點出發,確定穿過每個像素中心的光線路103104光線跟蹤算法步驟對每條從屬光線重復過程:與場景中的所有物體求交。然后遞歸地在沿從屬光線方向最近的物體表面上生成下一折射和反射光線。當由每個像素出發的光線在場景中被反射和折射時,逐個將相交物體表面加入到一個二叉光線跟蹤樹中。當樹中的一束光線到達預定的最大深度或到達某光源時,就停止跟蹤。43光線跟蹤算法步驟對每條從屬光線重復過程:與場景中的所有物104105光線跟蹤算法步驟圖13光線跟蹤及光線跟蹤樹44光線跟蹤算法步驟圖13光線跟蹤及光線跟蹤樹105106光線跟蹤算法步驟可以從光線跟蹤樹的葉結點開始,累計光強貢獻以確定某像素處的光強大小。樹中每個結點的光強由樹中的子結點處繼承而來,但光強大小隨距離而衰減。像素光強是光線樹根結點處的衰減光強的總和。45光線跟蹤算法步驟可以從光線跟蹤樹的葉結點開始,累計光強貢106107光線跟蹤反走樣將光線跟蹤算法與過采樣方式結合起來,可歸納如下:(1)對每一像素的角點計算光線跟蹤的光強。(2)比較像素4個角點的光強,確定要進行細分的像素。(3)對細分后新增的角點計算光線跟蹤的光強。然后,重復(2)和(3),直到各角點的光強比較接近為止。(4)加權平均求出投影平面上各像素點的光強。46光線跟蹤反走樣將光線跟蹤算法與過采樣方式結合起來,可歸納10710810.7OpenGL中的光照處理點光源全局光照表面材質透明處理4710.7OpenGL中的光照處理點光源108109點光源在OpenGL場景描述中可以包含多個點光源,光源的各種屬性設置使用下面的函數指定。

voidglLight{if}(GLenumlight,GLenumpname,TYPEparam);voidglLight{if}v(GLenumlight,GLenumpname,TYPE*param);48點光源在OpenGL場景描述中可以包含多個點光源,光源的109110點光源pname取值默認值含義GL_AMBIENT(0.0,0.0,0.0,1.0)光源中環境光分量GL_DIFFUSE(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中漫反射光分量GL_SPECULAR(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中鏡面光分量GL_POSITION(0.0,0.0,1.0,0.0)光源的坐標位置GL_SPOT_DIRECTION(0.0,0.0,-1.0)光源聚光燈方向矢量GL_SPOT_EXPONENT(0.0)聚光指數GL_SPOT_CUTOFF180.0聚光截止角GL_CONSTANT_ATTENUATION1.0固定衰減因子GL_LINEAR_ATTENUATION0.0線性衰減因子GL_QUADRATIC_ATTENUATION0.0二次衰減因子49點光源pname取值默認值含義GL_AMBIENT(0.110111點光源點光源的顏色點光源的位置和類型聚光燈光強度衰減50點光源點光源的顏色111112點光源在OpenGL中,必須明確啟用或禁用光照。默認情況下,不啟用光照,此時使用當前顏色繪制圖形,不進行法線矢量、光源、光照模型、材質屬性的相關的計算。要啟用光照,可以使用函數:glEnable(GL_LIGHTING);指定了光源的參數后,需要使用函數啟用light指定的光源:glEnable(light);51點光源在OpenGL中,必須明確啟用或禁用光照。默認情況112113OpenGL全局光照在OpenGL中,下面的函數用于指定全局光照

voidglLightMode{if}(GLenumpname,TYPEparam);voidglLightMode{if}v(GLenumpname,TYPE*param);pname取值默認值含義GL_LIGHT_MODEL_AMBIENT(0.2,0.2,0.2,1.0)整個場景的環境光成分GL_LIGHT_MODEL_LOCAL_VIEWERGL_FALSE如何計算鏡面反射角GL_LIGHT_MODEL_TWO_SIDEGL_FALSE單面光照還是雙面光照GL_LIGHT_MODEL_COLOR_CONTROLGL_SINGLE_COLOR鏡面反射顏色是否獨立于環境顏色、散射顏色52OpenGL全局光照在OpenGL中,下面的函數用于指定113114OpenGL材質屬性在OpenGL中,下面的函數用于指定材質屬性

voidglMaterial{if}(GLenumface,GLenumpname,TYPEparam);voidglMaterial{if}v(GLenumface,GLenumpname,TYPE*param);pname取值默認值含義GL_AMBIENT(0.2,0.2,0.2,1.0)材質對環境光的反射系數GL_DIFFUSE(0.8,0.8,0.8,1.0)材質對漫射光的反射系數GL_AMBIENT_AND_DIFFUSE材質對環境光和漫射光的反射系數GL_SPECULAR(0.0,0.0,0.0,1.0)材質對鏡面光的反射系統GL_SHININESS0.0鏡面反射指數GL_EMISSION(0.0,0.0,0.1,1.0)材質的發射光顏色GL_COLOR_INDEXS(0,1,1)環境顏色索引、漫反射顏色索引和鏡面反射顏色索引53OpenGL材質屬性在OpenGL中,下面的函數用于指定114115OpenGL材質屬性OpenGL提供顏色材質模式:

glEnable(GL_COLOR_MATERIAL);voidglColorMaterial(GLenumface,GLenummode);顏色材質模式中,可以通過glColor函數來指定物體表面的顏色,而相應的材質屬性將通過顏色值和光源的RGB值計算出來。54OpenGL材質屬性OpenGL提供顏色材質模式:115116透明處理OpenGL中使用混合實現透明處理?;旌喜僮魇侵笇⑤斎雽ο螅ㄔ矗┑念伾蹬c當前存儲在幀緩存中的像素(目標)顏色值合并的過程。55透明處理OpenGL中使用混合實現透明處理。116117透明處理開啟混合操作glEnable(GL_BLEND);指定計算源因子和目標因子的計算方式

void

溫馨提示

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

評論

0/150

提交評論