本文会对facebook的开源filter:vf_transform.c 做代码级分析,解释vr视频是如何做六面体转换的。
转换的关键其实就是输入vr视频到六面体的映射(也就是下图中蓝色图像映射到红色图像):
假设每个正方形的像素是512x512个,那么对于(x, y)这个像素值来说,想得到这个值,我只需要从原点,拉一条直线连接到(x, y)并沿着这条直线一直打到球面上,得到的像素值就是(x, y)这个点的值。描述这条直线靠极坐标就可以了
变换的过程其实就是将六面体每个面每个点都找到对应球面上的点。
从代码分析开始前,我还是先把之前文章里两张图贴过来,一个是全景vr视频,一个是转出的六面体视频: