1

我需要帮助在 3d 中定位矩阵!

大家好!我对编程并不陌生,但我对 3d 编程很陌生。

在我的代码中,我有一个视图矩阵。视图的目标始终是 (0,0,0)。而且我还有一个临时矩阵,它控制相机(我把它的位置并在视图矩阵的 CreateLookAt 方法中使用它)。

这个理论有效,但不像我预期的那样。我可以成功地围绕立方体(左和右)旋转相机,甚至俯仰(上、下)都可以工作。但是当我想向左或向右旋转时会出现我的问题,而相机是向上倾斜(正在看对象的顶部)或向下(从下面看对象)。它“滚动”对象。如果相机表现得好像目标对象没有顶部或底部,我会喜欢它。如果我将相机向上倾斜,然后向右倾斜,相机应该围绕我的对象旋转,而不是在它上面滚动。这很难解释,因为我的母语不是英语。无论如何,如果您理解其中任何一个:D,请回复。谢谢。

        tempcam *= Matrix.CreateTranslation(tempcam.Forward * 20);
        tempcam = Matrix.CreateFromYawPitchRoll(MathHelper.ToRadians((float)yangle),MathHelper.ToRadians((float)zangle), 0);
        tempcam *= Matrix.CreateTranslation(tempcam.Backward * 20);
        cameraposition = new Vector3(tempcam.M41, tempcam.M42, tempcam.M43);
        view = Matrix.CreateLookAt(cameraposition, new Vector3(0, 0, 0), new Vector3(0, 1, 0));
4

2 回答 2

0

好吧,经过几个小时的挫折,我放弃了使用“搅拌机”型相机。它工作得很好。我离开了 XNA 并尝试了新的统一引擎。通过团结,我取得了比在 XNA 中任何时候都多的成就。无论如何感谢大家的回复,我很感激他们,他们真的很有帮助。我会给一个 UP 标志,但我没有足够的代表。如果有人可以关闭此线程,请关闭。

于 2013-07-20T12:15:37.560 回答
0

以下情况如何:

view = Matrix.CreateRotationY(yangle) *
       Matrix.CreateRotationX(xangle) *
       Matrix.CreateTranslation(Vector3.Backward * 20.0f);
于 2013-07-17T09:00:11.247 回答