2012-06-03 14 views
3

我正在顯示一個場景中有一些立方體。相機使用persective。一切都很好,但我想垂直線是平行的(兩點透視:http://en.wikipedia.org/wiki/Perspective_(graphical)#Two-point_perspective)。食人魔/ Mogre:相機兩點透視

當觀看從前面的立方體:

我想要什麼:

+-----+ 
|  | 
|  | 
+-----+ 

什麼我發現了(誇張):

+--------+ 
\ /
    \ /
    +--+ 

我試着擺弄的相機的FOV,但無濟於事。

我迄今爲止嘗試:

Camera = SceneManager.CreateCamera(CameraName); 
float q = 45; 
float d = 5000f; 
Matrix4 m = new Matrix4(
    1, 0, 0, (float)(Math.Sin(q)/d), 
    0, 1, 0, 0, 
    0, 0, 1, (float)(Math.Cos(q)/d), 
    0, 0, 0, 0 
    ); 
Camera.SetCustomProjectionMatrix(true, m); 
+0

與視野擺弄不會幫你。我之前沒有遇到過計算機圖形學的2點觀點 - 但我想它應該是可能的。 – ChrisF

回答

5

大學伯克利分校對不同的角度變換,你需要使用矩陣的頁面。兩點透視變換是:

_     _ 
| 1 0 0 sin(q)/d | 
| 0 1 0  0  | 
| 0 0 1 cos(q)/d | 
|_ 0 0 0  0 _| 

哪裏q是用於旋轉點(而不是軸)的角度和d是不明原因的,但我認爲這是相機的從焦點距離(!)平面。

enter image description here

Source

+0

感謝您的快速回復。我已經設置了'Camera.ProjectionType = ProjectionType.PT_ORTHOGRAPHIC;',但是這會導致所有軸平行,而不僅僅是垂直(y?)。我也嘗試添加'Camera.SetCustomProjectionMatrix(true,new Matrix4(1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1));'但是那麼我只能得到純色(就好像相機放大得非常非常近)。 –

+0

@TeunvanVegchel - 你無法在一個軸上進行平行投影,也無法在其他軸上進行透視。 – ChrisF

+0

可以肯定的是,我在wikipedia上找到了我想要的東西:[Two point perspective](http://en.wikipedia.org/wiki/Perspective_(graphical)#Two-point_perspective)。但Ogre不支持這個? –