位于纽约的 IrisVR 专为建筑和设计行业开发虚拟现实工具,他们的 PC 端产品 Iris Prospect 可以让用户把 3D 设计和蓝图转化成 VR 体验;而移动端的 Iris Scope 支持来自 V-Ray,OctaneRender,Lumion,Autodesk A360 的视频文件,用户可以在这些软件上创建全景视频之后分享。来自这家公司的软件开发者 Jack Donovan 接受了一次采访,分享 VR 开发的心得。
VR 开发的不同
对于开发项目是否虚拟,你是如何区分对待的?
Donovan:我认为是否虚拟并不重要,VR 开发的不同体现在 2D 和 3D 上。2D 环境里,你的开发基于一块有边界屏幕的前提,也就是说有一块固定高度和宽度的窗口。但在 VR 和 3D 中,空间是无限的,你需要重新思考代码的架构。
你指的代码架构具体是指?
Donovan:2D 中你只需要考虑 x 轴和 y 轴,3D 里还有 z 轴、纵深,所以事物不只是多高多低的问题,还有远近。
所以我想你开发的时候要时刻考虑用户的位置?
Donovan:确实,你需要开始让思维更开放,才能在新的维度添加进来之后更加有效率。
你会感觉这样有更多自由吗?我会觉得这是一种负担。
Donovan:我认为更自由了,原因仍然在于屏幕的限制,我不需要在预设的长宽里来回调整。
Unreal 与 Unity 的圣战
拿到一个新项目之后你第一个要思考的是什么?
Donovan:我得先确定使用哪个引擎。现在两个 VR 开发可使用的游戏引擎:Unity 和Unreal,市面上有大约 95% 的 VR 内容都是使用这两者之一。此外支持 VR 的也不多于五个,你当然也能自己开发新引擎,但我不建议这样做,因为各项成本会很高。
具体到你自己,你选择一个引擎会出于哪些原因?
Donovan:编程语言非常重要:选择自己认为舒适的开发语言。还有一点是清楚引擎默认所带来的功能。举个例子,将同一个 3D 模型放到 Unreal 和 Unity 中,不加任何特殊处理,Unreal里的看起来会更好,图像质量更高。但其实这两个引擎使用的是同一个图形库,但 Unreal 默认会偏向你需要更高的质量。
这是不是意味着 Unreal 的定制化更低?
Donovan:不是的,两者是差不多的,你对建模做调整还是需要舍弃默认给予的效果。比如,你把一只灯放进 Unreal 里,它默认就会加上高光,你不想要的话还是可以去除掉。Unity 的处理是如果你想要高光,你可以自己添加。
关于这个二选一,VR 开发社区中有些什么声音?
Donovan:很多人觉得 Unity 是复杂性更少的选择。放眼大环境去看,制作 3A 级大型游戏的公司会选择 Unreal,独立开发者更多使用 Unity。
你的想法呢?
Donovan:这是行业内的一次“圣战”吧。它们都能做出一样的产品,关键还是感觉。这还需要了解一些背景故事,1999 年的游戏《虚幻竞技场》之后,Unreal 就在 3A 大作里被普遍运用了,因此他们很清楚该如何使用 Unreal 引擎。但 Unity 带来了一种新颖却实用的方式,它足够简单,简单到我们见到许多烂游戏都是利用 Unity 开发的。但总得来看,基于它快速集成并产出的理念,使得你可以用 Unity 打造出媲美 3A 大作的产品,比如《Pokémon GO》就是基于 Unity 开发的。
我是否可以理解为独立开发者能使用 Unity 从头打造作品,这样就能让产品变得独一无二,相比之下 Unreal 就没那么个性化了吗?
Donovan:Unreal 能让你直接开始一个项目,你可以在里面随意走动,不需要担心“为什么我能到处看?我能不能改变这些?”而 Unity 里你必须要思考这些,在着手之前你就需要考虑到未来。
如何开始 VR 开发
我听说有人用 Oculus Rift 的开发套件在 VR 里直接进行开发,你试过吗?
Donovan:有的,感觉很棒。有一些公司就在做 VR 里的开发工具。比如 Bigscreen,它能接收你的电脑正在渲染的信号,然后将其显示在 VR 里。例如我戴上 VR 头显,就能在 VR 里看到我的电脑正在渲染的 IMAX 标准大小的影像,然后用键盘鼠标像平常一样操作 VR 里那块 IMAX 屏幕。
你对于这种工作的方式有什么看法?
Donovan:我很喜欢。因为直接切断了与现实的连接,能非常专注于工作。并且我可以不用受限于屏幕大小的限制,能在 VR 里随意设计我的办公环境。这就像在隐匿的森林当中冥想。
你还有用什么 VR 环境创建工具呢?
Donovan:除了 Bigscreen 还有 Envelop VR。
假设我是一个对 VR 开发有一些兴趣的人,你建议我从哪儿开始着手呢?
Donovan:Unity。它学起来很简单,我有两个朋友用了一周就掌握得不错了,初学者花上差不多一个小时就能用它在虚拟环境里散步。要想进一步的话,Unity 的社群非常有帮助,我甚至认为 Unity 是 VR 成功的原因。虽然这样说有些像广告,但我不是信口开河,每个人都能用 Unity从零开始制作游戏。
作为开发者的执念
你最想做出什么样的 VR 作品?
Donovan:我的梦想是做出 VR 版的《No Man's Sky》,创造一个程序自动生成的无限大的开放空间,并尽可能地像真实世界。
作为一个 VR 开发者,你在各种生活情境里是否会一直想关于开发的事?
Donovan:我玩 2D 游戏的时候就会注意它们的问题,视觉上的、程序上的。但 VR 却不会,因为它非常符合我们的本能、富有沉浸感,有时甚至不会意识到这是一种技术。
你所说的“符合本能”有什么例子吗?
Donovan:我玩 Oculus 上的《EVE:瓦尔基里》最早的 demo 时就有这种感觉,我戴上Oculus Rift,低头看到自己的身体,环顾四周无垠的宇宙,立刻就会心生一种存在的感觉,我带其他人玩的时候,他们甚至会紧靠着椅背,因为感觉到游戏里的飞船真得很快。
当你感受“无垠宇宙”的时候,我想问这是设计师还是开发者的工作,或者都需要?
Donovan:都有吧。有了技术上的基础,还需要有实例生成,游戏开发中有一个术语是“skybox”,每个游戏都有一个 skybox,这指的是你可以看到的极限。为了创造更好的纵深感,设计师会说:“我们需要让物体在很远的地方移动”,这就产生了一种感觉:物体不是在一个主观随意的距离,实际上它们非常非常遥远。或者你让星星闪闪发光,因为如果你只是有一个静态的图像来填补距离,那么无论多远,仍然会感觉没有生命力,进而发现是处在一个球体当中,而不是一个开放的空间。
所以假设有人需要你创造一个纵深感很强的银河,你会如何下手?
Donovan:我觉得仅靠自己可能没法设计出来,如果有一个设计师给出设计,我能帮助实现,因为这其中要考虑的事情太多。也许你看别人做的时候会觉得没什么,但真的要靠自己一个人做出让用户觉得身处另一个世界的感觉,那要求许多专业技能。
所以你以一个开发者的立场去看,创造独特的纵深感是非常了不起的吧?
Donovan:的确。这需要很多细节组合起来,你提醒了我,我觉得讽刺的是当思考游戏中的纵深感,大多时候我会想到音效。对 VR 来说,音效是构建沉浸感的关键,不只是要想到左右声道的事,它是 360 度的,举例来说,当你的头顶有飞机飞过,你的头会歪向一边。这些日常生活中不会注意的小事却非常重要。
那开发的时候会如何处理这些问题呢?
Donovan:Unity 当中会有整套声效系统供使用,你需要考虑的就是配置各种物体,比如物质的材料或者声效反馈效果,然后测试声音会如何穿过人的头部。但我认为有一天这会成为游戏引擎中的核心组件,就像图像一样。
作为一个对开发了解甚少的人,我想问一个轻松的问题:开发一个 VR 版的 Flappy Birds 需要多久?
Donovan:大概四个小时。
那像《黑客帝国》一样的开放世界呢?
Donovan:那取决于你的需求。我可以做得很简单,一条走廊,走廊尽头要么选左,要么选右。也能做得有更多随机性,同样是一条走廊,走廊尽头再分出三条走廊,之后继续生成分支。这只是创造随机开放世界的一个简单例子,你可以无止境地增加复杂性,直到你觉得创造了一个现实世界的完美模型,但是为了达到这个效果,你需要比世界上任何一个人都要理解这个世界。
对于有传统 app 开发经验的人来说,把开发对象从矩形屏幕转移到完全沉浸式的环境里是一件想起来会心虚的事,但现在的 VR 开发氛围就像几年前的移动 app 开发一样,踏入门槛很高,但机遇也同样地高。