版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第七章 計算機圖形學(xué)基本實踐 n計算機圖形學(xué)是隨著計算機及其外圍設(shè)備而產(chǎn)生和發(fā)展起來的。它是近代計算機科學(xué)與雷達(dá),電視及圖像處理技術(shù)的發(fā)展匯合而產(chǎn)生的碩果。在航空航天,汽車,電子,機械,土建工程,影視廣告,地理信息,輕紡化工等領(lǐng)域中的廣泛應(yīng)用,并推動了這門學(xué)科的不斷發(fā)展。不斷解決應(yīng)用中提出的各類新課題的同時,又進(jìn)一步充實和豐富了這門學(xué)科的內(nèi)容。 n本章以立方體上貼圖像及3D動畫顯示和棋盤上放置透明球的陰影和透明效果為設(shè)計題目,對圖像圖形學(xué)中的顯示物體的特點,對于陰影和折射等效果采用光線跟蹤法,光照模型采用光線跟蹤算法中常用的Torrance-Sparrow光照模型進(jìn)行說明和應(yīng)用。同時作為計算機
2、圖形學(xué)課程的學(xué)習(xí),通過完成主要實踐性研究小課題,達(dá)到最終要掌握計算機圖形學(xué)的國內(nèi)外動態(tài),掌握計算機圖形學(xué)的基本理論和技術(shù)和掌握計算機圖形學(xué)中基本軟件的設(shè)計、三維物體的造型和生成方法等基本技術(shù)。也可以了解圖形數(shù)據(jù)庫的基本理論和方法,具備從事計算機圖形研究的能力。計算機圖形生成在許多領(lǐng)域都得到了廣泛應(yīng)用,在三維動畫中計算機已成為主要工作的完成者 立方體上貼圖片及3D動畫顯示 n三維動畫主要有三個核心技術(shù):物體建模,即描述和構(gòu)成三維物體。運動控制。在動畫中物體模型會發(fā)生平移、旋轉(zhuǎn)或形狀改變。除了物體的運動外,攝像機本身也可以運動,進(jìn)行推移、變焦、鏡頭的旋轉(zhuǎn)等等。在計算機三維動畫中并不存在真實的攝像機
3、,所有攝像機的效果、取景、位置運動以及聚焦點等等,都是依靠編程來實現(xiàn)的。畫面真實性處理。這是產(chǎn)生三維逼真圖像的處理過程,通過消除不可見面,加入明暗陰影、透明、紋理等技術(shù)處理來模擬真實的三維物體。 原理、設(shè)計和算法 n對于三維圖形,需解決如下幾個問題:n 如何將三維物體(圖形)在二維的顯示設(shè)備上顯示出來;n 如何用空間多邊形、曲面來表示三維空間的物體;n 如何解決三維空間物體的消隱問題;n 如何產(chǎn)生逼真的、顏色分布自然的圖形。 立方體建模,視立方體建模,視-屏坐標(biāo)系建模屏坐標(biāo)系建模 n首先,由于立方體所在的本體坐標(biāo)系和投影用的視坐標(biāo)系均存在平移和旋轉(zhuǎn),為描述這種坐標(biāo)系的平移和旋轉(zhuǎn),建立了CAxe
4、s類。該類存儲某坐標(biāo)系(左旋或右旋)原點在世界坐標(biāo)系中的位置及該坐標(biāo)系的坐標(biāo)軸方向在世界坐標(biāo)系中的方向向量,可對該坐標(biāo)系相對于世界坐標(biāo)系的平移和旋轉(zhuǎn)進(jìn)行描述(眾坐標(biāo)系中,唯有世界坐標(biāo)系是固定不變的,故將其作為位置、方向計算的參照對象)。 n立方體模型在本體坐標(biāo)系中建立,可用頂點表、邊表或面表模型來表示給定的立方體。邊表和面表都是以頂點表為基礎(chǔ)生成,所以可單純用頂點表表示立方體,形成立方體模型最精簡的存儲結(jié)構(gòu)。因為立方體的顯示以面為單位進(jìn)行(本系統(tǒng)在繪制立方體時只畫可見面而未對可見邊進(jìn)行繪制,依靠立方體表面的圖案紋理來自然地顯示立方體),除了頂點表之外,在模型中增加了面表。面表項由指向該面四個頂
5、點的指針和描述該面圖案紋理的對象組成。設(shè)面的正法向是垂直于該面且由立方體內(nèi)指向立方體外的方向,四個頂點與正法向呈右旋的關(guān)系存儲,這樣可簡化面消隱判斷及面參數(shù)坐標(biāo)系的建立。n設(shè)立方體的棱與本體坐標(biāo)系坐標(biāo)軸平行,厚度、寬度和高度分別為Depth、Width和Height,中心點位于本體坐標(biāo)系原點,則由圖7-1所示,八個頂點在本體坐標(biāo)系中的坐標(biāo)分別為:(Depth/2,Width/2,Height/2)、(-Depth/2,Width/2,Height/2)、(-Depth/2,-Width/2,Height/2)、(Depth/2,-Width/2,Height/2)、(-Depth/2,-Wid
6、th/2,-Height/2)、(-Depth/2,Width/2,-Height/2)、(Depth/2,Width/2,-Height/2)、(Depth/2,-Width/2,-Height/2)。在立方體模型中用CAxes類型變量來對立方體所在的本體坐標(biāo)系的平移和旋轉(zhuǎn)進(jìn)行描述。n設(shè)立方體的棱與本體坐標(biāo)系坐標(biāo)軸平行,厚度、寬度和高度分別為Depth、Width和Height,中心點位于本體坐標(biāo)系原點,則由圖7-1所示,八個頂點在本體坐標(biāo)系中的坐標(biāo)分別為:(Depth/2,Width/2,Height/2)、(-Depth/2,Width/2,Height/2)、(-Depth/2,-Wi
7、dth/2,Height/2)、(Depth/2,-Width/2,Height/2)、(-Depth/2,-Width/2,-Height/2)、(-Depth/2,Width/2,-Height/2)、(Depth/2,Width/2,-Height/2)、(Depth/2,-Width/2,-Height/2)。在立方體模型中用CAxes類型變量來對立方體所在的本體坐標(biāo)系的平移和旋轉(zhuǎn)進(jìn)行描述。n由于視坐標(biāo)系和屏坐標(biāo)系相互間空間位置固定,可僅對視坐標(biāo)系的位置和方向進(jìn)行描述,并通過視-屏坐標(biāo)系之間的位置關(guān)系來描述屏坐標(biāo)系。這些位置關(guān)系包括:屏平面到視點的距離VD、最近可見點及最遠(yuǎn)可見點到視點
8、的距離FD和BD、屏平面中點位置(wcu,wcv),屏平面的半邊長WSU和WSV。n由于視坐標(biāo)系和屏坐標(biāo)系相互間空間位置固定,可僅對視坐標(biāo)系的位置和方向進(jìn)行描述,并通過視-屏坐標(biāo)系之間的位置關(guān)系來描述屏坐標(biāo)系。這些位置關(guān)系包括:屏平面到視點的距離VD、最近可見點及最遠(yuǎn)可見點到視點的距離FD和BD、屏平面中點位置(wcu,wcv),屏平面的半邊長WSU和WSV。立方體在本體坐標(biāo)系中建模立方體的立方體的3D顯示顯示 n立方體的3D顯示流程圖如框圖1所示。立方體最初定義于自己的局部坐標(biāo)系(本體坐標(biāo)系)中,經(jīng)模型變換,以一定的形狀、尺寸存在于世界坐標(biāo)系的某個位置,再經(jīng)過觀察變換,生成物體在視坐標(biāo)系中的
9、表示。視見體在視坐標(biāo)系中經(jīng)過消隱處理,將剩下的部分投影到屏平面上,再由窗口(屏平面)至視區(qū)的變換將其變換到設(shè)備坐標(biāo)系中顯示。 模型變換模型變換 觀察變換觀察變換 消隱處理消隱處理 投影變換投影變換 表面圖案紋理的粘貼及光照效果的添加表面圖案紋理的粘貼及光照效果的添加 n為了給立方體表面粘貼圖案紋理及添加光照效果,必須對投影四邊形進(jìn)行掃描,并且通過紋理映射和光照模型計算求出當(dāng)前掃描點處的光亮度值進(jìn)行逐點填充。由于本系統(tǒng)的投影四邊形為凸四邊形,在進(jìn)行投影區(qū)域掃描時使用了簡化的掃描線填充算法。由于篇幅有限,在這里不作詳述,以下著重闡述與紋理映射及光照強度計算有關(guān)的問題。 紋理映射紋理映射 紋理映射紋
10、理映射紋理映射紋理映射紋理映射紋理映射添加光照效果添加光照效果 添加光照效果添加光照效果實驗過程 n本系統(tǒng)圖形生成內(nèi)核部分用標(biāo)準(zhǔn)C+編成,并用該內(nèi)核和Visual C+ 6.0編程環(huán)境開發(fā)出可在Windows98下運行的演示程序。圖形生成內(nèi)核部分由四個結(jié)構(gòu)和五個C+類組成 。n 結(jié)構(gòu)POINT3D、POINT2D和VECTOR3D:定義三維、二維坐標(biāo)點及三維向量,其具體程序定義為:ntypedef structnfloat x,y,z;nPOINT3D;ntypedef structn float x,y;nPOINT2D;ntypedef POINT3D VECTOR3D;n(2) CAxe
11、s類:該類定義某坐標(biāo)系在世界坐標(biāo)系中的平移、旋轉(zhuǎn)并定義了與坐標(biāo)系有關(guān)的操作。主要的成員變量有:nPOINT3D center 坐標(biāo)系在世界坐標(biāo)系中的平移;nVECTOR3D xn,yn,zn 坐標(biāo)系三基軸在世界坐標(biāo)系中的單位方向向量。n主要的成員函數(shù)有:nvoid move(VECTOR3D distance) 在世界坐標(biāo)系中平移坐標(biāo)系;nvoid revolve_x_axes(float angle) 將坐標(biāo)系繞基軸x旋轉(zhuǎn)angle角;nvoid revolve_y_axes(float angle) 將坐標(biāo)系繞基軸y旋轉(zhuǎn)angle角;nvoid revolve_z_axes(float a
12、ngle) 將坐標(biāo)系繞基軸z旋轉(zhuǎn)angle角。nCAxes可對左旋及右旋坐標(biāo)系進(jìn)行描述(兩種坐標(biāo)系在坐標(biāo)軸方向和坐標(biāo)系旋轉(zhuǎn)方面有所差別)。 n (3) CVCS類:該類由類 Caxes 繼承而來,是對視-屏坐標(biāo)系的定義。經(jīng)過精心設(shè)計,封裝了描述視-屏坐標(biāo)系必需的變量和函數(shù)?;怌axes 已能完整地描述視-屏坐標(biāo)系在世界坐標(biāo)系中的平移和旋轉(zhuǎn),新增加的成員變量主要用于定義屏平面的尺寸及屏平面在視坐標(biāo)系中的位置,有:nfloat VD 屏平面與視點之距;nfloat FD,BD 視坐標(biāo)中可見點的z的最小值和最大值;nfloat WSU,WSV 屏平面的半寬和半高;nfloat wcu,wcv 屏平
13、面中點在視坐標(biāo)系中的位置。n增加的成員函數(shù)有:nvoid WCS_to_VCS(POINT3D pw,POINT3D &pv) 求世界坐標(biāo)系中的點在視坐標(biāo)系中的映射坐標(biāo);nvoid VCS_to_SCS(POINT3D &pv,POINT2D &ps) 求視坐標(biāo)系中的點在屏坐標(biāo)系中的投影坐標(biāo);nvoid draw_point(int x,int y,COLORREF color) 在屏平面指定位置畫點(對坐標(biāo)值根據(jù)屏平面尺寸裁剪)。ndraw_point實際是通過調(diào)用與設(shè)備相關(guān)的一個外部畫點函數(shù)實現(xiàn),該外部函數(shù)的地址由CVCS中的一個函數(shù)指針void (*draw_po
14、int_func_ptr)(int x,int y,COLORREF color) 存儲。這樣能夠使CVCS中的內(nèi)容與設(shè)備無關(guān),對不同的平臺只要定義不同的外部畫點函數(shù)即可實現(xiàn)移植。實際上該外部畫點函數(shù)實現(xiàn)了屏平面向設(shè)備坐標(biāo)系的映射。n CTexture類:該類封裝了對表面圖案紋理的描述,定義了存儲表面性質(zhì)的數(shù)組變量和圖案位圖裝載、紋理映射等函數(shù)。主要的成員變量有:nunsigned char bitmap512512 圖案位圖存儲數(shù)組,用來存儲256256彩色位圖和 MipMap 反走樣算法所用的低分辨率位圖的三基色分量;nCOLORREF specular_reflection_rate 表
15、面的鏡面反射率;nfloat specular_reflect_n 表面的會聚指數(shù)。n主要的成員函數(shù)有:nint build_bitmap_from_res_id(unsigned int res_id) 從應(yīng)用程序的資源表中讀入位圖的三基色分量并整理成MipMap算法所需的位圖存儲格式;nCOLORREF MipMap(float u,float v,float d) 由紋理空間參數(shù)坐標(biāo)u、v及屏平面像素在紋理空間中的等效邊長d用MipMap反走樣算法求紋理值;nvirtual COLORREF get_texture(float u,float v,float d) 供外部調(diào)用的求紋理值的
16、函數(shù)。 n 結(jié)構(gòu)FACE與 Ccube 類:結(jié)構(gòu)FACE定義了三維四邊形表面,內(nèi)容包括對四邊形頂點的定義及對表面紋理的定義,具體聲明為:ntypedef structn POINT3D *vertex_ptr4;nCTexture texture;nFACE;n類 Cccube 用于定義本系統(tǒng)的主要描述對象空間立方體,它完整地封裝了空間立方體的性質(zhì)及坐標(biāo)映射、表面繪制、立方體繪制等函數(shù)。主要成員變量有:nCAxes axes 描述立方體本體坐標(biāo)系;nPOINT3D vertex8 立方體頂點坐標(biāo)數(shù)組;nFACE face6 立方體表面數(shù)組。n主要的成員函數(shù)有:nvoid build_cube(
17、float depth,float width,float height) 由給定的厚度、寬度、高度創(chuàng)建立方體;nvoid get_s_to_uv_coef(POINT2D ps4) 由投影四邊形的頂點坐標(biāo)計算由屏坐標(biāo)系向紋理坐標(biāo)空間映射的映射系數(shù);nint s_to_uvd(POINT2D &ps,float &u,float &v,float &d) 求屏坐標(biāo)到紋理空間的映射坐標(biāo);nint vertex_face_visual(POINT3D vertex4,CVCS *vcs) 判斷由世界坐標(biāo)點表示的空間四邊形在給定視坐標(biāo)系中的可見性;nvoid draw
18、_face(FACE *face,CLight *light,CVCS *vcs) 在指定的屏平面上以給定的光照模型繪制表面;nvoid draw(CLight *light,CVCS *vcs) 在指定的屏平面上以給定的光照模型繪制三維立方體;nvoid OCS_to_WCS(POINT3D &po, POINT3D &pw) 求本體坐標(biāo)系中的點在世界坐標(biāo)系的映射坐標(biāo)。n(6) 結(jié)構(gòu)LIGHT與類CLight:結(jié)構(gòu)LIGHT定義了點光源的空間位置和亮度:ntypedef struct nPOINT3D location;nCOLORREF illuminance;nLIGHT
19、;n類 Clight 定義了點光源數(shù)組、點光源增刪函數(shù)及光亮度計算函數(shù)。主要成員變量有:nCOLORREF Ia 環(huán)境光亮度;nLIGHT *light_array16 點光源指針數(shù)組;nint light_cnt 點光源數(shù)目。n主要成員函數(shù)有:nint add_light(POINT3D &location,COLORREF illuminance) 增加點光源;nint del_light(int light_id) 刪除點光源;nvoid draw_light(CVCS *vcs) 在給定的屏平面上根據(jù)光源位置與亮度繪制點光源;nCOLORREF get_illuminance(
20、POINT3D &v,POINT3D &p,VECTOR3D &norm_n,COLORREF diff_reflect_rate,COLORREF spec_reflect_rate,float spec_reflect_n) 根據(jù)空間點位置、空間點所在表面在該點處外法向、視點位置、表面反射系數(shù)等參數(shù)計算該點的光亮度值。 本設(shè)計和特點n本系統(tǒng)結(jié)構(gòu)經(jīng)過精心設(shè)計,將各對象及功能模塊作了良好封裝,整個系統(tǒng)功能擴充非常容易。比如,通過對視-屏坐標(biāo)系的封裝,使雙視點(左眼、右眼)甚至多視點模型的生成變得很簡單,本系統(tǒng)的演示程序就提供了單/雙視點模型選項供用戶選擇。又如,將 Ctexture 中的紋理獲取函數(shù)get_texture聲明為virtual類型,可以通過重載該函數(shù)構(gòu)造不同的紋理模型(如麻布紋理等)。 結(jié)果和討論 n基于本系統(tǒng)的結(jié)構(gòu)開發(fā)了一個粘貼有圖案紋理的3D立方體動畫顯示程序。程序通過多線程技術(shù)實現(xiàn)立方體的不斷旋轉(zhuǎn)與視區(qū)顯示刷新,并可通過鍵盤實現(xiàn)視點漫游。、健分別表示將視線方向
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年特定項目融資保密協(xié)議范本
- 2024年頂管施工合作協(xié)議模板
- 2024年新汽車抵押借款協(xié)議示例
- 反擔(dān)保借款協(xié)議模板:公司風(fēng)險共擔(dān)條款
- 2024年貨車出租協(xié)議樣本
- 2024年進(jìn)口天然石材荒料銷售協(xié)議
- 2024年創(chuàng)新型醫(yī)療器械研發(fā)合作協(xié)議
- 2024商業(yè)交易促成居間協(xié)議樣本
- 2024年度跨國商業(yè)合作協(xié)議模板
- 2024年工業(yè)產(chǎn)品銷售代理規(guī)范協(xié)議
- 安全使用家電和煤氣課件
- 《GPS測量與數(shù)據(jù)處理》-第3講 全球定位系統(tǒng)組成及信號結(jié)構(gòu)
- 前置胎盤詳解課件
- 達(dá)爾文的“進(jìn)化論”課件
- 國開電大《建筑測量》實驗報告1
- 《火災(zāi)自動報警系統(tǒng)設(shè)計規(guī)范》
- 南京市小學(xué)一年級語文上學(xué)期期中試卷
- 合肥工業(yè)大學(xué)-孫冠東-答辯通用PPT模板
- 國開作業(yè)《管理學(xué)基礎(chǔ)》管理實訓(xùn):第一章訪問一個工商企業(yè)或一位管理者參考(含答案)280
- 食安員抽考必備知識考試題庫(含答案)
- 膀胱過度活動癥的診斷與治療
評論
0/150
提交評論