模拟球形广告牌的失真

时间:2014-01-22 05:34:15

标签: opengl math geometry

我需要制作球形广告牌(即设置深度),但要考虑透视投影 - 最好包括偏离中心的截头。

我无法找到任何在此成功的人的参考 - 虽然有很多解释为什么标准广告牌没有透视扭曲。不幸的是,对于我的应用,缺乏不是一个美容缺陷;这对算法来说非常重要。

我自己做了一些调查:

  

数学变得相当混乱。明显的方法不起作用:例如,您不能将广告牌垂直于观察光线定向,因为切向光线不会以直角与广告牌相交。

     

我发现最有希望的方法可能是使广告牌平行于近剪裁平面,用顶点着色器将其拉伸成椭圆。这仅处理沿一个轴的扰动(例如,它不会处理在视图的角落中渲染的球体),但主要障碍是正确计算深度;你无法像未经失真的球体那样计算它,因为“球体”会遮挡自己。

事实上,我没有找到一个好的解决方案,而且我找不到任何人。有人有想法吗?

1 个答案:

答案 0 :(得分:2)

虽然浏览时甚至没有远程处理这个问题,但我偶然发现了http://iquilezles.org/www/articles/sphereproj/sphereproj.htm,这非常接近。链接教程显示了如何计算栅格化球体的边界椭圆;获得深度(最糟糕的是,使用光线投射)应该相当容易派生。