ARCore之路-運動跟蹤之3D聲場(四)
上節我們已經利用共振音訊(Resonance Audio)SDK實現了3D音效,這只是使用了共振音訊(Resonance Audio)最簡單的特性,共振音訊(Resonance Audio)提供了遠比示例中高階的功能技術特性,特別是模擬房間的引數,可以模擬很多生活中的真實環境特性,本節主要對Room引數、API進行更詳細的瞭解。
一、Room effects
1、Surface materials
對Room六個聲學表面可以賦與不同的聲學材質,共振音訊(Resonance Audio)共提供了23種不同的材質,我們可以直接選擇城要的聲學材質,每一種聲學材料定義了在不同的頻率下聲波吸收或反射率。例如,Heavy Curtain(厚窗簾) 吸收高頻部分,因些提供一個更乾燥、溫暖聲音的房間特性。Polished Concrete(拋光混凝土)在所有頻率上都會反射更多的聲音能量,從而產生更明亮和更有回聲的房間特性。
2、Reflectivity
這個引數用來對Resonance Audio Room中聲源的早期反射強度進行調節,這樣使用者就能對他們周圍房間的大小和形狀有一個大致的印象。例如,減少這個引數的值來用來模擬受限小空間的聲音,增加這個值用來模擬空曠空間的聲音。
3、Reverb properties
這些引數影響Resonance Audio Room的後期混響,它主要包括以下三個引數: Reverb Gain 這個引數用來調整房間效果的混響增益,這個混響增益不是直接來自聲源的聲波。可以用這個引數來調整混合聲音的“厚重”或“單薄”。例如,如果想讓房間混響變弱,調整Reverb Gain使聲音聽其來更“單薄”。 Reverb Brightness
4、Room size
使用x、y和z引數設定Resonance Audio Room的尺寸(以米為單位)。房間尺寸影響房間聲音效果,這個尺寸同時也設定了聲音的邊界,當用戶進入到範圍內時觸發房間聲音效果,或者平穩地從一個Resonance Audio Room切換到另一箇中。
二、Resonance Audio API
共振音訊(Resonance Audio)提供的主要API類如下:
類 | 類說明 |
---|---|
ResonanceAudio | 這是共振音訊(Resonance Audio)的主要類,它負責共振音訊(Resonance Audio)與作業系統及硬體的互動。 |
ResonanceAudioAcousticMesh | 這個類用來處理Mesh,儲存mesh filter或者terrain的複製風格資訊,以及分配給三角形的表面材質。 |
ResonanceAudioListener | 對Unity AudioListener的增強,提供更多高階的3D聲場的調節引數。 |
ResonanceAudioMaterialMapper | Resonance Audio material mapper可程式設計物件,負責處理GUID到表面材質的對映(這些材質定義了表面的聲學特性)。 |
ResonanceAudioMaterialMapperUpdater | Resonance Audio material mapper updater |
ResonanceAudioReverbProbe | 共振音訊(Resonance Audio)混響Probe,作為音效的取樣點,這個取樣點會向其周圍的環境發射射線,以此來感知周圍環境的聲學特性並利用這些資訊來計算混響音效。 |
ResonanceAudioRoom | 模擬房間,利用這個模擬房間來模擬真實的音效環境。 |
ResonanceAudioRoomManager | 模擬房間的管理類,管理模擬房間的3D聲場。 |
SurfaceMaterialDictionary | 一個可序列化的字典類,它負責從表面材質到GUID的對映。 |
ResonanceAudioSource | 對Unity AudioSource的增強,提供更多高階的3D聲場的調節引數。 |
此外,共振音訊(Resonance Audio)技術還提供了對聲音的混響烘焙(Reverb baking),與對光線進行烘焙一樣,通過設定探針(Probe),可以將聲音特性直接烘焙到環境中,省去實時的音訊處理,降低處理器的壓力。