之前写过一个相关的
C++:空间坐标映射到球面坐标/全景图_如何将球体坐标映射到球面uv-CSDN博客
本次内容如下:
360全景图像,比较容易理解,
立方体6面全景图像是将全景图贴在正方体的6个面,全景图像分为6块,立方体左边正面右面展开为黄色,背面顶面和底面展开为蓝色。注意:这里的正面和背面是站在立方体内部观察的。展开后的全景图都是在立方体内部看到的画面。
六个面的法向量关系
搞明白了这个就可以建立坐标系进行计算了
定义一个立方体,需要知道立方体的边长,中心坐标,8个顶点坐标,6个面的法向量
再定义一个球面,球面比较简单,只需要知道球心和半径就行
将立方体中心和球心重合
之后就是两种全景图的UV坐标变换,这个变换具体做法:
从球心向外引射线,与球面和立方体面的两个交点就是相同的点,这两个点对应的像素在没有误差的情况下是同一个。这两个点在其全景图中的UV坐标就是要求的转换。
看下效果:
1、360转6面
360全景图原图
转换后的6面全景图
2、6面转360
6面全景图原图
转换后的360全景图
3、测试图
6面测试图
转换后的360图