999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

FPS游戲引擎中的數學模型分析

2017-06-10 19:33:56王堯
電子技術與軟件工程 2017年11期
關鍵詞:引擎拋物線游戲

王堯

摘 要FPS游戲引擎中應用到的數學模型很多,貫穿在整個引擎中,此文對引擎中常用的數學模型進行分析。

【關鍵詞】FPS游戲引擎 數學模型

1 前言

FPS游戲又稱為第一人稱視角射擊游戲,該游戲引擎中涉及到大量的數學模型。下面我們就對引擎中常用到的幾個數學模型進行分析。

2 引擎中的數學建模

在引擎中,定義了大量的三維空間中的幾何元素。在引擎中依托三維坐標系對三維的點、向量、拋物線、矩陣等元素的位置關系做了定義和判斷。

2.1 三維坐標系

在引擎中三維坐標系是最為常見的數學模型之一。一般用于確定非玩家控制角色、游戲環境中的建筑、動植物等游戲模型的定位,以及玩家所控制的游戲角色的視野方向,移動方向,以及一些基本動作等。在引擎中坐標系不是唯一的,整個游戲大世界有著自己固定的坐標系系統,用以定位游戲場景的中所有不能夠移動或者暫時靜止的物體,而游戲場景中能夠移動的物體又有著自己相對獨立的坐標系嵌套在游戲大世界的坐標系之中,但是該游戲人物在游戲大世界中還是有著相對應的坐標,仍然可以通過游戲大世界的坐標進行定位。例如玩家在操縱游戲人物的時候,坐標系是以玩家所操縱的游戲人物模型為中心,隨著玩家對游戲人物的操縱做出調整,自己在游戲大世界中的坐標也會跟著改變。自動尋路功能也是依靠坐標系來實現定位的,通過坐標系確定起始位置和目標位置,然后計算出從起始位置到目標位置的最佳路徑,以實現自動尋路功能。

比較常見的三維坐標系的表示形式是笛卡爾坐標系。由X,Y,Z三條互相垂直的坐標軸組成。三條坐標軸可以構成X-Y,X-Z,Y-Z這個三個平面,因此,此類型的坐標系一共有8個卦限及8個被分割出來的子空間,這些子空間又決定了引擎中的天空盒或者游戲世界界限的構成。

該坐標系分為兩種:左手坐標系、右手坐標系。左手坐標系Z軸指向X-Y兩軸構成的垂直平面內,右手坐標系Z軸指向X-Y兩軸構成的垂直平面外。

2.2 點

在游戲中涉及到人質營救任務的場景時,將會用到點的概念。人質周圍敵對NPC的活動或是巡邏是有一定范圍的,玩家控制的游戲角色與任務觸發地點之間的距離是任務是否觸發的判斷依據,當玩家控制的游戲角色靠近一定的距離時觸發營救任務,敵對NPC觸發阻礙營救任務,當角色脫離超過一定的距離后,營救任務的觸發解除,敵對NPC回歸正常的巡邏距離;當人質營救成功時,人質將跟隨角色移動,這時也要判斷兩者之間的距離,用以實現跟隨傳送功能。

可以使用公式:

來判斷物體跟物體之間的距離。

2.3 三維游戲引擎中的向量

向量有兩個主要的屬性:長度和方向(長度也稱為模或者是大小)。向量經常用在對長度相等,方向一樣的物體進行建模,例如粒子系統中表示粒子的運動速度和加速度等,可以用向量來表示它的方向和速度,因為向量有兩個值可以表示它的速度和方向。在對攝像機進行操作的時候也可以用到向量。

但是在使用向量的時候要注意一點,向量的兩個屬性沒有代表位置的,所以在判斷兩個向量是否相等的時候只要判斷長度和方向是否相同就可以了,如果一樣就認為他們是相等的。

在三維空間中向量V可以用三元組V=(x,y,z)表示,但是要注意這三點的起始點和方向。如圖1如所示。

所以可以把由x,y,z三點構成的有向線段的長度看成是該向量的大小。計算公式:。

在游戲中,表示移動的距離時,也可以用向量來解決問題。在游戲世界中必須先為向量設置一個長度單位,用來表示具體的距離問題。

2.4 拋物線問題

在FPS類的射擊游戲中,將會大量的使用到拋物線。如:子彈的彈道,手雷扔出去的軌道,彈殼的掉落,物品丟棄等大量用到拋物線的原理來實現。

拋物線的線條形狀是由頂點和拋物線的對稱軸來決定的。

對稱軸垂直的拋物線方程:y=c(x-h)2+k頂點是(h,k),對稱軸為x=h

