數(shù)字圖像處理計(jì)算機(jī)圖形學(xué)基本實(shí)踐_第1頁
數(shù)字圖像處理計(jì)算機(jī)圖形學(xué)基本實(shí)踐_第2頁
數(shù)字圖像處理計(jì)算機(jī)圖形學(xué)基本實(shí)踐_第3頁
數(shù)字圖像處理計(jì)算機(jī)圖形學(xué)基本實(shí)踐_第4頁
數(shù)字圖像處理計(jì)算機(jī)圖形學(xué)基本實(shí)踐_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)字圖像處理計(jì)算機(jī)圖形學(xué)基本實(shí)踐第一頁,共三十六頁,編輯于2023年,星期六本章以立方體上貼圖像及3D動(dòng)畫顯示和棋盤上放置透明球的陰影和透明效果為設(shè)計(jì)題目,對(duì)圖像圖形學(xué)中的顯示物體的特點(diǎn),對(duì)于陰影和折射等效果采用光線跟蹤法,光照模型采用光線跟蹤算法中常用的Torrance-Sparrow光照模型進(jìn)行說明和應(yīng)用。同時(shí)作為計(jì)算機(jī)圖形學(xué)課程的學(xué)習(xí),通過完成主要實(shí)踐性研究小課題,達(dá)到最終要掌握計(jì)算機(jī)圖形學(xué)的國內(nèi)外動(dòng)態(tài),掌握計(jì)算機(jī)圖形學(xué)的基本理論和技術(shù)和掌握計(jì)算機(jī)圖形學(xué)中基本軟件的設(shè)計(jì)、三維物體的造型和生成方法等基本技術(shù)。也可以了解圖形數(shù)據(jù)庫的基本理論和方法,具備從事計(jì)算機(jī)圖形研究的能力。計(jì)算機(jī)圖形生成在許多領(lǐng)域都得到了廣泛應(yīng)用,在三維動(dòng)畫中計(jì)算機(jī)已成為主要工作的完成者

第二頁,共三十六頁,編輯于2023年,星期六立方體上貼圖片及3D動(dòng)畫顯示

三維動(dòng)畫主要有三個(gè)核心技術(shù):①物體建模,即描述和構(gòu)成三維物體。②運(yùn)動(dòng)控制。在動(dòng)畫中物體模型會(huì)發(fā)生平移、旋轉(zhuǎn)或形狀改變。除了物體的運(yùn)動(dòng)外,攝像機(jī)本身也可以運(yùn)動(dòng),進(jìn)行推移、變焦、鏡頭的旋轉(zhuǎn)等等。在計(jì)算機(jī)三維動(dòng)畫中并不存在真實(shí)的攝像機(jī),所有攝像機(jī)的效果、取景、位置運(yùn)動(dòng)以及聚焦點(diǎn)等等,都是依靠編程來實(shí)現(xiàn)的。③畫面真實(shí)性處理。這是產(chǎn)生三維逼真圖像的處理過程,通過消除不可見面,加入明暗陰影、透明、紋理等技術(shù)處理來模擬真實(shí)的三維物體。第三頁,共三十六頁,編輯于2023年,星期六原理、設(shè)計(jì)和算法

對(duì)于三維圖形,需解決如下幾個(gè)問題:⑴如何將三維物體(圖形)在二維的顯示設(shè)備上顯示出來;⑵如何用空間多邊形、曲面來表示三維空間的物體;⑶如何解決三維空間物體的消隱問題;⑷如何產(chǎn)生逼真的、顏色分布自然的圖形。第四頁,共三十六頁,編輯于2023年,星期六立方體建模,視-屏坐標(biāo)系建模

