载具引擎声合成系统#
成品演示#
这是一段直列 4 缸引擎的模拟展示,首先展示了引擎怠速状态,之后是升速和降速表现

前文#
在游戏音效领域中,载具引擎的声音一直是很重要的一部分。
当前主流的方法多是通过现场实录结合上音频中间件的实时控制,以实现听感上真实的引擎声。进阶一些,可以通过粒子合成器来实现更好的效果或控制,比如 Wwise 平台上最常用的 REV 插件,但是从根本上也是需要通过对引擎各部分声音采样而实现的。
这种方法显然存在多种限制。
本系统将通过基于发动机工作原理的基础上,对其进行物理建模。通过对内燃机运行过程中的建模模拟来合成最后的声音,能够实现低延时、高质量的引擎声音效果并提供实时反馈。
工程结构#
PS:此处借用 @鲁旻荟 同学整理的系统结构图💕
系统运转总的流程就是:
首先确定车辆的参数,包括:发动机型号,最大转速,气缸数等
其次通过用户实时的启动点火,熄火,更改档位,油门位置等操作,影响发动机转速,油门开度等重要参数来改变引擎模拟器的状态。
在循环中,模拟器将会根据引擎实时的状态开始进行车辆运行状态下引擎的物理仿真计算。通过对进排气系统的流体动力学仿真,以及通过对排气流量、引擎转速、衰减系数等的计算,确定声音的特性和强度。
最后将结果写入合成器(Synthesizer 类)。合成器将模拟引擎转速及排气量的数据通过计算转化为模拟的引擎声音信号,再反馈回 Simulator 类,生成实时动态的引擎声音信号,并通过音频输出设备进行播放。
核心算法#
首先是物理参数如何影响到声音强度与音色:
(总的来说就是通过一系列物理参数最终影响到排气系统的流量,从而改变声音的基础频率;同时通过其他引擎模块的参数改变音色)
- 发动机转速 (RPM):
转速越高,排气频率越高,导致排气脉冲的频率增加,进而提高声音的频率。 - 进气流量:
进气量增加通常会导致燃烧更充分、更强烈,产生更大的排气流量和更响亮的声音。 - 燃料喷射量:
更多的燃料喷射会导致更强烈的燃烧,产生更高的压力和排气流量,从而使声音更响亮。 - 点火时刻:
提前或推迟点火时刻会改变燃烧过程的特性,影响燃烧的效率和压力波动,从而影响排气流量和声音特性。 - 排气系统压力:
排气系统中的压力变化会直接影响排气流量的动态特性和声音的传播方式。 - 气缸压力:
气缸内压力波动的频率和幅度会影响排气流量的脉动特性,从而影响声音的频率和强度。 - 热量和温度:
温度变化影响气体的膨胀速度和排气流量的稳定性,进而影响声音特性。 - 发动机负载:
负载变化会影响燃烧过程的强度和频率,从而改变排气流量和声音。 - 进排气门的开闭时刻和持续时间:
进排气门的时序会影响气缸内气体交换的效率,改变排气流量的脉动特性和声音。 - 振动和谐振:
发动机及其组件的振动特性会通过排气系统的振动模式影响排气流量的调制和声音的频谱特性。
其次就是声音合成系统是如何通过这些参数来最终合成声音信号的:
-
首先排气流量信号输入合成器,对其输入数值插值平滑处理
-
信号直流滤波处理
-
信号微分处理
-
空气噪声低通滤波处理
-
信号混合
-
卷积滤波处理
-
电平调整
-
信号量化
-
最后 render 信号到音频输出设备
总结与展望#
目前来说本文的介绍只是粗略的介绍了整个系统一些核心的部分,实际上还有许多具体的内容没有展开。这个系统目前由于其复杂的计算和物理建模,还并不适合直接应用于游戏引擎。截止到本文完成为止,作者已经投入在对其进行进一步轻量化的工作当中,并致力于实现其在 UE 引擎中的集成。