利用 Wwise 设计基于循环的汽车发动机声音 | 第 1 部分

游戏音频 / 声音设计

在本系列博文中,我们将介绍如何利用 Wwise 设计基于循环的汽车发动机声音(文中配有相关音频示例,及有关汽车的基础知识)。 

对汽车不熟悉没关系,其中的原理是相通的。虽是围绕内燃机 (I.C.E.) 展开探讨,但工作流程适用于所有同类设计。具体来说,就是要统一追踪采样素材的音高,并利用游戏参数对音高加以控制。说白了,其实就是个复杂的大型管乐器,背后原理无非空气的进出而已。

如果是刚开始接触汽车声音设计,或者想了解如何在 Wwise 设计工具中采用这种传统方式构建游戏内的汽车发动机声音,那么我接下来要分享的内容绝对值得一看!

在本系列博文的第 1 部分,我们将着重阐释有关发动机模拟的重要概念、声音设计所需的参数及其作用机制,最后深入了解在为此创建循环素材时都有哪些特别的注意事项。

本文中的截图基于《Wreckfest》中所用的原始录音或游戏素材。这是一款由 Bugbear Entertainment 开发、由 THQ Nordic 发行的极限赛车游戏。 

为何选择循环?

只要对游戏中的汽车音频设计有那么一点了解,估计都会想到粒子合成及其在品质上的优越性。那么,既然有更好的方案,干嘛要选择循环呢?

虽然粒子合成通常设置起来比较轻松且效果比循环更好,但其并不适合作为独立解决方案来实现精妙的声音细节。

在处理成本优先于保真度或声音再现品质的情况下,有时要对复杂的粒子合成设计进行简化以优化性能。比如,在由主机向移动设备做跨平台设计的时候。另外,在没必要运行粒子合成插件实例时,可能想在特定参数值域内增添一些变化。或者可能预算有限、不能每款第三方工具都授权,抑或没有现成的编程人员为项目开发自定义工具。

不管是基于循环、粒子合成还是其他什么,都有用到这些工具的地方。作为声音设计师,我们的任务就是确定哪些工具最为实用。

当然,只有手法相得益彰才有可能成就绝佳的设计方案。

主要发动机参数

在配置发动机设计之前,我们需要对 I.C.E. 如何借助动力传动系统驱动汽车前进有一个总体的了解,并明确发动机模拟所需的关键参数及其作用机制。

在 Wwise 中,这些参数被设为了与游戏端相应物理模拟数据关联的 RTPC。其中包括:

1. RPM(转速):表示发动机运转速度;

2. Load(负荷):表示发动机做功状态和工作负荷;

3. Throttle(油门):表示用于调节发动机工作负荷的用户输入。

油门主要控制进入发动机的油气混合物的比例和数量。对于复杂的发动机模拟,可能需要更多参数。不过,以上三个参数足以模拟基本的发动机声音行为。

接下来,我们说下 RPM 和 Load 的作用机制。如果对这些已经很熟悉,不妨跳到素材创建部分。

RPM 设置

RPM 是 Revolutions Per Minute(每分钟转数)的缩写,表示发动机曲轴在一分钟内转动多少个整圈(前提是 RPM 保持稳定)。对于配备四冲程发动机的普通家用汽车,其实际 RPM 范围可能在 900 ~ 6000 之间。

该范围的上限(通常称为全速)定义特定型号的发动机在保证部件不受损坏情况下的最高转速。大多 I.C.E. 都配有某种转速限制器,它可以将 RPM 控制在全速值以下,而不管 Load 和 Throttle 配置如何。

注意,如果游戏引擎馈送给 Wwise 的 RTPC 值超出 Authoring 对象的最小-最大限值,有可能会导致发动机声音停止播放。不过,Wwise 对象并不会对数值做限制。对此,需在游戏引擎端加以实现。

下图以《Wreckfest》中的某个发动机为例展示了如何利用 RPM 自动调节 Blend Track 的 Voice Volume。在此,暂且粗略看下其近乎流畅的循环效果。稍后,我们会在实践中详细阐释自动化机制。

此动图展示了如何在 Wwise 中自动调节 Blend Track 的 Voice Volume。

对于 Wwise 中的 RTPC 对象,RPM 范围通常会被配置为实际值、归一化值或由实际值转换的 Hz 值。这三者之间的选择完全取决于具体的用例。

归一化 RPM 是缩放到百分比尺度的实际 RPM(如 0 ~ 1 或 0 ~ 100)。这些最小-最大值分别代表发动机的怠速 RPM 和全速 RPM。

