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

正文內容

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

2025-11-22 16:00本頁面

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

  

【正文】 果不會太好??梢宰咭粭l中間路線:使用一個基于速度、重力和瞬時加速度 的簡化物理模型,其中瞬時加速度取決于相機的位置和方向。這個物理模型的要點如下: 1. 汽車有前進速度和前進方向,可使用箭頭鍵來控制它們(玩家按住前進方向鍵或后退方向鍵時,加速度為常量)。 2. 有一個向上的作用于汽車的法向力,如果汽車在海平面之下,這個力將其往上推。 3. 在任何時候,都根據(jù)沙地汽車在世界坐標空間中的位置來確定它在哪個地形單元格之上,并計算該單元格 4 個頂點的平均高度。然后將其同汽車的高度(減去地面間隙)進行比較,如果后者更小,則將一個與高度差成正比的瞬時加速度用于汽車,以提高其向上的速度。同時,對沙地汽車的 最大高度進行限制,這樣,檢測到坡度或高度變化時,沙地汽車會向上跳躍,避免穿入地面。 4. 除了修改汽車的高度以跟蹤地形外,還根據(jù)汽車經(jīng)過的地形梯度修改汽車 /相機的傾斜角,以實現(xiàn)車頭根據(jù)地形上仰、俯沖的效果。 好文檔 值得下載 5. 最后,還有保持物理模型穩(wěn)定性的代碼,在位置或方向變化足夠小時,對其不予考慮,以避免振蕩。 在本文中,我使用的不是基于高度圖生成的地形,而是直接采用 X 模型作為場景,為此我需要遍歷組成場景的全部三角形,通過汽車的坐標點來判斷汽車位于哪個三角形面中,并計算該面三個頂點的平均高度,然后將汽車的高度設置在該高度上。實 現(xiàn)的步驟如下: 1. 加載 X 模型; 2. 取得該模型的網(wǎng)格; 3. 取得該網(wǎng)格的頂點緩沖區(qū)和索引緩沖區(qū); 4. 根據(jù) X 模型的頂點格式自定義頂點格式; 5. 調用 Lock,對緩沖區(qū)進行操作; 6. 根據(jù)索引緩存區(qū)遍歷全部三角形,求出每一個三角的 xMax, xMin,zMax,zMin,判斷汽車在哪個三角形里; 7. 求出所在三角形的平均高度; 8. 將汽車的高度設置在該高度上。 汽車與物體的碰撞檢測 本文所作游戲只存在兩個 X 模型,一個是環(huán)形賽道模型,一個是賽道周邊環(huán)境模型。我只想讓賽車在賽道上行駛而不允許賽車駛離賽道,通過分析,賽道周邊環(huán)境是個復 雜的物體而且津貼著賽道,明顯不適與運用包圍盒算法來實現(xiàn)碰撞檢測,為此我采用了一個簡單的方法來實現(xiàn)該功能,根據(jù)汽車坐標實時判斷該坐標是否位于賽道周邊環(huán)境模型中的三角形中,如果該坐標位于道周邊環(huán)境模型中的三角形中,則將汽車坐標退回到前一次的坐標并降低一定的速度。 測試 本文最終實現(xiàn)了一個 3D 賽車游戲游戲,這個三維賽車游戲,場景清晰漂亮, 通過天空盒技術渲染出的天空效果逼真, 輸入控制簡單易上手,我們可以控制汽車在地圖上漫游而不會陷入地底,可以限制汽車只在賽道上行駛而不會駛離賽道,游行運行流暢。 好文檔 值得下載 本章小結 本章是全文的重點,介紹碰撞檢測的相關技術,特別是當今在游戲中經(jīng)常用到的包圍盒技術,包括: 軸平行包圍盒 AABB(Axis Aligned Bounding Boxes)算法、圍球 (sphere)算法、沿任意方向包圍盒 OBB(Onented Bounding Box)算法和固定方向包圍盒 FDH(Fixed Directions Hulls)算法,還介紹了下選用的游戲引擎中實現(xiàn)了的一個基于 BSP( Binary Space Partioning trees) 的碰撞檢測。通過比較這些碰撞檢測來實現(xiàn)了本文游戲 中的地形跟蹤和汽車與模型的碰撞檢測。 好文檔 值得下載 5 結論 本文實現(xiàn)的三維賽車游戲,場景清晰漂亮, 通過天空盒技術渲染出的天空效果逼真,輸入控制簡單易上手,我們可以控制汽車在地圖上漫游而不會陷入地底,可以限制汽車只在賽道上行駛而不會駛離賽道,游行運行流暢。 雖然整個游戲運行起來效果還是不錯,但是游戲還需要進一步改進: ,汽車的沿地形爬升或下降時,不能很流暢而真實的爬升或下降,這里需要進一步的改進; ,由于汽車的坐標位置我只設置了一個點,該點位與汽車尾部,所以做汽車和周圍環(huán)境 的碰撞時,只能用該點和周圍環(huán)境的三角形做比較,造成的后果是,在游戲的實際運行時,汽車有時會整個的駛出賽道,直道汽車的尾部的該點駛出賽道,我們才能檢測到碰撞,這里需要進一步改進。 ,這里需要進一步改進。 好文檔 值得下載 致謝 參考文獻 [1] 邵秋濤 . 納斯達克的游戲大鱷電子藝界 EA[J]. 新財經(jīng) .2021(06):14. [2] 王兆其 , 王陽生 , 馬琳娜 . 游戲引擎在中國 .計算機世界報 [J].2021,4(12):B3. [3] 賽車游戲發(fā)展簡史 ,車世界 [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] 楊欽 , 徐永安 , 翟紅英 . 計算機圖形學 [M]. 清華大學出版社 . 2021,3. [7] 周衛(wèi)榮,朱天相 . 碰撞檢測引擎模塊的設計 . 南華大學學報 [J]. 2021 (19):8588. [8] 李文娟 , 閻光偉 , 王媛 . 三維物體碰撞檢測中的包圍盒算法 . 中國電力教育 [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。 //測試用量 , 標識是否把攝像機綁定到小車上 //如果摁 F1 if((DIK_F1)) 好文檔 值得下載 { bUseCar = true。 } //如果摁 F2 if((DIK_F2)) { bUseCar = false。 } //不將攝像機綁定在車子上 if(bUseCar==false) { //方向鍵旋轉攝像機角度 if((DIK_RIGHT)) { (ROTATE_ANGLE)。 } if((DIK_LEFT)) { (ROTATE_ANGLE)。 } if((DIK_UP)) { (ROTATE_ANGLE)。 } if((DIK_DOWN)) { (ROTATE_ANGLE)。 } //W\S\A\D鍵前后左右移動攝像機 if((DIK_A)) { (MOVE_STEP)。 } if((DIK_D)) { (MOVE_STEP)。 } if((DIK_W)) { (MOVE_STEP)。 } 好文檔 值得下載 if((DIK_S)) { (MOVE_STEP)。 } } //將攝像機綁定在車子上 else if (bUseCar==true) { //方向鍵旋轉攝像機角度 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)。 } //得到汽車在地圖上的坐標和朝向 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時游戲邏輯 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)。 //計算出汽車下一幀的位置 = + * 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)。 //計算出汽車下一幀的位置 = + * fV。 = + * fV。 = + * fV。 /* = + * fV。 = + * fV。 = + * fV。*/ } else//放開按鍵時 { 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)。 //計算出汽車下一幀的位置 = + * 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)。 //計算出汽車下一幀的位置 = + * fV。 = + * fV。 = + * fV。 /* = + * fV。 好文檔 值得下載 = + * fV。
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1