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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top