首先,由于立方體所在的本體坐標(biāo)系和投影用的視坐標(biāo)系均存在平移和旋轉(zhuǎn),為描述這種坐標(biāo)系的平移和旋轉(zhuǎn),建立了CAxes類。該類存儲(chǔ)某坐標(biāo)系(左旋或右旋)原點(diǎn)在世界坐標(biāo)系中的位置及該坐標(biāo)系的坐標(biāo)軸方向在世界坐標(biāo)系中的方向向量,可對(duì)該坐標(biāo)系相對(duì)于世界坐標(biāo)系的平移和旋轉(zhuǎn)進(jìn)行描述(眾坐標(biāo)系中,唯有世界坐標(biāo)系是固定不變的,故將其作為位置、方向計(jì)算的參照對(duì)象)。第五頁,共三十六頁,編輯于2023年,星期六立方體模型在本體坐標(biāo)系中建立,可用頂點(diǎn)表、邊表或面表模型來表示給定的立方體。邊表和面表都是以頂點(diǎn)表為基礎(chǔ)生成,所以可單純用頂點(diǎn)表表示立方體,形成立方體模型最精簡的存儲(chǔ)結(jié)構(gòu)。因?yàn)榱⒎襟w的顯示以面為單位進(jìn)行(本系統(tǒng)在繪制立方體時(shí)只畫可見面而未對(duì)可見邊進(jìn)行繪制,依靠立方體表面的圖案紋理來自然地顯示立方體),除了頂點(diǎn)表之外,在模型中增加了面表。面表項(xiàng)由指向該面四個(gè)頂點(diǎn)的指針和描述該面圖案紋理的對(duì)象組成。設(shè)面的正法向是垂直于該面且由立方體內(nèi)指向立方體外的方向,四個(gè)頂點(diǎn)與正法向呈右旋的關(guān)系存儲(chǔ),這樣可簡化面消隱判斷及面參數(shù)坐標(biāo)系的建立。第六頁,共三十六頁,編輯于2023年,星期六設(shè)立方體的棱與本體坐標(biāo)系坐標(biāo)軸平行,厚度、寬度和高度分別為Depth、Width和Height,中心點(diǎn)位于本體坐標(biāo)系原點(diǎn),則由圖7-1所示,八個(gè)頂點(diǎn)在本體坐標(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,-Width/2,-Height/2)、(-Depth/2,Width/2,-Height/2)、(Depth/2,Width/2,-Height/2)、(Depth/2,-Width/2,-Height/2)。在立方體模型中用CAxes類型變量來對(duì)立方體所在的本體坐標(biāo)系的平移和旋轉(zhuǎn)進(jìn)行描述。第七頁,共三十六頁,編輯于2023年,星期六設(shè)立方體的棱與本體坐標(biāo)系坐標(biāo)軸平行,厚度、寬度和高度分別為Depth、Width和Height,中心點(diǎn)位于本體坐標(biāo)系原點(diǎn),則由圖7-1所示,八個(gè)頂點(diǎn)在本體坐標(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,-Width/2,-Height/2)、(-Depth/2,Width/2,-Height/2)、(Depth/2,Width/2,-Height/2)、(Depth/2,-Width/2,-Height/2)。在立方體模型中用CAxes類型變量來對(duì)立方體所在的本體坐標(biāo)系的平移和旋轉(zhuǎn)進(jìn)行描述。第八頁,共三十六頁,編輯于2023年,星期六由于視坐標(biāo)系和屏坐標(biāo)系相互間空間位置固定,可僅對(duì)視坐標(biāo)系的位置和方向進(jìn)行描述,并通過視-屏坐標(biāo)系之間的位置關(guān)系來描述屏坐標(biāo)系。這些位置關(guān)系包括:屏平面到視點(diǎn)的距離VD、最近可見點(diǎn)及最遠(yuǎn)可見點(diǎn)到視點(diǎn)的距離FD和BD、屏平面中點(diǎn)位置(wcu,wcv),屏平面的半邊長WSU和WSV。第九頁,共三十六頁,編輯于2023年,星期六由于視坐標(biāo)系和屏坐標(biāo)系相互間空間位置固定,可僅對(duì)視坐標(biāo)系的位置和方向進(jìn)行描述,并通過視-屏坐標(biāo)系之間的位置關(guān)系來描述屏坐標(biāo)系。這些位置關(guān)系包括:屏平面到視點(diǎn)的距離VD、最近可見點(diǎn)及最遠(yuǎn)可見點(diǎn)到視點(diǎn)的距離FD和BD、屏平面中點(diǎn)位置(wcu,wcv),屏平面的半邊長WSU和WSV。立方體在本體坐標(biāo)系中建模第十頁,共三十六頁,編輯于2023年,星期六立方體的3D顯示

