因此,对于图片中的快速示例:
这个是正常的:
这是在 X 或 Y 轴上旋转 180 度之后:
我根本不明白为什么会这样。我正在使用 OpenTK 渲染一个简单的子弹物理场景。代码很简单,处理矩阵的方式似乎有问题。这是直接的渲染代码:
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。
我哪里错了?我错过了什么?我该如何解决?!