【正文】
nGL 開(kāi)發(fā)庫(kù)文件到項(xiàng)目 在編譯程序的時(shí)候選擇 Project|Setting 菜單,在 Link 標(biāo)簽中的 Object/library modules 編輯框中輸入“ , , , ”。選擇 File|New菜單項(xiàng),新建一個(gè)基于對(duì)話(huà)框的項(xiàng)目文件 MyDlgOpenGL; ② 修改對(duì)話(huà)框模 板。 ( 6)文檔模板 文檔模板類(lèi)一般不需要派生。 ( 4)文檔 文檔類(lèi)從 CDocument 類(lèi)派生,用來(lái)管理數(shù)據(jù),數(shù)據(jù)的變化、存取都是通過(guò)文檔實(shí)現(xiàn)的。 ( 2)邊框窗口 如果是 SDI 應(yīng)用程序,從 CFrameWnd 類(lèi)派生邊框窗口類(lèi),邊框窗口的客戶(hù)子窗口 (MDIClient)直接包含視窗口;如果是 MDI 應(yīng)用程序,從 CMDIFrameWnd 類(lèi)派生邊框窗口類(lèi),邊框窗口的客戶(hù)子窗口 (MDIClient)直接包含文檔邊框窗口。主框架窗口包含了視窗口、工具條和狀態(tài)欄。 對(duì) COM/OLE 特性的封裝 OLE 建立在 COM 模型之上,由于支持 OLE 的應(yīng)用程序必須實(shí)現(xiàn)一系列的接口( Interface),因而相當(dāng)繁瑣。 對(duì)應(yīng)用程序概念的封裝 使用 SDK 編寫(xiě) Windows 應(yīng)用程序時(shí),總要定義窗口過(guò)程,登記 Windows Class,創(chuàng)建窗口,等等。 MFC 類(lèi)庫(kù)是 C++類(lèi)庫(kù)。 MFC 框架 一. MFC 概述 MFC 是一個(gè)編程框架 MFC (Microsoft Foundation Class Library) 中的各種類(lèi)結(jié)合起來(lái)構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來(lái)建立 Windows 下的應(yīng)用程序,這是一種相對(duì)SDK 來(lái)說(shuō)更為簡(jiǎn)單的方法。 (9)三維形體的實(shí)時(shí)顯示和圖形的并行處理。 (5)隱藏面和隱藏線(xiàn)的消除以及具有光照顏色效果的真是圖形顯示。計(jì)算機(jī)圖形學(xué)設(shè)計(jì)的算法非常豐富,大致可分為以下幾類(lèi): (1)基本圖元素的生成算 法,如生成直線(xiàn)、圓弧、二次曲線(xiàn)、區(qū)域填色、反走樣等。他 的主要應(yīng)用范圍包括計(jì)算機(jī)輔助設(shè)計(jì)與制造、作戰(zhàn)指揮和軍事訓(xùn)練、計(jì)算機(jī)動(dòng)畫(huà)與藝術(shù)以及地形地貌和自然資源圖等。進(jìn)入 20 世紀(jì) 80 年代以來(lái),我國(guó)在計(jì)算機(jī)圖形學(xué)領(lǐng)域無(wú)論在理論研究還是在實(shí)際應(yīng)用方面都取得了可喜的成果。最后,經(jīng)過(guò)完整處理的片斷就被繪制到適當(dāng)?shù)木彌_區(qū),最終成為一個(gè)像素并到達(dá)它的最終目的地。在紋理內(nèi)存中為每個(gè)片斷生成一個(gè)紋理單元(texel,也就是紋理元素 ),并應(yīng)用到這個(gè)片斷上。 在數(shù)據(jù)實(shí)際存儲(chǔ)到幀緩沖區(qū)之前, 將要執(zhí)行一系列的操作。 光棚化就是把幾何數(shù)據(jù)和像素?cái)?shù)據(jù)轉(zhuǎn)換為片斷 (fragment)的過(guò)程。這樣,就可以很方便地在他們之間進(jìn)行切換。 OpenGL有一種特殊的像素復(fù)制操作,可以把數(shù)據(jù)從幀緩沖區(qū)復(fù)制到幀緩沖區(qū)的其他位置或紋理內(nèi)存中。接著,這些數(shù)據(jù)被縮放、偏移,并根據(jù) 一副像素圖進(jìn)行處理。取決于多邊形模式,多邊形可能被畫(huà)成點(diǎn)的形式或者直線(xiàn)的形式。在有些情況下,接下來(lái)需要執(zhí)行一個(gè)稱(chēng)為透視除法 (perspective division)的步驟。如果使用了紋理,這個(gè)階段還將生成并變換紋理坐標(biāo)。 顯示 列表 計(jì) 算 程 序 Ev a l ua to rs 逐 頂點(diǎn) 操作與 圖元 裝配 光柵化 逐 片斷操作 幀緩存 像 素 操作 紋理裝配 頂點(diǎn)數(shù)據(jù) 像 素?cái)?shù)據(jù) 9 基于頂點(diǎn)的操作 對(duì)于頂點(diǎn)數(shù)據(jù),接下來(lái)的一個(gè)步驟就是 基于頂點(diǎn)的操作 ,就是把頂點(diǎn)變換為圖元。參數(shù)化曲線(xiàn)和表面最初可能是通過(guò)控制點(diǎn)以及成為基函數(shù) (Basic function)的多項(xiàng)式函數(shù)進(jìn)行描述的。 下面,詳細(xì)地介紹 OpenGL渲染管線(xiàn)的一些關(guān)鍵階段: 顯示列表 任何數(shù)據(jù),不管它所描述的是幾何圖形還是像素, 都可以保存在顯示列表 (display list)中,供當(dāng)前或以后使用。圖 1顯示了這些順序,雖然并沒(méi)有嚴(yán)格規(guī)定 OpenGL必須采用這樣的實(shí)現(xiàn),但它提供了一個(gè)可靠的指南,可以預(yù)測(cè) OpenGL將以什么樣的順序來(lái)執(zhí)行 這些操作。最后,開(kāi)放源碼社區(qū)(尤其是 Mesa 項(xiàng)目)一直致力于為任何類(lèi)型的計(jì)算機(jī)(無(wú)論它們是否使用微軟的操作系統(tǒng))提供 Open GL 支持。它仍然具有一定的生命力,但是 Silicon Graphics 已經(jīng)不再以任何讓微軟不悅的方式推廣 Open GL,因而它存在較高的風(fēng)險(xiǎn)。 20xx 年 8 月初 Khronos 工作組在 Siggraph 20xx 大會(huì)上宣布了 OpenGL 圖形接口規(guī)范, shader 語(yǔ)言和其他新增功能將再次未來(lái)開(kāi)放 3D 接口發(fā)展指明方向。 OpenGL OpenGL ARB的正式擴(kuò)展規(guī)格繪制語(yǔ)言 “OpenGL Shading Language” 。 1997 年, Windows 95 下 3D游戲的大量涌現(xiàn),游戲開(kāi)發(fā)公司迫切需要一個(gè)功能強(qiáng)大、兼容性好的 3D 圖形接口,而當(dāng)時(shí)微軟公司自己的 3D 圖形接口 DirectX 功能卻是很糟糕。 Sutherland、HewlettPackard、 IBM、 Intel、 Matrox、 NVIDIA、 SGI和 Sun Microsystems( Microsoft曾是創(chuàng)立成員之一,但已于 20xx年 3月 退出)。但是,由于許可證的原因,它只聲稱(chēng)是一個(gè)“非常相似”的 API。 OpenGL常用于 CAD、 虛擬實(shí)境 、科學(xué)可視化程序和 電子游戲開(kāi)發(fā) 。針對(duì) FFT計(jì)算量大的缺陷, Jason L. MiteheU[10]提出了一種基于 GPU的傅里葉域多邊帶 (multi. band Fourier domain)方法,模擬了廣袤海洋場(chǎng)景。海面波浪的運(yùn)動(dòng)具有一定的物理規(guī)律,因此基于物理模型的海洋模擬是近年來(lái)海面模擬的一個(gè)研究熱點(diǎn)。該函數(shù)是能夠在空間中產(chǎn)生連續(xù)噪聲的函數(shù)。另一個(gè)不足之處就是因?yàn)榱黧w表面的網(wǎng)格點(diǎn)只能在其起始位置附近運(yùn)動(dòng),無(wú)法模擬波浪破碎和水沫效果。 Jensen[2]、 Tessendorf[3]、 Fredrik Limsater[4]分別詳細(xì)描述了利用海洋統(tǒng)計(jì)和經(jīng)驗(yàn)?zāi)P?,通過(guò) FFT合成一個(gè)類(lèi)似海浪譜分布的高度場(chǎng)模擬海浪的方 法,此方法的模擬的海面場(chǎng)景是目前參數(shù)法當(dāng)中真實(shí)感是最強(qiáng)的,也是當(dāng)今運(yùn)用最廣泛的水面建模方法。由表面中的每一個(gè)粒子沿著其靜止位置點(diǎn)作圓周運(yùn) 動(dòng)。早期水波模擬方法主要采用參數(shù)建模方式,通過(guò)直接構(gòu)造參數(shù)曲面來(lái)表示水面。 李蘇軍采用 GerstnerRankine模型,引入概率統(tǒng)計(jì)思想,借鑒了映射網(wǎng)格的方法,采用視點(diǎn)相關(guān)的圓形網(wǎng)格,代替?zhèn)鹘y(tǒng)的普通網(wǎng)格完成水面高度場(chǎng)的采樣,且能支持實(shí)時(shí)動(dòng)態(tài)連續(xù)分辨率水波表現(xiàn)的建模和繪制。為將水波和浪花 逼真地結(jié)合在一起,作者運(yùn)用色彩融和的技術(shù)來(lái)完成浪花的顯示?;谖锢淼姆椒ㄖ饕譃閮煞N:一種是基于網(wǎng)格的歐拉法,它從研究流體所占據(jù)的空間中各個(gè)固定點(diǎn)處的運(yùn)動(dòng)著手,分析運(yùn)動(dòng)流體所充滿(mǎn)的空間中每一個(gè)固定點(diǎn)上流體的速度、壓強(qiáng)、密度等參數(shù)隨時(shí)間的變化情況,以及研究由某一空間點(diǎn)轉(zhuǎn)到另一空間點(diǎn)時(shí)這些參數(shù)的變化情況;另一種方法是基于粒子方法的拉格朗日方法,研究流體中某一指定微團(tuán)的速度、壓強(qiáng)、密度等描述流體運(yùn)動(dòng)的參數(shù)隨時(shí)間的變化情況,以及研究由 一個(gè)流體微團(tuán)轉(zhuǎn)到其他流體微團(tuán)時(shí)參數(shù)的變化情況,以此建立整個(gè)流體的運(yùn)動(dòng)仿真。 (3) 水流形體的繪制 ,水的形狀是不確定 ,易于改變 ,一方面 ,若把水的形狀看成一個(gè)高度場(chǎng)表示的曲面 ,則無(wú)法表現(xiàn)水流的破碎以及卷曲的波紋 ,另一方面若把水看成由許多水粒子組成的點(diǎn)集 ,又面臨如何進(jìn)行可視 化的問(wèn)題 。 這類(lèi)方法直接構(gòu)造參數(shù)曲面來(lái)代表水表面 ,參數(shù)曲面由波 形函數(shù)表示 ,也就是說(shuō)這一類(lèi)方法通過(guò)直接模擬波屬性來(lái)得到水波的水波圖像 ,可以模擬雨點(diǎn)造成的水波 ,微風(fēng)造成的漣漪和紊亂的短波峰 ,但是解決不了水流的形體的破碎問(wèn)題 . 第二類(lèi) : 基于物理模型的方法 。究其原因,主要流體的形體多變,沒(méi)有一個(gè)固定的形狀,很難用一個(gè)通用的方程來(lái)表示;物理模型極其復(fù)雜,其波動(dòng)是受到重力、摩擦力、粘滯力等各種力的綜合影響;力學(xué)方程的數(shù)學(xué)表達(dá)式多為偏微分方程,求解難度大,計(jì)算復(fù)雜;具有復(fù)雜的光學(xué)效果,如水的透明度、折射和反射等。一片逼真自然的水面可以很好的增加場(chǎng)景的逼真感和沉浸感。 3 第一章 緒論 OpenGL 是由 Silicon Graphics 公司推出的一種高性能圖形開(kāi)發(fā)軟件工具包,該工具包括大約 120 條不同的指令,它獨(dú)立于硬件,獨(dú)立于窗口系統(tǒng),由于具有這個(gè)優(yōu)越的特性,因此可以運(yùn)行于各種操作系統(tǒng),而且可以在各個(gè)平臺(tái)之間進(jìn)行移植,并且能在網(wǎng)絡(luò)環(huán)境下以客戶(hù) /服務(wù)器模式工作,已經(jīng)成為專(zhuān)業(yè)圖形處理、科學(xué)計(jì)算等高端應(yīng)用領(lǐng)域的標(biāo)準(zhǔn)圖形庫(kù),因此 Microsoft, SGI, IBM 等在計(jì)算機(jī)市場(chǎng)中占主導(dǎo)地位的大公司都用它作為自己的標(biāo)準(zhǔn)圖形庫(kù) 課題提出的背景 通過(guò)計(jì)算機(jī)盡可能逼真的模擬現(xiàn)實(shí)世 界,一直是計(jì)算機(jī)圖形學(xué),特別是虛擬現(xiàn)實(shí)技術(shù)的一個(gè)研究熱點(diǎn)。 2 Abstract: In recent years, the impersonation of natural landscape has been a puter graphics the most challenging problems, one of the hills, waters and natural scenery, in puter games, advertising film, the area has an extensive use of natural scenery as an important part of a simulation of the water, water was increasingly a cause for concern. This paper with animated simulations water through the achievement of its introduction, and be sure to understand and the reference, the water, based on the modeling opengl mfc based on the water, the impersonation and the key technologies, such as water physical model, the equation of motion, physical properties, etc, the more knowledge on the corrugated, experiments prove this method to process of animation, the effect of water content timely and accurate sexual Keywords: the corrugated。 關(guān)鍵詞 : 水波模擬 。 本論文通過(guò)對(duì)國(guó)內(nèi)外水波動(dòng)畫(huà)模擬的相關(guān)成就的介紹,與對(duì)其的一定了解和文獻(xiàn)的參考,基本實(shí)現(xiàn)了水波的模擬,基于 opengl+MFC建?;A(chǔ)展開(kāi)探討,對(duì)水波的計(jì)算模擬原理和關(guān)鍵技術(shù)進(jìn)行闡 述,例如水波的物理模型,運(yùn)動(dòng)方程,物理特性等,結(jié)合以上知識(shí)進(jìn)行水波模擬, 實(shí)驗(yàn)證明該方法實(shí)現(xiàn)簡(jiǎn)單,模擬的水波動(dòng)畫(huà)效果滿(mǎn)足實(shí)時(shí)性和逼真性的要求。 運(yùn)動(dòng)方程 。 equation of motion。 水波模擬不僅是一個(gè)很具有挑戰(zhàn)性的研究課題,更具有很好的商業(yè)價(jià)值,它在航海仿真、虛擬城市游覽、視頻游戲、數(shù)字電影和數(shù)字廣告中 都有大量應(yīng)用。 課題的意義 從一杯純凈的清水到潺潺的小溪,從微波起伏的湖面到巨浪滔天的海洋,這些日常生活中看似十分平常的東西,在計(jì) 算機(jī)圖形學(xué)和虛擬現(xiàn)實(shí)技術(shù)研究者的眼中看來(lái),與模擬地形、雨雪等其他自然景觀相比較,模擬流體更具有挑戰(zhàn)性。 近年來(lái) ,計(jì)算機(jī)圖形學(xué)的發(fā)展突飛猛進(jìn)并有著極為廣泛的用途 . 計(jì)算機(jī)圖形學(xué)的發(fā)展使得三維表現(xiàn)技術(shù)得以形成 ,所謂計(jì)算機(jī)三維圖形就是指將用數(shù)據(jù)描述的三維空間通過(guò)計(jì)算轉(zhuǎn)換成三維圖像并顯示或打印出來(lái)的技術(shù) ,OPENGL 就是支持計(jì)算機(jī)三維圖形的一個(gè)程序庫(kù) . 在計(jì)算機(jī)圖形學(xué)中 ,模擬水流動(dòng)畫(huà)是一個(gè)很有意義的課題 . 國(guó)內(nèi)外研究現(xiàn)狀 四大類(lèi)水波模擬的方法 目前水波動(dòng)畫(huà)的模擬方法大體上可以分為四大類(lèi) : 第一類(lèi) : 基于波的分析方法 。 (2) 光與影的處理 ,水是透明的 ,它的視覺(jué)印象很大程度上取決于周?chē)沫h(huán)境 ,另外水對(duì)光的折射作用使水中的光影效果復(fù)雜多變 。隨著計(jì)算機(jī)處理能力的增強(qiáng)和計(jì)算流體動(dòng)力學(xué)的廣泛應(yīng)用,以及對(duì)模擬結(jié)果真實(shí)感的追求,近年來(lái)國(guó)內(nèi)外對(duì)流體模擬的研究都轉(zhuǎn)向了基于物理的流體模擬,因?yàn)榛谖锢矸椒ㄋ玫降脑囼?yàn)結(jié)果,相對(duì)于基于參數(shù)建模方 法所得到的結(jié)果,不僅真實(shí)感要好上許多,而且可以實(shí)現(xiàn)流體表面的自由流動(dòng)和劇烈變形效果,如流體飛濺,表面破碎,以及泡沫等,這是后者所難以企及的。并且采用以 POINT圖元為基本粒子的粒子系統(tǒng),對(duì)水花效果進(jìn)行實(shí)時(shí)的模擬。 王勝正在以往水波模型研究的基礎(chǔ)上,根 據(jù)海浪的形態(tài),充分考慮各種隨機(jī)參數(shù),建立一個(gè)高性能的基于統(tǒng)計(jì)模型與 FFT的波浪生成方法,模擬船舶在海浪中航行的各種特殊效果。 國(guó)外水波動(dòng)畫(huà)模擬相關(guān)研究 技術(shù)發(fā)達(dá)的歐美國(guó)家很早就開(kāi)展了對(duì)海洋