立方體的3D顯示流程圖如框圖1所示。立方體最初定義于自己的局部坐標(biāo)系(本體坐標(biāo)系)中,經(jīng)模型變換,以一定的形狀、尺寸存在于世界坐標(biāo)系的某個(gè)位置,再經(jīng)過觀察變換,生成物體在視坐標(biāo)系中的表示。視見體在視坐標(biāo)系中經(jīng)過消隱處理,將剩下的部分投影到屏平面上,再由窗口(屏平面)至視區(qū)的變換將其變換到設(shè)備坐標(biāo)系中顯示。第十一頁,共三十六頁,編輯于2023年,星期六模型變換

第十二頁,共三十六頁,編輯于2023年,星期六觀察變換

第十三頁,共三十六頁,編輯于2023年,星期六消隱處理

第十四頁,共三十六頁,編輯于2023年,星期六第十五頁,共三十六頁,編輯于2023年,星期六投影變換

第十六頁,共三十六頁,編輯于2023年,星期六表面圖案紋理的粘貼及光照效果的添加

為了給立方體表面粘貼圖案紋理及添加光照效果,必須對(duì)投影四邊形進(jìn)行掃描,并且通過紋理映射和光照模型計(jì)算求出當(dāng)前掃描點(diǎn)處的光亮度值進(jìn)行逐點(diǎn)填充。由于本系統(tǒng)的投影四邊形為凸四邊形,在進(jìn)行投影區(qū)域掃描時(shí)使用了簡化的掃描線填充算法。由于篇幅有限,在這里不作詳述,以下著重闡述與紋理映射及光照強(qiáng)度計(jì)算有關(guān)的問題。第十七頁,共三十六頁,編輯于2023年,星期六紋理映射

第十八頁,共三十六頁,編輯于2023年,星期六紋理映射第十九頁,共三十六頁,編輯于2023年,星期六紋理映射第二十頁,共三十六頁,編輯于2023年,星期六紋理映射第二十一頁,共三十六頁,編輯于2023年,星期六添加光照效果

第二十二頁,共三十六頁,編輯于2023年,星期六添加光照效果第二十三頁,共三十六頁,編輯于2023年,星期六實(shí)驗(yàn)過程本系統(tǒng)圖形生成內(nèi)核部分用標(biāo)準(zhǔn)C++編成,并用該內(nèi)核和VisualC++6.0編程環(huán)境開發(fā)出可在Windows98下運(yùn)行的演示程序。圖形生成內(nèi)核部分由四個(gè)結(jié)構(gòu)和五個(gè)C++類組成。第二十四頁,共三十六頁,編輯于2023年,星期六

結(jié)構(gòu)POINT3D、POINT2D和VECTOR3D:定義三維、二維坐標(biāo)點(diǎn)及三維向量,其具體程序定義為:typedefstruct {floatx,y,z;}POINT3D;typedefstruct{ floatx,y;} POINT2D;typedefPOINT3DVECTOR3D;第二十五頁,共三十六頁,編輯于2023年,星期六(2)

