0

我一直在做一个 3D 太空游戏(这里有一个早期的演示...... www.sugarspook.com/darkmatters/demo.html),我正在添加代码以允许空间站建造出来多个网格。我已经包含了网格并且可以正常工作。现在我希望能够相对于中央空间站对象(轨道类)定位每个网格部分。
每个 OrbitalSection 都有一个 _matrixOffset:Matrix3D ,我对其进行操作以确定它的位置。在 3D 绘图阶段,OrbitalSection 复制它的“父”Orbital 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?谢谢。

4

2 回答 2

1

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

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

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

于 2013-09-16T08:14:18.390 回答
0

将 _matrixOffset “添加”到父矩阵的副本中究竟是什么意思?

我建议阅读更多关于“同质转换”的信息。

于 2013-09-16T08:07:55.773 回答