0
雷锋网按:本文作者为元代码及VR空间StrongVR创始人Nada。
最近,ZeniMax 和 Oculus 的官司闹得沸沸扬扬,集中在是不是 John Carmack 为当时的原型机做了大的贡献,而 Palmer 只是配角而已。好在,在开源社区流行的早期年代,一切都留下了历史的痕迹。这一次,几乎是历史的全貌。以下为 John Carmack 在2012年4月4日发布的帖子,讲述了他拿到 Palmer 寄给他的原型机的第一印象,原帖位于 MTBS3D 上。
John Carmack
和 Oculus Rift 在一起的一天
在下个月我会去做几个演示,Palmer 大方地把他其中一个测试原型机和其它一些配件借给我让我展示。以下,是我在调试了一天之后的一些初步印象:
当我第一次点亮设备时,貌似屏幕严重偏离中心,不过最终问题是 VGA 模拟输入信号的锅,Palmer 之前已经遇到过。修正办法是用不同的水平时序参数制作一个定制的显示模式。我计划用一个有数码界面的面板,可能能解决这个问题。
USB 线材的电源部分也很麻烦 – 通过 USB 转接或延长线都不行,只有直接接入我电脑才能运行。当接入台式电源时我发现必须要5.2v的电源才能启动它,貌似是电压方面的限制而非电流。
看起来要么是镜片要么是鼻子切割得有点偏离中心,因为有时候我能在左眼部分看到右眼部分的边缘。有意思的是,当你往左转头看的时候才会比较明显,看的时候设备会被头部运动得往左移动一点,让它能看到右边的视野边缘。当场景左右的亮度不一致时,特别明显。我试了一下,给镜片一些物理上的遮挡以及在渲染的图像中留下一些空隙都有些许效果,但要完全消除掉视野里的那些闪烁,会放弃掉太多的分辨率。正确的办法是有一个物理的薄的遮挡,竖在屏幕中央以避免两只眼互相看到对方的内容。
我测量了一下水平的可视角度,大约是刚刚低于单眼90°(完整的双眼重叠)。但是当你第一次透过镜片观看的时候,你能非常清晰的感觉到屏幕的左右边缘。竖直方向的可视角度倒是很大,只有使劲把眼睛往里面伸,才能看到屏的上下边缘。水平的像素只有640,而竖直的像素能有单眼800,加上镜片浪费的像素,竖直的可视角度比水平可视角度要大1/3,所有的像素损失都在外边缘上。最后我用胶带挡住了镜片的外沿,比起在聚焦平面上看到屏幕边缘,带来了更好的沉浸感。这个方案最大化了受限的面板像素使用率,但也许更好的方式是忽略那160个扫描线,只使用 1280 × 640 分辨率以及一个完全不对成的可视角度,只要能在 HMD 的空间大小里用目前的镜片来实现。
这里有个细节。视角投像矩阵的正中央并不位于 640 × 800 的中央,而比较靠外,也就是说并非是对称的。如果你用恰当的方式来达到这种渲染的效果,就可以很轻松的得到瞳距的调整功能。如果你的眼睛能一直位于镜片中央当然最好,但允许用户调整投影中线还是有一些用处的。就算只有一块屏幕,也还是可能设计出物理可调整光学镜片的,只要软件也能随之调整投影矩阵。一个好的设计能让光学镜片上的位置传感器把瞳距传达给软件(现在果然实现了,不过是两个屏幕)。但目前这个光学镜片的位置对我来说还是 OK 的。
我使用的是 Hillcrest Labs 的 FSRK-USB-2 惯性模组进行头部跟踪。这个模组直接使用 Micro USB 传输数据和电源,数据调用的代码也都是开源的。他们专门为我做了一个固件,把默认的 125Hz 采样率提升到了 250Hz,这个选项之后很快也会成为标准产品的一部分。一个模组的价格是 $99,并不算是最便宜的那种,当前至少我使用的效果还不错。我直接从陀螺仪中拿数据做方向跟踪,他们默认的算法增加了特别多延迟。
没有头部跟踪,你根本就不知道镜片把图像扭曲成了什么鸟样,但在一个良好的低延迟循环中,效果确实不错。加上软件的图像预畸变后,效果非常好,带来了非常大的改进。
比起那张图片,最终的畸变程度需要更加激进,我也可以花一些时间来更加细致的校准这个曲线,但对于当前的结果,我已经非常满意了。色彩校准可以通过使用畸变曲线的参数为每个频道做一点参数上的改变,但我觉得目前还没太必要管到这一步。在开发过程中,有第二个屏幕映射头显的视频输出有非常大的帮助,因为我能看到没有镜片扭曲效果的图像来做对比。
对于这么大的可视角度来说,分辨率是很低的,你能很明显的看到像素点,而且多数试过这个的人都会去和索尼 HMZ-T1 做对比。这么大的像素点就会让你想办法避免锯齿,最后我做了较大程度的超采样,外加使用了 4x MSAA 才得到最好的效果。
显示面板有着让人钦佩的低延迟,但像素转换速度太慢,要大概二十毫秒才能够改变颜色。这导致在高速的转向运动中,所有东西看起来都非常的模糊,也让60Hz的刷新率的闪烁鬼影变得明显。加入明确的运动模糊来解决闪烁可能行得通,但真正的解决方案是合适尺寸像素的 120Hz Super AMOLED 面板。这里有三星的人在吗?
如果你看一个比较亮的东西,屏幕还会留下些残像,大概会持续个几分钟。
在这种放大镜片的体系中,一点点的灰尘都有较大的影响。最终的成品完整塑封一体化会比较重要。
当绑上一个头戴戴在头上,让我能够松开手随意看,用游戏手柄的时候,我发现了几个新的问题:
线材的柔韧度会是一个影响因素。电源线还好,但 VGA 线和 USB 线足够僵硬,很大程度上影响你的转向(解释了为什么 Rift 的线是三合一做得最好的)。之后如果引入 DVI 面板的话影响可能更大。最后这种东西都必须调整好,甚至去掉线材,但寻找柔韧的线材或者打造订制的 N 合一线材都不是近期就能做到的事。
驱动主板会在你额头上变热(5年了,还是老样子),但如果把它往前挂出来会让重量和工业设计变得更难看。能降低功耗就好了。
鼻子的开空部分需要扩大。可以用 3D 打印机来制作多个样品测试最小的尺寸。(原来 Rift 鼻子开孔这么大是 Carmack 5年前搞的!)
搞定所有东西后,沉浸程度好到我终于能有那种我不是那么习惯的模拟晕眩感了——当你站在虚拟世界的摩天大楼边缘往下看时,左右摇头让人的感觉是整个世界都在颠覆,因为我还没把位置和高度数据整合在一起。这以微妙的方式被反复显示出来,尤其在其它属性已经很好的情况下就更加明显。我得马上着手 Sixense 的整合工作了。
最重要的总结:
一切搞定后,这是目前我用过的五个头显中最有沉浸感的一个。如果 Palmer 能接近他的目标价位,这也会是最便宜的一个。我会在下一个发布的 PC 游戏中加入对 Rift 的完整支持。
问题在于多数人不会有一个订制的代码库来自由修改头显。得有人写一个拦截驱动,要能抓取单目或者双目立体游戏输出并做出适当的畸变,这才能给那些普通人使用。头部追踪是另一个问题,我不认为加上一个很多人都用不到的传感器有什么意义,但留下一个专门的卡槽以备不时之需还是可以的。
John Carmack
雷峰网版权文章,未经授权禁止转载。详情见转载须知。