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