對稱軸水平的拋物線方程:x=c(y-h)2+h頂點是(k,h),對稱軸為y=h

常數c代表了拋物線的開口方向和開口大小。

如果c是正數,對稱軸垂直的拋物線的開口向上,對稱軸水平的拋物線的開口向右。如果c是負數,對稱軸垂直的拋物線的開口向下,對稱軸水平的拋物線的開口向左。c的絕對值越大,開口越小。

在引擎中使用的時候還要考慮到物體在現實世界中的體積,重量等因素,以及它們掉落時的情況,將它們的拋物線正確的模擬出來,增強游戲的真實性。如手雷扔出去到掉落的,也是一條拋物線,這時候就要考慮到手雷的在扔出去時的各種情況,以實現較為真實的模擬。

2.5 矩陣問題

在游戲中矩陣是用來實現變換和仿射的。

變換:在三維空間中物體實現上下、左右以及前后的6個不同方向的移動,放大、縮小和旋轉等運動操作。

仿射:物體在三維空間中發生運動操作后應該保持先前的形狀。

物體的運動與矩陣的關系:

2.5.1 移動——前后、上下、左右的移動

物體的移動可以是使用矩陣的加法來實現。

矩陣的加法運算是把物體移動前和移動后的相對應的位置元素(三維空間中的3個位置元素)相加,設定在三維空間中存儲位置的結構是一樣的,利用向量在引擎中實現。相當于對x,y,z三個坐標軸進行相加運算。游戲角色在場景中的運動就是通過獲取當前位置的坐標與目的地位置的坐標,再通過矩陣加法來實現。

利用矩陣加法實現物體移動:

2.5.2 物體的放大和縮小

在引擎中,可以利用矩陣的乘法對物體進行放大和縮小操作,如狙擊槍瞄準器中的放大圖像,玩家通過鼠標滾輪實現游戲畫面的縮放等。

對物體的放大和縮小操作可以理解為對物體的所有的頂點進行成放大和縮小(這邊頂點的的放大和縮小指的是頂點的在三維空間中的坐標),由于2點構成一條直線,頂點進行縮放,也就是變相的實現了對物體的縮放。

使用矩陣乘法實物體縮放變換:

其中,fx為x軸方向的縮放指數,fy是y軸方向的縮放指數,fz是z軸方向上的縮放指數。

如果想實現成比例的縮放,那么fx,fy,fz這三個縮放指數必須相等。

在引擎中,設定最大放大倍數為十倍,fy是y方向上的縮放因子取值為1-10表示放大,-1-10表是縮小,0表示不變。

2.5.3 物體的旋轉

在引擎中,可以利用矩陣的乘法對物體進行旋轉操作。如在游戲場景中創建武器的時候,武器以一定的速度按照某個角度在空中旋轉,以便玩家能夠從不同的角度觀察該武器。

在三維空間中,物體的旋轉跟xz,yz,xz這個三個平面有關。假設xy平面面向計算機屏幕前面的玩家,那么物體旋轉時按所在的不同平面位置來分,可以分為3種情況:

(1)繞x軸旋轉

繞x軸旋轉時,x的坐標值不會改變。

(2)繞y軸旋轉

(3)繞z軸旋轉

繞z軸旋轉的角度為正,由屏幕內指向屏幕外。

2.6 圓和球

一條線段有A,B兩個端點,如果以A端點為支點,繞著這個支點在一個平面內旋轉一周,那么這條線段B端點的運動軌跡形成的圖形把它稱作圓,A,B兩點構成的線段叫做半徑,A端點叫做圓心。

圓的方程:,圓心,半徑r。

圓形以自己的圓心為重點,以直徑作為對稱軸旋轉一周構成的曲面叫做球。

球體的方程:

,圓心是,半徑是r。

在游戲中的碰撞檢測,可以使用圓或者球體邊界之間是否相交來實現。當然也可以利用其他圖形來實現碰撞,但是圓或者球體在檢測的效率上高于其他類型的圖形。通常作為外圍檢測。

如果兩個圓形之間,它們之間的圓心的距離小于或者等于兩個圓形的半徑之和,那么就可以判斷發生了碰撞。

假設兩個圓形的方程為:和。如果那么兩個圓形發生了碰撞。

在游戲中,子彈從槍口出發到觸碰到物體,需要對子彈和目標物體進行碰撞檢測,用以判斷是否擊中目標,在確定擊中目標后,再利用碰撞物體之間的坐標得出發生碰撞時的具體位置,對該位置進行判斷,計算出產生的傷害值。

