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

正文內(nèi)容

基于opengl的3d游戲設(shè)計(jì)畢業(yè)論文-文庫(kù)吧資料

2025-03-06 10:03本頁(yè)面
  

【正文】 進(jìn)行投影操作,找出方向上的投影區(qū)間,計(jì)算出投影區(qū)間的尺寸,該尺寸就是包圍盒的尺寸。那么協(xié)方差矩陣元素 Cjk 的計(jì)算如公式 式 44 包 圍盒的中心位置 m 那么 OBB 的中心位置 m計(jì)算如公式 : 式 45 協(xié)方差矩陣元素 Cjk 其中,公式 qi=q— m,ri=ri— m 和 pi=pi— m都是 3*1 向量。尺寸是計(jì)算位置和方向得到的,中心位置是用均值和協(xié)方差矩陣來(lái)計(jì)算的。 尋找最適合的方向,以及確定這個(gè)方向上 OBB 包圍盒的最小尺寸,是構(gòu)造 OBB 包圍盒的關(guān)鍵。這個(gè)特點(diǎn)使得 OBB 可以根據(jù)碰撞對(duì)象外形的不同來(lái)盡可能得包圍對(duì)象。在 AABB 算法的基礎(chǔ)上,包圍球的球心及半徑的計(jì)算滿足公式 : ( 43) 式 43 球心 m 和半徑 R 18 沿任意方向包圍盒 OBB(Onented Bounding Box)算法 在 AABB、包圍球、 OBB 算法中, OBB是包含這個(gè) 3D 物體并且相對(duì)于坐標(biāo)軸方向任意的平行六面碰撞體,它是最接近 3D幾何體的平行六面體。其球心的計(jì)算方法與 AABB 的計(jì)算方法相同。包圍球在旋轉(zhuǎn)上不同于 AABB,它不需要跟隨 3D 模型的旋轉(zhuǎn)而旋轉(zhuǎn)。 中心點(diǎn) m和長(zhǎng)、寬、高 a, b, c 分別為,如式 42 ( 42) 式 42 中心點(diǎn) m 和長(zhǎng)、寬、高 a, b, c 包圍球算法 在進(jìn)行碰撞檢測(cè)時(shí),包圍球是 3D 幾何體的最小外接球。 AABB 內(nèi)的任意一點(diǎn) V(x, y, z)都需要滿足公式 : ( 41) 式 41 AABB內(nèi)的任一點(diǎn) V(x, y, z)滿足條件 公式中 Xmax 指模型中各個(gè)點(diǎn)在 x軸方向的最大值、 Xmin 指模型中各個(gè)點(diǎn)在 x 軸方向的最小值; Ymax 指模型中各個(gè)點(diǎn)在 Y 軸方向的最大值, Ymin 指模型中各個(gè)點(diǎn)在 Y 軸方向的最小值; Zmax 指模型中各個(gè)點(diǎn)在 z 軸方向的最大值, Zmin 指模型中各個(gè)點(diǎn)在 z軸方向的最小值。 AABB 需要跟著幾何體的旋轉(zhuǎn)而一起旋轉(zhuǎn),這樣的操作,會(huì)使得計(jì)算量相對(duì)增加,從而使得算法效率下降。在構(gòu)造軸平行包圍盒 AABB 的時(shí)候,需要 AABB 包圍盒在方向上具有一致性,這就使得構(gòu)造時(shí)要沿著物體局部坐標(biāo)系的軸向來(lái)構(gòu)造包圍盒。 碰撞檢測(cè)算法主要有三種:基于包圍盒的碰撞檢測(cè)算法,基于距離計(jì)算的碰撞檢測(cè)算法,基于維諾圖的碰撞檢測(cè)算法。 圖 41反映了攝像機(jī)類相關(guān): 圖 41 攝像機(jī)類的組成 碰撞檢測(cè) 我們知道,幾乎所有的 3D 游戲都離不開(kāi)碰撞檢測(cè) —— 無(wú)論是各物體之間的碰撞檢測(cè),還是物體與場(chǎng)景之間的碰撞檢測(cè)。 目標(biāo)點(diǎn)的變化,相當(dāng)于我們?nèi)苏局粍?dòng)時(shí),頭或者手中的相機(jī)上下左右移動(dòng)的效果。 目標(biāo)點(diǎn),視點(diǎn)方向也分別是三維向量。 Y量的變化就像是我們的身體高度的變化(游戲中角色的站立或臥倒)。 gluLooKAt(視點(diǎn),目標(biāo)點(diǎn),視點(diǎn)方向) 其中視點(diǎn)(觀察點(diǎn))是一個(gè)三維坐標(biāo)向量。 在計(jì)算機(jī)看到圖形時(shí),我們的觀察點(diǎn)為( 0, 0, 0),也就是為什么我們總要把圖形Z 坐標(biāo)設(shè)為小于 0 的原因( Z 大于 0 是圖形在屏幕外面)。 該函數(shù)的 9個(gè)參數(shù)定義了一個(gè)視圖矩陣,并使用該矩陣與當(dāng)前矩陣相乘。實(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)景漫游。在游戲中,由攝像機(jī)來(lái)成為人在游戲中的視點(diǎn),通過(guò)攝像機(jī)發(fā)生變化,從而引起視角的變化,這樣就模擬了游戲角色所觀察到的景物的變化。系統(tǒng)中,視點(diǎn)即就是人的“化身”。 而在三維場(chǎng)景漫游中,觀察各可以通過(guò)鼠標(biāo)或鍵盤來(lái)控制視點(diǎn)的位置、視向和參考方向。 15 4 關(guān)鍵技術(shù) 攝像機(jī)漫游 在 3D 游戲中,用戶通??梢酝ㄟ^(guò)鼠標(biāo)或者鍵盤操作角色在場(chǎng)景中移動(dòng),進(jìn)而完成各種有意思、富有挑戰(zhàn)的任務(wù),大道場(chǎng)景漫游的效果。在組成上則是采用游戲引擎 +游戲資源的設(shè)計(jì)方法來(lái)設(shè)計(jì)并實(shí)現(xiàn)游戲。一個(gè) 3D 游戲本質(zhì)上是一個(gè)持續(xù)不斷的while 循環(huán),它執(zhí)行邏輯并在屏幕上不間斷的繪制更新圖像,如圖 32: 圖 32 一個(gè)游戲的組成 本游戲設(shè)計(jì) 在本次設(shè)計(jì)中所展示的是一個(gè) 3D 射擊類游戲,要求玩家在限時(shí)內(nèi),在場(chǎng)景沖找出所有敵人并將其消滅。 游戲的結(jié)構(gòu) 對(duì)于游戲的開(kāi)發(fā),需要有一個(gè)游戲結(jié)構(gòu)的設(shè)計(jì),可以開(kāi)發(fā)更多的組件以實(shí)現(xiàn)特殊的 輸入設(shè)備 游戲邏輯 粒子系統(tǒng) 物理子系統(tǒng) 場(chǎng)景物體對(duì)象 紋理處理 場(chǎng)景數(shù)據(jù)庫(kù) 音頻子系統(tǒng) 12 性能和功能,來(lái)保障游戲軟件的平穩(wěn)運(yùn)行。它們之間的關(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ì)于一個(gè)游戲的開(kāi)發(fā)來(lái)說(shuō),游戲資源反映了一個(gè)游戲所能帶給人們的感官刺激,而游戲引擎的優(yōu)良程度則是這款游戲可玩性的一個(gè)重要指標(biāo)。游戲資源包括聲音 、 圖象 、 動(dòng)畫(huà)等部分,游戲 =引擎(程序代碼) +資源(聲音 、 動(dòng)畫(huà) 、 圖象等)。 游戲 引擎是一個(gè)為運(yùn)行某一類游戲的機(jī)器設(shè)計(jì)的能夠被機(jī)器識(shí)別的代碼(指令)集合。在視體外的任何物體都不能被觀察者看到,因此就不能對(duì)其進(jìn)行變換。特別在 z值為 0 時(shí),錯(cuò)誤就會(huì)發(fā)生;當(dāng) z軸為負(fù)數(shù)時(shí),物體處在觀察者后面,就無(wú)需進(jìn)行變換。 透視投影,則 是用中心投影法將形體投射到投影面上,從而獲得的一種較為接近視覺(jué)效果的單面投影圖 。 9 平行投影,即就是 在一束 平行光線 照射下形成的 投影 。 縮放變換:通過(guò)將頂點(diǎn)與一個(gè)縮放因子相乘的方法來(lái)縮放頂點(diǎn)。要讓一個(gè)點(diǎn)繞某一坐標(biāo)軸旋轉(zhuǎn),就用此坐標(biāo)軸旋轉(zhuǎn)矩陣乘以這個(gè)點(diǎn)。 旋轉(zhuǎn)變換:在 x軸旋轉(zhuǎn)時(shí),其 x 軸坐標(biāo)表示不變。 平移變換:可以被認(rèn)為是把一個(gè)點(diǎn)從 3D 空間中的一個(gè)坐標(biāo)位置移動(dòng)到另一個(gè)坐標(biāo)位置。 3D 程序是使用的 4 4 的矩陣對(duì)向量, 這樣主要方便進(jìn)行移動(dòng)變換。 3D 程序是使用 4D 向量? ?1000 zyx ,這樣主要方便進(jìn)行移動(dòng)變換,第四維通常只取 “ 1” 。 3D 圖形學(xué)相關(guān) 向量與矩陣 向量 ,在 數(shù)學(xué) 中的定義是,既有大小又有方向的量。這些操作可能會(huì)修改甚至丟棄這些片段。 光柵化:光柵化就是把幾何數(shù)據(jù)和像素?cái)?shù)據(jù)轉(zhuǎn)換為片段的過(guò)程。處理結(jié)果先進(jìn)行截取,然后或者寫(xiě)入到紋理內(nèi)存,或者發(fā)送到光柵化階段。 像素操作:首先,來(lái)自系統(tǒng)內(nèi)存的一個(gè)數(shù)組中的像素進(jìn)行解包,從多種格式之一的解包為適當(dāng)數(shù)量的成分。 圖元裝配:圖元裝配的一個(gè)主要部分就是裁剪,它的任務(wù)是消除那些位于一個(gè)半空 片段操作 評(píng)估 紋理裝配 基于定點(diǎn)的操作和圖元裝配 緩沖幀區(qū) 像素操作 光柵化 顯示列表 像素?cái)?shù)據(jù) 頂點(diǎn)數(shù)據(jù) 8 間之外的那部分幾何圖元,而這個(gè)班空間是有一個(gè)平面所定義的。 求值器:所有的幾何圖元最終都要根據(jù)定點(diǎn)來(lái)描述。 OpenGL渲染 實(shí)現(xiàn)絕大部分 OpenGL 操作順序都十分相似,即就是 OpenGL 渲染管線的一系列相關(guān)的處理階段。 雙緩存動(dòng)畫(huà)( Double Buffering)雙緩存即前臺(tái)緩存和后臺(tái)緩存,簡(jiǎn)言之,后臺(tái)緩存計(jì)算場(chǎng)景、生成畫(huà)面,前臺(tái)緩存顯 示后臺(tái)緩存已畫(huà)好的畫(huà)面。 功能 建模 變換 顏色模式設(shè)置 光照和材質(zhì)設(shè)置 紋理映射 雙緩存動(dòng)畫(huà) 位圖顯示 7 位圖顯示和圖象增強(qiáng)圖象功能除了基本的拷貝和像素讀寫(xiě)外,還提供融合( Blending)、抗鋸齒(反走樣)( Antialiasing)和霧( fog)的特殊圖象效果處理。 紋理映射( Texture Mapping)。材質(zhì)是用光反射率來(lái)表示。 顏色模式設(shè)置: OpenGL 顏色模式有兩種,即 RGBA 模式和顏色索引( Color Index)?;咀儞Q有平移、旋轉(zhuǎn)、縮放、鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投 影兩種變換。它具有以下功能: 圖 22 OpenGL功能 建模: OpenGL 圖形庫(kù)除了提供基本的點(diǎn)、線、多邊形的繪制函數(shù)外,還提供了復(fù)雜的三維物體(球、錐、多面體、茶壺等)以及復(fù)雜曲線和曲面繪制函數(shù)。此外, OpenGL 封裝了有關(guān)基本硬件信息,使開(kāi)發(fā)人員無(wú)須針對(duì)具體的硬件進(jìn)行專門的設(shè)計(jì)。 易用性: OpenGL 具有良好的結(jié)構(gòu)、直觀的設(shè)計(jì)和邏輯命令。利用 OpenGL 擴(kuò)展, OpenGL 實(shí)現(xiàn)者可以添加新的處理算法。 可擴(kuò)展性: OpenGL 是低級(jí)的圖形 APi,它具有充分的可 擴(kuò)展性。 穩(wěn)定性:在任何平臺(tái)上都能執(zhí)行 OpenGL,而且它高版本兼容低版本,用來(lái)保證已經(jīng)開(kāi)發(fā)完成的應(yīng)用程序不會(huì)失效。 行業(yè)標(biāo)準(zhǔn): OpenGL ARB 作為獨(dú)立的 聯(lián)合委員會(huì),制定了 OpenGL 的規(guī)范文檔。它具有以下特點(diǎn) ,如圖 21: 圖 21 OpenGL特點(diǎn) 圖形質(zhì)量好、性能高:無(wú)論是三維動(dòng)畫(huà)、 CAD,還是可視化計(jì)算機(jī)、視覺(jué)模擬等,都利用了 OpenGL 高性能、高圖形質(zhì)量的特點(diǎn)。 OpenGl特點(diǎn) OpenGL 作為一個(gè)性能卓越的圖形應(yīng)用編程接口( API),適用于廣泛的計(jì)算機(jī)環(huán)境,并已成為目前三 維圖形開(kāi)發(fā)標(biāo)準(zhǔn),是從事三維圖形開(kāi)發(fā)工作的技術(shù)人員所必須掌握的開(kāi)發(fā)工具。 OpenGL 是個(gè)專業(yè)的圖形程序接口,是一個(gè)功能強(qiáng)大,調(diào)用方便的底層圖形庫(kù)。自微軟公司推出 Visual C++后,隨著其版本的更新?lián)Q代,Visual C++已經(jīng)成為專業(yè)程序員開(kāi)發(fā)軟件的首選工具。 Visual C++ ,是微軟推出的一款 C++編譯器,簡(jiǎn)稱 VC 或者 ,是一款將“高級(jí)語(yǔ)言(編程序言)”翻譯為“低級(jí)語(yǔ)言(機(jī)器語(yǔ)言)”的程序。 OpenGL(全寫(xiě) Open Graphics Library)是個(gè)定義了一個(gè)跨編程語(yǔ)言、跨平臺(tái)的編程接口的規(guī)格 ,它用于三維圖象(二維的亦可)。 本文主要是研究 3D 射擊游戲的制作,設(shè)計(jì)開(kāi)發(fā)一個(gè)很簡(jiǎn)單的 3D 射擊類游戲。當(dāng)開(kāi)發(fā)大型 3D 游戲時(shí),這種方式的工作量與困難程度會(huì)達(dá)到一個(gè)令人難以想象的地步。 數(shù)學(xué)庫(kù):主要提供了對(duì) 3D游戲游戲引擎所需要的數(shù)學(xué)庫(kù)的支持,包括三角函數(shù)計(jì)算、四元數(shù)、矩陣、向量等; 音頻處理模塊:主要提供了對(duì)音頻文件相關(guān)支持,如音頻效果的處理、音頻文件的播放等。 場(chǎng)景管理模塊:主要提供了對(duì) 3D 游戲引擎中的場(chǎng)景的管理與維護(hù)功能,采用多叉樹(shù)的方法對(duì)總場(chǎng)景進(jìn)行管理與分割的功能。 3D游戲設(shè)計(jì)主要的功能模塊有: 3D引擎模塊:除了對(duì)游戲提供異常處理、日志系統(tǒng)、資源管理等功能,主要是對(duì)游戲提供 3D圖形的效果渲染以及 3D圖形的顯示。在游戲的設(shè)計(jì)制作階段,3D 游戲世界里所有物體都是以模型的方式建立的,游戲中的立體感和光影效果都是通過(guò)對(duì)不同的光源和光照的特點(diǎn)進(jìn)行實(shí)時(shí) 3D 渲染而成。但是由于框架開(kāi)發(fā)的平臺(tái)相關(guān)性使得開(kāi)發(fā)出來(lái)的游戲無(wú)法跨平臺(tái)編譯運(yùn)行,因此glut+OpenGL 的方式成了一種很好的選擇?,F(xiàn)階段,由于 Linux 操作系統(tǒng)免費(fèi)開(kāi)放源碼,以及在程序開(kāi)發(fā)方面有很大的 3 優(yōu)勢(shì),所以在開(kāi)發(fā)領(lǐng)域 Linux 平臺(tái)被大力推廣,基于 Linux 的各種應(yīng)用軟件也層出不窮,因此跨平臺(tái) 3D游戲開(kāi)發(fā)也越來(lái)越受重視?,F(xiàn)階段, OpenGL 在圖形設(shè)備以及相關(guān)專業(yè)占據(jù)著統(tǒng)治地位,這是因?yàn)?Direct3D 目前還不能支持這些領(lǐng)域的應(yīng)用。鑒于 OpenGL 的特點(diǎn),還是有許多非常重要的開(kāi)發(fā)人員仍然在使用 OpenGL 進(jìn)行游戲的開(kāi)發(fā)與創(chuàng)作。 OpenGL 方面:在國(guó)外 OpenG 是具有一定的生命力的,唯一能夠取代微軟對(duì) 3D 圖形技術(shù)的完全控制的 API。而國(guó)內(nèi),因?yàn)槲幕颍蠖鄶?shù)的家長(zhǎng)害怕自己的孩子沉迷于游戲,而荒廢正業(yè),這使得 3D 游戲的開(kāi)發(fā)處在一個(gè)艱難的階段,因?yàn)橛薪^大多數(shù)的家長(zhǎng)還是希望自己的孩子能遠(yuǎn)離這些東西。在國(guó)內(nèi),由于盜版軟件的泛濫,版權(quán)問(wèn)題很難得到保障,游戲開(kāi)發(fā)商制作出來(lái)的游戲很難保證不被破解,開(kāi)發(fā)商損失嚴(yán)重,經(jīng)濟(jì)利益難以保證。反觀國(guó)內(nèi), 3D 游戲近年來(lái)在剛剛起步,技術(shù)不夠成熟,也沒(méi)有很好的游戲引擎,要達(dá)到國(guó)外的水平, 3D游戲的開(kāi)發(fā)在國(guó)內(nèi)還是有很多要解決的問(wèn)題。 國(guó)內(nèi)外現(xiàn)狀的研究 3D游戲開(kāi)發(fā)方面:從技術(shù)上來(lái)看,國(guó)外的 3D 游戲開(kāi)發(fā)技術(shù)已經(jīng)趨于成熟, 3D 游戲引擎也日漸完善,大多數(shù)高質(zhì)量的 3D 游戲均產(chǎn)于國(guó)外。 系統(tǒng)設(shè)計(jì)的基本內(nèi)容:本文以基于游戲擁有虛擬性這一特性來(lái)設(shè)計(jì)開(kāi)發(fā)。軟件中應(yīng)包括各游戲開(kāi)發(fā)的基本原理說(shuō)明和實(shí)例功能演示。 掌握用 VC 或 VB、 OpenGL/3DMax 建模工具等開(kāi)發(fā)交互式三維場(chǎng)景游戲軟件的基本方法。 畢業(yè)設(shè)計(jì)的任務(wù) 在此次畢業(yè)設(shè)計(jì)中,需要完成的任務(wù)有: 閱讀計(jì)算機(jī)圖形學(xué)和相應(yīng)的動(dòng)畫(huà)設(shè)計(jì)技術(shù)、用 OpenGL/3DMax 實(shí)現(xiàn)三維場(chǎng)景建模和游戲設(shè)計(jì)、 VC 或 VB 圖形編程等文獻(xiàn)和技術(shù)資料。 OpenGL 是一個(gè)與硬件無(wú)關(guān)的軟件接口,它具有非常良好的移植性,而且它是行業(yè)領(lǐng)域中最為廣泛接納的 2D/3D 圖形 API,這些特點(diǎn)都使它深受大部分 3D游戲開(kāi)發(fā)者的喜愛(ài)。 3D 游戲的設(shè)計(jì)與開(kāi)發(fā)則會(huì)成為當(dāng)下游戲發(fā)展的一種趨勢(shì)。游戲的耐玩程度,
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1