0

我想做以下预测:

x' = 2*x - z
y' = -2*y - z
z' = -z

我想出了这个矩阵:

2,  0,  0,  0,
0,  -2, 0,  0,
0,  0,  -1, 0,
0,  0,  0,  screen_width

它主要按预期工作,除了:

  1. 它在非完美方形屏幕中变形。
  2. 它会进行近/远剪辑,从屏幕上删除一些对象。我不想要那个。

因此,问题归结为:如何在此矩阵上设置近/远 FOV,以及如何更新它以不仅考虑屏幕宽度,还考虑宽度/高度比?

注意:有问题的软件使用 Three.js,但我猜它使用与 OpenGL 相同的约定,因此我将其标记为这样。

4

2 回答 2

1

如果您在 firefox 中查看glOrtho()页面(chrome仍然不支持 MathML),它会给出它用于正交矩阵的方程。

正确设置 Z 和 W 行对于近/远平面和非线性深度很重要。如果您使用 (2, -2) 缩放获得了良好的结果,只需将最后两行替换为 glOrtho 行,您就应该设置好了。确保不要选择相距太远的近/远值,否则深度值开始相交,您会遇到 z-fighting。

于 2013-09-06T13:38:13.163 回答
0

维基百科对正交投影有很好的参考。从此:

图像

您可以编写一个函数来生成这个矩阵给定远/近/右/左/上/下

于 2013-09-06T13:30:53.887 回答