VR之头盔镜片畸变补偿
来源:互联网 发布:windows优化大师8.0 编辑:程序博客网 时间:2024/05/17 06:17
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盒子都会使得图像发生枕型畸变,区别仅仅是畸变的程度不同而已。为了使图像正常显示,需要预先对图像进行桶形畸变的补偿。![畸变后的图像](http://img.blog.csdn.net/20160104152831518)以下在fragment shader中实现这样的畸变:
// GLSL 代码precision mediump float;varying vec2 vTextureCoord;uniform sampler2D sTexture;// 桶形畸变vec2 brownConradyDistortion(vec2 uv){ // 左右视窗缩小倍数设置 float demoScale = 1.0; uv *= demoScale; // positive values of K1 give barrel distortion, negative give pincushion(图像畸变程度设置) float barrelDistortion1 = 0.08; // K1 in text books float barrelDistortion2 = 0.0; // K2 in text books float r2 = uv.x*uv.x + uv.y*uv.y; uv *= 1.0 + barrelDistortion1 * r2 + barrelDistortion2 * r2 * r2; return uv;}void main() { // uv -> device-coordinate // 坐标范围(-1,+1) vec2 uv = vTextureCoord; uv = uv * 2.0 - 1.0; // barrel distortion uv = brownConradyDistortion(uv); // device-coordinate -> uv uv = 0.5 * (uv * 1.0 + 1.0); // vec4 color; if(uv.x>1.0||uv.y>0.93||uv.x<0.0||uv.y<0.07){ color = vec4(0.0,0.0,0.0,1.0); // 超出显示范围,设颜色为黑。 }else{ color = texture2D(sTexture, uv); } gl_FragColor = color;}
1 0
- VR之头盔镜片畸变补偿
- VR头盔产品镜片评测
- VR头盔产品镜片评测
- VR头盔产品镜片评测
- VR中的图形畸变
- Unity3D中的VR头盔连接与调试
- VR图像为何都要畸变
- 使用ShaderToy来处理VR畸变
- openvr_survivor第二期开发活动:VR畸变
- Google VR开发-Cardboard VR SDK反畸变实现
- 首个眼动VR头盔FOVE评测:用“眼神”玩游戏有多酸爽?
- 支持跨平台内容的虚拟现实VR技术头盔问世
- 处理VR透镜畸变的三种方法
- 目前市面上流行的几种VR头盔设备介绍
- 当微软把VR头盔普及成第二台显示器时
- 在虚幻UE4中不同VR头盔的FOV和分屏处理
- 警惕!黑客入侵 你的VR头盔真的安全吗?
- 更轻更清晰,3Glasses带来两款VR新头盔 | CES 2016
- 解决win8及8.1安装mysql等msi类型文件2503,2502的问题
- cJSON代码阅读(3)——cJSON的数据结构
- 禁止自动休眠
- 【策略模式】的故事来源(StrategyPattern)
- Maven搭建SpringMVC+Mybatis项目
- VR之头盔镜片畸变补偿
- 遗留问题
- 第四章 使用DML语句更改数据
- Chrome调试js出现Uncaught SyntaxError: Unexpected identifier
- JAVA多线程机制之线程创建
- ubuntu安装JDK
- 正则表达式--常用用法及lookahead、lookbehind
- iOS中的round/ceil/floorf函数略解
- equals函数