碰撞檢測在自動尋路功能中也能用的到,自動尋路功能的原理是在游戲角色和目標地點之間尋找一條能夠到達的最佳路徑,在尋路過程中會觸碰到場景中的其他物體,這時就需要對觸碰到的物體進行碰撞檢測,判斷該物體是否允許穿過。

3 結語

以上介紹的數學模型是FPS游戲引擎中常見的數學模型,廣泛運用在游戲環境,人物動作以及粒子系統等的設計中,它們之間互相依存,缺一不可。

參考文獻

[1]Greene Kelly.Laser game tags Matthews,competitor eyes market.The Business Journal,1994,8(51):3.

[2]Hyunuk An,Yutaka Ichikawa,YasutoTachikawa,et al.Comparison between iteration schemes for three-dimensional coordinate-transformed saturatedunsaturated flow model.Journal of Hydrology,2012,470-471:212-226.

[3]Hong.Jeong Min,Kim.MoonHee,Lee.GueMyung.On vector matrix game and symmetric dual vector optimization problem.Fixed Point Theory Appl,2012:233.

[4]Hong.Jeong Min,Kim.MoonHee,Lee.GueMyung.On vector matrix game and symmetric dual vector optimization problem.Fixed Point Theory Appl,2012:233.

[5]E.V.Chizhonkov.Iteration in a subspace for solving matrix games.Computational Mathematics and Mathematical Physics,2012,52(09):1221-1232.

[6]唐亨,張文彬.矩陣的循環置換[J].西南農業大學學報(社會科學版),1996,1:60-66.

[7]田麗華,姚鑫.虛擬場景中基于矩陣變換的碰撞檢測技術[J].科技創新導報,2009,30:47-49.

[8]LAI K-C.KANG S-C.Collision detection strategies for virtual construetion simulation.Automation in Construction,2009,18(06):724-736.

作者單位

福建江夏學院電子信息科學學院 福建省福州市 350108

猜你喜歡
引擎拋物線游戲
選用合適的方法,求拋物線的方程
巧求拋物線解析式
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
拋物線變換出來的精彩
玩轉拋物線
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
主站蜘蛛池模板: 67194亚洲无码| 国产精品爆乳99久久| 直接黄91麻豆网站| 国产导航在线| 国产亚洲欧美在线中文bt天堂 | 久无码久无码av无码| 日本人又色又爽的视频| 2021天堂在线亚洲精品专区| 国产第一页免费浮力影院| 亚洲人成成无码网WWW| 日韩精品一区二区深田咏美| 日韩精品一区二区三区大桥未久 | 91破解版在线亚洲| 台湾AV国片精品女同性| 亚洲大尺码专区影院| 老司机久久99久久精品播放| 久久人人妻人人爽人人卡片av| 五月激激激综合网色播免费| 高清亚洲欧美在线看| 五月丁香在线视频| 日本亚洲欧美在线| 欧美激情二区三区| 日本在线视频免费| 日韩123欧美字幕| 国产成人精品一区二区三在线观看| 久久青草热| 真人免费一级毛片一区二区 | 午夜国产理论| 国产福利观看| 毛片网站免费在线观看| 国产一级裸网站| 午夜福利免费视频| 国产手机在线小视频免费观看 | 中国一级毛片免费观看| 国产成人成人一区二区| 欧美精品v欧洲精品| 黄色一级视频欧美| 91精品国产综合久久香蕉922| 国内自拍久第一页| 国产一区二区三区夜色| 日韩一区精品视频一区二区| 久久婷婷六月| 日韩国产综合精选| 精品少妇人妻无码久久| 欧美综合在线观看| 欧美激情视频一区二区三区免费| 欧美有码在线| 91精品久久久无码中文字幕vr| 国产特级毛片| 亚洲大尺码专区影院| 国产第一色| 国产日韩欧美黄色片免费观看| 四虎综合网| JIZZ亚洲国产| 久久亚洲国产最新网站| 久久女人网| 青青操视频免费观看| 多人乱p欧美在线观看| 久久精品人人做人人爽97| 中文无码毛片又爽又刺激| 日韩毛片基地| 91视频精品| 国产人成在线观看| 亚洲欧洲日韩久久狠狠爱| 日韩精品一区二区三区免费| 国产偷国产偷在线高清| 日韩成人高清无码| 国产成人久久综合一区| 日本人妻一区二区三区不卡影院| 欧美不卡二区| 亚洲国产看片基地久久1024| 久久精品视频一| 国产一区免费在线观看| 精品综合久久久久久97| 免费看a毛片| 婷婷综合缴情亚洲五月伊| 国产精品成人观看视频国产 | 欧美国产日韩在线| 久久无码av三级| 青青草原国产免费av观看| 国产乱人伦偷精品视频AAA| 亚洲性网站|