Oculus Rift DK2试用手记

IMG_20141224_024253

Oculus Rift DevKit 2,在公开预定之后没多久,就停止了向中国的直邮,我拿到它已经快到年底了。它真的是代表未来吗?相比DK1它有哪些改进?又出现哪些问题?哪些是作为开发者必须先了解的?花了点时间写了这篇《试用手记》,算是对它的初步总结。

新特性

OLED@960×1080~3ms

相比DK1的1280×800 LCD面板,DK2的1920×1080 OLED面板让单眼分辨率达到了960×1080,是原有像素数量的2倍。观感改善了不少,但仍不能说有质的飞跃。

OLED暂留时间达到了3ms,据说相比DK1对减轻眩晕有较大提升。不过由于我个人对视觉残留造成的眩晕不是特别敏感,所以我一直觉得在这方面Oculus Rift做得不错。

很多人还是抱怨单眼960×1080的分辨率仍然能看见像素点。这里就另外提一句:Rift和我们平常使用的平面显示器不一样,它具有宽广的100° FOV(field of view)。为满足“几乎消除死角”的需求,Rift要把960×1080的单眼分辨率全部分配到这100°的FOV。而iPad则没有这种需求,它只消在占据FOV很小一部分的屏幕上显示清晰的图像即可。同时要求这两者达到“视网膜屏”级别的效果,对于Oculus Rift是很不公平的。另外,Rift中看到的图像是经过软件变形(桶形)加透镜变形(枕状)双重处理过的结果。经过这两次信号处理,若要忠实再现点对点的分辨率,整个render target又要增加约1倍左右的分辨率,这样下来,相当于渲染2张1080p的实时图像。再加上为了消除眩晕影响,还得上到75Hz的帧率。这对于填充率瓶颈的普通3D显卡也是一个沉重的负担。

位置跟踪

IMG_20141224_023303
位置跟踪器像是一台传统摄像头,需要两根线连接

位置跟踪(Positional Tracking)当之无愧是DK2最显著的新特性。可惜鲜有demo支持。它本质上是通过Rift上多个红外发射头,发射的红外信号到接收器。(顺便说一句,索尼的Project Morpheus也是通过类似的方式进行定位,但它是用四个蓝色可见光LED进行标记。)接收器可以夹在显示器上方,或者固定在三脚架上。虽然官方文档里写位置跟踪传感器的刷新率是60Hz,但跑下来感觉延迟很小,稍稍比头部跟踪传感器慢了一点而已,正常使用下不会引起眩晕。

IMG_20141224_221351
注意到遍布DK2机身的红点,是用于定位的红外标记点,肉眼不可见,手机拍摄可见。

位置跟踪器可以在0.5-2米范围内,距离接收器一个锥形体内,跟踪人的位置运动(可以在官方Demo Scene里打开Camera Bounds选项实际感受这个椎体)。如果和接收器保持1米以上的距离,基本上一套广播体操的动作都能捕捉到位。把小范围的头部线性运动加入VR应用内,将会很大程度上提升沉浸感和降低眩晕几率。官方带的demo就是个很好的测试范例。在官方demo里,从椅子上站起、凑近观察桌上文具、窥视桌子底部、拿椅子当掩体等动作轻而易举地同步到场景里。

Direct HMD(head-mounted display)模式

这可能不是DK2的新特性,而是新版Oculus Runtime所支持的新显示模式。以前Rift只能作为一个扩展桌面出现在操作系统里。所以要运行3D应用只有两种办法,一种是镜像显示器,这会让主显示器被拉伸成Rift的现实分辨率;二是把对应的3D应用拖到副显示器上,但拖入Rift后再进行操作会非常痛苦,由于双眼获得的图像不同,通常需要睁一只眼闭一只眼来搞。

而Direct HMD模式直接去掉了扩展桌面。运行3D应用时,在主显示器上现实缩小的立体图像,而Rift中则全屏运行应用。这样只要脱掉Rift就能在主显示器操作窗口,而又不会像镜像模式那样把主显示器搞的很丑。目前Direct HMD模式只在Windows下有效。

易用性

IMG_20141224_023504
在Rift一端增加了扩展USB和耳机孔。
左侧为DK2接驳头,右侧为DK1控制hub,尺寸差异巨大。

DK2可以在USB供电下使用,电源成为了可选项,少一条线。但HDMI+USB的两条线还是少不了,感觉还是有点烦人。另外,若要使用位置跟踪,则又多出两条线:一根USB和一根和Rift的同步线。总之,加上了位置跟踪之后,线好像更麻烦了。

 

那么问题来了

色彩走样

色彩走样的原因是,从屏幕上发出的不同波长的光线,会以不同的折射率通过透镜到达眼睛。微小的折射率差异,会导致在(画面中的)物体边缘处出现很明显的色彩走样,就像一台信号接收不良的老式电视机。Oculus Rift上这个问题是如此地普遍、明显,以至于很多人会在戴上后的第一时间注意到它。

色彩走样是透镜对不同波长的光波存在不同折射率造成的

对此,Oculus Rift的runtime会根据不同的瞳距(IPD)、透镜镜片和Eye Relief设置,对双眼生成的图像进行预处理,以反向补偿色彩走样。也就是说,你如果脱下Rift,直接观看屏幕上的图像,会发现接近边缘处的图像会有动态生成的色彩补偿。但很少人会在戴上Rift之前做好设备配置,所以大部分人都会或多或少地看到色彩失真现象。

