Современные стандарты 3D-звука


Большинство выходящих сегодня звуковых карт поддерживают 3D звук. По крайней мере, так заявляют производители. Звуковая карта без поддержки 3D звука сегодня обречена на провал, даже если остальные характеристики её далеко ушли вперёд от конкурентов. Как и в случае с 3D видеоакселераторами, в мире 3D звука существует несколько стандартов его получения. В этой статье я намерен внести ясность по каждому стандарту, особо не вдаваясь в технические подробности, и не напрягая формулами.

DirectSound3D (DS3D)

Фирма Microsoft предоставляет DS3D как один из компонентов DirectX, также, как Direct3D, отвечающий за вывод 3D графики. Но в отличие от Direct3D, DirectSound3D поддерживает так называемые "расширения", типа EAX. Сам по себе стандарт DS3D представляет собой набор команд, с помощью которых разработчики программных продуктов определяют где в пространстве расположены источники звука. Координаты источников звука в процессе исполнения этих команд передаются на DS3D-совместимую звуковую карту, которая размещает их в пространстве и затем обрабатывает.

Качество выводимого 3D звука зависит от того, какую звуковую карту вы используете, через что воспроизводится звук - через 4 колонки, 2 колонки, или вообще через наушники. Поэтому нельзя определённо выразить то, как звук воспроизводится. Каждый оценивает качество 3D звука по-своему.

Для тех, у кого нет под рукой DS3D-совместимой звуковой карты, Microsoft разработала более простой программный 3D движок, активно использующий CPU и имеющий низкое качество 3D звука. При использовании этого движка почти невозможно понять, откуда доносится до нас звук.

Заблуждение: Если звуковая карта поддерживает DS3D, то она не использует CPU для обработки 3D звука. Это не всегда так. Потому что звуковая карта может также использовать другие алгоритмы по обработке 3D звука, включённые в поддержку производителями (например, A3D, Q3D).

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

Все звуковые источники должны также иметь заданную громкость. В реальной жизни чем ближе мы приближаемся к источнику звука, тем громче он становится. Так как 16-битный звук имеет некоторые ограничения по максимальной и минимальной громкости (для того, чтобы содержать информацию о большем количестве уровней громкости звуковой файл должен занимать больше места), то все звуки в игре записываются с примерно одинаковой громкостью.
В игре, использующей DS3D, производитель задаёт минимальную дистанцию от источника звука, на которой он будет слышен с максимальной громкостью. Это означает, что если эта дистанция - 10 метров, то приблизившись к источнику с 10 метров на 2 метра, громче мы его не услышим. Значит в пределах от 0 до 10 метров громкость звукового источника не изменится и останется максимальной.
Другой фактор, задаваемый производителем - это максимальная дистанция. Производитель задаёт будет ли звук стихать дальше, когда вы от него удалитесь на расстояние большее максимальной дистанции, или он останется на той же громкости. Это означает, что если на максимальной дистанции звук имеет громкость 5 процентов от изначальной, то во втором случае как бы вы не удалялись от него, превысив максимальную дистанцию звук стихать перестанет и останется на 5 процентах громкости.

Скорость, с которой уменьшается (затухает) громкость звука с увеличением расстояния зависти от rolloff фактора. Обычно с увеличением расстояния до источника звука в два раза, громкость уменьшается в два раза.

Мы можем поместить источник звука, который будет направлен во все стороны (как, например, выстрел из автомата, или взрыв гранаты), а можем сделать направленный звук. Для этого источник звука помещается в два конуса - один внутри другого. Внутри меньшего конуса звук слышен на максимальном для этого расстояния уровне громкости. Снаружи большего конуса звук слышен на том уровне громкости, который задан разработчиком. Между внутренним и наружным конусами громкость звука представляет собой градиент. Использование конусов влечёт к увеличению реализма звуковой 3D сцены.

A3D 1.x

В первой версии DS3D не было аппаратной поддержки 3D звука. Фирма Aureal была заинтересована в том, чтобы использовать аппаратную обработку 3D звуковых потоков, используя те же команды. В результате был разработан новый стандарт, называемый A3D. Чтобы заставить производителей включать поддержку A3D в их игры, Aureal выпустила множество вспомогательных инструментов для облегчения этой задачи. Появление звуковых карт, поддерживающих A3D, почти не используя при этом процессора, сподвигло разработчиков на включение 3D звука в их игры.
Кроме всех команд DS3D, стандарт A3D имеет поддержку ещё двух наворотов. Первый и наиболее важный из них - это менеджер ресурсов. Он управляет 3D потоками, воспроизводимыми в игре и увеличивает количество одновременно воспроизводимых картой 3D потоков. Производитель выбирает наиболее важные звуковые источники для использования с помощью A3D. Остальные источники не воспроизводятся вообще, или воспроизводятся, используя стерео-микшинг. Менеджер ресурсов помогает решить проблему с избытком звуковых потоков в игре, когда звуковая карта просто не в состоянии воспроизвести их все, и некоторые звуки "проглатываются" или вообще не воспроизводятся.