借助这种范围设定,我们可以将自动化行为和实际 RPM 分开处理。如此一来,就算游戏引擎端的实际 RPM 范围发生变化,之前配置的 Wwise 自动化行为在最小-最大值域内照样可行。同时,这也让我们的设计更具适用性。对于其他车辆,可能只需简单地复制粘贴一下就能使用。

至于由实际 RPM 转换的 Hz 值,我们知道音频工具一般都是基于频率构建的。比方说,其会将 RPM 设为每秒转数而非每分钟转数。通过由游戏引擎直接提供转换为 Hz 值的参数,有时可大大减少在 Wwise 中配置所花的时间。对编程人员来说,设置起来也会轻松很多。

不过,在设计车辆声音时经常会遇到要在两种单位之间转换的情况。要由 RPM 转换为 Hz,可除以 60;反过来的话,乘以 60 即可。

Load 参数值域

想弄清发动机负荷的作用机制,还需了解汽车的动力传动系统。该系统由一系列部件组成,其通过离合与发动机相连,用于将发动机输出动力(扭矩)一直传递到路面。除此之外,其还可借助物理效应(如轮胎抓力)影响发动机负荷。

跟归一化 RPM 类似,在音频设计中一般也会将 Load 参数缩放为百分比值。该参数的值域通常为 0 ~ 1 或 -1 ~ 1。它可以用来指示发动机的作用状态:

1. 额外施加扭矩;

2. 抵消既有扭矩;

3. 自行惯性转动。

在游戏音频设计中,这些情形分别称为有载 (On-Load)、无载 (Off-Load) 和空载 (Neutral-Load)。发动机加速或减速力度越大,负荷值越高。三种负荷状态下的作用机制如下:

1. 在踩下油门时,会转为有载状态。这时,燃烧的油气混合物会流经发动机。倘若离合接合,发动机便会施加扭矩来克服传动轴的阻力。比方说,将车体加速到或维持在设定速度。

2. 在不踩油门但 RPM 高于怠速值时,会转为无载状态。这时,油气流动会被切断,发动机被动地逆向转动,以此克服自身阻力(离合分离)或动力传动系统的阻力(离合接合)。

3. 在离合分离、发动机 RPM 降到怠速值时,无论汽车是静止还是运动,都会转为空载状态。

空载也叫怠速 (Idle)。注意,“空载”并不是说完全不运转,而是指发动机为了维持运转(怠速 RPM)仅提供最少的动力输出。

在音频设计中,通常会使用不同的素材来呈现有载和无载的独特音调。这些音调取决于为发动机、动力传动系统和排气管配置的物理参数。

在录音的基础上制作循环

要构建一套可马上投入设计的循环,可能需要熟练使用各种各样的工具。比如,录音设备、音频编辑器(配有插件效果器和合成器的 DAW 环境)等等。

以录制汽车声音为例:只要做过录音棚设备调试,就不难想到给架子鼓录音。这里并不是说架子鼓是高速运动的,而是说需要多话筒装置来捕获细节,并可在较宽的动态范围输出声压级…而且,在这个过程中声音会变得非常响亮!甚至,连选用哪种话筒以及如何设定其位置和角度都大有讲究。

对于上述种种情况,在此无法逐项做剖析。不过,我总结了一些通用准则供各位参考。如需深入了解相关话题,请参阅文末链接。

假设我们有一些车辆录音。为了将这些录音转变为堪用的素材,并据此设计基于循环的发动机声音,必须确保制作的素材满足以下条件:

1. 在循环时长内让音高尽量保持不变(即 RPM 保持稳定);

2. 设定一个已知的空载 RPM 值(比如录制素材时的 RPM);

3. 无缝循环。

另外,在编辑素材时要设法让其各自的起始相位尽可能协调一致。在录音的波形中,很容易辨别气缸点火时的实际发动机运转周期。在各素材之间,我们要确保此运转周期的起始相位尽量保持不变。为此,需在开始剪切前仔细查看整段录音波形,以大致了解特定发动机的运转周期形状,以及其随着 RPM 都发生了怎样的变化。在此基础之上,看看能否在任意 RPM 下区分单个运转周期。

在为有载和无载分层创建设置时,两者之间的重叠素材的空载 RPM 无需匹配。对于这种 RPM/Pitch 匹配,我们会在 Wwise 设计工具中进行处理。

拆分素材

说到有载和无载设置,有时可能需要对发动机和排气管录音做单独的处理。在这种情况下,我们可以为两者分别创建不同的 Load 设置(比如四组),来让设计方案与游戏世界模拟结合得更加紧密,以此来增强玩家的沉浸感。

在按照这种方式拆分素材之后,可依据摄像机位置、角度和距离甚至障碍物来单独控制每个分组的音色和混音平衡。或者,添加 Wwise 插件来分别处理录音。

