簡體   English   中英

XAudio2遮擋處理

[英]XAudio2 occlusion processing

我正在開發家用自釀游戲引擎,目前正在開發音頻引擎。 這主要是出於自我教育的原因。 我想為通用音頻處理創建一個接口包裝,因此我可以根據需要在OpenAL,XAudio2或其他平台之間進行切換。 我還希望該代碼可重用,因此我試圖使其盡可能完整,並讓各種系統實現盡可能多的功能。 目前,我將重點放在XAudio2實現上,並可能在以后使用OpenAL實現。

在過去的幾個月中,我已經閱讀了很多有關3D處理(偵聽器/發射器),環境影響(混響),排斥,遮擋,障礙物和直接聲音的文章。 我希望能夠在音頻播放中使用所有這些效果。 盡管我已盡力研究了這些主題,但我找不到任何有關如何實現遮擋(直接和反射信號消聲),阻塞(直接信號消聲)或排除(反射信號消聲)的示例。 閱讀MSDN文檔似乎是對遮擋的被動引用,但與實現無關。 我發現最好的是通用的“使用低通濾波器”,對我沒有多大幫助

所以我的問題是這樣的:使用XAudio2,如何實現音頻反射信號的消音(排除)和音頻直接信號的消音(阻塞)或同時實現(遮擋)? 音頻圖會是什么樣子,它們與混響環境影響如何相關?

編輯2013-03-26
在進一步考慮該圖時,我意識到我可能沒有從正確的角度查看該圖。
圖形應該顯示為:源→效果(子混合)→母帶
-要么-
該圖應一般如下顯示:

       ↗→   Direct   → Effects  ↘
Source                            →Mastering
       ↘→ Reflections → Effects ↗

第二張圖將拆分圖,以便可以分別計算排除和阻塞。 我困惑的一部分是如何獨立處理它們。
然后,我認為3D音頻DSP結構的混響設置將應用於反射路徑。 多普勒將僅應用於直接路徑,或者應用於直接路徑和反射路徑; 以及混響環境影響只會影響反射路徑。 這是否接近正確的音頻圖模型?

您希望您的圖形看起來類似於以下內容:

輸入數據--->低通濾波器--->輸出

隨着光源的阻塞,您可以調整低通濾波器。 您還可以使用低通濾波器增益來模擬吸收。 最好設置過濾器設置,以使它們可以通過聲音設計器進行調整的方式暴露出來。

本文將詳細介紹聲音傳播: http : //engineroom.ubi.com/sound-propagation-and-diffraction-simulation/

就此而言,然后將其傳遞給圖表以了解諸如混響之類的環境影響,您只希望它們在圖表的下方:

輸入--->低通濾波器--->輸出--->混響---->主控輸出

這樣,混響聲音將與被遮擋的聲音匹配(否則混響與直接信號不匹配的聲音將聽起來很奇怪)。

使用低通濾波器聽起來很模糊且不完整,但是實際上,除了過濾高頻和調整增益之外,效果還不多。 對於更高級的環境建模,您需要研究諸如“用於復雜場景中動態源實時聲音傳播的預計算波模擬”(由於無法提供足夠的代表,我無法直接鏈接!),但是它可能遠遠超出了您想要實現的范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM