【正文】
基于OpenGL的臺球游戲設計摘要 2Abstract. 2引言 4第一章 開發(fā)平臺的選擇和OpenGL 6 開發(fā)平臺介紹 6 在開發(fā)平臺下選擇的開發(fā)工具 6 Visual C++ 6 OpenGL基礎的介紹 7 VC++與OpenGL關系 8第二章 OpenGL 3D游戲開發(fā)技術 9 OpenGL 工作流程 9 OpenGL 圖形操作步驟 10 OpenGL 游戲開發(fā)需要的技術 11 11 光照 11 材質(zhì) 12 光照與材質(zhì)的關系 13 紋理映射 13第三章 臺球游戲具體實現(xiàn) 15 在MFC中設計游戲顯示的框架 15 在MFC中使用OpenGL設計臺球游戲 15 使用OpenGL具體實現(xiàn)臺球桌面 16 使用OpenGL具體實現(xiàn)臺球球體 21 使用OpenGL具體實現(xiàn)繪制方向箭頭 25 利用OpenGL實現(xiàn)變換 27 數(shù)學模型實現(xiàn) 29 運動模型實現(xiàn) 31第四章 總結與展望 39 研究內(nèi)容總結 39 存在的不足和未來的工作 39參考文獻 39致 謝 40基于OpenGL的臺球游戲設計摘要:OpenGL被認為是高性能圖形和交互式視景處理的標準,可以制作出更順暢的3D效果。由大量功能強大的圖形函數(shù)組成,集成了所有曲面造型、圖形變換、光照、材質(zhì)、紋理、像素操作、融合、反選擇、霧化等復雜的計算機圖形學算法。VC++是一種語法比較靈活和編譯后的可執(zhí)行程序的運行速度快,面向?qū)ο蟮母呒壵Z言,特別適合利用OpenGL的圖形引擎開發(fā)圖形處理軟件。該游戲主要完成了游戲的界面的設計,以及游戲中球體運動,碰撞的實現(xiàn)。該游戲的一個重要特點是利用了OpenGL和VC++制作,通過模型建立、光源設置、材質(zhì)設置、紋理處理、碰撞檢測、運動模擬等將真實世界中的臺球游戲在計算機中再現(xiàn)。本游戲在VC++,主要利用OpenGL三維圖形處理的功能,以及編程思路和實現(xiàn)過程。關鍵詞:openGL;三維圖形;3D游戲;碰撞檢測;OpenGLbased billiards game designAbstract: OpenGL is the high performance graphics and interactive view disposal standard, posed of lots of graphics functions with strong function, integrating many puter graphics algorithms such as graphics transformation, lighting, texture mapping, pixel operation, blending, antialiasing, fog, etc. VC++ is an objectoriented language with flexible grammar and fast execution speed after piling, so it adapts to OpenGL engine graphics processing software.Therefore, this game design major to plete user interface digsn,as well as the ball movement and implementation of collision in the game,The game design is an important characteristic of the use of OpenGL and VC + +.Through model establishment , scene disposal, collision detection,lighting and metarial setup,texture mapping motion simulation, etc, the billiard in the real world reappears in the puter. The software development platform is VC + + paper discusses the functions and features of OpenGL as well as the procedure and implementation of 3D billiards. Key Words: OpenGL;threedimension graphics;3D games;collision detection引言最近幾年,隨著計算機信息技術的高速發(fā)展,以及計算機圖形學的發(fā)展使得三維表現(xiàn)技術得以形成,這些三維表現(xiàn)技術能夠再現(xiàn)三維世界中的物體,能夠用三維物體來表示復雜的信息,從而便于和計算機直接交流。這種技術已經(jīng)把人和計算機的力量以一種直覺而自然的方式加以統(tǒng)一,這種革命性的變化無疑將極大地提高人們的工作效率。計算機三維動畫技術被廣泛的應用于許多方面。利用計算機和三維動畫軟件的強大功能,通過三維建模、材質(zhì)及動畫的設定可以將真實世界中的各種對象在計算機中真實再現(xiàn)。不僅僅是機械工程師可以從二維平面圖中得以解放直接進入了三維世界,從而很快得到自己設計的三維機械零件模型。醫(yī)生可以從病人的三維掃描圖像分析病人的病狀。軍事指揮員可以面對用三維圖形技術生成的戰(zhàn)場地形,指揮具有真實感的三維飛機、軍艦、坦克向目標開進并分析戰(zhàn)斗方案的效果。而三維游戲也是其中應用之一。電腦游戲,一個對廣大的計算機應用者毫不陌生的名詞,相信每一個電腦愛好者對其都有不同程度的喜愛,尤其是面對一些圖形處理非常精美的三維游戲來說,多少會有一些愛不釋手吧!記得以前我對網(wǎng)絡游戲非常的陌生,直到有一次,在仔細觀察同學正起勁的玩著當時最流行的三維網(wǎng)絡游戲時,我看傻了眼!那精美的畫面,細致的表情,流暢的動作,以及眩目的人物造型等等都讓我目瞪口呆,再看到同學那副癡迷的神態(tài),我不能不感嘆這電腦游戲的魅力!所以后來在選畢業(yè)設計的課題時,我選擇了這個三維臺球游戲的軟件開發(fā)的課題!本論文的主要研究的內(nèi)容是如何利用OpenGL開發(fā)出一個微型游戲。因此,所要解決的主要問題有四個:一是如何用數(shù)學方法建立所需三維場景的幾何描述,并將它們輸入到計算機中,這部分工作由三維實體造型系統(tǒng)完成。場景的幾何描述直接影響了圖形的復雜性和圖形繪制的計算耗費,選擇合理的有效的數(shù)據(jù)表示和輸入手段是極其重要。二是將三維幾何描述轉(zhuǎn)換為二維透視,通過場景透視換來完成。三是確定場景中的所有可視面,這需要使用隱藏面消除算法將視域之外或其他物體的遮擋不可見面消去。四是計算機場景中所有可見面的顏色,這就需要根據(jù)基于光學物理的光照明模型計算機可見面投射到觀察者眼中的光亮度的大小和色彩組成,并將它換成適合圖形設備的顏色值,從而確定投影畫面上每一象素的顏色,最終生成圖形。鑒于時間、技術、設備、資源等各方面的原因,我現(xiàn)在還無法開發(fā)出一個完整的網(wǎng)絡游戲,只能研究其最基礎的部分,在這里我們將開發(fā)出一個小型的三維臺球游戲。借此掌握三維游戲制作的基礎部分。在這基礎部分實現(xiàn)的過程中主要完成的是對三維圖形技術的應用,比如對臺球的光照球體的渲染和紋理映射的實現(xiàn)。以及如何利用跟蹤算法來跟蹤臺球,利用跟蹤算法求得球運動速度和方向,最終確定球是落袋還是靜止在桌面上某一個位置。所以該課題的應用前景十分廣闊,不但鍛煉了三維圖形技術的實現(xiàn)能力,還提高了編程的總體思路,大大提高編程水平。更何況中國市場的匱乏,這無疑是一塊很大的蛋糕!最后,從這個臺球游戲中,我可以學到如何設計三維圖形,利用OpenGL的三維圖形技術和VC++的面向?qū)ο蟮某绦蛟O計的優(yōu)勢,來實現(xiàn)臺球游戲的桌面和球體的繪制。第一章 開發(fā)平臺的選擇和OpenGL 開發(fā)平臺介紹 考慮到本系統(tǒng)性能要求和現(xiàn)有的條件,我們選擇了Windows XP 中文版本作為開發(fā)、測試和運行的平臺。我們?yōu)槭裁匆x擇Windows XP中文版作為開發(fā)平臺,主要是由于XP操作系統(tǒng)是以圖形用戶界面的主要優(yōu)勢的操作系統(tǒng)。那圖形用戶界面是由窗口(Windows)、圖標(Icons)、菜單(Menus)、指示器(PointingDevice)四位一體,形成桌面(Desktop)。這種方式能同時顯示不同種類的信息,使用戶可在幾個工作環(huán)境中切換而不丟失幾個工作之間的聯(lián)系,用戶可通過下拉式菜單方便執(zhí)行控制型和對話型任務,引入圖標、按鈕和滾動桿技術,大大減少鍵盤輸入,對不精于打字的用戶無疑提高了交互效率。圖形用戶界面與命令語言界面相比的優(yōu)點:與以符號為主的字符命令語言界面相比,以視覺感知為主的圖形界面具有一定的文化和語言獨立性,并可提高視覺目標搜索的效率。在符號階段,用戶面對的只有單一文本符號,雖然離不開視覺的參與,但視覺信息是非本質(zhì)的,本質(zhì)的東西只有符號和概念。在視覺階段,借助計算機圖形學技術使人機交互能夠大量利用顏色、形狀等視覺信息,發(fā)揮人的形象感知和形象思維的潛能,提高了信息傳遞的效率。 在開發(fā)平臺下選擇的開發(fā)工具 在Windows開發(fā)開發(fā)平臺下,圖形用戶界面使得用戶與程序的交流變的更加密切。不再是一種從鍵盤到程序,再到顯示器的單向信息流動,使得用戶可以和顯示器對象直接交互。圖形用戶界面使得用戶不再需要花費長的時間學習如何使用極速那就或掌握新程序。Windows讓這這一切成真,因為一個應用程序占據(jù)一個窗口,所有窗口都有相同的基本外觀和感覺。開發(fā)游戲系統(tǒng)的工具有一些。目前世界上流行的主流開發(fā)工具有:Visual C++ 、JAVA。經(jīng)過認真分析其優(yōu)缺點,結合我們選擇的OpenGL硬件接口,我們選擇了Microsoft 公司推出的Visual C++ 作為3D游戲的開發(fā)工具。 Visual C++ Visual C++ 提供了一個可視化編程的集成開發(fā)環(huán)境:Visual Studio(又名Developer Studio)。Developer Studio是一個通用的應用程序集成開發(fā)環(huán)境,它不僅支持Visual C++,還支持Visual Basic,Visual J++,Visual InterDev等Microsoft系列開發(fā)工具。Developer Studio包含了一個文本編輯器、資源編輯器、工程編譯工具、一個增量連接器、源代碼瀏覽器、集成調(diào)試工具,以及一套聯(lián)機文檔。使用Developer Studio,可以完成創(chuàng)建、調(diào)試、修改應用程序等的各種操作。Mircrosoft Visual C++現(xiàn)在的版本比較多,比如有Mircrosoft Visual C++ ,Mircrosoft Visual C++ 2005,Mircrosoft Visual C++2008等等。Visual C++ 公司推出的Micosoft Visual Studio ,同時也是一種C/C++編譯程序,內(nèi)含一個集成開發(fā)環(huán)境,簡稱IDE(Intergrated Development Environment)。IDE包括的內(nèi)容相當多,如程序編譯器、資源編譯器、編程向?qū)?、類向?qū)Ш瓦B接器。齊全的功能使Visual C++ 。 OpenGL基礎的介紹(1)采用OpenGL 的原因如下:①單純用VC++很難設計出高性能的三維圖形工具,目前圖形開發(fā)包DirectX適于游戲開發(fā)以及加強多媒體性能等方面,而OpenGL則可以制作出更順暢的3D效果,且OpenGL性能優(yōu)于DirectX;②由于Microsoft公司在Win95以后推出的Windows操作系統(tǒng)中提供OpenGL圖形標準,尤其是OpenGL三維圖形加速卡和微機圖形工作站的推出,人們可以在微機上實現(xiàn)三維圖形應用,如CAD設計。仿真模擬、三維游戲等,從而更有機會、更方便地使用OpenGL來建立自己的三維圖形世界;③OpenGL可以與VC++緊密接口,便于實現(xiàn)有關計算和圖形算法,可保證算法的正確性和可靠性。(2)采用OpenGL 的介紹:OpenGL實際上是一種圖形與硬件的接口。它包括一百多個圖形函數(shù),開發(fā)者可以用這些函數(shù)來簡歷三維模型和進行三維實時交互。與其他圖形程序程序接口不同,OpenGL提供了十分清晰明了的圖形函數(shù),因此初級的程序設計員也能利用OpenGL的圖形處理能力很快的設計出三維圖形以及三維交互軟件。OpenGL強有力的圖形函數(shù)不要求開發(fā)者把三維物體模型的數(shù)據(jù)寫成固定的數(shù)據(jù)格式。這樣開發(fā)者不但可以直接使用自己的數(shù)據(jù),而且可以利用其他不同格式的數(shù)據(jù)源,這種靈活性極大的節(jié)約了開發(fā)者的時間,提高軟件開發(fā)效益。長期以來從事三維圖形開發(fā)的技術人員都不得不在自己的程序中編寫矩陣變換、外部設備訪問等函數(shù),為調(diào)用制這些與自己的軟件開發(fā)目標關系不十分密切的函數(shù)費腦筋,而OpenGL正是提供了一種直觀的編程環(huán)境,它提供了一系列函數(shù)大大地簡化了三維圖形程序。例如:OpenGL提供一系列的三維圖形單元供開發(fā)者調(diào)用;OpenGL提供了一系列的圖形變換函數(shù);OpenGL提供了一系列的外部設備訪問函數(shù),是開發(fā)者可以方便的訪問鼠標、鍵盤、空間球、數(shù)據(jù)手套等。這種直觀的三維圖形開發(fā)環(huán)境體現(xiàn)了OpenGL的開發(fā)優(yōu),這也是許多三維圖形開發(fā)者熱衷于OpenGL的緣由所在。OpenGL經(jīng)過了對GL的進一步發(fā)展,實現(xiàn)二維和三維的高級圖形技術,在性能上表現(xiàn)得異常優(yōu)越,它包括建模、變換、光線處理、動畫以及更先進的能力,如條紋映射、物體運動模糊等。OpenGL的這些能力為實現(xiàn)逼真的三維渲染效果、簡歷交互的三維景觀提供了優(yōu)秀的軟件開發(fā)工具。 VC++與OpenGL關系現(xiàn)在流行的主流操作系統(tǒng)是Windows 操作系統(tǒng),Windows操作系統(tǒng)主流的編譯環(huán)境Visual Studio,Broland C++ Builder,DevC++等,它們都是支持OpenGL的。但這里我們選