Физически совершенный (или где-то рядом) 3D звуковой движок [закрыт]


11

Я новичок в программировании игр, хотя у меня есть несколько лет опыта в разработке консолей / веб. Моя проблема не столько в том, что я не могу найти то, что я ищу, просто в том, что у меня нет терминологии, чтобы действительно выполнить успешный поиск.

Я ищу физический движок, который имеет большое внимание к звукам. На самом деле мне все равно на все остальное. То, что я имею в виду, лучше объяснить на примере:

Предположим, игра от первого лица. Вы стоите лицом к северу, и кто-то где-то вокруг вас бросает в вас флейту (не обращайте внимания на абсурдность ситуации). Флейта вращается, пока она в пути, издавая звуки сквозь отверстия. Скажем, ветер южный, 5 узлов.

Я предполагаю, что физический двигатель будет способен рассчитывать траекторию флейты, а также направление, которое он принимает после удара. Я хочу, чтобы физический движок рассчитывал точные звуки, которые он издает, с точки зрения любого слушателя.

Есть ли такой двигатель? Если их несколько, какой из них будет лучше для приведенного выше примера?

Ответы:


10

Вы задаете неправильный вопрос. Вы делаете ошибку, которую делают многие новые программисты игр. Игры - это не идеальные симуляторы, они даже не близки. Игры имитируют достаточно, чтобы быть веселым / интересным. Все остальное подделано.

Показательный пример:
World of Goo: имитирует массу, прочность на разрыв и эластичность. Остальное подделано, потому что это не добавляет ощущения от игры. Например, он не симулирует гравитацию. Все объекты ускоряются вниз с постоянной силой. Бойянс подделан. Баллоны вытягиваются с постоянной силой, а шарики липкой воды под водой также испытывают постоянную восходящую силу. Это все прекрасно работает для игры. Однако он сломался бы, если бы вы попытались создать космический лифт, используя физический движок World of Goo.

Давайте представим себе практически идеальный звуковой движок, основанный на физике. Как насчет воздействия на окружающую среду? Является ли флейта в пещере или в поле. Предоставляет ли движок предопределенный набор сред (сколько?), Или он вычисляет это путем вычисления фактической физической топографии (да, верно)? Есть ли у игрока направленные уши (аля человека) или просто отверстия для ушей (аля дельфин или инопланетянин) или разнонаправленные как животное? Воздух горячий? Насколько это влажно. Этот список может быстро выйти из-под контроля.

Теперь предположим, что такой настоящий физический звуковой двигатель существовал. Вы действительно хотите использовать это, чтобы сделать игру? Сколько времени вам понадобится, чтобы определить звук флейты, летящей по воздуху. Сколько параметров вы должны получить правильно (100?).

Что вы должны были спросить:
как я могу имитировать звук флейты, когда он пролетает мимо проигрывателя?

OpenAL может делать то, что вы хотите.

  • Направленная слушатель
  • Направленные источники звука
  • скорости источника и доплеровские эффекты.

Я бы предложил иметь повторяющийся звуковой эффект вращающейся флейты. Введите положение игрока и положение / скорость флейты. Пропустить курсовой материал сейчас.
Вы можете записать звук, который идет с каждого конца флейты, когда воздух проходит, и у флейты есть два источника звука. Но я сомневаюсь, что это стоило бы усилий, если бы вся механика игры не вращалась вокруг брошенных и вращающихся флейт.


Ну, вся идея игры вращается вокруг движущихся объектов, издающих звук. Приведенный пример является слишком сложным по назначению, однако идея игры включает в себя реалистично звучащие объекты в движении.
Феликс Сапарелли

Большинство параметров фактически контролируются: рассмотрим закрытую (запечатанную) кубическую комнату со стенами из определенного материала (свойства которого я определяю), температурой воздуха, давлением, влажностью и т. Д. Все контролируется. Уши человеческие. Мне даже не нужно рассматривать остальную часть тела. Фактически, вместо черного списка, я могу точно указать, какие параметры я использую, и определить (константу) все остальные. Это мой (виртуальный) мир: я определяю его так, как хочу.
Феликс Сапарелли

