freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl的3d游戲設(shè)計(jì)畢業(yè)論文(更新版)

  

【正文】 (void**)amp。 消聲等因素:由于耳朵的形狀和朝向,肯定會(huì)使來(lái)自聽者前方的聲音比后方的要強(qiáng)。優(yōu)良的 3D音效,往往可以給游戲帶來(lái)意想不到的效果。然后把整個(gè)文件一股腦讀到一個(gè) buffer 緩存區(qū)去。 利用以上這些信息,就可以編制相應(yīng)算法,定位到需要的地方。 //三角形的的個(gè)數(shù) 頭文件 文件主體 包含 ID 號(hào),版本號(hào),和有關(guān)模型的各種數(shù)據(jù)的起始地址等 有關(guān)文件的各種數(shù)據(jù),如頂點(diǎn)數(shù)據(jù)、紋理數(shù)據(jù)、法向量數(shù)據(jù)等。 //紋理的高度 int skinwidth。這兩種模型都由兩部分組成,如圖 45: 24 圖 45 模型的組成 MD2 模型的紋理是隔離出來(lái)的,不包括在 MD2 文件內(nèi)部。 OpenGL 雖然提供了一些已經(jīng)生成的 3D 圓柱體、球體和立方體等實(shí)體模型的輔助函數(shù),但是這些函數(shù)都無(wú)法滿足建立復(fù)雜 3D 實(shí)體的需要,因此 OpenGL 的建模功能并不是十分強(qiáng)大。 //模型狀態(tài) velocity = CVector(, , )。 //求取敵人到玩家的矢量 ()。 CVector diff = playerposition position。敵人的狀態(tài)是 AIState_t 類來(lái)定義的: enum AIState_t { AI_UNCARING, // 敵人不會(huì)恐懼也不會(huì)關(guān)心玩家 AI_SCARED, // 敵人會(huì)恐懼并且逃避 AI_DEAD //敵人死亡 }。如果在玩家視野邊緣處存在一些物體,雖然他們距離視點(diǎn)很遠(yuǎn),但是其 z 距離很小,那么,本應(yīng)被霧包圍的物體就變得非常清楚。為了開啟云霧效果,我們首先要啟用它。// 爆炸紋理 CExplosion *explosion。僅需要通過(guò)兩次平面的前后判斷就可以確定空間的先后順序,算法威力可見一斑。要得到包圍盒的尺寸,需要把包圍對(duì)象在頂點(diǎn)方向進(jìn)行投影操作,找出方向上的投影區(qū)間,計(jì)算出投影區(qū)間的尺寸,該尺寸就是包圍盒的尺寸。這個(gè)特點(diǎn)使得 OBB 可以根據(jù)碰撞對(duì)象外形的不同來(lái)盡可能得包圍對(duì)象。 中心點(diǎn) m和長(zhǎng)、寬、高 a, b, c 分別為,如式 42 ( 42) 式 42 中心點(diǎn) m 和長(zhǎng)、寬、高 a, b, c 包圍球算法 在進(jìn)行碰撞檢測(cè)時(shí),包圍球是 3D 幾何體的最小外接球。 碰撞檢測(cè)算法主要有三種:基于包圍盒的碰撞檢測(cè)算法,基于距離計(jì)算的碰撞檢測(cè)算法,基于維諾圖的碰撞檢測(cè)算法。 Y量的變化就像是我們的身體高度的變化(游戲中角色的站立或臥倒)。實(shí)際上,在場(chǎng)景漫游時(shí)可以通過(guò)設(shè)置視點(diǎn)以及觀察方向來(lái)實(shí)現(xiàn),需要用到 OpenGL 輔助函數(shù)庫(kù)中的 gluLookat()函數(shù),通過(guò)設(shè)置相應(yīng)參數(shù)實(shí)現(xiàn)場(chǎng)景漫游。 15 4 關(guān)鍵技術(shù) 攝像機(jī)漫游 在 3D 游戲中,用戶通??梢酝ㄟ^(guò)鼠標(biāo)或者鍵盤操作角色在場(chǎng)景中移動(dòng),進(jìn)而完成各種有意思、富有挑戰(zhàn)的任務(wù),大道場(chǎng)景漫游的效果。它們之間的關(guān)系如圖 31: 圖 31 游戲引擎組成 在實(shí)際運(yùn)行中,引擎通過(guò)設(shè)備輸入子系統(tǒng)接受輸入,并向游戲邏輯子系統(tǒng)發(fā)送相應(yīng)的消息,然后游戲邏輯子系統(tǒng)處理相應(yīng)的消息,并執(zhí)行相應(yīng)的一個(gè)游戲循環(huán) 。在視體外的任何物體都不能被觀察者看到,因此就不能對(duì)其進(jìn)行變換。 縮放變換:通過(guò)將頂點(diǎn)與一個(gè)縮放因子相乘的方法來(lái)縮放頂點(diǎn)。 3D 程序是使用的 4 4 的矩陣對(duì)向量, 這樣主要方便進(jìn)行移動(dòng)變換。 光柵化:光柵化就是把幾何數(shù)據(jù)和像素?cái)?shù)據(jù)轉(zhuǎn)換為片段的過(guò)程。 求值器:所有的幾何圖元最終都要根據(jù)定點(diǎn)來(lái)描述。 紋理映射( Texture Mapping)。它具有以下功能: 圖 22 OpenGL功能 建模: OpenGL 圖形庫(kù)除了提供基本的點(diǎn)、線、多邊形的繪制函數(shù)外,還提供了復(fù)雜的三維物體(球、錐、多面體、茶壺等)以及復(fù)雜曲線和曲面繪制函數(shù)。 可擴(kuò)展性: OpenGL 是低級(jí)的圖形 APi,它具有充分的可 擴(kuò)展性。 OpenGl特點(diǎn) OpenGL 作為一個(gè)性能卓越的圖形應(yīng)用編程接口( API),適用于廣泛的計(jì)算機(jī)環(huán)境,并已成為目前三 維圖形開發(fā)標(biāo)準(zhǔn),是從事三維圖形開發(fā)工作的技術(shù)人員所必須掌握的開發(fā)工具。 OpenGL(全寫 Open Graphics Library)是個(gè)定義了一個(gè)跨編程語(yǔ)言、跨平臺(tái)的編程接口的規(guī)格 ,它用于三維圖象(二維的亦可)。 場(chǎng)景管理模塊:主要提供了對(duì) 3D 游戲引擎中的場(chǎng)景的管理與維護(hù)功能,采用多叉樹的方法對(duì)總場(chǎng)景進(jìn)行管理與分割的功能?,F(xiàn)階段,由于 Linux 操作系統(tǒng)免費(fèi)開放源碼,以及在程序開發(fā)方面有很大的 3 優(yōu)勢(shì),所以在開發(fā)領(lǐng)域 Linux 平臺(tái)被大力推廣,基于 Linux 的各種應(yīng)用軟件也層出不窮,因此跨平臺(tái) 3D游戲開發(fā)也越來(lái)越受重視。而國(guó)內(nèi),因?yàn)槲幕颍蠖鄶?shù)的家長(zhǎng)害怕自己的孩子沉迷于游戲,而荒廢正業(yè),這使得 3D 游戲的開發(fā)處在一個(gè)艱難的階段,因?yàn)橛薪^大多數(shù)的家長(zhǎng)還是希望自己的孩子能遠(yuǎn)離這些東西。 系統(tǒng)設(shè)計(jì)的基本內(nèi)容:本文以基于游戲擁有虛擬性這一特性來(lái)設(shè)計(jì)開發(fā)。 OpenGL 是一個(gè)與硬件無(wú)關(guān)的軟件接口,它具有非常良好的移植性,而且它是行業(yè)領(lǐng)域中最為廣泛接納的 2D/3D 圖形 API,這些特點(diǎn)都使它深受大部分 3D游戲開發(fā)者的喜愛。 關(guān)鍵詞:游戲 , 基于 OpengGL,三維 , 射擊游戲 Design The 3D Game Based on OpenGL Abstract: Along with the progress of the times,fine characters from simple color swatch built the picture to the millions of polygons, the game is to show us more and more real and the wide the development of the game in recent years, the old 2D games39。 基于 OPENGL 的 3D 游戲設(shè)計(jì) 摘要:隨著時(shí)代進(jìn)步,從簡(jiǎn)單的色塊堆砌而成的畫面到數(shù)百萬(wàn)多邊形組成的精細(xì)人物,游戲正展示給我們?cè)絹?lái)越真實(shí)且廣闊的世界。 本論文為利用 OpengGL 進(jìn)行 3D射擊游戲的設(shè)計(jì)與開發(fā),采用碰撞檢測(cè)、粒子系統(tǒng)、MD2 模型繪制、 3D 聲效等技術(shù),最終實(shí)現(xiàn)一個(gè)射擊游戲。 OpenGL 作為一個(gè)專業(yè)的圖形程序接口,配合 C++等開發(fā)語(yǔ)言,對(duì)于 3D 游戲的設(shè)計(jì)與實(shí)現(xiàn)是非常占優(yōu)勢(shì)的。 根據(jù) 3D 游戲設(shè)計(jì)的實(shí)際需求,以及基于 OpenGL 的特點(diǎn)上,此次應(yīng)用 C++與 OPenGL來(lái)設(shè)計(jì)開發(fā) 3D游戲。 從社會(huì)的支持上來(lái)看,對(duì)于 3D游戲的發(fā)展,由于 文化區(qū)域的不同,社會(huì)上對(duì)這不是采取一種打壓的態(tài)度,這使得游戲的開發(fā)有一個(gè)很安穩(wěn)的環(huán)境。 目前,國(guó)內(nèi)的 3D游戲開發(fā)技術(shù)正處于趕超國(guó)外的發(fā)展時(shí)期,從游戲的創(chuàng)意、游戲的策劃、游戲的研究開發(fā)與游戲的實(shí)現(xiàn),再到到游戲的運(yùn)營(yíng)與維護(hù),都需要大量的知識(shí) 值得學(xué)習(xí)。 系統(tǒng)支持模塊:主要提供了包括定時(shí)器管理、窗口 管理等功能在內(nèi),操作系統(tǒng)功能使用的封裝以及引擎在當(dāng)前操作系統(tǒng)下驅(qū)動(dòng)的功能。利用VC++ 與 OpenGL 結(jié)合,進(jìn)行游戲制作,模型則是采用的 MD2模型。 OpenGL 適用于從普通 PC到大型圖形工作站等各種計(jì)算機(jī),并可與各種主流操作系統(tǒng)兼容,從而成為占據(jù)主導(dǎo)地位的跨平臺(tái)專業(yè) 3D圖形應(yīng)用開發(fā)包,進(jìn)而也成為該領(lǐng)域的行業(yè)標(biāo)準(zhǔn)。 可靠性和可移植性:利用 OpenGL 技術(shù)開發(fā)的應(yīng)用圖形軟件與硬件無(wú)關(guān),只要硬件支持 OpenGL API 標(biāo)準(zhǔn)就可以了,也就是說(shuō), OpenGL 應(yīng)用可以運(yùn)行在支持 OpenGL API 標(biāo)準(zhǔn)的任何硬件上。 OpenGL功能 OpenGL 是一個(gè)獨(dú)立于操作系用和窗口系統(tǒng)開放的三維圖形軟件包,以 OpenGL 為基礎(chǔ)開發(fā)的應(yīng)用程序可以十分方便地在各種平臺(tái)間進(jìn)行移植; OpenGL 還可以與 VC++緊密接口,便于實(shí)現(xiàn)圖形的有關(guān)計(jì)算和圖形算法,可保證算法的正確性和可靠性; OpenGL使用簡(jiǎn)便,效率高。場(chǎng)景( Scene)中物體最終反映到人 眼的顏色是光的紅綠藍(lán)分量與材質(zhì)紅綠藍(lán)分量的反射率相乘后形成的顏色。它的操作順序如圖 22: 圖 23 OpenGL渲染流程 顯示列表:任何數(shù)據(jù),不管它所描述的是幾何圖形還是像素,都可以保存在顯示列表中,供當(dāng)前貨以后使用。 紋理裝配: OpenGL 應(yīng)用程 序可以在幾何物體上應(yīng)用紋理圖形,使它們看上去更為逼真。 矩陣 ,在 數(shù)學(xué) 中的定義是,縱橫排列的二維數(shù)值列陣。旋轉(zhuǎn)變換所形成的連續(xù)組合變換的思路是合并矩陣,將幾個(gè)變換矩陣合并 成一個(gè)變換矩陣,先繞 z軸轉(zhuǎn),再繞 y軸轉(zhuǎn),最后繞 x 軸旋轉(zhuǎn)。解決這一問(wèn)題通常是創(chuàng)建一個(gè)視體(視體 其就是 3D 空間中相對(duì)于觀察者為可見的一個(gè)區(qū)域)。 對(duì)于一個(gè)簡(jiǎn)單的游戲來(lái)說(shuō),它的游戲引擎可以分成輸入設(shè)備、游戲邏輯、場(chǎng)景數(shù)據(jù)庫(kù)、音頻子系統(tǒng)、場(chǎng)景物體對(duì)象、紋理處理、物理子系統(tǒng)、粒子系統(tǒng)。 游戲框架結(jié)構(gòu)如圖 3圖 3圖 35和圖 36: 其它 紋理 音樂(lè) 聲音 三維模型 物理 游戲數(shù)據(jù)庫(kù) 輸入 輸入 游戲邏輯 游戲邏輯 輸入 游戲邏輯 13 圖 33 游戲工程結(jié)構(gòu) 圖 34 source files內(nèi)含結(jié)構(gòu) 14 圖 35 header files內(nèi)含文件結(jié)構(gòu) 圖 36 external dependencies內(nèi)含文件結(jié)構(gòu) 下面,這里主要說(shuō)明一下,此游戲中所采用的關(guān)鍵技術(shù)。 在游戲中,需要通過(guò)鍵盤上的方向鍵實(shí)現(xiàn)先后左右的移動(dòng),通過(guò)鼠標(biāo)的拖拽實(shí)現(xiàn)旋轉(zhuǎn)視圖以從多角度觀察地物。 X量的變化就像是我們?cè)趫?chǎng)景中的橫向移動(dòng)。比如說(shuō)人物在場(chǎng)景中可以平滑移動(dòng),遇到一定高度內(nèi)的臺(tái)階可以自動(dòng)上去,而過(guò)高的臺(tái)階則把人擋住,遇到斜率較小的斜坡可以上去,斜率過(guò)大則把人擋住,人物到場(chǎng)景邊緣而不會(huì)掉出場(chǎng)景等。要計(jì)算包圍盒的中心點(diǎn),需要得到兩個(gè)重要的點(diǎn) Pmin=[ Xmin, Ymin,Zmin], Pmax=[Xmax, Ymax, Zmax],得到兩點(diǎn)后可以計(jì)算中心點(diǎn)。 OBB 包圍盒方向的任意性是它區(qū)別與其他兩個(gè)包圍盒的最大特點(diǎn)。 利用上述公式得出矩陣的特征向量,并將其進(jìn)行單位化,由于矩陣 C 的特征向量具有相互垂直的特點(diǎn),所以矩陣 C 是 OBB 的方向軸。這樣,整個(gè)空間離人由近到遠(yuǎn)的順序就可以確定了: CBA。 // 火箭爆炸,則為 true CTexture *explosionTex。 OpenGL 內(nèi)置的云霧是依靠每個(gè)像素與云霧的顏色相混合而實(shí)現(xiàn)的,其混合因子的設(shè)置則是根據(jù)其視點(diǎn)的距離、霧的密度以及當(dāng)前所選的云霧的模式。最大的缺點(diǎn)是為了每個(gè)霧的頂點(diǎn)所進(jìn)行的霧顏色的計(jì)算,此計(jì)算是根據(jù)頂點(diǎn)與垂直于視線的平面之間 z 距離進(jìn)行的。敵人 AI實(shí)際上是根據(jù)狀態(tài)值(也就是狀態(tài)機(jī))來(lái)確定敵人在游戲中的行為的。如圖 43: 圖 43 ogro智能示意圖 敵人 ogro 狀態(tài)是由 COgroEnemy::OnProcessAI()完成的。 //求取敵人到玩家的矢量 = player。 //面朝任意方向行走 if ((rand() % 4) != 0) //75%s 時(shí)間為閑置狀態(tài) { modelState = MODEL_IDLE。當(dāng)玩家距離其有 23 125 個(gè)場(chǎng)景單 位時(shí),它就會(huì)進(jìn)入逃跑,如圖 44: 圖 44 sod智能示意圖圖 3D 模型 在實(shí)際的 3D 圖形程序,構(gòu)建 3D 模型一般來(lái)說(shuō)都比較復(fù)雜。由于模型的文件格式相 對(duì)比較簡(jiǎn)單,容易實(shí)現(xiàn),所以應(yīng)用很廣,是一種經(jīng)典的動(dòng)畫模型格式,在其它一些三維圖形程序中也逐漸得到了應(yīng)用。 // md2 的版本 . int skinheight。 // 文件 包含的幀數(shù) int numTris。 // 文件結(jié)尾的偏移量 } md2_t。先用二進(jìn)制方式打開一個(gè)文件 “ ” 。向游戲中加入 3D音效,可以極大的增強(qiáng)游戲的真實(shí)感,使玩家沉浸其中。耳間時(shí)間差:對(duì)于一個(gè)位于聽者左側(cè)的聲源,聲音到達(dá)左耳比到達(dá)右耳的聲音要早,通常為 1 毫秒。那么會(huì)自動(dòng)改變向前矢量。 //聽者向前指向 D3DVECTOR vOrientTop。如果想要一個(gè)地形起伏比較大的地形,那么設(shè)置一個(gè)較大的高度比例值即可。 void FilterHeightBand(float *band,int stride,int count,float filter)。 // 霧天空顏色 CTerrain()。 30 5 運(yùn)行游戲 在游戲完成載入之后,
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1