我正在显示一个包含一些立方体的场景。相机使用persective。一切都很好,但我希望垂直线是平行的(两点透视:http://en.wikipedia.org/wiki/Perspective_(graphical)#Two-point_perspective)。
从正面观看立方体时:
我想要的是什么:
+-----+
| |
| |
+-----+
我得到的(夸大):
+--------+
\ /
\ /
+--+
我试图摆弄相机的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 :(得分:5)
伯克利大学有一个关于不同视角变换和你需要使用的矩阵的页面。两点透视转换是:
_ _
| 1 0 0 sin(q)/d |
| 0 1 0 0 |
| 0 0 1 cos(q)/d |
|_ 0 0 0 0 _|
其中q
是用于旋转点(而不是轴)的角度,而d
是无法解释的(!),但我认为这是相机与焦平面的距离。