使用XNA在三维中定向矩阵

本文关键字:XNA 三维 使用 | 更新日期: 2023-09-27 18:22:30

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

大家好!我不是编程新手,但我是3d编程新手。

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

这个理论是有效的,但并不像我预期的那样。我可以成功地围绕立方体(左右)旋转相机,甚至俯仰(上下)也能工作。但当我想向左或向右旋转时,当相机向上(看物体的顶部)或向下(从下面看物体)时,我的问题就会出现。它"滚动"对象。我希望相机的动作就像目标物体没有顶部或底部一样。如果我把相机向上倾斜,然后向右倾斜,相机应该围绕我的物体旋转,而不是在上面滚动。这很难解释,因为我的母语不是英语。不管怎样,如果你理解其中的任何一个:D,那么请回复。Thanx。

        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));

使用XNA在三维中定向矩阵

以下内容如何:

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

在经历了几个小时的沮丧之后,我放弃了使用"搅拌机"型相机。它运行得很好。我离开了XNA,试用了新的unity引擎。有了团结,我取得了比在XNA更大的成就。不管怎样,感谢大家的回复,我很感激他们,他们真的很有帮助。我会给出一个UP标志,但我没有足够的rep。如果有人可以关闭这个线程,请这样做。