Unity-立體混響聲音頻
簡介
本頁面介紹如何播放立體混響聲以及對音頻插件接口進(jìn)行了哪些更改來支持立體混響聲音頻解碼器。
立體混響聲以多聲道格式存儲。立體混響聲以更加通用的方法來表示聲場,而不是映射到特定揚(yáng)聲器的每個(gè)聲道。因此,可根據(jù)監(jiān)聽器的方位(即用戶頭部在 XR 中的旋轉(zhuǎn))來旋轉(zhuǎn)聲場。聲場也可以解碼為與揚(yáng)聲器設(shè)置相匹配的格式。立體混響聲通常與 360 度視頻結(jié)合使用,也可用作遙遠(yuǎn)環(huán)境聲的音頻天空盒。
選擇立體混響聲音頻解碼器
導(dǎo)航到項(xiàng)目的音頻設(shè)置(主菜單:Edit?>?Project Settings,然后選擇?Audio?類別)。從項(xiàng)目的可用解碼器列表中選擇立體混響聲解碼器。Unity 2017.1 沒有內(nèi)置任何解碼器,但 Google 和 Oculus 分別在自己的音頻 SDK 中為 Unity 提供了解碼器。

導(dǎo)入立體混響聲音頻剪輯
按照正常操作導(dǎo)入多聲道 WAV 文件。在音頻剪輯的 Inspector 窗口中,選中新立體混響聲的復(fù)選框。WAV 文件應(yīng)為 B 格式(按照 ACN 組件排序并采用 SN3D 標(biāo)準(zhǔn)化)。

通過音頻源播放立體混響聲音頻剪輯
與播放任何其他音頻剪輯一樣,立體混響聲音頻剪輯通過音頻源進(jìn)行播放。在播放立體混響聲剪輯時(shí),首先會解壓縮剪輯(如果需要),然后通過立體混響聲解碼器發(fā)送以將其轉(zhuǎn)換為項(xiàng)目的選定揚(yáng)聲器模式,然后通過音頻源的效果發(fā)送。
在音頻源屬性方面,需要注意以下幾點(diǎn):
將 spatialize 屬性設(shè)置為 false。在播放某個(gè)立體混響聲音頻剪輯時(shí),該剪輯會自動通過項(xiàng)目的選定立體混響聲音頻解碼器來發(fā)送。解碼器將剪輯從立體混響聲格式轉(zhuǎn)換為項(xiàng)目的選定揚(yáng)聲器格式。在此解碼操作過程中,解碼器還根據(jù)音頻源和音頻監(jiān)聽器的方位來處理空間定位問題。
與空間定位的音頻源一樣,立體混響聲音頻剪輯也將禁用混響區(qū)。
音頻插件接口更改
對于插件開發(fā)者,請首先閱讀 Unity 手冊以了解原生音頻插件 SDK 和空間音響 SDK,并下載音頻插件 SDK:
https://docs.unity.cn/Manual/AudioMixerNativeAudioPlugin.html
https://docs.unity.cn/Manual/AudioSpatializerSDK.html
https://bitbucket.org/Unity-Technologies/nativeaudioplugins
立體混響聲音頻解碼器的 AudioPluginInterface.h 有兩項(xiàng)更改。首先,有一個(gè)新的效果定義標(biāo)志:UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder。立體混響聲解碼器應(yīng)在效果的定義位字段中設(shè)置此標(biāo)志。在插件掃描階段,此標(biāo)志會通知 Unity 此效果是立體混響聲解碼器,隨后此效果將顯示為音頻設(shè)置的立體混響聲解碼器列表中的選項(xiàng)。
其次,有一個(gè)新的 UnityAudioAmbisonicData 結(jié)構(gòu)會傳遞到立體混響聲解碼器,此結(jié)構(gòu)與傳遞到空間音響的 UnityAudioSpatializerData 結(jié)構(gòu)非常類似,但新增了一個(gè) ambisonicOutChannels 整數(shù)。此字段將設(shè)置為 DefaultSpeakerMode 的聲道數(shù)。立體混響聲解碼器放在音頻管線中非常靠前的位置,在此位置將以剪輯的聲道數(shù)運(yùn)行,因此 ambisonicOutChannels 可告知插件將實(shí)際使用多少個(gè)輸出聲道。
如果我們要播放一階立體混響聲音頻剪輯(4 個(gè)聲道),但我們的揚(yáng)聲器模式是立體聲(2 個(gè)聲道),則為立體混響聲解碼器的進(jìn)程回調(diào)傳入的輸入和輸出聲道數(shù)將為 4。ambisonicOutChannels 字段將設(shè)置為 2。在這種常見情況下,插件應(yīng)將其空間定位數(shù)據(jù)輸出到前 2 個(gè)聲道,并將另外 2 個(gè)聲道清零。
2017.1 版本中的 Unity 立體混響聲源框架可以支持一階和二階立體混響聲。插件接口包含用于支持雙耳立體聲、四聲道、5.1 和 7.1 輸出的信息,但支持級別實(shí)際取決于插件。最初,立體混響聲解碼器插件預(yù)計(jì)僅支持一階立體混響聲源和雙耳立體聲輸出。
當(dāng)前框架中未提供特定于不同立體混響聲格式的任何內(nèi)容。如果剪輯的格式與立體混響聲解碼器插件的預(yù)期格式相匹配,應(yīng)該會一切正常。但我們的當(dāng)前計(jì)劃是,Unity 的首選立體混響聲格式是 B 格式(按照 ACN 組件排序并采用 SN3D 標(biāo)準(zhǔn)化)。