そこで、新しいプログラマー向けに Quaternion ベースの 3D カメラを作成したので、統合して使用を開始するのは非常に簡単です。
開発中、最初はユーザー入力をオイラー角として受け取り、そのフレームの入力に基づいてクォータニオンを生成しました。次に、カメラのクォータニオンを入力用に生成したもので乗算します。理論的には、入力回転をカメラの回転の現在の状態に単純に追加するだけで、物事はすべて太くて幸せになります。クォータニオンのみを保存および追加しているため、これを「クォータニオンの蓄積」と呼びましょう。
しかし、この方法には問題があることに気づきました。使用すればするほど、たとえばヨーなどの 1 つのオイラー角だけで回転していたとしても、反復を繰り返すうちに別のオイラー角 (ピッチなど) で回転し始めます。それはわずかでしたが、かなり受け入れられませんでした。
そこで、さらに調査を行ったところ、オイラー角を蓄積する方がよいという記事を見つけたので、カメラは現在の回転をオイラー角として保存し、入力はフレームごとに単純に追加されます。次に、各フレームからクォータニオンを生成し、それを使用して回転行列を生成します。これにより、不適切な軸への回転ブリーディングの問題が修正されました。
では、Stackoverflow のメンバーはこの問題について洞察を持っていますか? それは物事を行うための適切な方法ですか?