0

我试图获得以下观点:在此处输入图像描述

Matrix.CreateOrthographicOffCenter本质上,我正在做一个带有一些 3D 图形的 2D 游戏,所以我从Matrix.CreatePerspectiveOffCenter

我已经绘制了一个图元,通过减小它的 z-index,它会走得更远,但它总是在 (0, 0) (左上角)的方向上消失,而消失点应该是中心。

我的变换设置现在看起来像这样((640, 360) 是屏幕的中心):

basicEffect.Projection = Matrix.CreatePerspectiveOffCenter(0, graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height, 0, 1, 10);
basicEffect.View = Matrix.Identity * Matrix.CreateLookAt(new Vector3(640, 360, 1), new Vector3(640, 360, 0), new Vector3(0, 1, 0));
basicEffect.World = Matrix.CreateTranslation(0, 0, 0);

我无法将消失点移到屏幕中心。我设法(在某种程度上)使用 CreatePerspective 视图来做到这一点,但我想继续使用 CreatePerspectiveOffCenter,因为我可以轻松地将正常像素位置转换为 3D 空间。我错过了什么?

4

1 回答 1

0

最后我使用了以下。如果您正在寻找一种解决方案来创建具有“2D 感觉”的 3d 视图,这可能会派上用场。通过这些平移,z-index 为 0 与屏幕的宽度和高度完全匹配,并且消失点位于屏幕的中心。

basicEffect.Projection = Matrix.CreatePerspectiveFieldOfView((float)Math.PI / 2f, 1, 1f / 1000, 1000f);
basicEffect.View = Matrix.CreateLookAt(new Vector3(0, 0, 1f), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
basicEffect.World = Matrix.CreateTranslation(0, 0, 0);
于 2013-03-04T13:09:23.373 回答