Другой очень важный наворот A3D - это улучшенная дистанционная модель. С помощью неё можно имитировать нахождение под водой или в густом тумане.

A3D 2.0

Стандарт A3D 2.0 использует те же самые команды, что и A3D 1.x, но является ещё более продвинутым. Вот его преимущества:

  • Поддержка чипа Vortex 2
  • Поддержка большего количества 3D потоков
  • Поддержка более высоких частот, и HRTF файлов большего размера
  • A2D - эмуляция позиционируемого звука A3D.
  • Расширенный менеджер ресурсов
  • Поддержка Aureal Wavetracing - акустические отражения, реверберации, препятствия.

Подробнее о каждом пункте.

Первый и единственный чип, поддерживающий A3D 2.0 это Vortex 2. Самые известные звуковые карты на его базе - Diamond Monster MX300, Turtle Beach Montego II.

A3D 2.0, как и Vortex 2 поддерживают до 16 одновременных звуковых потоков + 64 потока отражений звука при использовании Wavetracing, или 80 независимых одновременно выводимых потоков в A3D 1.x

Стандарт A3D 2.0 позволяет обрабатывать звуковые потоки с частотой дискретизации 48 kHz. В то же время в этом стандарте была увеличена длина файлов HRTF (Head Related Transfer Function - набор аудио фильтров для формирования ядра 3D позиционирования) для того, чтобы обеспечить возможность позиционирования 3D звука с частотой дискретизации источника 48 kHz.

A2D драйвер перехватывает команды A3D 2.0 и конвертирует их в команды DS3D. Как результат - позиционируемый звук на не A3D звуковых картах. Естественно, никакой технологии wavetracing здесь нет. Всё, что получается таким образом - позиционирование в 3D пространстве. В настоящее время Aureal выпустил всего одну версию этого драйвера, которая всё ещё недоработана.

Благодаря новому менеджеру ресурсов, теперь приложения, использующие A3D 2.0 могут проигрывать так много звуковых потоков, как понадобится, вне зависимости от возможностей звуковой карты. Менеджер ресурсов автоматически выбирает наиболее важные источники звука и проигрывает их на возможных ресурсах системы. В новой версии добавлена поддержка зацикленных звуков, приоритет источников, управление отражениями и учитывание геометрии комнаты.

Технология Wavetracing. Эта технология разрабатывалась годами при сотрудничестве с NASA, Disney и другими компаниями. Суть её в том, что в реальном мире мы почти никогда не слышим звук "как он есть". Звуковые волны проходят сквозь всевозможные препятствия, отражаются, преломляются, проходят через дверные проёмы из одной комнаты в другую. В результате мы слышим изменённый звук. Технология wavetracing позволяет учесть все эти условия (включая полную геометрию и материалы стен) в виртуальном мире и получить наиболее реальный звук.

Как показано на первом рисунке, здесь нет никаких препятствий и геометрических объектов. Слушатель воспринимает звук "напрямую" - таким, как он есть, с учётом расстояния. На второй картинке между источником звука и слушателем находится звукопроницаемое препятствие. Слушатель воспринимает звук с учётом всех преобразований, произошедших при прохождении через препятствие. На третьей картинке мы видим простую геометрию - 3 стены. Здесь слушатель воспринимает как и в первом случае источник звука без каких-либо изменений, плюс ещё отражённые от стен звуки. Четвёртый случай - здесь звук рассчитывается с учётом простой геометрии и препятствия. Слушатель воспринимает как отражённые звуковые потоки, так и звук, прошедший через препятствие и изменившийся при этом.

Нужно сказать, что технология расчёта звука таким образом требует постоянного пересчёта сцены. Например, если между вами и источником звука проезжает колонна грузовиков, и вы при этом находитесь в туннеле, то на процессор ляжет очень серьёзная нагрузка по расчёту геометрии сцены. Однако, этот способ является наиболее точным и качественным по созданию 3D звука.

 
Следующая статья »