我有一个用于听众位置的3d矢量和一个用于声源的3d矢量。我还有一个用于监听器方向的3d矢量。我试图找到NED(北,东,下)的源相对于听众的位置,所以我可以在正确的扬声器播放声音...我做了这样的研究,但我似乎无法找到必要的方程...... 有什么想法吗?
谢谢!
答案 0 :(得分:1)
Ambisonics B-Format编解码器可以完成您所描述的内容。然而,虽然这个编解码器的规范是开放的,但由于它不幸的不受欢迎而找到它是相当具有挑战性的。
好消息是,我编写了一个名为“Ambisonix”的BSD开源项目,详细说明了实现三阶Ambisonics编码和解码所需的所有方程式。我还添加了一些功能,如距离编码和多普勒效应,这些功能不属于原始规格。
答案 1 :(得分:0)
我认为你不会找到你正在寻找的东西。 3D场中声源的空间位置是非常复杂的主题,并且取决于许多因素(收听者位置,扬声器位置,源材料)。与您描述的最接近的可能是Ambisonics,但这也需要监听设置为Ambisonics,这不是很常见。如果您正在使用类似Dolby Digital的东西,我认为它们不会给出方程式,您需要许可算法或将源材料与具有许可和内置算法的设备混合。但是,诸如杜比之类的系统是并非真正设计用于3D场中的精确声源定位 - 它们实际上只是一种空间效果,让听众感受到3D声场。
答案 2 :(得分:0)
您需要从声音矢量中减去侦听器矢量,然后您可以通过侦听器方向矢量旋转。现在,您可以简单地检查轴上的新矢量是正还是负。例如,矢量[0,10,-2]可以读作[0,+, - ],它表示[中央,上,后]。要使用N-S W-E U-D方向,请在减去后不要旋转矢量。