3D游戏引擎初探(三)

🗨️字数统计=789字 ⏳阅读时长≈2分钟

数学相关知识

在3D游戏引擎中会涉及到数学的相关知识,具体可以划分到线性代数:向量、矩阵、齐次坐标系、四元数。

向量

假设大家都已经对向量最基本的加法、减法、点乘、叉乘、单位化都是有了解的,简单介绍一下这些基础计算在游戏引擎中是如何应用的。

向量的加法

在最开始学向量的时候大家已经知道,向量的加法遵循三角形法则和平行四边形法则,在构建游戏世界的过程中用到了向量加法的几何意义。比如游戏中怪物追击玩家的AI中,怪物知道玩家的位置,需要时时刻刻朝向玩家移动,就会在每帧运用向量的加法向玩家移动。

向量的减法

向量的减法作为加法的你逆运算,集合意义也是可以用在方向的计算上,另外它还能判断两个物体之间的距离。比如游戏中怪物的追击机制有一个判断条件,那就是距离玩家大于一定的距离后才会进行追击,小于一定距离之后就不再朝向玩家移动,这是就用到了向量的减法。

向量的点乘

点乘主要用在了角度的计算和材质的渲染, 判断目标在自己的前后方位 。还是以怪物追击玩家为例子,刚刚只说了追击过程中的位置移动,但是怪物和玩家都是有正面朝向的,不然玩家看到怪物背对着玩家人物进行追击会觉得怪怪的,这时就需要怪物将自己的正面转向玩家。转的角度是多少呢?此时就需要用到向量的点乘进行计算了。 也能用来判断两个向量是否垂直、计算一个向量在另一个向量上的投影分量大小 。再说材质的光照渲染,通俗意义上讲就是光线照射后的明暗效果。现实世界中不规则的材质表面接受光线照射后是有不同的表现的,从数学的几何角度上来解释就是:在shader中,当材质表面的顶点法向量与光线向量的角度(即两个向量的点积)大于90度时就不接受光线的渲染,反之亦然。

向量的叉乘

1、叉乘可以用来判断两个向量是否平行或相交。返回值为0,则平行。

2、用于求平面法线(叉乘的几何意义:absinθ)

3、计算两个物体之间形成四边形的面积(|a||b|sinθ)

4、 判断目标在自己的左右方位

关于向量的点乘和叉乘容易混淆的问题,可以这么理解: 点乘判断角度,叉乘判断方向。

向量的单位化

向量的单位化计算的是物体间的距离,这个就不必多做介绍了。

矩阵

未完待续。。。

分享到