C++:关于360全景图像和立方体6面全景图像的相互转换

之前写过一个相关的

C++:空间坐标映射到球面坐标/全景图_如何将球体坐标映射到球面uv-CSDN博客


本次内容如下:

360全景图像,比较容易理解,

立方体6面全景图像是将全景图贴在正方体的6个面,全景图像分为6块,立方体左边正面右面展开为黄色,背面顶面和底面展开为蓝色。注意:这里的正面和背面是站在立方体内部观察的。展开后的全景图都是在立方体内部看到的画面。

六个面的法向量关系 

搞明白了这个就可以建立坐标系进行计算了

 

定义一个立方体,需要知道立方体的边长,中心坐标,8个顶点坐标,6个面的法向量

再定义一个球面,球面比较简单,只需要知道球心和半径就行

将立方体中心和球心重合

之后就是两种全景图的UV坐标变换,这个变换具体做法:

从球心向外引射线,与球面和立方体面的两个交点就是相同的点,这两个点对应的像素在没有误差的情况下是同一个。这两个点在其全景图中的UV坐标就是要求的转换。


看下效果:

1、360转6面

360全景图原图

转换后的6面全景图

 

 2、6面转360

6面全景图原图

转换后的360全景图

 3、测试图

6面测试图

转换后的360图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值