FPS游戏引擎中的数学模型分析

2017-06-10 19:33王尧
电子技术与软件工程 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

猜你喜欢
三维空间对称轴引擎
三维空间的二维图形
先找对称轴!
抓牢对称轴突破二次函数
有几条对称轴
白纸的三维空间
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
三维空间中次线性Schr(o)dinger-Kirchhoff型方程的无穷多个负能量解
X线引导三维空间定位系统植入骶髂关节螺钉的初步研究
生活中的轴对称检测题(一)