Projeção oblíqua em xna
-
29-10-2019 - |
Pergunta
Estou tentando alcançar uma projeção oblíqua ( http://en.wikipedia.org/wiki/Oblique_projection ) na estrutura 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 você pode ver, estou apenas multiplicando a projeção ortográfica pela projeção oblíqua.
O que eu entendo é isso:
http://imageshack.us/photo/my-images/835/oblique1.png/
É basicamente como seria a projeção ortográfica, mas com alguns recortes estranhos e distantes.
Como posso conseguir uma projeção oblíqua adequada?Obrigado antecipadamente
Solução
Respondido por Diki: http://forums.create.msdn.com/forums/p/85032/513412.aspx#513412
O código precisa ser alterado assim:
Matrix obliqueProjection = new Matrix(
1, 0, 0, 0,
0, 1, 0, 0,
cos, sin, 1, 0,
0, 0, 0, 1);
projection = obliqueProjection * orthographicProjection;
Outras dicas
Para começar, você pode implementar a fórmula adequada.
O artigo da Wikipedia diz que a matriz de projeção usa 0.5 * cos
e 0.5 * sin
enquanto sua versão usa apenas cos
e sin
.