後でゲーム開発で使用できるようになることを願って、単純なマトリックス ライブラリを C++ で作成しようとしています。
基本的な実装は完了しましたが、オブジェクトごとに 1 つの行列しか格納できないという問題に気付きました。回転順序がすぐに混乱してしまいます。
私の知る限り、AB != BA
したがって、マトリックスに任意の回転を継続的に乗算している場合、回転が混乱してしまいますよね? 私の場合、Y 軸でグローバルに回転し、X 軸でローカルに回転する必要があります (Z 軸でローカルに回転するのもいいでしょう)。これらは、平均的な一人称シューティング ゲームの資質のようです。したがって、「混同」とは、Y 軸 (または Z 軸) で回転しようとすると、意図した軸ではなく、ローカル X 軸を中心に回転し始めることを意味します (意味がある場合)。
だから、これらは私が思いついた解決策です:
- 3 つのオイラー角を保持し、1 つの角が変化したときに行列を正しい順序で再構築する
- 各軸に 1 つずつ、3 つの行列を保持する
- 乗算中に何らかの方法で行列を破壊し、後で適切に再構築します (?)
それとも私は何も心配していませんか?私の良心の呵責は間違っているのでしょうか? 秩序は魔法のように自然に解決するのでしょうか?