XAudio2遮挡处理

XAudio2遮挡处理,audio,directx,audio-processing,xaudio2,occlusion,Audio,Directx,Audio Processing,Xaudio2,Occlusion,我正在开发一个自制游戏引擎,目前正在开发音频引擎。这主要是出于自我教育的原因。我想为通用音频处理创建一个接口包装器,这样我就可以根据需要在OpenAL、XAudio2或其他平台之间切换。我还希望这段代码是可重用的,所以我正在努力使它尽可能完整,并让各种系统实现尽可能多的功能。目前,我的重点是XAudio2实现,稍后可能会转向OpenAL实现 在过去的几个月里,我读了很多关于3D处理(监听器/发射器)、环境效果(混响)、排斥、遮挡、障碍和直接声音的书。我希望能够在音频播放中使用这些效果中的任何一种

我正在开发一个自制游戏引擎,目前正在开发音频引擎。这主要是出于自我教育的原因。我想为通用音频处理创建一个接口包装器,这样我就可以根据需要在OpenAL、XAudio2或其他平台之间切换。我还希望这段代码是可重用的,所以我正在努力使它尽可能完整,并让各种系统实现尽可能多的功能。目前,我的重点是XAudio2实现,稍后可能会转向OpenAL实现

在过去的几个月里,我读了很多关于3D处理(监听器/发射器)、环境效果(混响)、排斥、遮挡、障碍和直接声音的书。我希望能够在音频播放中使用这些效果中的任何一种。虽然我已经尽我所能研究了这些主题,但我找不到任何关于遮挡(直接和反射信号消声)、遮挡(直接信号消声)或排除(反射信号消声)如何实际实现的例子。阅读MSDN文档似乎是被动地引用了遮挡,但并没有直接涉及到实现。我发现最好的方法是通用的“使用低通滤波器”,这对我没有多大帮助

所以我的问题是:使用XAudio2,如何实现音频反射信号消音(排除)和音频直接信号消音(障碍)或同时实现两者(遮挡)?音频图是什么样子的,这些与混响环境影响有什么关系

编辑2013-03-26
在进一步思考图表时,我意识到我可能没有从正确的角度看图表。
该图形是否应显示为:Source→ 效果(Submix)→ 掌握
-或-
如果图表一般如下所示:

       ↗→   Direct   → Effects  ↘
Source                            →Mastering
       ↘→ Reflections → Effects ↗
第二个图形将分割图形,以便可以分别计算排除和障碍;我困惑的一部分是如何独立处理它们。

然后,我认为来自3D音频DSP结构的混响设置将应用于反射路径;多普勒将仅应用于直接路径,或同时应用于直接路径和反射路径;混响环境效应只会影响反射路径。这是否接近正确的音频图形模型?

您希望您的图形符合以下几点:

输入数据--->低通滤波器--->输出

当震源变得更加阻塞时,可以调整低通滤波器。您还可以使用低通滤波器增益来模拟吸收。最佳设置过滤器设置,使其以声音设计师可以调整的方式暴露

本文将更详细地介绍声音传播:

根据这一点,然后沿着环境效果(如混响)的图表传递,您只希望这些效果在图表的下方更进一步:

输入-->低通滤波器-->输出-->混响-->主输出

这样,混响的声音将与被遮挡的声音相匹配(否则,混响与直接信号不匹配,听起来会很奇怪)


使用低通滤波器听起来模糊且不完整,但实际上效果并不比过滤高频和调整增益好多少。对于更高级的环境建模,您希望研究“复杂场景中动态声源实时声传播的预计算波模拟”(我无法直接链接,因为我还没有足够的重复!),但这可能超出了您试图实现的范围。

谢谢您的回答。阅读之后,它似乎不太适合我问题的实现方面。我编辑了我的问题,并对音频图进行了一些思考,我可能对此感到困惑。基本上,只要卸下一个低通滤波器就会同时影响直接信号和反射信号,我想知道如何分别应用。低通滤波器近似于直接信号和间接信号的总和。如果你想把它们分开,我会在输入阶段这样做。间接信号像以前一样通过低通滤波器等。直接信号在输入端分离,并将馈入增益(以便您可以改变直接/间接平衡),然后在输出级(混响前)重新加入主信号路径。您希望两者都能输入混响,因为混响是在您收听的地方建模的(而不是声音来自的地方)。