CAxes類:該類定義某坐標(biāo)系在世界坐標(biāo)系中的平移、旋轉(zhuǎn)并定義了與坐標(biāo)系有關(guān)的操作。主要的成員變量有:·POINT3Dcenter坐標(biāo)系在世界坐標(biāo)系中的平移;·VECTOR3Dxn,yn,zn坐標(biāo)系三基軸在世界坐標(biāo)系中的單位方向向量。主要的成員函數(shù)有:·voidmove(VECTOR3Ddistance)在世界坐標(biāo)系中平移坐標(biāo)系;·voidrevolve_x_axes(floatangle)將坐標(biāo)系繞基軸x旋轉(zhuǎn)angle角;·voidrevolve_y_axes(floatangle)將坐標(biāo)系繞基軸y旋轉(zhuǎn)angle角;·voidrevolve_z_axes(floatangle)將坐標(biāo)系繞基軸z旋轉(zhuǎn)angle角。CAxes可對(duì)左旋及右旋坐標(biāo)系進(jìn)行描述(兩種坐標(biāo)系在坐標(biāo)軸方向和坐標(biāo)系旋轉(zhuǎn)方面有所差別)。第二十六頁,共三十六頁,編輯于2023年,星期六

(3)

CVCS類:該類由類Caxes繼承而來,是對(duì)視-屏坐標(biāo)系的定義。經(jīng)過精心設(shè)計(jì),封裝了描述視-屏坐標(biāo)系必需的變量和函數(shù)。基類Caxes已能完整地描述視-屏坐標(biāo)系在世界坐標(biāo)系中的平移和旋轉(zhuǎn),新增加的成員變量主要用于定義屏平面的尺寸及屏平面在視坐標(biāo)系中的位置,有:·floatVD屏平面與視點(diǎn)之距;·floatFD,BD視坐標(biāo)中可見點(diǎn)的z的最小值和最大值;·floatWSU,WSV屏平面的半寬和半高;·floatwcu,wcv屏平面中點(diǎn)在視坐標(biāo)系中的位置。第二十七頁,共三十六頁,編輯于2023年,星期六增加的成員函數(shù)有:·voidWCS_to_VCS(POINT3Dpw,POINT3D&pv)求世界坐標(biāo)系中的點(diǎn)在視坐標(biāo)系中的映射坐標(biāo);·voidVCS_to_SCS(POINT3D&pv,POINT2D&ps)求視坐標(biāo)系中的點(diǎn)在屏坐標(biāo)系中的投影坐標(biāo);·voiddraw_point(intx,inty,COLORREFcolor)在屏平面指定位置畫點(diǎn)(對(duì)坐標(biāo)值根據(jù)屏平面尺寸裁剪)。draw_point實(shí)際是通過調(diào)用與設(shè)備相關(guān)的一個(gè)外部畫點(diǎn)函數(shù)實(shí)現(xiàn),該外部函數(shù)的地址由CVCS中的一個(gè)函數(shù)指針void(*draw_point_func_ptr)(intx,inty,COLORREFcolor)存儲(chǔ)。這樣能夠使CVCS中的內(nèi)容與設(shè)備無關(guān),對(duì)不同的平臺(tái)只要定義不同的外部畫點(diǎn)函數(shù)即可實(shí)現(xiàn)移植。實(shí)際上該外部畫點(diǎn)函數(shù)實(shí)現(xiàn)了屏平面向設(shè)備坐標(biāo)系的映射。第二十八頁,共三十六頁,編輯于2023年,星期六

