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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top