我有一个用于听众位置的 3d 矢量和一个用于声源的 3d 矢量。我还有一个用于听众方向的 3d 矢量。我正在尝试找到源相对于听众的位置的 NED(北、东、下),以便我可以在正确的扬声器中播放声音......我已经进行了如此研究,但我似乎无法找到必要的方程......有什么想法吗?
谢谢!
Ambisonics B-Format 编解码器完全符合您的描述。然而,虽然这个编解码器的规范是开放的,但由于它不幸不受欢迎,因此找到它是相当具有挑战性的。
好消息是,我编写了一个名为“Ambisonix”的 BSD 开源项目,其中详细说明了实现高达 3 阶 Ambisonics 编码和解码所需的所有方程式。我还添加了一些不属于原始规范的功能,例如距离编码和多普勒效应。
查看:http: //sourceforge.net/projects/ambisonix
您需要从声音矢量中减去听者矢量,然后您可以通过听者方向矢量旋转。现在您可以简单地检查新向量在轴上是正还是负。例如向量 [ 0, 10, -2] 可以读作 [0,+,-] 并且它的意思是 [central, up, back]。要使用 NS WE UD 方向,请不要在减去后旋转矢量。
我不认为你会找到你正在寻找的东西。3D 场中声源的空间位置是一个非常复杂的主题,取决于许多因素(听众位置、扬声器位置、源材料)。最接近您所描述的可能是Ambisonics,但这需要聆听设置也是 Ambisonics,这并不常见。如果您使用的是杜比数字之类的东西,我认为他们不会给出方程式,您需要获得算法许可或将源材料与具有许可并内置算法的设备混合。但是,杜比等系统是并不是真正为 3D 声场中的精确声源定位而设计的——它们实际上只是一种空间效果,让听者有 3D 声场的感觉。