VR技术分享交流
虚拟现实(virtual reality,简称VR)是利用电脑模拟产生一个三维空间的虚拟世界,提供用户关于视觉等感官的模拟,让用户感觉仿佛身历其境,可以及时、没有限制地观察三维空间内的事物。用户进行位置移动时,电脑可以立即进行复杂的运算,将精确的三维世界视频传回产生临场感。该技术集成了计算机图形、计算机仿真、人工智能、感应、显示及网络并行处理等技术的最新发展成果,是一种由计算机技术辅助生成的高技术模拟系统(来自维基)。
具体而言,如果你处于虚拟现实环境中,你看到你想要的东西,你会伸手去抓,并拿到;你看到一个子弹向你射来,你会下意识的蹲下或躲开.
接下来主要从硬件,光学设计,软件方面跟大家做一些交流.
VR硬件
目前在市场上的VR设备,在硬件形态大致可以分为三类:
- 手机壳壳(Gear VR,暴风魔镜,cardboard等)
本身只包含光学结构,需要放入手机配合使用.
- 一体机(pico,大朋,蚁视,3glass)
搭载Android平台,运行特定的VR系统(Nibiru、daydream、cardboard).
- PC头显(HTC vive,PSVR,Oculus Rift)
需要配合高性能PC使用,目前看来PC头显的效果最好.它主要包含四个部分:头显设备(HMD)、高性能PC主机、追踪系统、控制器.
VR光学
常见光学参数:
- FOV(可视角):包括水平FOV和垂直FOV,大的视场角会有更好的沉浸感.
- IPD(瞳距):双眼瞳孔中心之间的距离,亚洲人一般为63mm,如果瞳距不对,会导致重影.
- Eye Relief(适眼距):瞳孔到镜片的距离,影响眼睛看到图像的模糊程度.
- EPD:瞳孔大小,3~4mm,一般影响不大.
- 其他光学参数: 入瞳,出瞳,焦距,物距,TV畸变等.
光学参数图1(图片来自”Capability Introduction”):
光学参数图2(图片来自光学规格书):
此前翻译过一个不错的光学设计文章,VR光学设计的关键参数.
VR软件
VR核心技术包括:VR显示技术、运动追踪技术、输入/输出交互设备、应用开发平台和工具。
- 显示相关技术
- 畸变(distortion)
IMAX的观影沉浸感很大程度上是来自于大的视场角(FOV),让立体的巨大的屏幕包裹着你的视野,让你有种身临其境的错觉.VR方案可以认为是这种沉浸感的廉价等效方案(但又具有交互性),HMD为了具有此种沉浸感,需要通过在眼睛和屏幕之间放置一个光学镜片来实现大的FOV,而通过此种方法存在一些副作用,如几何畸变、颜色分离、明暗分层等.
- 几何畸变
这里是一个典型的头戴显示器的镜头畸变例子.透过镜头图像产生了”枕型”畸变(右侧为正常的方格图,左边是经过镜头后的畸变图,也称为正畸变):
解决方法是对这些畸变的图像使用”桶型”畸变.当我们通过畸变透镜上看,这些图像(注:是指经过”桶型”反畸变处理的图像)看起来就是正常的(右边是软件渲染”桶”型畸变,左侧为经过镜片后所成的像,看起来就是正常的方格图了,即镜片产生的畸变被消除):
我在openVR上做了反畸变处理文章,使用ShaderToy来处理VR畸变. - 颜色分离
白光穿过棱镜时,因每种颜色的波长不同,会射出各种不同的颜色,光学系统在不同波长/颜色下可能会有不同的现象.
- 明暗分层的光圈
如上图所示距离镜片中心越远的地方亮度相对越低(相同半径长度的位置亮度相同),在亮度变化率越大的位置就越容易出现分层的光圈.
上述的畸变和色散现象可以看我们HMD的镜片上查看到对应现象(现场演示).
- 几何畸变
- 时间扭曲(Time Warp)
GPU做完渲染时,通过读取最新的追踪信息,调整旋转矩阵来生成当时的视图,解释VR的时间扭曲. - 异步时间扭曲(Asynchronous Time Warp)
是一种生成中间帧的技术,当游戏不能保持足够帧率的时候,ATW能产生中间帧,从而有效减少游戏画面的抖动.详细见Oculus对ATW的解释.
TW和ATW演示图:
- 追踪预测技术
当渲染需要时,根据追踪数据的上报速率,以及前一个时间片段获取到的角速度,预测当时的头部追踪位置,来输出正确的视图.追踪预测详细介绍. - 图像重采样
渲染的图像需要大于帧缓冲的图像,否则在做TW时,能够看到在屏的边沿会有一些空隙(左右晃动屏可以看到边缘地方有黑的地方).一种简单方法,就是将图像进行拉伸,来实现重采样的效果. - 眼球追踪技术
因为目前的GPU渲染性能不能满足VR的全屏渲染的条件,一种新的渲染技术被引入,那就是眼球追踪技术.这种技术可以让GPU只渲染,人们眼睛所注视的地方,进行高质量的渲染,对其他区域进行普通的渲染,来解决GPU性能瓶颈.
同时眼球追踪技术对于头部追踪,还有预测的功能,眼睛的运动比头部运动更早.当身体想朝某个确定的方向上看时,眼睛会先移动过去.眼球追踪对头部追踪的预测
- 畸变(distortion)
- 运动追踪技术
VR定位追踪技术 - 输入/输出交互设备
Hardlight VR Suilt
realsense在我们设备中的使用(演示). - 开发平台和工具
目前主流开放平台:OSVR,SteamVR.以OSVR为例说明平台的作用.
如果没有OSVR平台,每个设备都需要适配每个平台,如果有M台设备,有N个平台,那么他们之间的关系就有MXN种,维持这样的关系是极其麻烦的,设备和VR应用之间的关系如下图所示:
如果设备和应用程序都接入到OSVR上,那么设备只需要接入到OSVR中即可,而不要考虑具体的平台和应用,同样应用不需要考虑每一个设备的情况,它按照统一的接口获取设备的数据,对于设备来说他们只需要制作自己接入OSVR的插件即可,应用程序也只要使用OSVR的插件就可以正常工作了,关系如下图所示:
最后
主要是对VR开发的知识整理和记录,交流会大概2小时,感谢大家的参与,分享,互相学习很多关于VR方面的技术知识.感谢!
交流会PPT附件以及VR相关资料,可以点击这里获取:VR技术分享交流总共3部分(part1),VR技术分享交流总共3部分(part2),VR技术分享交流总共3部分(part3)
参考资料:
1.Wikipedia
2.Key Parameters for Optical Designs
3.Understanding the Oculus Rift Distortion Shader
4.Distortion Correction in Oculus SDK
5.Oculus:”Asynchronous Timewarp Examined”
6.Three approaches to VR lens distortion
7.Time-warp Explained