Opengl 球形广告牌的变形模拟

Opengl 球形广告牌的变形模拟,opengl,math,geometry,Opengl,Math,Geometry,我需要制作球形广告牌(即设置深度),但要考虑透视投影——理想情况下包括偏离中心的圆台 我找不到任何人在这方面取得成功的参考资料——尽管有很多解释说明为什么标准广告牌没有透视失真。不幸的是,对于我的申请来说,这种缺失并不是表面缺陷;这实际上对算法很重要 我自己做了一些调查: 数学很快就变得相当混乱。明显的方法不起作用:例如,您不能使广告牌垂直于观察光线,因为切线光线不会与广告牌成直角相交 可能我发现的最有希望的方法是渲染平行于近剪裁平面的广告牌,使用顶点着色器将其拉伸成椭圆。这只处理沿一个轴的扰动

我需要制作球形广告牌(即设置深度),但要考虑透视投影——理想情况下包括偏离中心的圆台

我找不到任何人在这方面取得成功的参考资料——尽管有很多解释说明为什么标准广告牌没有透视失真。不幸的是,对于我的申请来说,这种缺失并不是表面缺陷;这实际上对算法很重要

我自己做了一些调查:

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

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


事实上,我并没有找到一个好的解决方案,我也找不到任何一个有这种想法的人。有人有什么想法吗?

当我四处浏览,甚至没有远程处理这个问题时,我无意中发现了,这非常接近。链接教程演示了如何计算光栅化球体的边界椭圆;获取深度(最坏情况下,使用光线投射)应该相当容易得出。

我不完全理解你的问题。一种明显的方法是将内容作为纹理映射到要渲染的球体上。或者你想在纯2D中玩这个把戏?这需要是纯2D。问题是故意在边缘附近引入透视失真。实现失真效果的方法有很多种。一种是将矩形映射到球体上,并使用真实的投影方程将其投影到屏幕上。该方程将二维球坐标转换为三维笛卡尔坐标,然后将三维笛卡尔坐标转换为二维笛卡尔坐标,并产生逼真的效果。其他方法是定义具有“类球体”效果的任意变形(在极坐标中工作可以简化这一过程)。但实际上你在寻找什么还不清楚。你能重新措辞吗?它必须是一个真正的广告牌:四个顶点,由几何体着色器生成。在片段着色器中,我需要(设置片段深度)/(根据需要放弃),以便使广告牌看起来像一个3D球体。仍然不清楚。我需要一幅画来理解。