Моя точка зрения заключалась в том, что количество усилий, которое потребует такой аудио движок в общем случае, не стоит. Особенно, когда талантливые звукорежиссеры могут очень убедительно подделать любые нужные вам эффекты. Допплер встроен. Эхо, демпфирование и т. Д. Все можно сделать с помощью фильтрации.
deft_code

8

Вы хотите физическое моделирование? Попробуйте Synthesis Toolkit:

https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html .

Вам придется написать код клея, который сам устанавливает скорость / амплитуду ветра.

То, что вы просите, еще не было изобретено. Мы приближаемся, хотя - проверить это, я видел это на днях:

http://www.physorg.com/news198351307.html


Интересные вещи. Это то, что я имею в виду, и это еще не сделано, не мешает мне. Я не планирую начинать реальную (неконцептуальную) работу над ним до 1-2 лет.
Феликс Сапарелли

4

Я сомневаюсь, что вы найдете физический аудио-движок. Что более вероятно, так это использовать любой понравившийся вам физический движок (например, Bullet ) и использовать OpenAL для звука. Рассчитайте положение флейты и используйте ее в качестве положения источника.


Хотя я хочу немного большего.
Феликс Сапарелли

1
Что вы еще хотите? С моим предложением вы можете изменить положение звука в каждом кадре. Я думаю, что что-то упустил.
Коммунистическая утка

6
Я думаю, что он имеет в виду моделирование воздушных волн и других вибраций, чтобы генерировать звуки. И конечно, это возможно, но ни один компьютер (за исключением, может быть, некоторых суперкомпьютерных кластеров) не может рассчитать это для любого полезного размера в реальном времени, поэтому нет, если вы имеете в виду, что тогда такой вещи нет (и в этом нет реальной необходимости, используйте физический движок и чтение данных о столкновениях для воспроизведения соответствующего сэмпла "достаточно близко").
Эльва

3
Если вы хотите продвинуться дальше, то есть не только: а) Как сказал Вашдоум, ни за что не справится обычный компьютер, и б) никто не сможет заметить разницу.
Коммунистическая утка

3
По-прежнему есть много того, что современные игры (а высокоуровневые API, такие как FMOD) предоставляют), чего OpenAL не может или, по крайней мере, не делает «из коробки», например (геометрические) основанные на объеме эффекторы, которые могут быть дополнительно подключены на порталы для имитации звука, проходящего через несколько комнат. Это не распространено, но это сделано, и вы можете заметить разницу.

4

Phya - это библиотека синтеза звука, основанная на "физической выборке", которая может управляться движком игровой физики. (Пуля использовалась в примерах)

http://www.zenprobe.com/phya/

Не уверен, что это последнее, последнее обновление сайта прошло больше года назад.

Он не столько ориентирован на моделирование резонанса воздуха в объеме, но может быть хорошим примером того, как управлять синтезом звука в реальном времени из физики.

Я думаю, что это не должно быть невероятно дорогостоящим процессом. Заявленная проблема является полностью детерминированной и должна быть достижимой на современном оборудовании. (по крайней мере, до уровня, подходящего для развлекательного / обучающего продукта.)

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

Может быть, это помогает. Хороший вопрос, кстати.

-j


Я могу много подделать. Просто ... намного меньше, чем современные видеоигры. Какой смысл: я создаю не видеоигру, а аудио игру. Вроде.
Феликс Сапарелли

3

На самом деле, точное моделирование рассматриваемой здесь физики было бы значительно более сложным (и вычислительно дорогостоящим), чем обычная физическая система, такая как Havok или Bullet. Традиционная физическая система оптимизирована для твердых тел и мягких тел, которые ограничены в сложности своей сетки по соображениям скорости.

С другой стороны, звук - это распространение волн в воздухе, а частоты, генерируемые чем-то вроде вашего примера, зависят от тонны и тонны свойств. Из какого материала он сделан? Какую математическую модель мы должны использовать для частиц воздуха, взаимодействующих с этим материалом? Если это форма трубки, каковы размеры трубки? (Это определяет резонансную частоту.) И т. Д. И т. Д.

