我是图形编程新手。我从来没有意志力坐下来研读任何冗长的 OpenGL 教程,但当 Apple 发布 Metal 时我感到非常兴奋,从那以后我已经取得了很大的进步。我理解所有矩阵数学背后的推理(当然不是它们是如何推导的),但我在预测时遇到了困难。对于正交投影矩阵,没有深度,因此在这种情况下您最好放弃 3D 图形。然而,虽然我的透视投影一开始似乎效果很好,但当我将立方体平移远离投影中心时,我注意到了一些事情:
现在我可能完全错了,但这种扭曲感觉并不现实。也许在纹理化和更复杂之后它会有意义,但我不确定。在该项目中,我有一个投影矩阵、一个世界 View 矩阵和立方体的模型 View 矩阵。矩阵按以下顺序相乘:prMatrix * (wvMatrix * mvMatrix) * <vertex>
。是否有某种方法可以保持对象的比例,无论它们位于透视截锥体内的哪个位置?
最佳答案
正如 reto koradi 提到的,视野参数非常重要。
如果您将 window 视为您所看到的世界的物理窗口,并将您的眼睛视为观察点,您可以想象出一座金字塔。对于小窗口,如果您距离显示器足够远,金字塔将非常尖:因此视野很小。我想说,当你真正以 20-30 度的角度观看时,你可能会以 90 度或更大的视野进行绘制(因为你的窗口不是全屏而是相当小)。
这会导致严重的失真,如果您确实从近距离观察 window ,则需要这种失真才能看起来正确。
关于opengl - 如何修复透视投影失真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34626164/