作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在展示一个包含一些立方体的场景。相机使用透视。一切正常,但我希望垂直线平行(两点透视: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 0 sin(q)/d |
| 0 1 0 0 |
| 0 0 1 cos(q)/d |
|_ 0 0 0 0 _|
q
是用于旋转点(而不是轴)的角度,d
无法解释(!)但我认为它是相机与焦平面。
关于3d - 食人魔/莫格雷 : Camera two point perspective,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869603/
我是一名优秀的程序员,十分优秀!