VR之头盔镜片畸变补偿
利用全景视频以及相关的硬件设备(头盔、眼镜)构建VR场景非常火爆,各个视频网站、科技公司纷纷上线相应的全景视频源或者推出自己的VR设备。包括google的cardboard,腾讯的炫境,暴风魔盒等等。
[google cardboard VR](http://tech.huanqiu.com/news/2015-05/6544546.html)
这些设备构造上大同小异,而且由于凸透镜片自身原因,或大或小的都会使原本正常的图片发生畸变。畸变由视界中心向视界边缘逐渐变大。最为直观感觉是,在视界中心的直线移动到视界边缘时会发生弯曲。[关于镜片畸变](https://en.wikipedia.org/wiki/Distortion_%28optics%29)
最为典型的镜片畸变包括“桶形畸变”和“枕型畸变”。分别由正常图像向“径向”压缩/拉伸而形成。关于桶形畸变的原理以及数学模型可以参考:
(http://stackoverflow.com/questions/6199636/formulas-for-barrel-pincushion-distortion)
经测试,现有的几个VR头盔or盒子都会使得图像发生枕型畸变,区别仅仅是畸变的程度不同而已。为了使图像正常显示,需要预先对图像进行桶形畸变的补偿。![畸变后的图像](https://img-blog.csdn.net/20160104152831518)
以下在fragment shader中实现这样的畸变:
precision mediump