Proiezione obliqua in XNA
-
29-10-2019 - |
Domanda
sto cercando di ottenere la proiezione obliqua ( http://en.wikipedia.org/wiki/oblique_proietion) nel quadro 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;
.
Come puoi vedere im semplicemente moltiplicando ortografico con proiezione obliqua.
Cosa capisco è questo:
http://imageshack.us/photo/my-images/835/oblique1.png/
è fondamentalmente quale proiezione ortografica sembrerebbe, ma con un po 'strano clipping di gran lunga.
Come posso ottenere una corretta proiezione obliqua? Thx in anticipo
Soluzione
Risposta da Diki: http://forums.create.msdn.com/forums/p/85032/513412.aspx#513412
Il codice deve essere cambiato come questo:
Matrix obliqueProjection = new Matrix(
1, 0, 0, 0,
0, 1, 0, 0,
cos, sin, 1, 0,
0, 0, 0, 1);
projection = obliqueProjection * orthographicProjection;
. Altri suggerimenti
Per gli antipasti, è possibile implementare la formula corretta.
L'articolo Wikipedia dice che la matrice di proiezione utilizza 0.5 * cos
e 0.5 * sin
mentre la versione utilizza solo cos
e sin
.