去年三月份,传奇图形程序员 Michael Abrash 加入 Oculus,以首席科学家 (Chief Scientist) 的身份再次跟 John Carmack 站在了一起,而此时距卡神 成为 Oculus 的 CTO 已经快一年了。

半个月前的 Oculus Connect 2 大会上,Michael Abrash 和 John Carmack 分别做了精彩的发言 (视频在这里这里)。其中卡神的发言技术和工程细节较多,更适合已经在 VR 一线的开发人员。而 Abrash 则在半小时的 keynote 中,集中展示了 Oculus 的研究机构 Oculus Research 在 VR 的研究和探索中遇到的各方面的难题,关键的挑战和已经取得的一些进展。相较卡神一开口就根本停不下来的意识流,Abrash 的发言更加概括和完整,很适合从全景上了解 VR/AR 技术,对一般的开发人员也有一些启发性,所以俺择要记录了一下,以备日后参考。


Abrash 上来时先煽情了一下,告诉大家他对 VR 近年的进展感到十分吃惊和兴奋,“Just a few years ago, all of this would have been totally inconceivable and that excitement is richly deserved...The truly amazing part is that we've barely started down toward what VR capable of. Decades of innovations and new experiences lie before us...” 和那些一窝蜂跑到这个行业里来淘金的人不同,对 VR 这一可能深刻地影响和改变人们生活方式的技术,Abrash 言语间洋溢着技术人员所特有的巨大热情。


紧接着,Abrash 很有感情地讲了一个 "Good-old-days" 的小故事。

当他 92 年左右还在西雅图为微软做第一代 Windows NT (这货后来居上,淘汰了 Win95/98/ME 的实现,成为后来所有 Windows 的内核基础) 的开发时,有一次开会,他跟行业传奇 Dave Cutler 正好走在一起,两个人没说话默默地走了一段之后,Dave 突然转过来对 Abrash 说:“You know, these are the good old days” 把他吓了一跳,“I don't think I would have been more startled if Dave announced he was a martian.” (就算 Dave 说他是火星人我都没法更震惊了) 当时 Abrash 很不以为然,哥你别开玩笑了好不,天天加班干到吐血,品控严得让人发指,压力这么大你居然好意思说这是“Good old days”,该吃药了吧。

后来呢,Abrash 动情地说到,Dave 居然是对的,很多年后他回过头去,对 Windows NT 的那段工作经历,他印象最深的就是亲密无间的协作氛围 (teamwork),战友之间的满满基情 (camaraderie),和作为一个整体取得的巨大成就 (accomplishment)。每当想到他曾参与设计和实现了一个 OS 的核心部分,而这个 OS 在过去的15年里成为数以亿计的人几乎每天都需要使用的工具,他就觉得这段经历非常的可贵 (a rare opportunity to really make a difference),没有什么比这更符合 “Good old days” 了,而身处局中的人往往没有意识到自己正在参与什么和改变什么。Abrash 说到,他希望来参加 Connect 的各路英雄能意识到,“how unbelievably fortunate we all are, have the opportunity to be VR pioneers.”,

“We are creating a whole new way for people to interact with technology, one which has the potential to redefine almost everything about the way we work, play, and interact with each other. Opportunities like that come along once or twice in a lifetime at best...” 满满的使命感,和终于能在有生之年有机会去推动这场深刻变革的幸运感,让 Michael Abrash 看起来完全不像是一个写了一辈子代码,快到退休年纪的程序员,在他和卡马克的眼神中,你能随时看到一种压倒性的纯粹的热情,这是他们最大的共同之处。

VR 技术允许每一个人在虚拟空间里去真切地感受和创造,这种造物主般的感觉不再被程序和美术独享,每个人都有机会去创造和利用属于自己的独一无二的虚拟世界 (正如 Star Trek 里著名的全息甲板 (Holodeck) 和 Matrix 里的母体)。


在畅想了一番 VR 对日常生活的巨大变革之后,Abrash 切入正题,“the future of VR will be built on three pillars”,分别是__对(人类)生理感知系统的驱动__,和__对(真实或虚拟世界的)重建__和__(主体与客体之间的)交互__。


