Ogre / Mogre:相机两点透视

时间:2012-06-03 10:37:01

标签: 3d ogre perspectivecamera

我正在显示一个包含一些立方体的场景。相机使用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);

1 个答案:

答案 0 :(得分: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