- 维克托.菲尼克斯,The Sound Lab at Technicolor 的声音主管和高级技术声音设计师
- 项目:《Passengers: Awakening》
- 角色:所有叙事元素的ADR 监控以及技术声音设计
- 挑战: 较小的团队(+/- 10 人),而目标是在很短时间内创造3A级质量的互动VR体验
- 音频要求:对于叙事元素进行实时空间化,支持多平台和三种语言
我被请入了制作《Passengers:Awakening》同伴VR体验的MPC VR 团队,该原作是索尼影视的电影,由Chris Pratt(克里斯.普拉特)和Jennifer Lawrence主演。我大概十年前在Pandemic Studios时就第一次接触了 Wwise,根据我多年使用 Wwise 的经验,我知道我们需要在这个项目上使用Wwise才能在如此短的时间内达到目标。
我与MPC的程序员紧密合作,使用Unreal Engine的可视化脚本Blueprints内置的逻辑来驱动对话。结合UE中的Blueprints和Wwise Events让我在做到更多的同时,又不需要用尽程序员时间来创建钩子。
Unreal内置音频引擎可以处理很多任务,但在有些方面我更喜欢使用Wwise。首先,Uassets是二进制文件,不可文本编辑,也不易合并。我觉得能选择在文本编辑器中编辑文件是很关键的。Wwise文件建立在XML之上,并且可存在于UE工程之外,所以编辑它们很简单,而且我可以在Perforce中合并文件。虽然不需要经常这么做,但一旦有这个需要时,这简直救了我的命。
第二,我知道需要依赖Wwise来处理一些UE目前还不能自动处理的难题,这些难题以前我通常要请程序员来解决——其中最重要的就是管理针对平台的集成。
双耳声渲染器
《Passengers: Awakening》针对Oculus Rift、VIVE、PSVR开发。在Unreal Engine 4中有一版Oculus的双耳声渲染器,所以如果您只在PC上发售,就能直接在Unreal里将声音空间化。但是,因为我们也要在PSVR上发售,而Oculus的spatializer(空间化器)目前不兼容PS4,所以我需要一个解决方案,让我能在PC上使用Oculus的spatializer,在PSVR上使用索尼的3D音频工具,并且要适用于我的所有内容,且不需要分两次实现或需要程序员帮助。
Oculus Audio SDK包括针对Wwise的OSP插件,并且安装便捷;对索尼的工具也是一样。我在项目一开始就把它设置好了,之后就再也不用更新Wwise了。Oculus spatializer位于工程中的Binaries目录下,但我们决定在本地进行构建(就是说每个程序员在他们的机器上重新构建二进制文件)。所以,我们必须在Perforce里将DLL文件做为例外管理。除此之外,都是小意思。
Wwise集成
我写脚本的经验相当丰富,但我并不是一个程序员。当我最初将Wwise手动集成到Unreal Engine时,在注册Oculus spatializer时遇到了困难,但很幸运的是,一位来自Technicolor's Research & Innovation团队的工程师Giuseppe Mattiolo正好在MPC现场并帮了我的忙。除此之外,我基本靠自己就完成了Wwise的集成,这种事情我觉得在几年前都不可能做到。随着项目的进展,当新版本SDK发布于Wwise Launcher上时,我甚至能随时能将工程迁移到新版本。这也是我很喜欢的功能——又是一件可以解放程序员的时间去做其他任务的事。
MPAA安全限制带来了挑战
Technicolor Sound facility和MPC两者都遵循America Content Security Program的Motion Picture Association所指定的Best Practices(最佳范例),该指南适用于保护MPAA成员的内容不受盗版侵害的。你们可能不太熟悉这些指南,其实最佳范例中有一点就是制作网络以及任何处理或者储存数字内容的电脑都不能直接访问互联网。对于传输文件进出某个组织以及安装软件,都有相应的指南。安全是很重要的,但如果您已经习惯于迅速升级软件并发送素材,安全也可能是挑战,因为需要有另一个团队的人来安装软件或在组织之间传输文件。这一流程产生了问责制,而通过Wwise Launcher进行离线安装能有所帮助,但指南带来的瓶颈意味着更多的时间花在了协调上而不是开发上。
预渲染混响
预渲染Effects还是实时渲染的决定取决于平衡质量、内存、以及性能。每个项目都不同,我决定为对话素材预渲染立体声混响层。
相对于我之前做的其它项目,《Passengers:Awakening》的台词数目是比较少的(少于500句),独特区域仅限于六个,体验也相当线性,大部分对话仅限于一个或两个地点。对于在多个区域播放的台词,我在Blueprint里设置了Switch,以便根据你的位置在Wwise中触发正确的层级。最后,我的素材数小于1700个(包括混响层),所以用上Vorbis和ATRAC压缩后内存就不是什么大问题了。但是本作的图像体验非常丰富,而且VR要求有很高的帧率,所以我们不能冒险增加任何CPU占用。于是我们决定预渲染混响。
我成功地在我的工作室中制作了丰富的混响,而且我对听感很满意。如果让我重来一遍,我会更想使用游戏几何空间来空间化早期反射而只预渲染后期混响,或者为混响尾部使用高质量混响。Oculus spatializer在使用早期反射时会增加CPU,并且在房间变大时,CPU占用也会成比例增加。但是,Audiokinetic在GDC 2017公布了一个新插件,叫Wwie Reflect,目标是高效使用CPU,我绝对愿意一试。
现场感
在VR中创造临场感的一个重要方面就是让声音实时响应用户的动作。预渲染任何声音都会对临场感产生负面影响。不过这实在是无法避免的。通过预渲染,你对于一个声音的视角就锁定了,如果这么做,用户就再也无法感觉到在环境之中的位置。对某些事物,比如360度视频,是可以使用现有方法的,比如ambisonics或者quad-binaural;但是,谁也不能保证这样做不会在完全互动的体验中影响临场感——它肯定会影响的。您可以通过将一个声场围绕着用户旋转等方法来减轻这一效应,这也正是全新Wwise ambisonic卷积混响所做的,但您只需要实时渲染声音针对用户角度的改变和周边的环境,就可以创造临场感。
预渲染混响也意味着我需要显示项目本地化的所有语言的素材。还是一样,由于台词数目很小,这不是一项艰巨的任务;但是,如果我们真有CPU周期能用来实时进行混响渲染和空间化,我早就毫不犹豫这么做了。
本地化
说到本地化,在Wwise中管理语言让实现本地化素材变得异常轻松。在 Unreal 中 为了让这些素材正常流播放,MPC VR的程序员Timothy Darcy花了很多功夫;但是导入音频素材,重建SoundBanks,让所有AK Events指向正确的台词,这些做起来就十分省力。
炫酷的性能分析
好吧,我只是特别想起个好玩的标题。严肃地说,任何参与过互动项目工作的人都知道性能分析多么重要。Wwise中的性能分析信息在这个项目中对任何事都很宝贵,从老派的QA和bug修复,到在项目中分析帧率变慢现象时排除音频作为可能的原因,等等。我们能很精确地知道多少CPU在何时正被占用,这一点帮助我们缩小了问题范围,解放了团队。
链接:
http://www.moving-picture.com/film/film-vr/vr/
http://www.technicolor.com/en/innovation/research-innovation
https://developer.oculus.com/downloads/package/oculus-audio-sdk-plugins/
评论
hanson huang
September 16, 2017 at 02:19 pm
Hi how are you, I'm developing a game for PSVR, can you tell me, you use the SONY's 3 d audio tool is which?thank you!
hanson huang
September 16, 2017 at 02:19 pm
Hi how are you, I'm developing a game for PSVR, can you tell me, you use the SONY's 3 d audio tool is which?thank you!!