2011-04-01 35 views
6

Tengo un error en algún lugar de mi código, me preguntaba si esto es incorrecto.Convierta la matriz de transformación Affine 2D a la matriz de transformación afín 3D

Tengo una matriz de vista 2D en mi código, pero para mostrar mi mundo a la pantalla, necesito convertir la matriz de vista 2D a 3D. Este es el proceso que estoy usando:

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

Funciona cuando se utiliza una matriz de identidad para la matriz 2D, pero tan pronto como me aplico cualquier transformación de la matriz 2D todas mis entrada de objetos desaparecen.

Para dibujar en 2D usando 3D, puedo utilizar esta matriz de proyección:

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

Cuál es la forma correcta para transformar la matriz de 2D a 3D?

Respuesta

14

Las transformaciones de Affine utilizan la fila/columna adicional de la matriz de transformación para la traducción. Así que creo que lo que quieres hacer es mover la última fila/columna hacia abajo/derecha y luego para el nuevo eje simplemente inserta la transformación de identidad.

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

No estoy seguro, pero al menos inténtelo.

+0

+1 estás en lo correcto. –

Cuestiones relacionadas