我有一组6幅图像立方体(前,后,左,右,上,下)的坐标如下:
[ [160, 314], Front; [253, 231], Front; [345, 273], Left; [347, 92], Bottom; ... ]
每张图片为500x500p,左上角为[0,0]。 对于2500x1250p的图像,我想将这些坐标转换为equirectangular中的等效坐标。布局是这样的:
我不需要转换整个图像,只需要转换坐标集。特定像素是否有任何直接转换?
答案 0 :(得分:1)
将您的图片+ 2D坐标转换为3D规范化矢量
点(0,0,0)
是您的立方体贴图的中心,以使其按预期工作。所以基本上你需要将缩放到坐标的U,V
方向向量添加到纹理点(0,0)
的3D位置。方向向量只是单位向量,其中每个轴有3个选项{-1, 0 , +1}
,并且每个向量只有一个轴坐标不为零。立方体贴图的每一面都有一个组合......哪一个取决于我们不知道的惯例,因为你没有分享任何细节。
使用Cartesian to spherical坐标系转换
你只需要两个角度的半径......
将球面角度转换为2D纹理坐标
此步骤取决于您的2D纹理几何体。最简单的是矩形纹理(我认为这就是equirectangular的意思)但是还有其他具有特定功能的映射,每个映射都需要不同的转换。这里有几个例子:
对于矩形纹理,您只需将球面角度缩放为纹理分辨率大小...
U = lon * Usize/(2*Pi)
V = (lat+(Pi/2)) * Vsize/Pi
加上/减去一些与您的坐标系匹配的方向标记。
顺便说一句。刚发现这个(可能是重复的QA):