使用XNA在3d中定位矩阵

时间:2013-07-16 16:05:29

标签: c# .net matrix 3d xna

我需要帮助定位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));

2 个答案:

答案 0 :(得分:0)

以下内容如何:

view = Matrix.CreateRotationY(yangle) *
       Matrix.CreateRotationX(xangle) *
       Matrix.CreateTranslation(Vector3.Backward * 20.0f);

答案 1 :(得分:0)

好吧,经过几个小时的挫折,我放弃了"搅拌机"型号相机。它工作得很好。我离开XNA并尝试了新的统一引擎。凭借团结,我在XNA中获得了更多的成就。无论如何,感谢大家的回复,我很感激他们,他们真的很有帮助。我会给一个UP标志,但我没有足够的代表。如果有人可以关闭此帖子,请执行此操作。