そのため、この問題について質問する前にここに来ましたが、これまでのところ誰も私の質問に答えることができませんでした. そこで、この問題を説明するビデオを作成しました。
私はこれまでに自分の数学ファイルをチェックして再チェックしました。2 人の大学の教授もそうでした。自分のシェーダーをチェックしました。単純なパススルー シェーダーを使用しているだけです。
問題が発生しているビデオを作成しました。私のプロセスを少し説明します。
ローテーションの初期値を設定しました。これにより、問題が発生するポイントにプッシュされます。
rotX = 0.0f;
rotY = -22.0f;
rotZ = -62.0f;
これらの値により、実行時にオブジェクトを回転させる必要がなくなります。これらの値で問題が発生します。ビデオでわかるように、牛はコードのどこにも実際に指示することなく回転し始めます。回転行列と回転値をログ ファイルに出力しましたが、それらはすべて正常です。
http://www.youtube.com/watch?v=LB7_zftalT8
ですから、これまでどこでも見たことがありません。誰かがこのようなものを見た場合は、私に知らせてください。考えられる問題が非常に多いため、コードを投稿していませんが、必要に応じてコード スニペットを提供したり、ソース svn へのアクセスを提供したりできます。
私はこの問題のデバッグに 3 週間を費やしました。少なくとも 10 組の目でこの問題を見て、私のコードをレビューしてもらいました。
問題として削除できなかった唯一の問題は、メモリの破損です。幸運を祈ります。
編集:
コード サンプル: http://pastebin.com/hRSvEYAZ
回転にはクォータニオンを使用し、軸角度で作成します。次に、ローテーションを複数回組み合わせて、4x4 を作成します。
編集:
MadCoreTom から提供された回答を試しましたが、役に立ちませんでした。また、引き続きメモリを調べましたが、問題は見られません。
編集:
そのため、クォータニオンから正規化呼び出しを削除しました。今は、軸角度からクォータニオンを作成するときにのみ軸を正規化します。また、クォータニオンの toMatrix3 を書き直して、それが役立つかどうかを確認しましたが、そうではありませんでした。
また、ローテーションの更新をキー プレス内に移動しました。すぐにより多くのコードも提供する予定です。