将2D仿射变换矩阵转换为3D仿射变换矩阵。

9

我在代码中发现了一个错误,想知道这个过程是否正确。

我的代码���有一个二维视图矩阵,但是为了将世界显示到屏幕上,我需要将二维视图矩阵转换为三维矩阵。这是我使用的过程:

| a b c |      | a b c 0 |
| d e f |  =>  | d e f 0 |
| g h i |      | g h i 0 |
               | 0 0 0 1 |

当我在2D矩阵中使用单位矩阵时,它可以工作,但是一旦我对2D矩阵应用任何变换,所有被绘制的对象都会消失。

为了在3D中绘制2D图形,我使用以下投影矩阵:

_basicEffect.Projection = Matrix.CreateOrthographicOffCenter(0, graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height, 0, 0, 1);

如何正确将 2D 矩阵转换为 3D?

1个回答

18

仿射变换使用转换矩阵的额外行/列进行平移。因此,我认为您想要做的是将最后一行/列向下/向右移动,然后为新轴插入身份变换。

| a b c |      | a b 0 c |
| d e f |  =>  | d e 0 f |
| g h i |      | 0 0 1 0 |
               | g h 0 i |

我不确定,但至少试一试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接