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)
伯克利大学有一个关于不同视角变换和你需要使用的矩阵的页面.两点透视转换是:
_ _
| 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是无法解释的(!),但我认为这是相机距焦平面的距离.
