用计算机生成的图像通常都依赖与录制的声音相叠加来达到效果,但录音都是事先策划好的,如果是在一个未来的虚拟现实环境下,事先无法判断下一个动作是什么,该如何为画面配音呢?
康奈尔大学计算机科学副教授道格·詹姆斯(Doug James)开发了一种计算法来解决这一问题。这种算法是基于模拟物理模型来“联机”合成声音。他的研究团队已经发明了液体飞溅、玻璃等其他固体破碎和薄板金属等薄壳物体的声音合成方法。现在他们还制定了合成更逼真的硬物碰撞和火焰的声音的方法。最新的进展在2011年8月7日至11日,在加拿大温哥华举办的世界计算机图形图像及互动技术协会(ACM SIGGRAPH )计算机图形大会上展出。
要合成碰撞的声音,需要计算出这些计算机生成的物体如果真实存在的话所作用的力,以及这些力是怎样引起振动,振动又如何在空气中传播形成声音的。这需要用到线性模态分析模型和声音研究中常用的刚体动力学。
在以前的研究中,总是想当然地认为振动对象是刚性的,但研究人员说,“现实中,没有这么一种东西可以作为刚性物体”。在物体碰撞时产生的振动会进一步产生吱吱嘎嘎的声音,要分析出快速振动的物体间所有的摩擦的计算成本是很高的,为了加快速度,他们的算法只模拟了部分合成声音所需的模态的接触和振动。
“如果你把一个箱子放在一个平面上,其实会有许多接触点,”詹姆斯说,“我们定义了一小组绝对可信的接触点。”类似的,算法从物体振动的许多种形式上选取一部分,忽略了那些产生听不到的声音的振动。这种摩擦接触点的制定和解决方案非常适合声音的渲染。
他们演示了一些经典的振动实验。将尺子一半悬空在桌子边缘,弹拨尺子时发出的嗡嗡声;敲桌子时碗碟清脆的碰撞声,以及以“拐弯抹角”闻名的鲁宾·哥德堡装置(Rube Goldberg machine)的一系列复杂的声音:大理石投进杯中撬动杠杆将兔子推到购物车中,购物车再滚向下坡。
更令人印象深刻的是燃烧的声音。火焰燃烧的声音来自于迅速膨胀的气流。计算机不需要模拟那些需要高成本计算的细节来得到好看的火焰。“我们为火焰燃烧的动画模拟了低频的声音,不是所有细节,”詹姆斯说,“将火实际燃烧的声音作为模型叠加到那些低频的声音上去。”这样既可以降低成本,又可以通过改变输入的火焰真实的声音数据来模拟不同“风格”的燃烧。
在这一部分中,低频的火焰声音是基于物理模型产生的,在可视的火焰模型中采样。另一方面提出了两种合成额外的高频火焰声音的带宽扩展方法,即用光谱扩展法和基于数据驱动的合成法。光谱扩展综合了在理论和实践中都能匹配的更高频率的声音,后者则是通过各种录音数据的采集来完成。
研究者们展示了一只喷火的龙,风中的蜡烛,空气中摇摆的火炬、火焰喷射到房间和砖块燃烧的等实验的声音。最后一种需要同时运行几种不同的声音合成方法,并将产生的声音和实际燃烧的声音作对比。
火焰的声音仍然缺少一些“嗖”的一声的中间频率的声音,这种模拟过程也尚未准备好投入实际应用中。现在合成一小段火的声音需要几个小时,改善这一情况还需要更强大的硬件设施。但该技术一旦完善,将会解决虚拟现实环境下的声音问题,为计算机图形和声音带来新的进展。