1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

玩赛车游戏只觉得身临其境,轰隆轰隆是这样模拟的

本帖由 漂亮的石头2015-11-01 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    487,766
    赞:
    47
    赛车游戏怎么做到对真实声音的模拟?主要是引擎那部分

    [​IMG] 知乎用户,游戏音频设计 | 电影声音同期后期

    曾经引擎类音效实现的原理是“转速分段 + 音高调制”,铺开来说大致是这样的:

    1、在规划阶段我们会把游戏中引擎的转速分成多个区间。例如所需引擎的转速会覆盖 1000-7000 rpm,以划分成三段为例,我们将 1000-3000 定义为低转速,3000-5000 定义为中转速,5000-7000 定义为高转速。

    2、分别制作三段转速中,三个中间速度的音频循环样本,即 2000rpm、4000rpm 和 6000rpm(取值出于简化说明目的,实际操作中不一定使用中间速度)。

    3、在游戏中实时传送控制参数,首先判断车辆引擎在哪个转速区间运行,以循环播放对应区间的样本,同时参数也决定了该样本的音高调制比例。比如 1000rpm 时实际上播放的是 2000rpm 样本音高降低 100% 的结果(还是出于简化说明目的,所谓“音高”的说法不是很科学,不过我们感受到最明显的变化确实是音高的升高或降低)。

    上面的例子在如今两大主流音频中间件 Wwise 和 Fmod 当中呈现的形式:

    Wwise 里对应的功能模块是 Blend Container 与 RTPC (Real-Time Parameter Controls)。由游戏中实时发出的转速信息决定播放的样本与其对应的音高变化。

    [​IMG]

    Fmod 中大同小异,参数控制播放内容。

    [​IMG]

    4、在现有的基础上,会通过均衡器、失真等音频效果器来处理当前的结果从而表现不同的负载状况(比如空载高转速时失真会明显变大),原理同样是实时发送控制参数。有些引擎在不同负载情况下音色改变巨大,如果有表现需求的话,就需要分别录制不同负载的引擎在不同转速区间的样本。这是个多轨多参数音频事件问题,具体制作流程就不展开了。

    这种方案最大的问题就在于它并没有线性地表现出引擎从 1000 到 7000 转速声音的变化,或者说它是伪线性的。因此为了尽量还原真实的引擎声音,在实践中根据不同情况把转速 / 负载拆分为二三十个样本也是有可能的,从而音频设计师往往需要耗费大量的精力来处理不同转速之间的衔接、调整音高升降比例、样本之间的响度关系、负载之间的切换等等问题。更大的问题在于,根据算法的不同,音高升降过程中的效果并不完全一样,因此这个环节很容易穿帮。

    我相信很多大厂早已使用过更先进的技术手段,但真正在音频领域中普及新技术的是一家 2009 年成立的法国音频技术公司——AudioGaming。在 2011 到 2012 年间,AudioGaming 连续发布了包括 AudioWind、AudioSteps 等多款基于物理建模或采样合成的 Procedural Audio 程序(尚无统一的翻译,暂译成“演算音频”可能比较好理解,即由程序根据实时条件所生成的音频内容,而非实际录制的音频)。其中使得引擎类音效制作工艺实现全行业更新换代的程序是 AudioMotors。

    说到 AudioMotors 就需要提到一个声音合成手段:粒子合成(Granular Synthesis)。简单的说,粒子合成就是把时域的音频分割成以毫秒为单位的极短片段(windows),再将某一个或某几个片段循环播放以获得与原内容完全不同的结果的音频合成手段。这个技术早在模拟时代就有过实践(window 这个称呼就源自于模拟合成),但因受限于处理器能力,其被运用在数字音频领域是近十年才逐渐被普及的。

    AudioMotors 本质上就是粒子合成原理的运用,制作流程大致是:

    1、制作一段涵盖所需转速范围的,匀加速的引擎音频。

    2、导入 AudioMotors 进行基频与粒子合成分析。

    3、完成了。

    接下来粒子合成器接管了工作,当游戏中定义的引擎转速数据发送到 AudioMotors 时,程序只需通过粒子合成器循环播放某一特定时间点中符合转速数据的音频片段(windows)就可以了。同时引擎本身的音色可以通过音频片段之间的间隔、长度、音量等属性进行很大程度的调整。光说可能不是很直观,还是看图:

    AudioGaming 从 2012 年开始与 Fmod 合作,目前 Fmod 独占 AudioWeather 与 AudioMotors 两款程序的音频中间件版本,下图是 AudioMotors 的制作界面:

    [​IMG]

    Wwise 于 2013 年提供了另一家音频技术公司 Crankcase Audio 所开发的类似产品 Rev 的整合支持:

    [​IMG]

    图中界面内纵坐标是频率,横坐标是时间,能看出两图中载入的音频样本都是引擎的匀加速。粒子合成器所做的工作可以理解为循环播放图中游标竖线所处位置的某一小段。(有点像 CD 播放错误时卡带的效果,只不过片段更短,更加连贯,且精度更高)。关于粒子合成与引擎音效关系的技术细节见 paper Sample-based engine noise synthesis using an enhanced pitch-synchronous overlap-And-Add method

    粒子合成的好处显而易见。首先它实现了线性的表现效果,即无论引擎什么转速,多快的变速,跨度多大,音色如何变换,通过粒子合成都能够获得相对更加拟真的结果。其次在多数情况下,粒子合成音频样本的数据量要小于之前多段音频的数据量,在这个移动游戏的时代这无疑是个好消息。最后,音频设计师的劳动也省下了不少。

    说到底粒子合成也并非完全的“演算音频”,它仍然是基于音频样本的,且面对较为复杂的情况(比如通过降档实现减速)仍然需要依赖分别录制的不同的负载情况来实现。如今业内普遍的看法是,虽然基于音频样本的游戏音频技术仍然会在未来多年内占领主流地位,但演算音频将会是未来的趋势。近几年有越来越多的纯演算音频技术已经逐步开始运用在游戏音频与电影声音制作当中。除此之外,随着虚拟现实技术的逐渐成熟,对于交互音频内容的要求也会越来越细化,演算音频技术也无疑将会越来越受到重视,从而得到更大的发展。

    查看知乎原文
     
正在加载...