openvr_survivor第二期开发活动:VR畸变

本文介绍了VR畸变的基本原理和反畸变处理,探讨了openVR显示接口,以及使用Zemax设计VR透镜的过程。通过OSVR和MATLAB的反畸变工具进行了实例演示,旨在深入理解并解决VR显示系统的畸变问题。
摘要由CSDN通过智能技术生成

开发简介

  • 开发主题:VR畸变
  • 参与人员:helen,xin,云淡风清,ice等(VR开发者QQ群:538874606)
  • 项目代码
  • gitter讨论链接
  • 主要内容
    • VR畸变/反畸变介绍
    • openVR显示接口介绍
    • zemax软件设计光学系统
    • 反畸变处理

这里主要是分享一下我们对于这方面问题的一些看法,文档可能存在一些错误和不足,希望能够得到大家的批评和建议,与大家一起将这部分内容做的更加完善,持续更新.

VR畸变/反畸变介绍

在VR显示系统中,显示的模型为:人眼—透镜—显示屏.人眼通过透镜得到大的FOV,从而带来很强的沉静感,但透镜带来大FOV的同时,也会产生一些副作用,例如几何畸变和色散.

  • 几何畸变
    这里简要描述一下畸变和反畸变的过程:显示屏上图像如下图(图片使用distortionizer生成)
    这里写图片描述
    (distortion_normal)
    上图中的横/纵线组成的方格图,横/纵各自都是笔直的直线,并且横/纵线互相垂直.这是在人眼直接观看屏幕时的情况,在VR显示系统中,人眼和显示屏之间增加了一个透镜,因为透镜的光学原因,最终看到的图像会是下图这样的
    这里写图片描述
    (distortion_pincushion)
    该图中的横/纵直线不再互相垂直,并且可以看到明显的内凹(“枕型”),并且随着离圆圈中心的距离越远内凹幅度越大.这就是镜片产生的”枕型”畸变.人眼通过透镜观显示屏,显示屏上显示的是”distortion_normal”图片,而人眼最终看到的是”distortion_pincushion”图片,这就是人眼看到的畸变图像.
    为了使人眼看到的图像为”distortion_normal”图片,我们可以通过修改显示屏上的显示内容,对原始图像进行预畸变处理,从而抵消镜片产生的畸变影响(还有一种方式是通过多个透镜单元,消除透镜产生的畸变,实现无畸变镜片,这种方式目前普及率低,这里不详细描述这种情况).
    这里写图片描述
    (distortion_barrel)
    上图中的横/纵直线不互相垂直,并且可以看到明显的外凸(“桶型”),并且随着离圆圈中心的距离越远外凸幅度越大,显示屏上的图像进行了预畸变处理后,这与”distortion_pincushion”正好相反(外凸和内凹的幅度必须相同,才能将图片完美还原为最初的图像).显示屏显示”distortion_barrel”图片,人眼通过透镜观看到的图像就会是正常的图像,即”distortion_normal”图片那样.
    这里是我在ShaderToy上做的一个畸变和反畸变的动画.
    原图:
    这里写图片描述
    k<0时,”枕”型畸变:
    这里写图片描述
    k>0时,”桶”型畸变:
    这里写图片描述
    之前翻译过一些关于畸变的一些链接:
    Understanding the Oculus Rift Distortion Shader
    处理VR透镜畸变的三种方法
    Distortion Correction
    VR光学设计的关键参数
  • 色散
    白光通过透镜,不同颜色的光因波长的不同而出现颜色分离的现象,你可以拆下一个cardboard或其他VR透镜,然后通过眼睛观察,边缘的地方会出现如下图所示色散现象:
    这里写图片描述

openvr显示相关接口

openvr显示相关接口

使用Zemax设计VR透镜

感谢Steven Cui分享了这部分内容,原稿在这里下载,下面是这份文稿的内容

基本原理

VR透镜的目的是为了将LCD显示屏成一个放大的虚像。
放大的目的有两个:1是显示屏靠人眼太近,人根本看不清,祖先没有进化出这种功能;2是FOV(field of view)太小。
所以,我们开始设计个单透镜,回顾下初中光学知识,我们需要将LCD屏放在一倍焦距之内,这就是基本原理。
这里写图片描述
下面开始说zemax的设计过程
ZEMAX的软件设计

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值