Поделиться через


Обзор X3DAudio

X3DAudio — это API, используемый с XAudio2 для размещения звука в трехмерном пространстве, чтобы создать иллюзию звука, поступающего из точки в пространстве относительно положения камеры. В частности, в названиях, в которые представлены трехмерные сцены, потребуется использовать X3DAudio. Звуки, не требующие трехмерного позиционирования, такие как звуковые дорожки или звуки, не относящиеся к расположению, могут полностью обходить X3DAudio.

Прослушиватели и излучатели

Для управления звуками в трехмерном пространстве X3DAudio использует понятия прослушивателей и излучателей. Прослушиватели и излучатели представляют положение всех звуков, которые слышат трехмерные звуки, и точку, из которой происходят эти звуки.

  • Прослушиватель определяется как точка в пространстве и ориентация. Это позиция, в которой слышен звук. Положение и ориентация прослушивателя обычно совпадают с положением и ориентацией камеры. Это верно, если в заголовке используется представление перспективы от первого или третьего лица. Позиция прослушивателя выражается в мировых координатах. Важно отметить, что именно положение прослушивателя относительно излучателя определяет, как вычислять окончательные объемы динамиков.
  • Излучатель определяется как одна (или несколько) точек в пространстве, из которых исходит звук. Положение излучателя может находиться в любом месте трехмерного пространства. Как и прослушиватель, положение излучателя выражается в мировых координатах. Именно положение излучателя относительно прослушивателя определяет, как вычисляются окончательные объемы динамиков.
  • X3DAudio использует левосторонняя координата. Чтобы использовать с координатами правой руки, разработчикам необходимо отрицать элемент .z элементов OrientTop, OrientFront, Position и Velocity X3DAUDIO_LISTENER и X3DAUDIO_EMITTER.

Помимо положения, прослушиватели и излучатели могут включать скорость. В отличие от механизма трехмерной отрисовки, X3DAudio использует скорость только для вычисления эффектов Доплера (она не используется для вычисления положения).

Дополнительные сведения о прослушивателях и излучателях см. в справочных разделах по X3DAUDIO_LISTENER и X3DAUDIO_EMITTER структуре.

Использование X3DAudio с XAudio2

Для всех взаимодействий между X3DAudio и XAudio2 используйте следующие функции X3DAudio.

  • X3DAudioInitialize

    Вызовите функцию X3DAudioInitialize для инициализации X3DAudio. Как правило, необходимо вызывать X3DAudioInitialize только один раз в течение всего времени существования игры, если конфигурация динамика не изменена.

  • X3DAudioCalculate

    После инициализации X3DAudio можно определить громкость и другие значения для заданного звука, передав излучатель звука и прослушиватель в функцию X3DAudioCalculate . Затем значения, вычисленные методом X3DAudioCalculate , можно применить к голосам или эффектам XAudio2 в соответствии с флагами, передаваемыми в функцию. Значения громкости и тона, вычисляемые методом X3DAudio, можно применять к голосу с помощью методов IXAudio2Voice::SetOutputMatrix и IXAudio2SourceVoice::SetFrequencyRatio . Другие значения, вычисленные методом X3DAudio, необходимо применить к эффекту реверберации с помощью метода IXAudio2Voice::SetEffectParameters .

Пошаговый пример использования X3DAudio с XAudio2 см. в разделе Практическое руководство. Интеграция X3DAudio с XAudio

X3DAudio