私はGoogleで何度もここにいたが、最初の質問。回転を表現するために四元数を使うという話題と、同様の問題を抱えている人々を見つけるという話はかなり読んでいます。私はまだ良い解決策、または私が理解できるものを見つけることができませんでした。だから、私は確かな答えを得るために十分な疑問を尋ねてショットを出しています。6DOFでのクォータニオンカメラの表現 - 固有のローリングを避ける
私は現在、カメラの向きを表すために四元数(特にQt 4.7四元数/ C++)を使用しています。プログラムの各ステップで、私はマウスの動きをチェックし、fromAxisAndAngle(xaxis、x_mouse_movement)とfromAxisAndAngle(yaxis、y_mouse_movement)を実行します。私はこれらの2つの四元数をとり、それらを乗算します(yaxis * xaxis)。初期化のために私は乗算する単位四元数(w、x、y、z - > 1,0,0,0)を持っています。私はこれらのfromAxisAndAngle乗算の回転を現在の向きで累積し続けます。これは、嘘グループ問題(私は思う)として知られているロールを生成します。ピッチとヨーを連続して適用すると、純粋なロールを生成することができます。これが私の現在の実装にあります。私が言うことができる)。
私はpitch、yaw、rollがインクリメントされ、これらの値から毎回ゼロからAxisAndAngleから四元数が構築される別の方法を実装しました。これは正しいFPSスタイルのカメラを生成しますが、ジンバルロックに苦しんでいます。私の目標は、純粋なクオータニオンの表現を維持しながら、ピッチやヨーだけで得られるローリング効果を除去(または補償)しながら、一般的な6DOFカメラをFPSカメラや宇宙船スタイルのカメラとして使用できるようにすることです。私はこのロールを修正するための提案(特定のルーチン)、または私のニーズに合った代替表現を探しています。テキストの壁には申し訳ありませんが、私は非常に明確になりたかったのです。あなたの時間とハッピーハッキングありがとう!
この「嘘グループ問題」の参考情報はありますか?私は関連する参考文献を探すのに苦労しました。私の理解は、四捨五入を回避するために四元数を使ってインクリメンタルアプローチを可能にしていたことです。この問題は私には新しくありました。 –