我正在尝试编写一个优化的代码,使用OpenGL将3D场景渲染到球体上,然后在屏幕上显示未包裹的球体,即生成纯反射球体的平面地图。在数学方面,我想制作一个投影图,其中x轴是极角,y轴是方位角。
我试图通过将相机放置在球形探头的中心并围绕平面镜头来做到这一点,以便使用平截头体的平面瓦片来近似球形四边形。然后我可以将它用作纹理以应用于扭曲的平面补丁。
对我而言,这是一种非常繁琐的方法。我想知道是否有办法使用着色器或一些GPU智能方法。
谢谢
S上。
答案 0 :(得分:0)
当你打算构建模型时,采取平面镜头,应用非仿射变换并将整个事物拼接在一起,你可能没有获得任何性能和相当大的复杂性。只需用数学方法投影平面图像,然后用它完成。
答案 1 :(得分:0)
你似乎要求OpenGL的sphere mapping。 NeHe的球体映射tutorial可能很有用。
答案 2 :(得分:0)
我可以给你两个解决方案。
第一种是制作标准的渲染到纹理,但附加了立方体贴图作为目标缓冲区。如果您的硬件足够新,可以一次完成。这将为您处理HW中所需的所有数学,但是立方体贴图的数据重新分区并不理想(如果角落有很多失真)。在大多数情况下,它应该足够了。
在此之后,您将四边形渲染到屏幕上,并在着色器中使用staightforwad球面贴图将UV坐标映射到xyz矢量。硬件将为您计算立方体贴图的哪一侧,即UV。
第二个或多或少相同,但具有自定义变形和较少的硬件支持:dual paraboloids。两个抛物线可能还不够,但你可以自由地略微修改方程并进行6次传球。渲染过程是相同的,但这次你自己选择正确的纹理并计算UV。