2010-10-02 39 views
1

对于3D iPad应用程序,我正在撰写我希望音频随着单个虚拟听众转向/远离声源而增大/减小音量。听众永远是静止的。听众只能旋转。声音总是静止不动。声音可以填充用户周围的方向。声音与听众距离相等。iOS OpenAL是否支持定向声音或只有位置声音?

我觉得声音与3D图形中的光源类似。对于每个声音,都有一个从听众指向该声源的矢量。听众有一个外向的方向向量。我想通过监听器矢量的dotProduct和每个音频源矢量来加权每个音频源的贡献。所以当听者的“头部”围绕声音贡献旋转方向。

我描述的多少可以由OpenAL处理,我需要自己编写多少?

感谢,
道格

回答

3

是的,你可以在OpenAL的做到这一点。事实上,你可以做得更好!使用点积产品,您可以在平行时获得完整音量,并在垂直时获得零点,使用OpenAL您可以定义来自音源的声音圆锥。

在源代码中,您需要将AL_CONE_INNER_ANGLE设置为小于AL_CONE_OUTER_ANGLE,以便在内锥角内获得完整的体积,并在外锥角之外将其衰减为零。您当然也需要设置AL_DIRECTION。

已经有一段时间了,我不确定您是否可以设置监听器的圆锥体/方向,但这并不重要,因为无论如何您的所有对象都是静态的,您可以简单地旋转来源,而不是模拟它:D

+0

非常酷。谢谢。 – dugla 2010-10-03 11:45:52