Косая проекция в xna - PullRequest
1 голос
/ 18 июня 2011

Я пытаюсь добиться наклонной проекции (http://en.wikipedia.org/wiki/Oblique_projection) в рамках 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; 

Как видите, я просто умножаю орфографию на наклонную проекцию.

Что я получаю, это:

http://imageshack.us/photo/my-images/835/oblique1.png/

Это в основном то, на что была бы похожа ортографическая проекция, но с некоторым странным далеко отсечением.

Как мне добиться правильной наклонной проекции? Спасибо заранее

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Ответ от Дики: http://forums.create.msdn.com/forums/p/85032/513412.aspx#513412

Код необходимо изменить следующим образом:

Matrix obliqueProjection = new Matrix(  
                                  1,   0,   0,   0,  
                                  0,   1,   0,   0,  
                                  cos, sin, 1,   0,  
                                  0,   0,   0,   1);  

projection = obliqueProjection * orthographicProjection;  
0 голосов
/ 18 июня 2011

Для начала вы можете реализовать правильную формулу.

В статье в википедии говорится, что матрица проекции использует 0.5 * cos и 0.5 * sin, а ваша версия использует cos и sin.

...