添加或组合Matrix3D

时间:2013-09-16 07:55:49

标签: actionscript-3 matrix-multiplication stage3d

我一直致力于3D太空游戏(早期演示在这里...... www.sugarspook.com/darkmatters/demo.html)我正在添加代码以允许空间站成为由多个网格构建。我有网格包括和工作。现在我希望能够将每个网格部分相对于中央空间站对象(轨道类)定位 每个OrbitalSection都有一个_matrixOffset:Matrix3D,我操纵它来确定它的位置。在3D绘图阶段,OrbitalSection复制它的'父'轨道Matrix3D原始数据,然后附加自己的_matrixOffset:

transform.matrix3D.copyFrom(_orbitalMatrix);
transform.matrix3D.append(_matrixOffset);

这一切都很好 - 如果OrbitalSection的_matrixOffset只有位置翻译,例如:

_matrixOffset.appendTranslation(0, 0.1, 0);

但是,只要我将旋转包含在_matrixOffset中,游戏中的定位就会搞砸。
我想做的就是将_matrixOffset添加到父Orbital的transform.matrix3D的副本中。我在翻译之前和之后尝试过prependRotation和appendRotation 有谁知道如何以推理方式添加2个Matrix3D? 感谢。

2 个答案:

答案 0 :(得分:1)

显然,您希望OrbitalSection位于相对于其主基地的特定位置。这意味着,您必须首先填充矩阵,然后附加父矩阵。

transform.matrix3D.copyFrom(_matrixOffset);
transform.matrix3D.append(_orbitalMatrix);

如果您的Orbital实例决定以某种方式旋转,这也应该保存您的皮肤。

答案 1 :(得分:0)

通过将_matrixOffset“添加”到父级矩阵的副本,您有什么意思?

我建议阅读更多关于“同质变换”的内容。