好比在现实世界中,我们绕着一辆停着但在运转的汽车走动。当处于不同位置和距离时,汽车发出的声音会有很大的不同。这主要由排气管相对位置的变化造成的。倘若我们站在车头方位,排气管就成了具有一定声锥衰减的发声体。这时,从排气管到人耳的直接视线是受阻的。

通过将这种行为融入到设计当中,可使游戏里的汽车显得更加逼真。

音高优化

在将行驶车辆的录音制作成素材时,经常需要对音高做一些扁平化处理,确保整个循环当中的音高相对稳定。

通过在 DAW 中运行频谱可视化器(比如 Cockos 开发的 Reaper 配套提供的 "Spectrograph Spectrogram Meter" JS 插件和 Voxengo 开发的 Span VST),我们可以非常方便地追踪音高变化。借助像 Sonic Visualizer 这样的工具,甚至还可追踪突出的频率及确切的音调!

类似的工具还有很多,都能用来直观地查看声音的频谱。藉此,可确定空载 RPM 并设定一个相对稳定的音高。

我们先来看个例子。以下是《Wreckfest》中某个车辆所用的单个循环素材,我用 Span 对其输出进行了可视化处理。该素材对排气管和发动机录音做了静态混音,其时长约为 3.5 秒,空载 RPM 为 2910:

此动图直观地展示了录音的谐波峰值。

注意,大致在 195 Hz、380 Hz 和 790 Hz 位置,我们可以看到三个比较明显的峰值。可能各位也发现了,这些数值看起来很像一组与谐波相关的音色!

诚然,导致谐波峰值电平波动的因素有很多(包括做功类状态和工作负荷)。但是,只要谐波相关峰值有大的横向变动,都需要对素材的音高变化加以限制。所以一定要留意这种变动,以便借助匹配自动化来对音高进行扁平化处理。

对于需要进行音高扁平化处理的素材,建议将总体波动控制在 3 个半音以下。否则,音高修正算法本身很可能会导致产生清晰可辨的杂音。总之,波动幅度越小越好。

在上面 Hz 值的基础上,可在空载 RPM 和 Hz 之间进行转换。这跟发动机录音尤其相关。如用值 2910 做 RPM-Hz 转换,会得到 2910 / 60 = 48.5 Hz。将之乘以 4 可以得到 194 Hz,相当于前文指出的最低峰值。先将 48.5 Hz 乘以 8,会得到 388 Hz;再乘以 16,会得到 776 Hz。这些值跟 Span 可视化处理之后粗略估算的频率基本吻合。

但是,为什么要乘以 4 呢?这是因为用于计算四冲程发动机基准频率 (Hz) 的公式为:

(RPM / 60) × (气缸数 / 2)

对于四冲程发动机,曲轴旋转 2 个整圈才算完成一个发动机运转周期,所以在此要将气缸数除以 2。以上示例中所用的录音源自配有八个气缸的 5 升 V8 发动机。所以,我在截图中指出的其实是原始、二次和四次谐波。三次谐波 (582 Hz) 也显示了,只不过其电平相对较低。

循环的设定

除了录音属性,还要考虑各个循环的数量和时长。若为有载和无载使用很多长的循环,设计方案的内存用量将会大幅增加。在这种情况下,需要反复地逐一进行评估。有时,可能还要在音频编辑器和 Wwise 设计工具之间来回切换,以在数量和时长之间取得很好的平衡。

对于数量,不妨先将空载 RPM 的间隔设为 1000-1500 左右。为了捕获特定 RPM 范围内的细微差别,以便把车辆录音打造得更加精妙逼真,有时候可能需要把间隔设得更小一些。间隔越小,运行时需要调节音高的地方越少。

起码,要尽力避免在整个 RPM 范围内只有两三个循环。否则,播放的循环会远远超出空载音高,这样声音会出现非常明显的瑕疵。

有一点要特别注意,就是包含大量进气或水箱噪声的录音。进气噪声的音量通常会随着 RPM 增大,水箱噪声有时并不受 RPM 等因素影响。在调节音高时,采样噪声很容易变得非常刺耳。在将音高扁平化处理效果与游戏中的 RPM-Pitch 变换结合时,这种情况会更加明显。简直就是雪上加霜!

如果选择包含大量这样的嘈杂元素,更要仔细斟酌如何设定循环的间隔。最好,将噪声作为单独的分层来逐步加以实现。在现实场景中,进气噪声的音调变化更多地表现为相对静态频率范围内的钟型 EQ 跃升,有时甚至会出现轻微的共振。

至于循环的时长,依据经验最好让每个循环至少运行四秒。否则,循环很容易出现重复问题,尤其是在空载 RPM 之上时。在较高档位行驶更容易出现该问题,因为发动机的加速会比空档时还慢。若不超出空载 RPM 很多,即便短于四秒也没关系。

