Proyección oblicua en XNA
-
29-10-2019 - |
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
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
.