正如我所注意到的,许多3D游戏(我认为几乎所有游戏)都使用简单的算法来计算透视效果。它几乎是理想的,但所有物体在FOV的边缘都会发生明显的变形。这种效果的最简单的例子是FOV边缘的所有球体看起来都不像圆圈
OpenGl函数gluPerspective()
创建具有相同缺陷的透视图。
我对更好的算法有一个粗略的想法,我认为,这将解决这个问题。
所以,问题是:
是否有任何算法没有这个缺陷,我可以在哪里阅读它们?
答案 0 :(得分:4)
是否有任何算法没有这个缺陷,我可以在哪里阅读它们?
有几种:球面投影,立体投影。圆柱投影。您可以将平铺的全景投影等命名。
基于三角形的光栅系统对投影正常工作有非常重要的要求:直线必须投影到直线(仿射投影)。这是你看到的令人不快的扭曲的原因。我上面提到的任何投影(以及更多)可以使用适当的顶点着色器用OpenGL近似。然而,为了看起来很好,几何形状必须经过足够精细的细分,因为需要将直边分解成足够多的区段以允许映射到曲线。可以使用tesselation着色器。另一种方法是将宽视野渲染到立方体贴图中(立方体贴图需要仿射投影才能创建)。然后,您可以在立方体贴图上应用和进行其他映射,从而获得更强大的结果。