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