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


Обзор X3DAudio

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

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

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

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

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

Дополнительные сведения о слушателях и эмиттерах см. в справочных разделах о структуре 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