IPD64-ERin-CUPa
Demo场景中的色彩补偿

所以要解决色彩走样问题,关键还是在于能否准确获取到像瞳距这类的真实世界数据。

真实世界数据获取

Oculus Rift DK2的体验好坏,有很大程度上取决于你的配置。就像上节所述,获取人眼的真实数据有助于消除色彩走样。此外,身高和位置跟踪器也会影响到人的移动和VR场景的互动。

Screenshot 2014-12-25 00.06.36
Oculus Rift Runtime的设置界面,需要手动调整的部分较多。

这方面,DK2还做得很不够。这方面问题主要有:瞳距(IPD)的自测程序被不少人吐槽说不够准确、Eye Relief调整部分不能从机器中自动获取、透镜镜片的种类也不能从机器中自动获取。

眩晕

相比DK1,采用低暂留OLED和1000Hz头部跟踪器的DK2已经减轻了很多眩晕的潜在因素。现在又有了60Hz的位置跟踪器,在坐姿状态下的大部分动作都能被很快地同步到VR摄像机上,更是向消灭眩晕前进了一步。

但不可否认的是,在相当多快节奏demo中,我们还是能很快感受到眩晕。这是由于眼睛能感知到图像的剧烈位移,但人脑处理平衡相关的其他器官(前庭系统)并未感知到物理上的加速度变化,所形成的不同步造成的。而这一点我想是不能倚靠Oculus Rift自身的改进而解决的,应该从VR应用的类型入手,避开这些产生眩晕的应用特性。例如在一个VR过山车场景中,列车时常进行爬坡、俯冲、横滚(剧烈的加减速),这时用户转动头部浏览四周画面,会产生强烈的不适感。而如果改变应用场景,在一列匀速行驶的蒸汽机车顶部,或在航行在太阳系内的一艘飞船上,由于可感知的加速度几乎为0,用户转动头部看到的画面并不会和平衡感知器官产生冲突,于是大大降低眩晕感。

竖屏问题

DK2在初次接入系统时会被认成竖屏显示器,需要在显示器设置里调整。不知道为什么这样做。用户对操作系统必须熟悉,否则分辨率不对demo都运行不起来。

开发建议

若要开发游戏级应用,强烈建议完整阅读官方的Oculus Best Practice GuideOculus Developer Guide。这里简要列几条我认为重要的:

  • 从头部动作到画面展现之间的延迟控制在20ms以内,以减少眩晕感。可使用内置的延迟测试工具测试应用的延迟。
  • 使用位置跟踪的场合下,当用户接近跟踪区域边缘时,以某种方式提示用户回到跟踪区域内。
  • 不要尝试修改图像变形算法、不要尝试修改头部跟踪数据、不要尝试修改位置跟踪数据。
  • 人眼通过立体图像获得场景深度信息,对近处物体很敏感,一旦物体拉远则感知度立即变差。
  • 尽可能地将UI融合在场景内,且最佳显示的位置是距离观察者2-3米的位置。准星一类的UI应该以聚焦对象的深度进行渲染。
  • 加速/停止会引起视觉和平衡器官之间的感知冲突,如果加速/停止不是由用户发起的,则尽可能地避免上述情况。
  • 避免线性垂直震动,接近0.2Hz频率的垂直震动让人最感不适。非垂直震动在接近0.3Hz的频率让人最感不适。
  • Zoom,或镜头缩放效果,尽可能避免。
  • 避免要求用户平移、后退、旋转的场景。
  • 使用用户熟知的环境作为背景(如响应头部转动的天空盒)有助于减轻视觉冲突和增强舒适感。
  • 避免使用高频纹理(如条状、精细的纹理),高频纹理会增强环境中对于运动的感知,会让人不适。改用低频纹理可以改善这一状况。
  • 解决用户接触输入设备困难的问题,或者将头部运动本身作为一种输入方式。
  • 使用3D音效加强沉浸感。

从网上可以获得的VR demo来看,开发者对Rift这类头戴式显示器理解还不够透彻,不少人还在用传统的思维设计应用(让我想起了早期国内iOS市场上充斥着Symbian风格app的时代)。特别是传统游戏,若不从设计上进行修改,是很难让Rift用户获得最佳体验的。

我已经有设计想法了,你准备好了吗?

下载支持Rift的demo:
http://www.theriftarcade.com/
https://share.oculus.com/ (下载需注册账号)
封烨。曾以技术发展为己任的游戏行业人,有过不知天高地厚的技术演讲和文章,多年后转变思路,认为无法单纯通过攻克薄弱技术环节来改善行业种种弊病,于是投身于独立游戏运动。前椰岛游戏的联合创始人,上海Game Jam和Global Game Jam在国内的首批倡导者,现灯塔实验室创始人。

Tagged as: , , , , , , ,

Categorized in: 杂谈

Posted on

One thought on “Oculus Rift DK2试用手记

  1. 哈囉~
    謝謝你寫了這篇實用性頗高的文章.
    讓我能夠更多了解dk2
    但不知道您對ue4有涉獵嗎?
    想問你您應用上的問題~

Leave a Reply

电子邮件地址不会被公开。