




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 5/5使用MFC實現(xiàn)真實感圖形繪制第九章 使用MFC實現(xiàn)真實感圖形繪制 真實感圖形繪制是計算機圖形學(xué)的一個重要組成部分。它綜合利用數(shù)學(xué)、物理學(xué)、計算機科學(xué)和其他學(xué)科知識在計算機圖形設(shè)備上生成象彩色照片那樣的真實感圖形。要用計算機圖形設(shè)備繪制場景的真實感圖形,就必須首先在計算機中建立該場景的模型,用這個模型來反映場景的特點和屬性。這一模型通常是由一批幾何數(shù)據(jù)及數(shù)據(jù)之間的拓撲關(guān)系來表示的,這就是造型技術(shù),它是真實感圖形繪制技術(shù)的重要組成部分。有了三維場景的模型,并給定了觀察點和觀察方向以后,就可以通過幾何變換和投影變換在屏幕上顯示該三維場景的二維圖像。為了使二維圖像具有立體感,并盡可能逼真地顯示
2、出該物體在現(xiàn)實世界中被觀察到的形象,就需要運用適當(dāng)?shù)墓庹漳P?,來模擬場景在現(xiàn)實世界中受到各種光源照射時的效果,這就是真實感圖形的畫面繪制技術(shù),也就是真實感圖形的生成技術(shù)。 用計算機在圖形設(shè)備上生成連續(xù)色調(diào)的真實感圖形大致可以分為以下四步: 第一步,用數(shù)學(xué)方法建立所需三維場景的幾何描述,并將它們輸入至計算機。這部分工作可由三維立體造型或曲面造型系統(tǒng)來完成。場景的幾何描述直接影響了圖形的復(fù)雜性和圖形繪制的計算耗費,因此選擇合理的、有效的數(shù)據(jù)表示和輸入手段是非常重要的。 第二步,將三維幾何描述轉(zhuǎn)換為二維投影圖。這可以通過對場景的投影變換來完成。 第三步,確定場景中的所有可見面,這需要使用隱藏面消除算
3、法將被其他物體遮擋的不可見面消去。 第四步,計算場景中可見面的顏色,嚴(yán)格地說,就是根據(jù)基于光學(xué)物理的光照明模型計算可見面投射到觀察者眼中的光亮度大小和色彩分量,并將它轉(zhuǎn)換成適合圖形設(shè)備的顏色值,從而確定投影畫面上每一象素的顏色,最終生成圖形。 前三步的相關(guān)知識在前面已經(jīng)進行了介紹,本章將重點介紹如何通過MFC編程的方式,利用光照模型計算場景中可見面的光亮度和顏色,并繪制最終的真實感圖形。實際上,現(xiàn)在OpenGL和DirectX等圖形函數(shù)庫提供了很多支持真實感圖形繪制的函數(shù),使用它們可以更輕松的完成真實感圖形繪制。本章仍采用最基本的MFC編程方式來實現(xiàn)真實感圖形繪制,是為了讓讀者可以更好的體會和
4、理解真實感圖形繪制中用到的光照模型等相關(guān)知識的原理。 9.1 演示程序使用的場景造型 場景造型又叫幾何造型,它是在計算機中建立的用于描述現(xiàn)實場景的幾何模型,它是真實感圖形生成的一個重要部分。在真實感圖形中,一個景物的場景造型體現(xiàn)了該景物的幾何特征和景物屬性。場景造型的復(fù)雜程度直接決定了最終繪制的真實感圖形的效果。 本章的重點在于光照模型的實現(xiàn),所以本章中的演示程序沒有創(chuàng)建復(fù)雜場景,只使用了一種景物球體。演示程序根據(jù)球體的函數(shù)方程,計算球體表面的參數(shù)點坐標(biāo),然后按這些參數(shù)點對球體表面作三角剖分,最后利用光照模型對剖分得到的三角面片計算光照并進行繪制。 9.1.1 球體造型 球體表面的函數(shù)方程式如
5、下: x?x0?rcosucoswy?y0?rcosucoswz?z0?rsinuu?2,2 w?0,?2其中,坐標(biāo)(x0,y0,z0)為球心坐標(biāo),而坐標(biāo)(x,y,z)為球面上的參數(shù)點坐標(biāo),r為半徑,u、w分別為緯度和經(jīng)度參數(shù)變量。 我們創(chuàng)建一個MFC項目RealityDemo,該應(yīng)用程序作為本章中的演示程序。在該應(yīng)用程序中添加一個類CObject3D,其基類為CObject。該類的實例對應(yīng)場景中的一個景物。為了定義景物,需要定義如下結(jié)構(gòu)體: /三維空間中點 struct Point3D double x; double y; double z; ; /三角面 struct TriSurfac
6、e int no;/所屬景物序號 Point3D p1,p2,p3;/三角面的頂點 double xn,yn,zn;/三角面的法向量 ; /景物光照參數(shù) struct Param double krd;/景物表面紅色光漫反射率 double kgd;/景物表面綠色光漫反射率 double kbd;/景物表面藍色光漫反射率 double kra;/景物表面紅色光泛光反射率 double kga;/景物表面綠色光泛光反射率 double kba;/景物表面藍色光泛光反射率 double krs;/景物表面紅色光鏡面反射率 double kgs;/景物表面綠色光鏡面反射率 double kbs;/景
7、物表面藍光鏡面反射率 int n;/景物表面鏡面高光指數(shù) ; Point3D定義了三維空間中的一點。而TriSurface則定義了一個三角面片。結(jié)構(gòu)體Param中的各成員變量指定了景物的光照參數(shù),其具體含義將會在介紹光照模型時說明。 我們在CObject3D類中添加如下的成員變量和成員函數(shù): public: /球體表面三角剖分后得到的三角面列表 CArray m_SurfaceList; Param m_Param;/球體表面光照參數(shù) Point3D p3d101101;/球體表面參數(shù)點數(shù)組 int countx,county;/生成的參數(shù)點在經(jīng)度和緯度上的數(shù)量 double bx,by,bz
8、;/圓心坐標(biāo) public: /創(chuàng)建指定球心和半徑的球體 void CreateBall(double x0, double y0, double z0, double r); void SetSurfaceList();/對球體表面進行三角剖分 void SetFVector(TriSurface* surface);/設(shè)置三角面的法向量 void SetParam(Param param);/設(shè)置球體表面光照參數(shù) 9.1.2 生成球體表面參數(shù)點 成員函數(shù)CreateBall用于生成球體表面的參數(shù)點,并按這些參數(shù)點對球體表面進行三角剖分,將剖分生成的三角面片存入到列表m_SurfaceLis
9、t中,其中三角剖分由成員函數(shù)SetSurfaceList完成。CreateBall函數(shù)的實現(xiàn)代碼如下: /創(chuàng)建一個球體 void CObject3D:CreateBall(double x0, double y0, double z0, double r) int i=0,j; double pi = 3.1415926; bx = x0;by = y0;bz = z0; for (double u = -pi/2;u countx = i; county = j; SetSurfaceList(); 其中u和v的步長決定了產(chǎn)生的球體表面的參數(shù)點的數(shù)量。countx和county需要在類的構(gòu)造
10、函數(shù)中設(shè)置初始值為0。程序中將生成的球體表面參數(shù)點存入到p3d數(shù)組中,這樣做是為了方便對球體表面進行三角剖分。 9.1.3 球體表面三角剖分 對球體表面進行三角剖分采用如下方法。設(shè)球體表面上一個參數(shù)點為Pij,則其經(jīng)度上的下一個參數(shù)點為pi+1j,而緯度上的下一個參數(shù)點為pij+1,再加上該點在對角線方向上的下一個參數(shù)點pi+1j+1,這四個點構(gòu)成的區(qū)域可以剖分成兩個三角面片。第一個三角面片的頂點為pij,pi+1j,pi+1j+1,第二個三角面片的頂點為pij,pij+1,pi+1j+1。在生成三角面片的同時需要計算該三角面片的法向量,因為在計算光照的時候需要用到此法向量。平面上兩個向量的叉
11、乘積即為平面的法向量,其方向性滿足右手定則,計算的時候需要注意法向量的方向應(yīng)該是指向球外的。執(zhí)行三角剖分的函數(shù)SetSurfaceList和計算法向量的函數(shù)SetFVector實現(xiàn)代碼如下: /球體表面進行三角剖分 void CObject3D:SetSurfaceList() for (int i=0;ip2.x - surface-p1.x; yu = surface-p2.y - surface-p1.y; zu = surface-p2.z - surface-p1.z; xv = surface-p3.x - surface-p1.x; yv = surface-p3.y - sur
12、face-p1.y; zv = surface-p3.z - surface-p1.z; d = sqrt(yu * zv - yv * zu) * (yu * zv - yv * zu) + (zu * xv - zv * xu) * (zu * xv - zv * xu) + (xu * yv - xv * yu) * (xu * yv - xv * yu); surface-xn = (yu * zv - yv * zu) / d; surface-yn = (zu * xv - zv * xu) / d; surface-zn = (xu * yv - xv * yu) / d; 在計
13、算三角面片的法向量時計算的是單位法向量。在CObject3D類中還有一個函數(shù)SetParam用于設(shè)置景物的光照參數(shù),其實現(xiàn)非常簡單,代碼如下: /設(shè)置光照參數(shù) void CObject3D:SetParam(Param param) m_Param.kra = param.kra; m_Param.kga = param.kga; m_Param.kba = param.kba; m_Param.krd = param.krd; m_Param.kgd = param.kgd; m_Param.kbd = param.kbd; m_Param.krs = param.krs; m_Param.
14、kgs = param.kgs; m_Param.kbs = param.kbs; m_Param.n = param.n; 我們創(chuàng)建景物時,首先需要實例化CObject3D對象,然后調(diào)用CreateBall函數(shù)創(chuàng)建球體景物,其實質(zhì)是生成該球體的三角剖分面片列表,然后設(shè)置該球體的光照參數(shù)。此時就可以使用光照模型來計算球體表面的光照并進行繪制了。同樣的,我們也可以創(chuàng)建其它形狀的景物,其過程大體如下:獲得景物表面的參數(shù)點,然后進行三角剖分,計算三角面片的法向量,最后設(shè)置景物的光照參數(shù)。 9.2 局部光照模型 為了模擬光源照射在景物表面所產(chǎn)生的光照效果,就需要用到光照模型,光照模型是生成真實感圖形的基礎(chǔ)。光照模型是根據(jù)光學(xué)物理的有關(guān)定律,計算景物表面上任一點投向觀察者眼中的光亮度的大小和色彩組成的公式。光照模型分為局部光照模型和整體光照模型。 局部光照模型僅考慮光源直接照射在景物表面所產(chǎ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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康管理與社區(qū)建設(shè)的結(jié)合試題及答案
- 提高效率稅務(wù)師考試試題及答案
- 探討藥師考試的趨勢與未來展望試題及答案
- 鄉(xiāng)村全科執(zhí)業(yè)考試重點試題及答案揭秘
- 教師資格考試能力模型構(gòu)建試題及答案
- 數(shù)據(jù)結(jié)構(gòu)核心概念試題及答案
- 流浪記測試題及答案
- 漂浮救生考試題及答案
- 健康管理師考試領(lǐng)域的定義與對象試題及答案
- 系統(tǒng)規(guī)劃與管理師考試貼近實際的反饋機制與調(diào)整策略的創(chuàng)新探討試題及答案
- 預(yù)防性侵害和性騷擾
- 肛管癌的護理查房
- 急診科護士的急救護理的評估與改進方法
- 妊娠期肝病課件
- 老年衰弱護理課件
- 中建工期施工進度計劃管理專項培訓(xùn)
- 以舞育人:舞蹈教學(xué)的德育功能及其實現(xiàn)
- 植物標(biāo)本的采集和制作
- 愚公移山英文 -中國故事英文版課件
- 酒店住宿水單模板1
- 保利幕墻工程技術(shù)標(biāo)述標(biāo)課件
評論
0/150
提交評論