游戏数学(32)

 

这里添加了另外一个补间。该补间使精灵的透明度从0逐渐变为完全不透明。这是淡入文本的一种很好的方法。精灵的位置也可以通过补间改变。尝试使用补间,将精灵从屏幕外移动到屏幕的中央。另外一个很好的示例是将精灵的透明度从0变化为1,然后引发另一个补间,将透明度从1变化为0。这些函数可以逐个调用,使补间循环执行。

8.5  矩阵

图形编程中到处会用到矩阵。矩阵有很多种应用,但是本节将只关注与图形和游戏编程有关的那一部分。

矩阵是一种数学结构,为描述或者执行3D模型或者由四方形构成的精灵上的众多操作提供了一种便捷的方法。这些操作包括变换(在3D空间内移动模型)、旋转、缩放、偏航(使形状“靠”向特定的方向)和投影(例如,将3D空间中的点转换到2D空间中的点)。许多这样的操作都可以手动完成,例如,精灵类已经通过把向量添加到每个顶点位置而执行了平移。

与向量相比,矩阵在执行这类操作时有几个优势。实现不同操作的矩阵可以相互结合,得到单个矩阵,该矩阵定义了这些操作的组合。例如,一个矩阵将模型旋转90°,一个矩阵将模型放大两倍,一个矩阵将模型向左移动两英里,这几个矩阵可以结合成一个同时完成所有操作的矩阵。矩阵乘法可以实现这种操作,即将多个矩阵相乘,得到的结果矩阵是所有操作的组合。

组合操作并不是矩阵唯一的优势。矩阵可以求出逆矩阵,它执行的操作与原矩阵执行的操作相反。如果创建一个绕Z轴旋转5? 的旋转矩阵,然后对一个模型应用该矩阵,那么通过对矩阵求逆矩阵,然后将这个逆矩阵应用到模型上,可以使模型返回到原来的位置。通过将模型的每个顶点与矩阵相乘,可以将矩阵应用到模型上。

8.5.1  矩阵的定义

矩阵是数值组成的网格。与向量类似,矩阵也可以有多个维。我们定义的向量的维数为3,其中的3个维度分别是X、Y和Z。在3D图形学中,最常用的矩阵是4×4矩阵,如图8-21所示。

 

读书导航