⑷CTexture類:該類封裝了對(duì)表面圖案紋理的描述,定義了存儲(chǔ)表面性質(zhì)的數(shù)組變量和圖案位圖裝載、紋理映射等函數(shù)。主要的成員變量有:·unsignedcharbitmap[512][512]圖案位圖存儲(chǔ)數(shù)組,用來存儲(chǔ)256×256彩色位圖和MipMap反走樣算法所用的低分辨率位圖的三基色分量;·COLORREFspecular_reflection_rate表面的鏡面反射率;·floatspecular_reflect_n表面的會(huì)聚指數(shù)。第二十九頁,共三十六頁,編輯于2023年,星期六主要的成員函數(shù)有:·intbuild_bitmap_from_res_id(unsignedintres_id)從應(yīng)用程序的資源表中讀入位圖的三基色分量并整理成MipMap算法所需的位圖存儲(chǔ)格式;·COLORREFMipMap(floatu,floatv,floatd)由紋理空間參數(shù)坐標(biāo)u、v及屏平面像素在紋理空間中的等效邊長d用MipMap反走樣算法求紋理值;·virtualCOLORREFget_texture(floatu,floatv,floatd)供外部調(diào)用的求紋理值的函數(shù)。第三十頁,共三十六頁,編輯于2023年,星期六⑸

結(jié)構(gòu)FACE與Ccube類:結(jié)構(gòu)FACE定義了三維四邊形表面,內(nèi)容包括對(duì)四邊形頂點(diǎn)的定義及對(duì)表面紋理的定義,具體聲明為:typedefstruct{POINT3D*vertex_ptr[4];CTexturetexture;}FACE;類Cccube用于定義本系統(tǒng)的主要描述對(duì)象-空間立方體,它完整地封裝了空間立方體的性質(zhì)及坐標(biāo)映射、表面繪制、立方體繪制等函數(shù)。主要成員變量有:·CAxesaxes描述立方體本體坐標(biāo)系;·POINT3Dvertex[8]立方體頂點(diǎn)坐標(biāo)數(shù)組;·FACEface[6]立方體表面數(shù)組。第三十一頁,共三十六頁,編輯于2023年,星期六主要的成員函數(shù)有:·voidbuild_cube(floatdepth,floatwidth,floatheight)由給定的厚度、寬度、高度創(chuàng)建立方體;·voidget_s_to_uv_coef(POINT2Dps[4])由投影四邊形的頂點(diǎn)坐標(biāo)計(jì)算由屏坐標(biāo)系向紋理坐標(biāo)空間映射的映射系數(shù);·ints_to_uvd(POINT2D&ps,float&u,float&v,float&d)求屏坐標(biāo)到紋理空間的映射坐標(biāo);·intvertex_face_visual(POINT3Dvertex[4],CVCS*vcs)判斷由世界坐標(biāo)點(diǎn)表示的空間四邊形在給定視坐標(biāo)系中的可見性;·voiddraw_face(FACE*face,CLight*light,CVCS*vcs)在指定的屏平面上以給定的光照模型繪制表面;·voiddraw(CLight*light,CVCS*vcs)在指定的屏平面上以給定的光照模型繪制三維立方體;·voidOCS_to_WCS(POINT3D&po,POINT3D&pw)求本體坐標(biāo)系中的點(diǎn)在世界坐標(biāo)系的映射坐標(biāo)。第三十二頁,共三十六頁,編輯于2023年,星期六(6)

結(jié)構(gòu)LIGHT與類CLight:結(jié)構(gòu)LIGHT定義了點(diǎn)光源的空間位置和亮度:typedefstruct{ POINT3Dlocation; COLORREFilluminance;} LIGHT;類Clight定義了點(diǎn)光源數(shù)組、點(diǎn)光源增刪函數(shù)及光亮度計(jì)算函數(shù)。主要成員變量有:·COLORREFIa環(huán)境光亮度;·LIGHT*light_array[16]點(diǎn)光源指針數(shù)組;·intlight_cnt點(diǎn)光源數(shù)目。第三十三頁,共三十六頁,編輯于2023年,星期六主要成員函數(shù)有:·intadd_light(POINT3D&location,COLORREFilluminance)增加點(diǎn)光源;·intdel_light(intlight_id)刪除點(diǎn)光源;·voiddraw_light(CVCS*vcs)在給定的屏平面上根據(jù)光源位置與亮度繪制點(diǎn)光

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論