Ogre/Mogre:相机两点透视

Teu*_*hel 3 3d perspectivecamera ogre

我正在显示一个包含一些立方体的场景.相机使用persective.一切都很好,但我希望垂直线是平行的(两点透视:http://en.wikipedia.org/wiki/Perspective_ ( graphical)# Two-point_perspective).

从正面查看立方体时:

我想要的是:

+-----+
|     |
|     |
+-----+
Run Code Online (Sandbox Code Playgroud)

我得到的(夸大):

+--------+
 \      /
  \    /
   +--+
Run Code Online (Sandbox Code Playgroud)

我试图摆弄相机的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);
Run Code Online (Sandbox Code Playgroud)

Chr*_*isF 5

伯克利大学有一个关于不同视角变换和你需要使用的矩阵的页面.两点透视转换是:

  _                    _
 |  1   0   0 sin(q)/d  |
 |  0   1   0     0     |
 |  0   0   1 cos(q)/d  |
 |_ 0   0   0     0    _|
Run Code Online (Sandbox Code Playgroud)

q用于旋转点(而不是轴)的角度在哪里,并且d是无法解释的(!),但我认为这是相机距焦平面的距离.

在此输入图像描述

资源