Технологии 3D-звука
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: отчет о прохождении практики, ценные бумаги реферат
| Добавил(а) на сайт: Олимпия.
1 2 | Следующая страница реферата
Технологии 3D-звука
Мы, как известно, живем в трехмерном мире (те кто знаком с теорией относительности живут в четырехмерном :)), поэтому сочетание 3D ассоциируется с чем-то реалистичным. В этой статье мы поговорим о технологиях 3D-звука. Конечно, у большинства пользователей приставка 3D ассоциируется с графикой и это неудивительно, ведь аппаратные ускорители трехмерной графики уже давно стали привычными на персональных компьютерах, а звуковые карты с 3D-акселерацией появились намного позже. Однако именно массовое распространение 3D-графики (особенно в играх) и стало основным толчком для развития 3D-звука.
Но прежде чем говорить о 3D-звуке, попытаемся разобраться, что же это такое. Ответ на этот вопрос на самом деле далеко не однозначен. Ведь название "3D-звук" зачастую используется для обозначения совершенно разных понятий, начиная от расширенного стерео и заканчивая surround sound. В этой статье под трехмерным звуком мы будем подразумевать позиционируемый звук, т.е. звук, для которого можно определить местоположение источника в трехмерном пространстве (проще говоря, это когда играя в Quake3 или Unreal Tournament вы можете с закрытыми глазами определить, откуда доносятся выстрелы). Безусловно, одного позиционирования не достаточно для создания реалистичного звукового сопровождения, однако без него говорить о "трехмерности" звука вряд ли имеет смысл. Дело в том, что заветные 3D появились в названиях и спецификациях звуковых карт за долго до появления настоящих акселераторов трехмерного звука. Тут можно провести аналогию с видеокартами (таких аналогий в этой статье будет немало) -- вряд ли сегодня кому-то прейдет в голову назвать 3D-акселератором какой-нибудь S3 Trio 3D только из-за последних двух символов в названии. Поэтому сделаем небольшой экскурс в историю.
Первые звуковые карты с гордым клеймом 3D появились еще во времена господства шины ISA. Однако вся "трехмерность" звука у них заключалась в добавлении эффектов вроде реверберации, хоруса или расширения стереобазы. Вообще говоря, первые разработки в области позиционирования звука велись уже тогда, однако они не получили большого распространения ввиду относительной слабости процессоров (как звуковых так и центральных) и тормознутости шины ISA. Революция в трехмерном звуке произошла в 1997 году с появлением технологии A3D. Малоизвестная (тогда!) фирма Aureal, которая занималась разработкой звуковых решений для симуляторов виртуальной реальности NASA, выпустила чип Vortex AU8820, аппаратно реализующий эту технологию. Фактически звуковой процессор Aureal Vortex сделал для трехмерного звука то же, что и графический процессор 3dfx Voodoo для трехмерной графики. Кстати, судьба обоих чипов связана с фирмой Diamond Multimedia и торговой маркой Diamond Monster. Именно карты Diamond Multimedia основанные на этих чипах были в числе пионеров и завоевали особую популярность среди игроков. Долгое время A3D оставался в гордом одиночестве (показателен тот факт, что поддержка аппаратной акселерации 3D-звука была введена только DirectX 6.0). Однако другие производители звуковых карт и чипсетов не желали мирится с таким положением дел. Creative сделала ставку на микрософтовский DirectSound3D и разработала для него расширение EAX. Yamaha и ESS лицензировали разработки британской фирмы Sensaura. Несколько фирм применяют в своих продуктах технологию Q3D от QSound. Именно эти технологии мы и обсудим в данной статье. Но прежде хотелось бы сказать несколько общих слов о принципах 3D-звука.
Для получения трехмерного звука используются законы психоакустики (науки об особенностях восприятия звуковых волн человеком). Не секрет, что у большинства людей два уха, причем расположены они как правило симметрично :). Поэтому человек очень хорошо различает направления на источники звука "слева"-"справа". А вот различать направления "спереди"-"сзади" или "сверху"-"снизу" без дополнительной информации довольно-таки сложно. Само собой разумеется, что один и тот же источник звука сзади будет звучать не так, как спереди. Однако если источник, расположенный спереди заставить звучать "не так", то вполне может создаться впечатление что он расположен сзади. Тоже самое относится и к направлениям "сверху"-"снизу". Конечно, на самом деле все не так просто -- для достижения трехмерности звука используются сложные математические модели и алгоритмы. К сожалению рамки статьи не позволяют подробно останавливаться на описании этих алгоритмов, я лишь перечислю некоторые из них. Для того, чтобы получить трехмерный звук в наушниках используются алгоритмы HRTF (Head-Related Transfer Function). Для двух колонок в большинстве API применяются алгоритмы HRTF with TCC (Transaural Crosstalk-Cancellation). Для четырех колонок разные API применяют разные схемы (обычно для передней пары звук считается по тем же алгоритмам, что и для двух колонок, а задняя пара используется для панорамирования). Сложнее всего реализовывать трехмерный звук для двух колонок. Дело в том, что у каждого пользователя колонки расположены на разном расстоянии друг от друга, да и сами пользователи расположены :-) на разном расстоянии от колонок. Но это еще полбеды -- эти параметры можно учесть в настройках драйверов или приложений (однако в подавляющем большинстве случаев такие настройки отсутствуют). Основная проблема состоит в том, что зона трехмерности для двух колонок очень мала и при выходе слушателя из этой зоны позиционирование звука искажается. Использование четырех колонок несколько улучшает ситуацию. Естественно, улучшается распознавание направлений "спереди"-"сзади", а в некоторых случаях (например при использовании технологии Sensaura MultiDrive) еще и существенно расширяется зона трехмерности звука. Однако, вопреки распространенному мнению, наилучшее позиционирование звука получается отнюдь не на четырех колонках, а в наушниках. Что в принципе неудивительно, ведь проблема зоны трехмерности в этом случае отсутствует. Преимущества наушников по сравнению с колонками особенно проявляются при распознавании направлений "сверху"-"снизу". Более подробно о теории трехмерного звука можно почитать на http://ixbt.stack.net/multimedia/3dsound-tech.html, а мы перейдем непосредственно к описанию современных API.
Итак, начнем с самого распространенного API, который входит в состав DirectX и поддерживается практически всеми звуковыми 3D-картами.
DirectSound3D.
Звуковая картина в DirectSound3D создается довольно-таки просто. Каждому источнику звука в игре присваивается набор таких характеристик: исходная громкость, радиусы ближней и дальней зоны. Значение этих параметров проще всего пояснить на примере. Пусть исходная громкость объекта равна 100, радиус ближней зоны -- 5 метров, радиус дальней зоны -- 50 метров. Тогда, если расстояние между источником и слушателем составляет от 0 до 5 метров, громкость будет оставаться равной 100. На расстояниях от 5 до 50 метров громкость будет уменьшаться пропорционально 1/Rn (обычно n=1). И, наконец, после 50 метров громкость перестанет уменьшаться и будет оставаться постоянной (естественно, можно задать такой закон уменьшения громкости, что на 50 метрах звук практически затихнет или же просто сделать радиус дальней зоны бесконечным). Предусмотрена также возможность создания направленного звука. Для этого источнику звука сопоставляется условный конус, в пределах которого громкость будет максимальна, а за пределами постепенно затухать.
На основе информации о координатах и скоростях источников звука относительно слушателя формируется трехмерный звуковая картина. Координаты нужны для позиционирования и определения громкости объектов, а скорости используются для учета эффекта Доплера. Теперь осталось только с помощью специальных алгоритмов "отреэндерить" получившуюся звуковую картину с учетом того, что используется для воспроизведения звука -- наушники, две или четыре колонки. Если же звуковая карта не поддерживает аппаратную акселерацию трехмерного звука, DirectSound3D может произвести реэндеринг при помощи встроенного программного движка -- DirectSound3D HEL (Hardware Emulation Level), однако HEL обеспечивает только минимальны набор функций (никакой трехмерности практически не ощущается) и при этом потребляет огромное количество ресурсов CPU.
Как видите, DirectSound3D сам по себе умеет не так уж и много, однако этот интерфейс поддерживает расширения, которые могут дополнять его возможности ("голый" DirectSound3D в современных играх практически не используется). Наиболее популярным расширением DirectSound3D стал интерфейс EAX от Creative. Правда скоро EAX перестанет быть расширением и будет включен в состав DirectX 8.0. Но об EAX мы поговорим чуть позже, а пока рассмотрим самую первую и самую популярную (пока !?) технологию создания трехмерного звука.
A3D
A3D стал первым API, поддерживающим аппаратную акселерацию трехмерного звука. Можно сказать, что A3D сыграл такую же роль в становлении трехмерного звука, как Glide в становлении трехмерной графики.
A3D 1.х по своим возможностям примерно соответствует DirectSound3D. Однако у него есть несколько интересных особенностей, например улучшенная дистанционная модель, которая позволяет более реалистично описывать распространение звука в различных средах (чаще всего -- в воде или густом тумане). Но наиболее интересной, на мой взгляд, особенностью A3D 1.х является Менеджер Ресурсов, который управляет 3D-потоками, воспроизводимыми в игре. И если количество потоков очень большое то Менеджер Ресурсов решает, какие потоки наиболее важны для слушателя в данной ситуации и именно для них использует аппаратные возможности A3D звуковой карты. Остальные потоки могут воспроизводиться в режиме обыкновенного стерео или не воспроизводиться вовсе (если число аудио-потоков уж очень большое).
A3D 1.х является "родным" API для карт на чипсетах Aureal Vortex 1 (AU8820) и Vortex Advatage (AU8810). Перечислю наиболее популярные карты на этих чипсетах: Diamond Sonic Impact S90, Turtle Beach Montego, Aztech PCI-338-A3D, Genius SoundMaker 64 и, конечно же, одноименные чипсетам OEM карты Aureal. Естественно, стандарт A3D 1.х поддерживают и карты на Vortex 2, но о них -- чуть позже. Поддержка A3D 1.х на уровне драйверов реализована во многих картах для которых "родными" API являются Sensaura и Q3D. Драйвера этих карт просто преобразовывают команды A3D в команды родных API. Как и в случае с трехмерной графикой, качество реализации таких "врапперов" бывает разным и зависит от конкретного производителя. Стоит упомянуть драйвер A2D от Aureal который реализует поддержку A3D через DirectSound3D. Названием A2D Aureal подчеркивает неполноценность этого драйвера. Действительно A2D реализует далеко не все функции A3D 1.х (не говоря уже о более поздних версиях A3D), однако пусть буквосочетание 2D не вводит вас в заблуждение -- с помощью этого драйвера можно получить неплохой трехмерный звук в играх с поддержкой A3D. Особенно A2D пригодится для владельцев карт в которых DirectSound3D -- единственный API, применяющейся для позиционирования звука (например SB Live!).
A3D 2.0 -- расширение стандарта A3D. Основной особенностью A3D 2.0 стала технология Wavetracing, которая позволяет существенно повысить реалистичность звуковой картины.
В реальном мире мы слышим не только "прямые" звуки но и звуки претерпевшие отражения или прошедшие сквозь препятствия. Причем то, как звуки будут отражаться, искажаться при прохождении через препятствия и поглощаться зависит не только от геометрии окружающей среды, но и, например, от материала из которого изготовлены стены (напрашивается аналогия с полигонами и текстурами в трехмерной графике). Расчет Wavetracing происходит в реальном времени. То есть если изменилась геометрия окружающего пространства (игрок забежал за колонну или открылась дверь в другую комнату) -- тут же изменятся условия распространения звука. Естественно, что такой подход к расчету звуковой картины предъявляет очень большие требования к вычислительным ресурсам как звукового процессора так и CPU. Поэтому при включении A3D 2.0 количество FPS (кадров в секунду) падает довольно-таки существенно. При этом падение FPS намного больше, чем при использовании, скажем DirectSound3D+EAX (о сравнительных характеристиках разных API мы поговорим дальше). Однако стоит послушать как звучит A3D 2.0 в Unreal, Unreal Tournament или HalfLife, и вы сразу поймете, что FPS потрачены не зря!
Технологию A3D 2.0 поддерживают только карты на чипсете Aureal Vortex 2 (AU8830). Перечислю наиболее популярные из них: Diamond Monster Sound MX300, Turtle Beach Montego II, Aureal SQ2200, Aureal SQ2500 (Super Quad Digital) и OEM карты Aureal Vortex 2. Нужно отметить, что Aureal SQ2500 основана на модифицированном варианте Vortex 2 и поэтому демонстрирует наилучшую производительность среди перечисленных звуковых карт.
EAX
Название EAX (Environmental Audio Extensions) говорит само за себя -- это расширение DirectSound3D, позволяющее учитывать особенности окружающей среды. Напомню, что DirectSound3D формирует звуковую картину на основе координат и скоростей источников звука относительно слушателя, однако при этом совершенно не учитывается свойства помещения, в котором происходит действие. Однако очевидно, что один и тот же источник звука, помещенный в просторную пещеру, маленькую комнату или длинный коридор, будет звучать по-разному. Поэтому, после того как DirectSound3D сформировал звуковую картину, подключается EAX и "раскрашивает" эту картину, исходя из свойств той или иной звуковой среды. В EAX 1.0 свойства звуковой среды описываются, как совокупность эффектов реверберации, характерных для того или иного помещения. В EAX 2.0 кроме ревербераций учитываются также окклюзии и обструкции. Остановимся подробнее на этих эффектах. Реверберации применяются для моделирования эффектов, основанных на отражении звуков (эхо и т.п.). Для расчета ревербераций используются не только свойства помещения но и направление движения источника звука и расстояние до него. Так, например, для удаляющихся и приближающихся источников звука реверберация будут звучать по-разному. Окклюзии (occlusions -- звуки, проходящие через препятствия) используются для источников звука расположенных за пределами помещения, в котором находится слушатель. При расчете окклюзий учитывается толщина стен и материал из которого они сделаны. Обструкции (obstructions -- звуки задерживаемые препятствием) используются для описания взаимодействия звука со звуконепроницаемыми препятствиями (например, дифракция звука на толстой колонне).
Нужно сказать, что EAX (в отличие от A3D) не рассчитывает эффекты в реальном времени, а использует готовые установки -- пресеты (presets). Обычно для каждого помещения задается свой пресет (хотя иногда, для достижения большей реалистичности звука в разных частях одного и того же помещения используются разные пресеты). Само собой разумеется, такой подход к реализации трехмерного звука имеет свои преимущества и недостатки. К преимуществам следует отнести очень небольшое (по сравнению с A3D 2.0) потребление вычислительных ресурсов CPU и звукового процессора, а также красивые спецэффекты, которые нельзя получить при помощи A3D. Основной недостаток готовых пресетов -- их статичность. Представьте себе зал с колоннами. Пусть слушатель находится по одну сторону колонн и передвигается параллельно им, а источник звука находится по другую сторону. При расчете такой сцены с использованием A3D 2.0 звук будет постоянно меняться, в зависимости от того, закрывается ли источник колонной или нет. При использовании EAX в этом случае звуковая картина будет менее реалистична -- звук будет меняться, но при этом будет учитываться только изменение расстояния и направления на источник. Также, в процессе игры может меняться геометрия пространства (обрушиваться стены или взрываться ящики), и при этом естественно будут меняться аккустические свойства помещения. При расчете звуковой картины в реальном времени эти изменения будут учитываться автоматически, а вот в случае EAX такие изменения либо не учитываются вообще, либо вводятся дополнительные пресеты (но ведь учесть все потенциальные игровые ситуации часто невозможно!). Некоторые шаги по устранению этих недостатков уже сделаны в недавно появившемся EAX 3.0. Будем надеяться, что Creative не остановится на достигнутом и будет дальше совершенствовать свою технологию.
Стандарт EAX является "родным" для карт Creative SB Live!, и именно на этих картах наилучшим образом поддерживаются все версии EAX. Практически все карты с 3D-акселерацией поддерживают EAX 1.0. Полноценную поддержку более поздних версий EAX пока имеет только Live!. Правда, для некоторых чипсетов "заточенных" под Sensaura (Yamaha 744, ESS Canyon3D) существуют бета-версии EAX 2.0. Aureal также обещала реализовать поддержку EAX 2.0 в следующих версиях драйверов под Vortex2 (правда, учитывая ситуацию с Aureal эти драйвера вряд-ли выйдут). Нужно сказать, что реализация EAX на неродных картах пока далека от идеала (читай: от звучания на Live! :-)) и сильно зависит от конкретной карты и игры, где используется EAX.
Sensaura3D
Еще одной фирмой, занимающейся разработками в области трехмерного звука является Sensaura. Однако, в отличии от Aureal или Creative, она не производит собственных чипсетов или карт, а только лицензирует свои техологии сторонним производителям (Yamaha, ESS и др.). Нужно сказать, что пока технологии Sensaura не завоевали такую популярность, как DirectSound3D+EAX или A3D. Однако, если учитывать, что за последние пол года вышло сразу несколько новых чипсетов с поддержкой Sensaura3D, то можно предположить, что у этой технологии неплохие перспективы.
Итак, что же умеет Sensaura? Прежде всего необходимо отметить, что Sensaura3D совместима с DirectSound3D EAX 1.0, EAX 2.0, A3D 1.0 и понимает команды этих API. Таким образом, на картах с технологией Sensaura можно наслаждаться 3D-звуком не только в играх для данного API (игр с поддержкой Sensaura еще очень немного) но и в играх с поддержкой ранних версий EAX и A3D (а таковых сейчас подавляющее большинство). Хотя в этом случае нельзя гарантировать, что звук в таких играх будет таким же как для родных для EAX или A3D карт. Но, конечно же основные достоинства технологий Sensaura заключаются не в поддержке других интерфейсов, а в собственных разработках этой фирмы. Рассмотрим некоторые из них.
Технология MacroFX используется для наиболее реалистичного позиционирования звука. Как и в DirectSound3D, в Sensaura3D окружающее пространство разбивается на зоны. Однако в отличие от DirectSound3D, MacroFX предусматривает разбиение на большее количество зон. Обратите внимание на зоны 3,4,5 на рисунке, которые не имеют аналогов в DirectSound3D. Наличие зон 3 и 4 позволяет моделировать такие эффекты как шепот в ухо или свист пуль, пролетающих в непосредственной близости от головы. Интересна также зона 5, которая предназначена для моделирования источников звуков, находящихся в голове (для того, чтобы придумать применение этой зоне разработчикам игр придется поднапрячь фантазию :-)).
Технология ZoomFX предназначена для моделирования звука от крупных объектов, вроде проезжающего рядом поезда. Напомню, что в подавляющем большинстве API все источники звука представляются как точечные. Насколько я знаю, аналогичная ZoomFX технология есть только в A3D 3.0.
Для создания реалистичного звука в помещениях используется технология EnvironmentFX, которая по своим функциям во многом напоминает EAX. Однако, EnvironmentFX содержит ряд интересных особенностей (обработка ранних отражений, отражений от движущихся поверхностей, "растройка" звука и др.).
Технология MultiDrive, предназначена для расширения "зоны трехмерности" звука (проблема "зоны трехмерности" обсуждалась в первой части статьи).
Разработка под названием Digital Ear позволяет настроить параметры трехмерного звука под конкретного слушателя. При этом учитываются размеры головы, размеры ушей, глубина и тип ушной раковины.
В общем, Sensaura обладает всеми необходимыми средствами для создания реалистичного трехмерного звука в играх. Жаль только, что разработчики игр пока не используют все возможности этой технологии.
Рекомендуем скачать другие рефераты по теме: экзамены, реферат на тему мир.
Категории:
1 2 | Следующая страница реферата