Pregunta

Estoy tratando de lograr la proyección oblicua ( http://en.wikipedia.org/wiki/oblique_proyywy) en el marco de XNA:

float cos = (float)Math.Cos(DegreeToRadian(45)) * -1; 
float sin = (float)Math.Sin(DegreeToRadian(45)) * -1; 

Matrix obliqueProjection = new Matrix( 
                                  1, 0, cos, 0, 
                                  0, 1, sin, 0, 
                                  0, 0, 1,   0, 
                                  0, 0, 0,   1); 

Matrix orthographicProjection = Matrix.CreateOrthographic(10, 10, -1, 100000); 

projection = orthographicProjection*obliqueProjection; 

Como puede ver, simplemente se multiplice con la proyección oblicua.

lo que obtengo es esto:

http://imageshack.us/photo/my-images/835/oblique1.png/

es básicamente lo que se vería la proyección ortográfica, pero con un raro recorte lejano.

¿Cómo puedo lograr una proyección oblicua adecuada? Gracias de antemano

¿Fue útil?

Solución

Respondido por DIKI: http://forums.create.msdn.com/forums/p/85032/513412.aspx#513412

El código debe cambiarse así:

Matrix obliqueProjection = new Matrix(  
                                  1,   0,   0,   0,  
                                  0,   1,   0,   0,  
                                  cos, sin, 1,   0,  
                                  0,   0,   0,   1);  

projection = obliqueProjection * orthographicProjection;  

Otros consejos

Para empezar, puede implementar la fórmula adecuada.

El artículo de Wikipedia dice que la matriz de proyección utiliza 0.5 * cos y 0.5 * sin mientras su versión utiliza solo cos y sin.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top