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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文-3d賽車游戲的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2024-12-01 16:00本頁(yè)面

【導(dǎo)讀】直是玩家的寵兒。景中的漫游、賽車的地形跟蹤系統(tǒng)和碰撞檢測(cè)等六部分。場(chǎng)景渲染、賽車渲染和天空渲。染構(gòu)成游戲的渲染畫面,基于DirectX技術(shù)實(shí)現(xiàn)。蹤系統(tǒng)和碰撞檢測(cè)構(gòu)成了游戲的主要邏輯。統(tǒng)使汽車始終行駛在賽道上,再將這些整合形成了三維賽車游戲。論文最后對(duì)全文進(jìn)行總結(jié),并對(duì)后續(xù)工作進(jìn)行了展望。

  

【正文】 果不會(huì)太好??梢宰咭粭l中間路線:使用一個(gè)基于速度、重力和瞬時(shí)加速度 的簡(jiǎn)化物理模型,其中瞬時(shí)加速度取決于相機(jī)的位置和方向。這個(gè)物理模型的要點(diǎn)如下: 1. 汽車有前進(jìn)速度和前進(jìn)方向,可使用箭頭鍵來(lái)控制它們(玩家按住前進(jìn)方向鍵或后退方向鍵時(shí),加速度為常量)。 2. 有一個(gè)向上的作用于汽車的法向力,如果汽車在海平面之下,這個(gè)力將其往上推。 3. 在任何時(shí)候,都根據(jù)沙地汽車在世界坐標(biāo)空間中的位置來(lái)確定它在哪個(gè)地形單元格之上,并計(jì)算該單元格 4 個(gè)頂點(diǎn)的平均高度。然后將其同汽車的高度(減去地面間隙)進(jìn)行比較,如果后者更小,則將一個(gè)與高度差成正比的瞬時(shí)加速度用于汽車,以提高其向上的速度。同時(shí),對(duì)沙地汽車的 最大高度進(jìn)行限制,這樣,檢測(cè)到坡度或高度變化時(shí),沙地汽車會(huì)向上跳躍,避免穿入地面。 4. 除了修改汽車的高度以跟蹤地形外,還根據(jù)汽車經(jīng)過(guò)的地形梯度修改汽車 /相機(jī)的傾斜角,以實(shí)現(xiàn)車頭根據(jù)地形上仰、俯沖的效果。 好文檔 值得下載 5. 最后,還有保持物理模型穩(wěn)定性的代碼,在位置或方向變化足夠小時(shí),對(duì)其不予考慮,以避免振蕩。 在本文中,我使用的不是基于高度圖生成的地形,而是直接采用 X 模型作為場(chǎng)景,為此我需要遍歷組成場(chǎng)景的全部三角形,通過(guò)汽車的坐標(biāo)點(diǎn)來(lái)判斷汽車位于哪個(gè)三角形面中,并計(jì)算該面三個(gè)頂點(diǎn)的平均高度,然后將汽車的高度設(shè)置在該高度上。實(shí) 現(xiàn)的步驟如下: 1. 加載 X 模型; 2. 取得該模型的網(wǎng)格; 3. 取得該網(wǎng)格的頂點(diǎn)緩沖區(qū)和索引緩沖區(qū); 4. 根據(jù) X 模型的頂點(diǎn)格式自定義頂點(diǎn)格式; 5. 調(diào)用 Lock,對(duì)緩沖區(qū)進(jìn)行操作; 6. 根據(jù)索引緩存區(qū)遍歷全部三角形,求出每一個(gè)三角的 xMax, xMin,zMax,zMin,判斷汽車在哪個(gè)三角形里; 7. 求出所在三角形的平均高度; 8. 將汽車的高度設(shè)置在該高度上。 汽車與物體的碰撞檢測(cè) 本文所作游戲只存在兩個(gè) X 模型,一個(gè)是環(huán)形賽道模型,一個(gè)是賽道周邊環(huán)境模型。我只想讓賽車在賽道上行駛而不允許賽車駛離賽道,通過(guò)分析,賽道周邊環(huán)境是個(gè)復(fù) 雜的物體而且津貼著賽道,明顯不適與運(yùn)用包圍盒算法來(lái)實(shí)現(xiàn)碰撞檢測(cè),為此我采用了一個(gè)簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)該功能,根據(jù)汽車坐標(biāo)實(shí)時(shí)判斷該坐標(biāo)是否位于賽道周邊環(huán)境模型中的三角形中,如果該坐標(biāo)位于道周邊環(huán)境模型中的三角形中,則將汽車坐標(biāo)退回到前一次的坐標(biāo)并降低一定的速度。 測(cè)試 本文最終實(shí)現(xiàn)了一個(gè) 3D 賽車游戲游戲,這個(gè)三維賽車游戲,場(chǎng)景清晰漂亮, 通過(guò)天空盒技術(shù)渲染出的天空效果逼真, 輸入控制簡(jiǎn)單易上手,我們可以控制汽車在地圖上漫游而不會(huì)陷入地底,可以限制汽車只在賽道上行駛而不會(huì)駛離賽道,游行運(yùn)行流暢。 好文檔 值得下載 本章小結(jié) 本章是全文的重點(diǎn),介紹碰撞檢測(cè)的相關(guān)技術(shù),特別是當(dāng)今在游戲中經(jīng)常用到的包圍盒技術(shù),包括: 軸平行包圍盒 AABB(Axis Aligned Bounding Boxes)算法、圍球 (sphere)算法、沿任意方向包圍盒 OBB(Onented Bounding Box)算法和固定方向包圍盒 FDH(Fixed Directions Hulls)算法,還介紹了下選用的游戲引擎中實(shí)現(xiàn)了的一個(gè)基于 BSP( Binary Space Partioning trees) 的碰撞檢測(cè)。通過(guò)比較這些碰撞檢測(cè)來(lái)實(shí)現(xiàn)了本文游戲 中的地形跟蹤和汽車與模型的碰撞檢測(cè)。 好文檔 值得下載 5 結(jié)論 本文實(shí)現(xiàn)的三維賽車游戲,場(chǎng)景清晰漂亮, 通過(guò)天空盒技術(shù)渲染出的天空效果逼真,輸入控制簡(jiǎn)單易上手,我們可以控制汽車在地圖上漫游而不會(huì)陷入地底,可以限制汽車只在賽道上行駛而不會(huì)駛離賽道,游行運(yùn)行流暢。 雖然整個(gè)游戲運(yùn)行起來(lái)效果還是不錯(cuò),但是游戲還需要進(jìn)一步改進(jìn): ,汽車的沿地形爬升或下降時(shí),不能很流暢而真實(shí)的爬升或下降,這里需要進(jìn)一步的改進(jìn); ,由于汽車的坐標(biāo)位置我只設(shè)置了一個(gè)點(diǎn),該點(diǎn)位與汽車尾部,所以做汽車和周圍環(huán)境 的碰撞時(shí),只能用該點(diǎn)和周圍環(huán)境的三角形做比較,造成的后果是,在游戲的實(shí)際運(yùn)行時(shí),汽車有時(shí)會(huì)整個(gè)的駛出賽道,直道汽車的尾部的該點(diǎn)駛出賽道,我們才能檢測(cè)到碰撞,這里需要進(jìn)一步改進(jìn)。 ,這里需要進(jìn)一步改進(jìn)。 好文檔 值得下載 致謝 參考文獻(xiàn) [1] 邵秋濤 . 納斯達(dá)克的游戲大鱷電子藝界 EA[J]. 新財(cái)經(jīng) .2021(06):14. [2] 王兆其 , 王陽(yáng)生 , 馬琳娜 . 游戲引擎在中國(guó) .計(jì)算機(jī)世界報(bào) [J].2021,4(12):B3. [3] 賽車游戲發(fā)展簡(jiǎn)史 ,車世界 [J].2021(08):136137. [4] Allen Sherrod. Ultimate Game Programming with DirectX[M]. Charles River Media,2021,May. [5] Andre LaMothe(著 ),李祥瑞 ,陳武 (譯 ).TRICKS OF THE 3D GAME PROGRAMMING GURUS, ADVANCED 3DGRAPHICS AND GRAPHICS AND RASTERIZATION[M]. 人民郵電出版社 ,2021,6. [6] 楊欽 , 徐永安 , 翟紅英 . 計(jì)算機(jī)圖形學(xué) [M]. 清華大學(xué)出版社 . 2021,3. [7] 周衛(wèi)榮,朱天相 . 碰撞檢測(cè)引擎模塊的設(shè)計(jì) . 南華大學(xué)學(xué)報(bào) [J]. 2021 (19):8588. [8] 李文娟 , 閻光偉 , 王媛 . 三維物體碰撞檢測(cè)中的包圍盒算法 . 中國(guó)電力教育 [J].2021(z2). [9] Frank Luna. Introduction to 3D Game Programming with Direct X : A Shader Approach (Wordware Game and Graphics Library)[M]. Jones amp。 Bartlett Publishers,2021, June. 好文檔 值得下載 [10] Andre LaMothe. Tricks of the 3D Game Programming GurusAdvanced 3D Graphics and Rasterization[M]. Sams,2021, June. 附錄 部分核心源代碼 include … bool LRaceView::Run(MSG amp。msg, float fElpaseTime) { //輸入控制 if((DIK_ESCAPE)) { return false。 } static bool bUseCar=true。 //測(cè)試用量 , 標(biāo)識(shí)是否把攝像機(jī)綁定到小車上 //如果摁 F1 if((DIK_F1)) 好文檔 值得下載 { bUseCar = true。 } //如果摁 F2 if((DIK_F2)) { bUseCar = false。 } //不將攝像機(jī)綁定在車子上 if(bUseCar==false) { //方向鍵旋轉(zhuǎn)攝像機(jī)角度 if((DIK_RIGHT)) { (ROTATE_ANGLE)。 } if((DIK_LEFT)) { (ROTATE_ANGLE)。 } if((DIK_UP)) { (ROTATE_ANGLE)。 } if((DIK_DOWN)) { (ROTATE_ANGLE)。 } //W\S\A\D鍵前后左右移動(dòng)攝像機(jī) if((DIK_A)) { (MOVE_STEP)。 } if((DIK_D)) { (MOVE_STEP)。 } if((DIK_W)) { (MOVE_STEP)。 } 好文檔 值得下載 if((DIK_S)) { (MOVE_STEP)。 } } //將攝像機(jī)綁定在車子上 else if (bUseCar==true) { //方向鍵旋轉(zhuǎn)攝像機(jī)角度 float fAngle = m_lCar[0]GetAngle()。 if((DIK_RIGHT)||(DIK_D)) { m_lCar[0]SetRotateAngleY(fAngle)。 } else if((DIK_LEFT)||(DIK_A)) { m_lCar[0]SetRotateAngleY(fAngle)。 } //得到汽車在地圖上的坐標(biāo)和朝向 m_lCar[0]GetPosition(amp。m_carPositionNow)。 m_carPositionNext=m_carPositionNow。 D3DXVECTOR3 vCarDirection。 //記錄車子方向 m_lCar[0]GetDirection(amp。vCarDirection)。 float fV = m_lCar[0]GetV()。 //如果速度不為 0,播放汽車 Move聲音 if (fV != 0) { (true)。 } //摁 DOWN和 S時(shí)游戲邏輯 if( (DIK_DOWN) || (DIK_S) || fV m_lCar[0]GetMaxV()) //if(true) { fV = fV m_lCar[0]GetA()。 好文檔 值得下載 if (fV = m_lCar[0]GetMaxV())//后退最小速度 fV = m_lCar[0]GetMaxV()。 m_lCar[0]SetV(fV)。 //計(jì)算出汽車下一幀的位置 = + * fV。 = + * fV。 = + * fV。 /* = + * fV。 = + * fV。 = + * fV。*/ } else if((DIK_UP) || (DIK_W)) //else if(true) { fV = fV + m_lCar[0]GetA()。 if (fV = m_lCar[0]GetMaxV())//最大速度 fV = m_lCar[0]GetMaxV()。 /*if (((int)fV)==0) { ()。 }*/ m_lCar[0]SetV(fV)。 //計(jì)算出汽車下一幀的位置 = + * fV。 = + * fV。 = + * fV。 /* = + * fV。 = + * fV。 = + * fV。*/ } else//放開(kāi)按鍵時(shí) { float a = m_lCar[0]GetA()。 a *= 。 //加速度 if (fV 0) a = a。 好文檔 值得下載 fV = fV a。 if (a 0 amp。amp。 fV = )//最大速度 fV = 。 else if (a 0 amp。amp。 fV = ) fV = 。 m_lCar[0]SetV(fV)。 //計(jì)算出汽車下一幀的位置 = + * fV。 = + * fV。 = + * fV。 /* = + * fV。 = + * fV。 = + * fV。*/ } //踩剎車 if((DIK_SPACE)) { float a = m_lCar[0]GetA() + m_lCar[0]GetBreak()。//增加加速度 if (fV 0) { fV = fV a。 if (fV ) fV = 。 } else if (fV 0) { fV = fV + a。 if (fV ) fV = 。 } m_lCar[0]SetV(fV)。 //計(jì)算出汽車下一幀的位置 = + * fV。 = + * fV。 = + * fV。 /* = + * fV。 好文檔 值得下載 = + * fV。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1