我想将 2D 鱼眼图像展开为 3d 立方体。所以我认为有必要将鱼眼图像展开为 6 立方图像并将 6 立方图像重新映射到 3d 立方体。现在我对第一步感到困惑并且可以'在互联网上找不到一些具体的论文和实现的代码,希望有人能给我一些想法。我能得到的结果在这里:
立方图像
鱼眼图像
无法将任意鱼眼图像展开到立方体贴图。但是,如果您谈论的是球形环境图(SEM),而不是鱼眼图像,那么它可以在一些限制下完成。
前段时间,我设法编写了一个软件,可以将 SEM 贴图转换为立方体贴图,反之亦然。所以我可以证明这是可能的。您应该知道,在靠近 SEM 边缘的区域(映射到立方体贴图背面的中心)会出现较大的变形。阅读这篇文章,你会发现所有需要的信息来实现你想要的。
有一个函数可以将方向矢量映射到第 9 页上的 SEM 的 uv 坐标。在第 #21 页上,您会发现类似的功能,但适用于立方体贴图。因此,您的策略是为立方体贴图的每个纹素找到一个方向向量,然后为该方向向量计算 SEM 坐标并从 SEM 贴图中采样一个纹素。
PS从您在评论中添加的链接中,我注意到您在谈论半球环境贴图。除了从 3d 方向矢量到 SEM 坐标的映射之外,所有逻辑都是相同的。为了使用半球体,从第 9 页更改方程式并不难。您应该知道,对于半球 SEM,您将获得半立方体贴图。我的意思是,没有背面和裁剪的侧面。