写真の簡単なサンプルについては、次のとおりです。
これは正常です:
これは、X 軸または Y 軸で 180 度回転した後です。
なぜこれが起こっているのか、まったくわかりません。私は OpenTK を使用して単純な Bullet 物理シーンをレンダリングしています。コードは簡単で、マトリックスの処理方法に問題があるように思えます。これは単純なレンダリング コードです。
GL.PushMatrix();
GL.MultMatrix(Body.MotionState.WorldTransform.ToArray());
GL.Scale(HalfX * 2, HalfY * 2, HalfZ * 2);
GL.Color4(Color4.Blue);
GL.Begin(PrimitiveType.Lines);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, 0, 10);
GL.End();
GL.Color4(Color4.Yellow);
GL.Begin(PrimitiveType.Lines);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, 10, 0);
GL.End();
GL.Color4(Color4.Green);
GL.Begin(PrimitiveType.Lines);
GL.Vertex3(0, 0, 0);
GL.Vertex3(10, 0, 0);
GL.End();
if (Body.ActivationState == ActivationState.ActiveTag)
{
GL.Color4(Color4.Blue);
}
else if (Mass == 0)
{
GL.Color4(Color4.Red);
}
else
{
GL.Color4(Color4.Green);
}
model.Draw();
GL.PopMatrix();
私はそれをコンポーネントに分解しようとしました: 並進ベクトルは問題なく、スケーリングも問題なく、Z 軸での回転も問題ないように見えます... X 軸または Y 軸で回転を追加すると、飛行が開始されます。コンソール出力を行っています。ボックスは、両方の画像で Z 軸上で正確に 6.9999 にあります。
どこが間違っていますか?私は何が欠けていますか?どうすればこれを修正できますか?!