私は次のようなものを作ろうとしています-最新のOpenGLを使用してそれをフライトシミュレータと呼びましょう。ヨー、ピッチ、ロールを使用して平面オブジェクトを回転させようとしています。しかし、オブジェクトはグローバル座標系を中心に回転しているようです(つまり、オブジェクトがベクトル(0,0,1)に面している場合、ロール操作は正常に機能しますが、たとえば(1,0,0)に向けると、ピッチのように動作します)。
私の変換行列は次のように計算されます。
transformation_matrix = perspective_projection_matrix *
camera_rotation_matrix *
camera_translation_matrix *
translation_matrix *
rotation_matrix *
scale_matrix;
回転行列は
rotation_matrix = rotation_z * rotation_y * rotation_x;
平行移動の前にローカル回転行列を追加しようとしましたが、さらに悪く見えます(オブジェクトは、常にデフォルトに面している空間内のあるポイントの周りを飛行するようになりました)
ローカル座標系でヨー、ピッチ、ロールを使用して、通常の平面のようなオブジェクトを回転させるにはどうすればよいですか?
編集
また、カメラの位置が(0,0,0)のグローバル座標系で回転が実行されていることにも気づきました
。そうではありません。