Вдобавок ко всему этому, вы должны запустить довольно сложную симуляцию частиц, чтобы смоделировать воздух, а также извлечь волны движения частиц, которые по сути являются звуковыми волнами, поражающими ваши барабанные перепонки. И давайте даже не будем упоминать барабанные перепонки, потому что резонанс волн в вашем слуховом канале также влияет на то, что вы слышите.

В общем, это слишком много симуляции для текущей игры, особенно если у вас есть надежда на интерактивную частоту кадров. Как было отмечено deft_code, игры редко точные расчеты, но довольно славно подделыванным из них. Вероятно, лучший способ достичь этого - начать с большого набора звуковых сэмплов и начать работать с DSP, пока не поймете, как вы можете повлиять на эффект этих звуков. DSP, безусловно, достаточно быстрые для игр в реальном времени, и если звук будет большим компонентом, то имеет смысл посвятить приличную часть времени вашего кадра обработке звука.

tl; dr: Точное моделирование, вероятно, остается вопросом на долгие годы. Большие игры притворяются. При достаточно большой набор образцов и достаточно тонкой настройки DSP вы можете, вероятно, подделка это тоже.


2

Проверьте наш подход.

http://dsp.agh.edu.pl/en:research:rayav

Разработанная библиотека использует трассировку лучей, чтобы предоставить пользователю реалистичное звуковое оповещение. Все звуковые эффекты рассчитываются на основе фактической геометрии данного игрового уровня, а также его акустических свойств (акустические материалы, затухание воздуха). Звук динамически меняется вместе с движением игрового персонажа и источниками звука. Алгоритм создания звукового тракта поддерживает такие явления, как зеркальные отражения, диффузные отражения и дифракцию краев, в то время как обработка звука поддерживает фильтрацию сигналов (моделирование сброса воздуха, отражение / дифракционное воздействие и т. Д.), Моделирование эффекта Доплера и пространственные эффекты. Наконец, направленный звук реализован с использованием HRTF для каждого звукового пути.


0

Я понимаю, что это старый вопрос, но за последние пару лет дела развивались, и то, что вы описываете, становится все более и более выполнимым в вычислительном отношении.

Такие инструменты, как Synthesis Toolkit, используются для ответа на следующий вопрос: «Мой физический движок сказал мне, что флейта вибрирует таким-то и таким-то образом. Какую ноту это производит?»

Однако есть еще один важный вопрос, на который необходимо ответить: «Как звучит эта нота с позиции слушателя?»

Это распространенное заблуждение, что аудио API, такие как OpenAL, позаботятся об этом. На самом деле все, что они делают, это то, что называется позиционным звуком . Они не моделируют распространение звука: взаимодействие звуковых волн с окружающей средой. Распространение звука включает в себя ответы на такие вопросы, как:

  • Достаточно ли велика эта комната для заметной реверберации?
  • Или мебель в комнате поглощает большую часть звука?
  • Стоя на улице, должен ли я слышать эхо от далекого холма? Рядом здание?
  • Звук рассеивается на большие расстояния?
  • Источник звука скрыт (скрыт) от слушателя?
  • Если да, существуют ли альтернативные маршруты, по которым звуковые волны могут достигать слушателя? Возможно из-под закрытой двери, из-за угла прихожей или через вентиляционное отверстие?

Phonon - это аудио-физический движок, который отвечает на эти вопросы. (Полное раскрытие: я участвую в разработке Phonon.) С Phonon пользователь должен указать очень маленький набор параметров (коэффициенты поглощения и рассеяния). Phonon тогда выполняет только достаточно вычислений, чтобы убедительно воспроизвести эффекты распространения звука для слушателя.

Phonon в настоящее время доступен как плагин для Unity. Помимо ПК и мобильных устройств, Phonon также может работать на VR-платформах, таких как Oculus Rift, и это тоже заметно.

Надеюсь это поможет!


0

Читая ваш вопрос, я могу перевести его двумя способами.

  1. Есть ли двигатель, который может создавать звуки на основе физического моделирования? Например, воздух, дующий через тростник, или удар молотка по струне?

В играх? не то чтобы я слышал

  1. Есть ли движок, который воспроизводит уже существующие звуки, но изменяет их на основе физической информации, такой как расстояние от микрофона, для имитации «ощущения объемного звука»?

Да! они называются «3D-звуковые движки», хорошо известным является OpenAL .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.