我正在尝试用 C++ 创建一个简单的矩阵库,希望以后能够在游戏开发中使用它。
我已经完成了基本的实现,但我刚刚意识到每个对象只存储一个矩阵的问题:旋转顺序会很快混淆。
据我所知:AB != BA
因此,如果我不断地将任意旋转乘以我的矩阵,那么旋转就会混淆,对吗?就我而言,我需要在 Y 轴上全局旋转,在 X 轴上局部旋转(在 Z 轴上局部旋转也不错)。这些似乎是普通第一人称射击游戏的品质。所以通过“混合”,我的意思是如果我在 Y 轴(或 Z 轴)上旋转,那么它将开始围绕局部 X 轴旋转,而不是预期的轴(如果这有任何意义)。
所以,这些是我想出的解决方案:
- 保留3个欧拉角,当一个角发生变化时,按照正确的顺序重建矩阵
- 保留3个矩阵,每个轴一个
- 在乘法过程中以某种方式破坏矩阵,然后正确地重建它(?)
还是我什么都不担心?我的疑虑是假的吗,订单会以某种方式神奇地自行解决?