2010-12-09 69 views
0

我正在玩游戏glest的某些模型。计算将一组坐标转换为另一组坐标的矩阵

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

这些模型已从Blender等3D工具导出。有人在哪里有原件。

但我想知道,对于简单的动画,如车轮转,你怎么能计算的变换 - 旋转,缩放的步骤和翻译,或在应用到前一帧将导致矩阵在新的框架?

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

而且,你怎么可以检测镜像和其他机会通过应用矩阵,以减少顶点的数据量和再次渲染相同的顶点?

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

A glest catapult

+0

我不确定我是否理解这个问题......给定一组轮子模型正在转动的框架,您如何计算将一个框架转换为下一个框架的旋转矩阵?我们是否给出了车轮的旋转轴,还是我们必须弄清楚? – LarsH 2010-12-10 07:11:25

回答

1

首先,一些假设:

  • 你处理的3D仿射变换(线性变换加上平移)。
  • 你必须每一帧的顶点动画
  • 可以至少4个顶点在一帧与4个顶点在下一帧

然后联想可以采取4个顶点为4D collumn载体(在每个向量的第4个元素中附加1),并连接它们以创建一个名为X的4x4矩阵。对于它们在变换后的空间中的相应向量执行相同的操作,并将它们称为Y,它也将是一个4x4矩阵。小线性代数提供了一种方法找到的4x4矩阵,当应用于X让你Y.这样:

AX = Y 
A = YX-1

以此来获得旋转和缩放是不平凡的。但是,A的最右边一列将包含连续帧之间的对象的翻译。