先从感知系统说起,Abrash 展示了一个例子,向我们说明了人类的感知系统在百万年的进化后,是如何通过获取极为有限的外界信息,再加上了无数先验的经验假设,来在脑海中重建世界的状态的。在这个过程中,经验假设往往比我们意识到的要重要。

注意看,这看上去是一个有两条平行屋脊的顶棚。

但是,当后面镜子上的布被拿掉时,你可以看到镜中的映像:

居然是一个拱顶。(转动的视频请见 6'40")下面是不同角度时的状况:

这里的要点是,理解了视觉系统是如何令你的感知系统下意识地做出符合经验的判断之后,就能玩些花样,让你“看”到实际上并不存在的东西。这个例子生动地展示了“__我们体验到的“真实”情境,实际上是我们的感知和大脑让我们“感觉”真实的东西__ (并不一定与客观世界相符)” (the reality we experience is whatever the perceptual system and brain say it is) (所谓“眼见”不一定“为实”)


这给了 VR 一个独特的机会 (以恰当的方式) 去驱动着我们的感知系统来诱使我们“感觉上真实” (feel real)。对感知系统控制得越好,VR 的体验就会越好。

正如上图,感知系统主要是经常说到的五感:视觉,听觉,触觉,嗅觉和味觉,再加上 (用于感知速度,加速度,空间位置和控制平衡) 的前庭系统 (vestibular)。紧接着 Abrash 分别谈了一下在这五个方面的研究分别处于什么阶段。

先说说味觉 (Taste),Abrash 打趣地说,即使有能产生适当味觉的系统,也很难想象14个人用起来是啥感受 (一个手柄可以大家轮流玩,一个冰激凌轮流吃就有点……)。而且咀嚼和吞咽也是味觉 (taste) 的一部分,这方面的研究目前短期内还看不到什么起色。考虑到味觉对整体的虚拟体验影响并不大,就留给以后的研究人员吧。

接下来是嗅觉 (Smell)。嗅觉往往与记忆和情绪有着强烈的关联 (has powerful memory and emotional associations) 但非常复杂 (surprisingly complicated)。可能你会觉得在鼻子附近按某种预设的顺序和剂量释放一些气体分子就能很好地模拟了,但实际上气味的传播方式差异很大 (并非均匀散射传播),而我们的鼻子是很敏感的;而且跟三原色不同,并没有那种嗅觉元素 (primary smells) 可以混合成各种我们能感受到的气味 (所以恰当的模拟可能需要几千种不同的分子);由于液体分子的持续性和粘性,用于结束当前气味的中央清除器 (central erasers) 本身可能会产生各种气味。所以总得来说嗅觉的模拟潜力很大,但需要进一步突破性的进展。


然后是前庭系统 (Vestibular System)。前庭系统相当于我们人体内置的加速传感器 (accelerometer) 和陀螺仪 (gyroscope) 通过感知人体速度和朝向的变化,来协助大脑持续地判断空间位置和维持平衡感。对于 VR 来说前庭具有特殊的重要性,因为前庭感知视觉感知的冲突是 VR 造成不适的关键性因素 (比如你看到了自己正从空中猛冲向地面,但前庭缺乏对应的感知,就会产生不适)。

很多人玩第一人称视角射击 (FPS) 会晕也是同样的原因:视觉上的旋转和加减速缺乏来自前庭的协同反馈。说到这儿,Abrash 无奈地把 Carmack 的照片放出来,“...but annoyingly, some people are completely unaffected” (全场哄堂大笑)。

可以使用表面电极来刺激前庭,但由于颅骨的隔离,实际感受糙了点。要想做到精细的控制,只有把电极透过颅骨植入内部,Abrash 说,要真得这样就算是最硬核的玩家也不见得双手支持吧。哎,又是脑后插管的节奏啊。


然后是听觉 (Hearing)。Abrash 和 Carmack 都觉得,听觉对好的 VR 体验非常重要 (Carmack 在随后的 keynote 里也强调了这一点),而且现有技术已经比较成熟。但这并不意味着实现好的视听效果很简单。听觉的模拟有三个基本的元素:Synthesis, Propagation, Spatialization。

Synthesis (合成) 是源音效的产生过程 (the creation of source sounds)。目前的做法是用预先录制的波形来混合重放,但最终应该是由对物理过程的正确模拟来产生声音的 (比如表面振动)。可以想见的是,这个运算量将会是怪兽级的 (unbelievably computationally intensive)。

Propagation (传播) 是音效在空间中的传播过程 (how sound moves around the space)。Abrash 原先认为传播的处理相对容易一些,运算量会小一些,但后来发现并非如此。两个原因,其一,跟光线不一样的是,不同频率的声波相互之间的折射,反射和干涉的程度非常不同;其二,(同样是) 跟光波不同,声音的传播慢到人们能显著体验到这种延迟 (闪电和雷声)。“...this means sound has to be simulated as a 3D time series across many frequency bands, which is much more expensive than generating a single instantaneous global solution per frame.” 总得来说这是一个运算量的问题,而在考虑空间上的复杂度的情况下得出一个通用的方案,目前仍然是一个未解决的问题。

Spatialization (空间化) 是 (相对于接收者而言的) 声音在空间中的方向 (the direction of incoming sound)。理想情况下这应该是 Sound Propagation 的一部分,但现在可以用 HRTF (head-related transfer function (HRTF)) 来比较好地模拟声音如何到达空间内一个特定的接收者,并转化为声波穿过耳道到达鼓膜。但 HRTF 所需的硬件还很庞大,目前还无法装备到消费级的设备上。

总得来说,我们对声音的原理和公式已经非常熟悉了,但谈到真实且实时的模拟,即使是一个小房间内的几个移动的发声体在目前都还很遥远 (运算量上几个数量级的差距)。成熟的真实声音模拟,还需要若干年的技术积累。

(听到这里,我明白过来,目前音效的技术能力如果与图形类比的话,差不多相当于 2D 图像处理,而真实感的声音模拟对应的就是 3D 图形学)


接下来是对 VR 最为重要的视觉 (Vision),这是我们最熟悉也是研究最充分的一种物理现象。在 VR 的体验中,主要关心的是下面这五种属性的结合:

足够宽的视野,足够好的图像质量,任意变焦,HDR,更好的人体工程学。这些因素都需要改进,但不少情况下它们是彼此冲突的,现在实践上是各种 tradoff 来平衡之。

这张图里列出了一些期望作为对比。细节可以看图就不多说了。


最后是触觉 (Haptics),目前还没有任何科技,能有效地模拟真实世界的触摸感受。

在感知系统这一节的结尾,Abrash 做了一个两个小球相交的小实验 (需要看视频 20'20"),来说明我们在认知心理学上的巨大挑战。


说完了感知系统,接下来是第二部分 Sense & Reconstructing Reality

Abrash 放了一段视频,这是他们 Surreal Vision Team 的新同事 Richard NewComb 的成果。

这对 VR 来说还不够好,“making all this work is going to require rethinking the entire sensing in reconstruction stack, both hardware and software from the ground up.”

这是另一段同样来自 Surreal Vision Team 的视频,整个真实世界重建的过程是自动化和无缝实时的,注意其中材质,光照和阴影的模拟。(推荐观看)


最后是第三部分 Interaction

这里的研究要点在于“for the hands being able to act as a dextrous virtual manipulators.” 不知为啥,看到这儿我想起了 Quake III 里的电锯。这里的难点在于 "fully reproduce real-world kinematics"。

比如上面这张桌子,目前没有有效的办法来让你 (在虚拟世界中) 的手被一张 (虚拟的) 桌子挡住。这需要新的触感科技,以及配套的交互语言 (就好像刚刚发明鼠标时那样)。


把上面三个领域的这些挑战列一下,就得到了这张表 (可以看做是现在 Oculus Research 的研究课题列表)。

Abrash 放了一段视频,头戴设备内的面部表情感知 (与南加州大学的合作),这是其中一个交叉学科研究的例子。

面对这些世界级的课题,尤其是一些交叉合作的课题,需要非常大的直面困难的勇气。说到这里,Abrash 提起了曾在 id software 与卡神共事的经历,又开始讲小故事了。

那时卡神才刚刚能让 Quake 实时地跑起来,在那个时间点上,在地图内来回跑动已经比较流畅,但偶尔会非常卡,问题出在过度绘制 (Overdrawn) 上。那时的 Quake 画下了视锥内所有的多边形,当往一个复杂度很高的角度看过去时,很多被挡住的物体被一层层地刷在 framebuffer 上,而那时候还没有有效的可见性检测算法。卡神那时一直在想各种办法,来剔除那些不可见的物体。

他试了各种不同的算法 (见下图左半边部分),看起来都很挺有潜力,但都各有缺点。

后来他尝试了直接从场景 BSP 中提取可见信息 (右半部分),忙活了一个周末,在周一的凌晨 3:30 John 理出了 PVS 的头绪,彻底地解决了这个问题。

这里 Abrash 复述了他在著名的黑皮书 (Michael Abrash's Graphics Programming Black Book) 里提到过的一段话,值得记录一下:

John says __precalculating the PVS was a logical evolution of the approaches he had been considering, that there was no moment when he said "Eureka!"__ Nonetheless, it was clearly a breakthrough to a brand-new, superior design, a design that, together with a still-in-development sorted-edge rasterizer that completely eliminates overdraw, comes remarkably close to meeting the "perfect-world" specifications we laid out at the start.
...
__All really great designs seem simple and even obvious—once they've been designed.__ But the process of getting there requires incredible persistence and a willingness to try lots of different ideas until the right one falls into place, as happened here.
...
My friend Terje Mathisen likes to say that __"almost all programming can be viewed as an exercise in caching,"__ and that's exactly what John did. No matter how fast he made his VSD calculations, they could never be as fast as precalculating and looking up the visibility, and his most inspired move was to yank himself out of the "faster code" mindset and realize that it was in fact possible to precalculate (in effect, cache) and look up the PVS.
...
__The hardest thing in the world is to step outside a familiar, pretty good solution to a difficult problem and look for a different, better solution.__ The best ways I know to do that are to keep trying new, wacky things, and always, always, always try to simplify. One of John's goals is to have fewer lines of code in each 3-D game than in the previous game, on the assumption that as he learns more, he should be able to do things better with less code.

最后,Abrash 提到这本具有传奇意义的,影响和激励了无数人 (包括他和 Carmack) 的书。

是的,“These are the good old days”。


下面的评论里有两条很有意思 (后一条是前一条的回复),摘录一下:

_HowAbout NoSon_

Really, what a load of shit. All this amounts to is "please support our platform that has no software" and "we have no idea how to solve any of the non obvious problems yet."

Not sold on Oculus at all.

_Tim Robb_

"Please support our platform that continues to pioneer a space that is fiendishly difficult to break into, that somehow, despite all these challenges, we've produced a result which people are still finding amazing. Please support our platform that is only the beginning. That is still under incredibly heavy research and development to make a great experience".
An experience that isn't even released yet. Of course they don't have all their software built yet, lol. How many games are completely supported on a new generation console months before they release? None.
They all adapt after launch.
Oculus Connect are massive events. Developers across the world are trying to make experiences. Will we see much on launch date? Maybe a couple. But you can bet your ass and your money that there will be a lot more where they come from.

Or don't. That's fine too. This is a presentation for early adopters. Most >50% of consumer don't buy a product until well, well after this phase, probably not until late next year. That's fine! Do that then. It'll be a safe bet by then, rather than the risk now.
Us early adopters and cutting edge developers will be the people ensuring you have a good experience down the line. With our feedback, and our creations, the platform will have a little of us in it. That's why we do what we do, and why we watch things like this.

是的,很多很多困难。其中不少困难,不要说工程实践,甚至从理论上都还没有答案。越是深刻的影响和改变,越是需要时间去成熟,消化和沉淀。正是因为我能感受到 VR 将多么深刻地改变我们的生活,才明白这绝不是短期就会成熟落地的科技(正如互联网从兴起到真正地改变生活)。而这正是我对先行者的钦佩之处,也是我记录此文的初衷。

Gu Lu
2015-10-18

[注]

Comments
Write a Comment

知识共享许可协议
本作品由Gu Lu创作,采用知识共享Attribution-NonCommercial-NoDerivatives 4.0 国际许可协议进行许可。