Projection oblique dans XNA
-
29-10-2019 - |
Question
J'essaie d'atteindre une projection oblique ( http://en.wikipedia.org/wiki/Obilique_projection ) Dans le cadre 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;
Comme vous pouvez le voir, je multipliez simplement l'orthographique avec une projection oblique.
Ce que j'obtiens, c'est le suivant:
http://imageshack.us/photo/my-images/835/oblique1.png/
C'est essentiellement à quoi ressemblerait la projection orthographique, mais avec une étrange coupure.
Comment puis-je réaliser une projection oblique appropriée? Merci à l'avance
La solution
Répondu par Diki: http://forums.create.msdn.com/forums/p/85032/513412.aspx#513412
Le code doit être modifié comme ceci:
Matrix obliqueProjection = new Matrix(
1, 0, 0, 0,
0, 1, 0, 0,
cos, sin, 1, 0,
0, 0, 0, 1);
projection = obliqueProjection * orthographicProjection;
Autres conseils
Pour commencer, vous pouvez implémenter la formule appropriée.
L'article Wikipedia indique que la matrice de projection utilise 0.5 * cos
et 0.5 * sin
Pendant que votre version utilise juste cos
et sin
.