C# XNA-新手-简单模型失真

C# XNA-新手-简单模型失真,c#,3d,xna,C#,3d,Xna,关于XNA的所有新手问题(一般可能是3D) 当我使用以下代码渲染一个简单的搅拌机制作的立方体时,一切看起来都很好: proj = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(90), 800f / 480f, 1f, 4000.0f); view = Matrix.CreateLookAt(new Vector3(0, 0, -10), new Vector3(0, 0, 10), Vector3.Up); world = M

关于
XNA
的所有新手问题(一般可能是3D)

当我使用以下代码渲染一个简单的搅拌机制作的立方体时,一切看起来都很好:

proj = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(90), 800f / 480f, 1f, 4000.0f);
view = Matrix.CreateLookAt(new Vector3(0, 0, -10), new Vector3(0, 0, 10), Vector3.Up);
world = Matrix.CreateTranslation(new Vector3(0, 0, 0));
但当我将世界的X值更改为9(或任何其他使其偏离中心的值)时,立方体水平拉伸,看起来很糟糕:

这说明了问题:


我做错了什么来做伸展运动?在此提前感谢您的帮助

您可以通过使用更窄的视野来减少透视失真。试着用45度角代替90度角。由于此“放大”,您必须将viewMatrix放置得更远以进行补偿

编辑:我刚刚测试了45度视角下的“透视”失真度。我不确定我在这里看到了任何有问题的失真


看起来不错。你看到它因为透视而被拉长了我该怎么解决?我不认为使用CreateOrthographic会起作用,因为我确实希望离得更远的东西看起来更小。吉米,谢谢你,这对一些人有帮助,但它仍然有问题。我一定错过了什么。在一个合适的游戏中,如何使屏幕一侧的物体完全不拉伸?吉米,谢谢,这对一些人有帮助,但它仍然会拉伸。我一定错过了什么。在一个合适的游戏中,如何使屏幕一侧的对象完全不拉伸?透视图就是这样工作的。如果你感到困扰,你可以继续使用更窄的视野。你的视野越接近0,你的投影就越接近正交。按照你的建议,将视野更改为45,并在对象上添加一点旋转,使我到达了需要的位置。谢谢