2011-04-01 154 views
6

我在我的代码中有一个错误,想知道这是不正确的。将二维仿射变换矩阵转换为三维仿射变换矩阵

我在我的代码中有一个2D视图矩阵,但要将我的世界显示在屏幕上,我需要将2D视图矩阵转换为3D视图矩阵。这是我使用的过程:

| 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矩阵,但只要我申请任何变换以二维矩阵我所有的物体被吸入消失。

对于使用3D的2D绘图,我用这个投影矩阵:

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

什么是二维矩阵转换成3D的正确方法?

回答

14

仿射变换使用变换矩阵的额外行/列进行平移。所以我认为你想要做的是将最后一行/列向下/向右移动,然后对于新轴简单地插入标识转换。

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

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

+0

+1你是对的。 – 2011-04-01 05:15:29