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

正文內(nèi)容

計(jì)算機(jī)3d賽車(chē)游戲的設(shè)計(jì)與實(shí)現(xiàn)(編輯修改稿)

2025-01-09 01:37 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 接下來(lái)的 DirectX 最新產(chǎn)品是 DirectX11, DirectX 11 增加了新的計(jì)算 shader 技術(shù),可以允許 GPU 從事更多的通用計(jì)算工作,而不僅僅是 3D 運(yùn)算,這可以鼓勵(lì)開(kāi)發(fā)人員更好地將 GPU 作為并行處理器使用。另外, DirectX 11 還支持 tessellation 鑲嵌化技術(shù),這有助于開(kāi)發(fā)人員創(chuàng)建更為細(xì)膩流暢的模型,實(shí)現(xiàn)高質(zhì)量實(shí)時(shí)渲染和預(yù)渲染場(chǎng)景。多線 程是DirectX 11 的另外一大亮點(diǎn), DX11 可以更好地利用多線程資源,從而使游戲更有效地利用多核處理器。 游戲引擎 游戲引擎概述 游戲引擎是游戲中與具體的游戲無(wú)關(guān)的核心技術(shù)部分,而游戲的部分就是場(chǎng)景和角色模型、動(dòng)畫(huà)、聲音和代碼等其他控制部分。經(jīng)過(guò)游戲業(yè)的不斷的發(fā)展,如今的游戲引擎己經(jīng)發(fā)展為一套由多個(gè)子系統(tǒng)共同構(gòu)成的復(fù)雜系統(tǒng)。一般這些引擎都是 3D 游戲引擎,從建模、動(dòng)畫(huà)到光影、粒子特效,從物理系統(tǒng)、碰撞檢測(cè)到文件管理、網(wǎng)絡(luò)特性,還有專業(yè)的編輯工具和插件,幾乎涵蓋了開(kāi)發(fā)過(guò)程中的所有重要環(huán)節(jié)。 游戲引擎就是游戲開(kāi)發(fā)者們?yōu)榱私档椭貜?fù)勞動(dòng), 節(jié)省開(kāi)發(fā)時(shí)間和開(kāi)發(fā)費(fèi)用 而誕生的,它封裝了些在游戲制作中常用的功能,讓我們能直接調(diào)用這些功能而不用在從頭編寫(xiě)。 選用的游戲引擎結(jié)構(gòu) 在 3D游戲中,游戲引擎涵蓋的 內(nèi)容很多 。選用的 該 游戲引擎是一個(gè)處理所有事務(wù)的系統(tǒng),它是一個(gè)控制模塊,向所有的子系統(tǒng)發(fā)出命令。因此,需要與每個(gè)游戲子系統(tǒng)聯(lián)系。 該 游戲引擎 也 是一個(gè)容器,它容納了其他所有的組件,控制整個(gè)系統(tǒng)的各個(gè)部分。 目前 該 3D游戲引擎 實(shí)現(xiàn)的 功能模塊包括:聲音控制、輸入控制、圖形渲染、游戲界面控制等。其中圖形渲染是引 擎的核心模塊,涉及面較廣,目前實(shí)現(xiàn)的功能點(diǎn)包括:頂 湖南大學(xué)畢業(yè)論文 第 7頁(yè) 點(diǎn)、紋理、光照、材質(zhì)、文字、霧化、天空盒、攝像機(jī)、廣告牌、靜態(tài)網(wǎng)格模型、骨骼動(dòng)畫(huà)、粒子特效、 LOD地形場(chǎng)景、地形多層細(xì)節(jié)紋理等。最后,使用 BSP技術(shù)實(shí)現(xiàn)了碰撞檢測(cè)。 該游戲引擎 各模塊之間的協(xié)同操作如圖 22所示 。 圖 22 引擎各模塊之間的協(xié)同操作 輸入系統(tǒng):接受玩家的鍵盤(pán)、鼠標(biāo)等外設(shè)的輸入信息,然后引擎對(duì)這些信息進(jìn)行響應(yīng)作出相應(yīng)效果 (即游戲邏輯處理 ),實(shí)現(xiàn)與玩家的交互。 聲音控制:加載、播放、停止聲音等操作。并提供較逼真的三維音效,使玩家如身臨其境的 感覺(jué)。 游戲 UI:即游戲的界面。加載圖片實(shí)現(xiàn)了圖形化的界面控件。方便玩家對(duì)游戲進(jìn)行操作,提高用戶體驗(yàn)性。 圖形渲染:是整個(gè)引擎的核心模塊,涉及面較廣,主要功能是繪制渲染三維游戲世界。目前實(shí)現(xiàn)的功能點(diǎn)包括:頂點(diǎn)、紋理、光照、材質(zhì)、文字、霧化、天空盒、攝像機(jī)、廣告牌、網(wǎng)格模型、粒子特效、地形場(chǎng)景等。 碰撞檢測(cè):主要使用了二叉空間分割技術(shù),把碰撞網(wǎng)格存儲(chǔ)進(jìn)二叉樹(shù),實(shí)現(xiàn)快速的碰撞檢測(cè)。 湖南大學(xué)畢業(yè)論文 第 8頁(yè) 游戲結(jié)構(gòu) 游戲與其他應(yīng)用軟件有著一定的區(qū)別,它不是我們的單線、事件驅(qū)動(dòng)或順序邏輯的程序。一個(gè) 3D游戲本質(zhì)上是一個(gè)持續(xù)不斷的 while循環(huán),它執(zhí)行邏輯并在屏幕上不間斷的繪制更新圖像 ——通常以 40~60幀每秒或更高的速度不斷的繪制 [5]。這類似于電影放映方式,不同的是,我們將控制電影的情節(jié)發(fā)展。 本引擎中所使用的 游戲最基本的流程框架如圖 23所示 。 圖 23 3D游戲基本流程框架 初始化:這部分執(zhí)行與其他任何程序類似的標(biāo)準(zhǔn)操作,如內(nèi)存分配、資源獲取、從磁盤(pán)加載數(shù)據(jù)等。 進(jìn)入游戲循環(huán):這部分進(jìn)入主游戲循環(huán),用戶將在這里不斷地執(zhí)行動(dòng)作,直到退出主循環(huán)為止。 讀取玩家輸入:這部分處理玩家輸入,或?qū)⑵浯鎯?chǔ)到緩沖區(qū)中,供游戲邏輯使用。 執(zhí)行游戲邏輯:這部分包含游戲代碼的主體部分,將執(zhí)行人工智能、物理系統(tǒng)和通用游戲邏輯,并根據(jù)結(jié)果在屏幕上繪制下一幀。 圖形渲染:在這一部分中,將根據(jù)玩家輸入以及邏輯的執(zhí)行結(jié)果,生成下一個(gè)游戲動(dòng)畫(huà)幀。在甚于 3D游戲引擎中,將由一個(gè)復(fù)雜的 3D圖形流水線來(lái)渲染構(gòu)成世界的成千上萬(wàn)甚至上百萬(wàn)個(gè)多邊形。在基于 Direct3D的 3D硬件加速中,大部分工作都由硬件來(lái)承擔(dān)。 循環(huán):這部分相當(dāng)簡(jiǎn)單,只需返回到游戲循環(huán)的開(kāi)頭,然后重新執(zhí)行整個(gè)循環(huán)。 湖南大學(xué)畢業(yè)論文 第 9頁(yè) 關(guān)閉:這是游戲的末尾,意味著用戶退出游戲循環(huán),并返回到操作系統(tǒng)。但是,與其它任何 軟件一樣,需要在返回操作系統(tǒng)之前釋放占用的所有資源,并清理系統(tǒng)。 游戲控制臺(tái)控制流程如圖 24所示 。 圖 24 游戲控制臺(tái)的控制流程 本章小結(jié) 本章主要介紹了 DirectX 和 游戲引擎,讓我們了解兩者的大概功能和關(guān)系。在了解兩者的基礎(chǔ)上,著重介紹了該游戲選用的游戲引擎的各個(gè)功能模 塊及各模塊是如何協(xié)同工作的,為接下來(lái)的游戲制作打下了堅(jiān)實(shí)的基礎(chǔ)。 最后介紹了下游戲的基本結(jié)構(gòu), 一個(gè)游戲本質(zhì)上是一個(gè)持續(xù)不斷的 while 循環(huán),它執(zhí)行邏輯 ,并根據(jù)邏輯計(jì)算出下 一幀圖像,并在屏幕上不間斷的繪制更新圖像。 游戲最終表現(xiàn) 出來(lái)的就是一幀又一幀連續(xù)的畫(huà)面,我們所要作的就是在循環(huán)中,不斷的獲取用戶的輸入,根據(jù)輸入執(zhí)行游戲邏輯,生成下一個(gè)游戲動(dòng)畫(huà)幀,最后渲染該動(dòng)畫(huà)幀。 湖南大學(xué)畢業(yè)論文 第 10頁(yè) 3 游戲的汽車(chē)類模塊、場(chǎng)景渲染、輸入控制 輸入檢測(cè)和響應(yīng) 每個(gè)交互式程序都要為用戶提供一些與其交互的方法。在視頻游戲中,通??梢酝ㄟ^(guò)諸如游戲墊、方向盤(pán)、操縱桿、鍵盤(pán)和鼠標(biāo)等這類輸入設(shè)備實(shí)現(xiàn)。輸入檢測(cè)不僅要和大量設(shè)備打交道,還要能夠?qū)τ诰哂兴俣雀咭蟮囊曨l游戲做出快速反應(yīng)。在 Windows操作系統(tǒng)中, 輸入可以通過(guò) DirectInput API匯總到一起 。 DirectInput是 DirectX API的一部分,負(fù)責(zé)對(duì)所有連接到機(jī)器上的設(shè)備進(jìn)行輸入檢測(cè)。 從對(duì) Win32 API編程的分析可以知道,鍵盤(pán)或鼠標(biāo)的用戶輸入消息并不是直接傳遞給應(yīng)用程序來(lái)處理的,面是是轉(zhuǎn)發(fā)回 Windows操作系統(tǒng),最后由 Windows回調(diào)應(yīng)用程序的窗口過(guò)程函數(shù)進(jìn)行相應(yīng)的消息代碼處理。顯然,如果游戲程序仍采用這種方式來(lái)處理用戶的輸入將不會(huì)獲得理想的執(zhí)行效率。 DirectInput是 DirectX 的一個(gè)組件接口,提供了大量的接口函數(shù)處理用戶在鍵盤(pán)、鼠標(biāo)、游戲桿以及力回饋等游戲裝置上的輸入,而且 DirectInput是直接與硬件驅(qū)動(dòng)程序打交道,因此 DirectInput可較快地處理用戶的輸入。另一方面,正是由于 DirectInput直接與驅(qū)動(dòng)程序進(jìn)行通信,所以在控制面板上所做的任何鍵盤(pán)和鼠標(biāo)的屬性設(shè)置,如鍵盤(pán)按鍵的延遲重復(fù)和鼠標(biāo)的左右手習(xí)慣等,都不會(huì)對(duì)應(yīng)用 DirectInput的程序起作用,除非是修改同驅(qū)動(dòng)程序提供的屬性設(shè)置。 游戲引擎封裝了 DirectInput,我們只用初始化游戲引擎的輸入控制類,調(diào)用該類的函數(shù) IsKeyPress()判斷哪個(gè)鍵位被 敲擊,即可響應(yīng)該鍵位的事件。 場(chǎng)景 渲染 在現(xiàn)實(shí)的許多商業(yè)游戲中,場(chǎng)景十分復(fù)雜,有著逼真的天空、高低起伏且十分精細(xì)的地形、各種天氣效果 (雨、霧等 )以及光照陰影等。 我們的游戲場(chǎng)景是個(gè)簡(jiǎn)單的,只由天空,模型 (該模型包含了地形 )和光照組成 的,這些組成部分涉及到了許多技術(shù)。 湖南大學(xué)畢業(yè)論文 第 11頁(yè) 天空盒技術(shù) 在虛擬現(xiàn)實(shí)和視景仿真應(yīng)用系統(tǒng)中,天空仿真是必不可少的內(nèi)容之一。天空背景的真實(shí)感對(duì)用戶來(lái)說(shuō)能大大提高視覺(jué)享受和沉浸感。所以,一個(gè)活動(dòng)的、完整的天空是整個(gè)虛擬三維系統(tǒng)真實(shí)感體現(xiàn)所必須具備的。本文所實(shí)現(xiàn)的游戲的天空 采用的就是天空盒技術(shù),只要使用好的紋理,就能實(shí)現(xiàn)令 人信服的畫(huà)面。 天空盒只不過(guò)是一個(gè) 6 個(gè)面正方形,中心就是視點(diǎn)。上下左右前后分別貼上天空紋理后,基本天空盒就制作完成。如圖31~36。 圖 31 front 圖 32 back 圖 33 left 圖 34 right 圖 35 top 圖 36 bottom 渲染的后的天空效果如圖 37 所示 。 需要注意的是玩家在場(chǎng)景中不停的漫游,而天空的大小是有限,我們可以采用一種簡(jiǎn)單方法來(lái)讓玩家走不出天空盒的范圍 ,每次渲染時(shí)我們始終讓攝像機(jī)的坐標(biāo)位于天空盒的中心,這樣就可以給我們一種感覺(jué),天空是無(wú)限大的,怎么走也走不出。最后是渲染天空盒,我們的天空盒是有大小的,所以我們渲染時(shí)禁止 Z 緩沖寫(xiě)入,否則渲染時(shí),天空盒 Z 大小都寫(xiě)了進(jìn)去,導(dǎo)致超出天空盒大小的場(chǎng)景渲染不了,而且還要最先渲染,否則因?yàn)槟憬?Z 緩沖寫(xiě)入,先渲染場(chǎng)景再渲染天空盒,天空盒把整個(gè)場(chǎng)景覆蓋了。 湖南大學(xué)畢業(yè)論文 第 12頁(yè) 圖 37 天空盒效果 模型 運(yùn)用 我們使用的模型是 X 模型,這種模型是 DirectX 本身的格式 ,可以通過(guò)幾個(gè)內(nèi)置函數(shù)直接加載和渲染到 API。 X 模型最大的 優(yōu)點(diǎn)就是它們十分易用,可以直接和 Direct3D交互使用。 X 文件格式基于模板格式, Direct3D 有一些內(nèi)置模板,可以用于定義 X 文件中的網(wǎng)格。這些標(biāo)準(zhǔn)模板包括外觀、紋理坐標(biāo)和法線。因?yàn)?X 文件格式基于模板格式,所以 Direct3D 需要知道一些存儲(chǔ)在文件中用于某種目的的信息。 X 模型可以被保存為文本文件,也可以被保存為二進(jìn)制文件,這意味著可以在任意的文本編輯器中打開(kāi) X 文本文件,并修改其內(nèi)容。 X 文件中的 Material 標(biāo)準(zhǔn)模板用于指定可以施加在單個(gè)表面(多邊形)的材質(zhì)。針對(duì)材質(zhì)的標(biāo)準(zhǔn)模板定義了環(huán)境顏色、發(fā)射能量、 鏡面顏色、反射量、與材質(zhì)相關(guān)的紋理圖像文件名。 X 文件中的 Mesh 模板定義了 X 文件中的完整網(wǎng)格。 X 模型可以包含多個(gè)網(wǎng)格。網(wǎng)格模板結(jié)構(gòu)開(kāi)始先定義頂點(diǎn)總數(shù),然后是頂點(diǎn)的 x, y, z 坐標(biāo)。定義完頂點(diǎn)之后,接下來(lái)必須定義網(wǎng)格的外觀或多邊形。開(kāi)始先是網(wǎng)格中的外觀數(shù),后面是每個(gè)外觀的三角形 湖南大學(xué)畢業(yè)論文 第 13頁(yè) 索引。每個(gè) 三角形索引行開(kāi)始是代表該外觀使用的三角形數(shù)目,后面才是索引號(hào)。定義完頂點(diǎn)和三角形之后,就可以隨意定義其他屬性了,如每一外觀的材質(zhì)、紋理坐標(biāo)等。 X 文件中的 MeshMaterialList 模板指明網(wǎng)格中的哪個(gè)外觀使用哪種材質(zhì)。材 質(zhì)鏈表結(jié)構(gòu)開(kāi)始先定義材質(zhì)數(shù)目,然后是將材質(zhì)施加的外觀總數(shù)。這之后,每個(gè)外觀占一行。每行定義一個(gè)值,用該值引用要用的材質(zhì)。該結(jié)構(gòu)的最后一行是涉及到的所有材質(zhì)鏈表。第一個(gè)材質(zhì)索引號(hào)為 0,第二個(gè)為 1,依此類推。 X 文件中的 MeshTextureCoords 模板開(kāi)始先指定網(wǎng)格中的索引數(shù),然后用逗號(hào)隔開(kāi),簡(jiǎn)單的列出每個(gè)頂點(diǎn)的紋理坐標(biāo)。有了該模板就可以在 Direct3D 中將紋理映射到網(wǎng)格上。 加載和渲染 X 模型很簡(jiǎn)單。所有的 X 模型都保存在相同的名為 LPD3DXMESH 的結(jié)構(gòu)中。調(diào)用 D3DXLoadMeshFromX()即 可。調(diào)用 LPD3DXMESH 對(duì)象的 DrawSubset()函數(shù)可以繪制模型。 我們需要注意的是, X 模型本身所有頂點(diǎn)位置都是基于其自身坐標(biāo),而我們要最終要將模型顯現(xiàn)在外面的屏幕上,這就需要進(jìn)行些 坐 標(biāo)變換。 首先簡(jiǎn)要說(shuō)明一下三維物體的成像過(guò)程。三維物體可通過(guò)建模的微分方法,把彎曲的表面切分為一個(gè)個(gè)的三角形面,這樣三維物體表面的繪制,就轉(zhuǎn)化為物體表面中所有三角形面的繪制。要渲染由眾多三維物體組成的三維場(chǎng)景,需要先引入局部坐標(biāo)系,為場(chǎng)景中的各個(gè)三維物體進(jìn)行三角形頂點(diǎn)的坐標(biāo)量化。 局部坐標(biāo)系示例如圖 38所示 。 圖 38 局部坐標(biāo)系 引入世界坐標(biāo)系,把整個(gè)場(chǎng)景中所有三維物體的各自頂點(diǎn)局部坐標(biāo),轉(zhuǎn)換為同一個(gè)世界坐標(biāo)系下的坐標(biāo)。在同一個(gè)世界坐標(biāo)系中,場(chǎng)景中各個(gè)三角形面的頂點(diǎn)坐標(biāo)如實(shí)地給出了場(chǎng)景中物體間的空間關(guān)系。如果需要對(duì)場(chǎng)景實(shí)施光照處理,還要對(duì)頂點(diǎn)的顏色值 湖南大學(xué)畢業(yè)論文 第 14頁(yè) 進(jìn)行計(jì)算。這個(gè)過(guò)程最終是輸出具有世界坐標(biāo)的場(chǎng)景下的所有三維物體的頂點(diǎn)信息。 世界坐標(biāo)系示例如圖 39 所示: 圖 39 世界坐標(biāo)系 在三維場(chǎng)景中選定位置和方向架設(shè)攝影機(jī),取景范圍由一個(gè)棱臺(tái)視截體決定。在視截體之內(nèi)部分,應(yīng)顯示處理;視截體之外的部分則要裁剪掉,而不顯 示出來(lái)。為了便于裁剪,在攝影機(jī)的位置處建立一個(gè)攝影坐標(biāo)系,其 Z 軸指向攝影機(jī)的視線方向,從而使視截體的 6 個(gè)外圍側(cè)面具有較為簡(jiǎn)單的方程式。此時(shí),需要將場(chǎng)景中所有物體的三角形
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1