XAudio2 обработка окклюзии
Я работаю над игровым движком домашнего приготовления, и в настоящее время я работаю над реализацией аудио движка. Это в основном по самообразовательным причинам. Я хочу создать интерфейсную обертку для общей обработки звука, чтобы я мог переключаться между OpenAL, XAudio2 или другими платформами по мере необходимости или необходимости. Я также хочу, чтобы этот код можно было использовать повторно, поэтому я стараюсь сделать его как можно более полным, и чтобы различные системы реализовывали как можно больше функциональных возможностей. В настоящее время я сосредоточен на реализации XAudio2 и могу перейти к реализации OpenAL позже.
За последние несколько месяцев я много читал о трехмерной обработке (слушатель / излучатель), эффектах окружающей среды (реверберация), исключении, окклюзии, обструкции и прямом звуке. Я хочу иметь возможность использовать любой из этих эффектов при воспроизведении аудио. Хотя я как можно лучше исследовал темы, я не могу найти примеров того, как на самом деле реализуются окклюзия (приглушение прямого и отраженного сигналов), обструкция (приглушение прямого сигнала) или исключение (приглушение отраженного сигнала). Чтение документации MSDN кажется пассивной ссылкой на окклюзию, но ничего не говорит о реализации. Лучшее, что я нашел, это общий "использовать фильтр нижних частот", который мне не очень помогает
Итак, мой вопрос заключается в следующем: используя XAudio2, как реализовать глушение сигнала отражения звука (исключение) и прямое глушение звука (препятствие) или оба одновременно (окклюзию)? Как будет выглядеть аудиограмма, и как они будут связаны с влиянием окружающей среды на реверберацию?
Изменить 2013-03-26:
Продолжая думать о графике, я понял, что, возможно, я не смотрю на график с правильной точки зрения.
Если график выглядит следующим образом: Source → Effects (Submix) → Mastering
-или же-
Должен ли граф выглядеть следующим образом:
↗→ Direct → Effects ↘
Source →Mastering
↘→ Reflections → Effects ↗
Второй график будет разбивать график таким образом, чтобы исключение и препятствие можно было рассчитать отдельно; Часть моей путаницы заключалась в том, как они будут обрабатываться независимо.
Тогда я бы подумал, что настройки реверберации из структуры DSP 3D-аудио будут применены к траектории отражений; что допплер будет применен либо к прямой, либо к прямой и отражательной траектории; и что влияние окружающей среды реверберации будет влиять только на путь отражений. Это приближается к правильной модели аудиографа?
1 ответ
Вы хотите, чтобы ваш график выглядел так:
Входные данные ---> Фильтр нижних частот ---> Выход
Вы настраиваете фильтр нижних частот, когда источник становится более замкнутым. Вы также можете использовать усиление фильтра нижних частот для имитации поглощения. Настройки фильтра лучше всего настроить таким образом, чтобы они могли быть настроены с помощью Sound Designer.
Эта статья более подробно описывает распространение звука: http://engineroom.ubi.com/sound-propagation-and-diffraction-simulation/
В терминах этого затем передается по графику эффекты окружающей среды, такие как реверберация, вы просто хотите, чтобы они были ниже по графику:
Вход ---> Фильтр нижних частот ---> Выход ---> Реверберация ----> Master Out
Таким образом, реверберационный звук будет соответствовать перекрытому звуку (в противном случае он будет звучать странно, если реверберация не соответствует прямому сигналу).
Использование фильтра нижних частот звучит расплывчато и неполно, но на самом деле это не намного больше, чем фильтрация высоких частот и регулировка усиления. Для более продвинутого моделирования окружающей среды вы хотите исследовать что-то вроде "Предварительно вычисленного волнового моделирования для распространения звука в реальном времени динамических источников в сложных сценах" (я не могу связать напрямую, так как у меня еще недостаточно репов!), Но это может хорошо быть за рамками того, что вы пытаетесь достичь.