2010-10-02 75 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