计算将一组坐标转换为另一组坐标的矩阵

时间:2010-12-09 14:00:19

标签: graphics matrix

我正在玩游戏的一些模型glest

这些模型由一个或多个网格组成;每个网格由许多帧组成,这些帧描述每个动画帧的每个顶点的位置。在下面显示的模型中,每个框架中每个轮子中每个顶点的位置都是一个数组。

这些模型已从Blender等3D工具导出。某个地方有人有原件。

但我想知道,对于简单的动画,例如车轮转向, 如何计算 变换 - 旋转,缩放和平移的步骤,或矩阵当应用于前一帧时将产生新帧?

(显然并非所有的帧都会有这样的变换,因为它们可能会扭曲模型等。)

另外,如何通过应用矩阵并再次渲染相同的顶点来检测镜像和其他减少顶点数据量的机会?

运行速度 - 如果在几分钟内测量 - 将不会成为问题。

A glest catapult

1 个答案:

答案 0 :(得分:1)

首先,一些假设:

  • 您正在处理3D仿射变换(线性变换加翻译)。
  • 您的动画中每个帧都有顶点
  • 您可以将一个帧中至少4个顶点与下一帧中的4个顶点相关联

然后你可以将4个顶点作为4D collumn矢量(在每个矢量的第4个元素中加1)并连接它们以创建一个4x4矩阵,称为X.对变换空间中的相应矢量执行相同的操作并将它们称为Y,这也是一个4x4矩阵。一个小的线性代数为您提供了一种方法来找到4x4矩阵A,当应用于X时,给出Y.因此:

AX = Y
A = YX-1

使用它来获得旋转和缩放并非易事。但是,A的最右列将包含连续帧之间对象的转换。