完美地无缝循环

唯有采用下面的传统音频编辑技巧,才能确保让嗡嗡声完美地无缝循环:

(国内观赏视频通道

就是在已知的适宜过零点拆分录音,将两边录音的位置对调一下,然后目视检查并对齐波形,来实现相位匹配的交叉淡变。

在以上视频中,我专门用 Reaper 构建了 RPM 近乎恒定的发动机录音。不过,各位也可选用其他现代音频编辑器实现此效果…所示循环并不完美,各位懂我意思就好。

注意,有些编辑手法(比如重复和反转片段)会导致录音中的陡峭瞬态被反向播放。而且,还可能会造成各个循环的相位失调。所以,一定要设法避免出现这种问题。如果存在音高扁平化处理瑕疵,或循环中有其他织体淡入淡出,不妨试着增大交叉淡变的时长。

还有一点很重要,就是务必在素材文件名中加入空载 RPM 和 Load 状态以便日后快速查找。在 Wwise 中设置对象时,会用到这些信息。尤其是在几个月或几年之后查看素材的时候,你会发现这样给素材命名可以节省很多时间。

在第 2 部分中,我们会实际考察如何在 Wwise 中配置循环素材。如果各位有什么意见,请在评论区给我留言。

未完待续,敬请期待!

更多资源

车辆声音录制(规划、准备工作等):《Vehicle Audio of Mafia 3》– Matt Bauer
车辆录音技巧(话筒放置等):《Capturing car audio for DiRT4》– Chris Jojo
发动机录音编辑技巧(Izotope RX 可视化):《Adaptive Engines in FMOD Demo》– Rory Walker
赛车游戏声音设计技巧:《The interesting world of racing game sound design》– Nick Wiswell
专业车辆录音免费资源:《Archive: GameAudioGDC》– Sonniss.com

阿托•科伊维斯托 (Arto Koivisto)

音频设计师、作曲家

Bugbear Entertainment Oy

阿托•科伊维斯托 (Arto Koivisto)

音频设计师、作曲家

Bugbear Entertainment Oy

阿托•科伊维斯托 (Arto Koivisto) 是一名跨专业音频人才,对音效、音乐及相关原理有着浓厚的兴趣。阿托从 90 年代末开始创作音乐,并积累了丰富的声音设计经验。多年来,他参与制作过各种各样的项目;从为舞台表演、音像作品和电子游戏(如《AG Drive》)设计声音、创作音乐,到为录音棚调试设备、为现场演出实时混音,再到为音乐制作母带(作为小型独立唱片公司合伙人兼负责人),最后于 2013 年转向游戏音频设计。

http://elbowski.com

http://bit.ly/FU4-Elbowski

评论

留下回复

您的电子邮件地址将不会被公布。

更多文章

怪物语音制作分享

怪物语音声音设计大致分成两类,一类是不同状态下的嘶吼和喉音(Short...

8.6.2020 - 作者:李敬平

互动音乐:根据玩家在游戏中所做的选择播放不同的乐段

在 2018 年众筹成功之后,inXile Entertainment 开始全力制作《Wasteland 3》。尽管上一款游戏《Bard's Tale IV》的配乐赢得了一致好评,布莱恩•法戈...

1.12.2021 - 作者:亚历山大•布兰登 (Alexander Brandon)

Tell Me Why | 音频日志 – 第 2 部分:音乐

《Tell Me...

30.3.2022 - 作者:路易斯•马丁 (Louis Martin)

借助 IR 混响增强声音的真实感

8.9.2023 - 作者:BOOM Library

借助互动音频增强游戏的可玩性

简介 我叫马特•摩尔多万,多年来一直从事电子游戏的声音设计、音频实现和作曲,目前在位于匈牙利的 Nemesys Games...

12.2.2024 - 作者:马特•摩尔多万 (Máté Moldován)

关于AudioLink的探索之旅

在去年 10 月的 GameSoundCon 上,我跟戴米安 (Damian) 在酒店拐角三明治店共进午餐的时候探讨着技术问题。我说“显然,现在我们可以将 MetaSounds 作为音频源在...

7.5.2024 - 作者:彼得·德雷舍 (Peter "pdx" Drescher)

更多文章

怪物语音制作分享

怪物语音声音设计大致分成两类,一类是不同状态下的嘶吼和喉音(Short...

互动音乐:根据玩家在游戏中所做的选择播放不同的乐段

在 2018 年众筹成功之后,inXile Entertainment 开始全力制作《Wasteland 3》。尽管上一款游戏《Bard's Tale IV》的配乐赢得了一致好评,布莱恩•法戈...

Tell Me Why | 音频日志 – 第 2 部分:音乐

《Tell Me...