我正在尝试实施类似the technique described in this (old) paper的功能,以便使用手机摄像头的视频帧在AR应用中创建环境贴图的幻觉。
我想拍摄相机框,将其划分为子区域,然后将其用作立方体贴图上的面。相机框架的划分看起来像这样:
现在X区域很简单,我可以使用glCopyTexImage2D将该方块区域复制到我的立方体贴图纹理。但我需要帮助X周围的梯形区域(暂时忘掉三角区)。
如何将这些梯形区域扭曲成方形纹理?我想我需要对后来出现的透视投影进行相反的变换,这样如果我将立方体贴图渲染为我相机周围的天空盒,那么两者将在最终渲染中相互抵消(这是否解释了我想要的东西?)。 p>
在此之前,我尝试了一个更简单的步骤,将方形X区域放在立方体贴图的每一侧,只是为了看看是否可以使用glCopyTexImage2D。它可以,但结果没有正确旋转,当我将立方体贴图渲染为天空盒时,某些面是“倒置”。问题类似:在将它们用作纹理之前,如何旋转它们?
我还考虑过从另一方面解决问题并修改“纹理坐标”以进行必要的调整,但这似乎也不容易,因为片段着色器中使用“textureCube”的查找比一个更复杂正常纹理查找。
有什么想法吗?
我正在尝试使用OpenGL ES 2.0在Android上的AR应用程序中执行此操作,但我想更普遍的OpenGL建议可能也很有用。
更新
我得出的结论是,这不值得追求。这篇论文看起来不错,但我用手机摄像头的实验显示出一个很大的矛盾。如果要反映在AR中渲染的对象中的环境,则摄像机视图非常有限。当相机远离被跟踪物体时,您有足够的环境信息可以获得良好的反射效果,但由于相机距离很远,您几乎看不到它。但是,当您将相机靠近以便更详细地看到令人敬畏的反射时,被跟踪的物体将填充相机的大部分视野,并且您几乎没有任何环境可以反映出来。所以在任何一种情况下你都输了,结果不值得努力。
答案 0 :(得分:2)
您似乎需要使用文章中描述的UV贴图创建网格,并使用纹理从相机渲染到另一个纹理。然后将其用作立方体贴图。