Вы задаете неправильный вопрос. Вы делаете ошибку, которую делают многие новые программисты игр. Игры - это не идеальные симуляторы, они даже не близки. Игры имитируют достаточно, чтобы быть веселым / интересным. Все остальное подделано.
Показательный пример:
World of Goo: имитирует массу, прочность на разрыв и эластичность. Остальное подделано, потому что это не добавляет ощущения от игры. Например, он не симулирует гравитацию. Все объекты ускоряются вниз с постоянной силой. Бойянс подделан. Баллоны вытягиваются с постоянной силой, а шарики липкой воды под водой также испытывают постоянную восходящую силу. Это все прекрасно работает для игры. Однако он сломался бы, если бы вы попытались создать космический лифт, используя физический движок World of Goo.
Давайте представим себе практически идеальный звуковой движок, основанный на физике. Как насчет воздействия на окружающую среду? Является ли флейта в пещере или в поле. Предоставляет ли движок предопределенный набор сред (сколько?), Или он вычисляет это путем вычисления фактической физической топографии (да, верно)? Есть ли у игрока направленные уши (аля человека) или просто отверстия для ушей (аля дельфин или инопланетянин) или разнонаправленные как животное? Воздух горячий? Насколько это влажно. Этот список может быстро выйти из-под контроля.
Теперь предположим, что такой настоящий физический звуковой двигатель существовал. Вы действительно хотите использовать это, чтобы сделать игру? Сколько времени вам понадобится, чтобы определить звук флейты, летящей по воздуху. Сколько параметров вы должны получить правильно (100?).
Что вы должны были спросить:
как я могу имитировать звук флейты, когда он пролетает мимо проигрывателя?
OpenAL может делать то, что вы хотите.
- Направленная слушатель
- Направленные источники звука
- скорости источника и доплеровские эффекты.
Я бы предложил иметь повторяющийся звуковой эффект вращающейся флейты. Введите положение игрока и положение / скорость флейты. Пропустить курсовой материал сейчас.
Вы можете записать звук, который идет с каждого конца флейты, когда воздух проходит, и у флейты есть два источника звука. Но я сомневаюсь, что это стоило бы усилий, если бы вся механика игры не вращалась вокруг брошенных и вращающихся флейт.
Вы хотите физическое моделирование? Попробуйте Synthesis Toolkit:
https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html .
Вам придется написать код клея, который сам устанавливает скорость / амплитуду ветра.
То, что вы просите, еще не было изобретено. Мы приближаемся, хотя - проверить это, я видел это на днях:
http://www.physorg.com/news198351307.html
источник
Я сомневаюсь, что вы найдете физический аудио-движок. Что более вероятно, так это использовать любой понравившийся вам физический движок (например, Bullet ) и использовать OpenAL для звука. Рассчитайте положение флейты и используйте ее в качестве положения источника.
источник
Phya - это библиотека синтеза звука, основанная на "физической выборке", которая может управляться движком игровой физики. (Пуля использовалась в примерах)
http://www.zenprobe.com/phya/
Не уверен, что это последнее, последнее обновление сайта прошло больше года назад.
Он не столько ориентирован на моделирование резонанса воздуха в объеме, но может быть хорошим примером того, как управлять синтезом звука в реальном времени из физики.
Я думаю, что это не должно быть невероятно дорогостоящим процессом. Заявленная проблема является полностью детерминированной и должна быть достижимой на современном оборудовании. (по крайней мере, до уровня, подходящего для развлекательного / обучающего продукта.)
Вопрос, на который нужно ответить, состоит в том, насколько полно вам нужно моделировать и сколько вы можете подделать? Для звука, просто имеющего некоторую модуляцию звука в реальном времени достаточно убедительным образом, вы получаете много, не моделируя акустические колебания вплоть до молекулы.
Может быть, это помогает. Хороший вопрос, кстати.
-j
источник
На самом деле, точное моделирование рассматриваемой здесь физики было бы значительно более сложным (и вычислительно дорогостоящим), чем обычная физическая система, такая как Havok или Bullet. Традиционная физическая система оптимизирована для твердых тел и мягких тел, которые ограничены в сложности своей сетки по соображениям скорости.
С другой стороны, звук - это распространение волн в воздухе, а частоты, генерируемые чем-то вроде вашего примера, зависят от тонны и тонны свойств. Из какого материала он сделан? Какую математическую модель мы должны использовать для частиц воздуха, взаимодействующих с этим материалом? Если это форма трубки, каковы размеры трубки? (Это определяет резонансную частоту.) И т. Д. И т. Д.
Вдобавок ко всему этому, вы должны запустить довольно сложную симуляцию частиц, чтобы смоделировать воздух, а также извлечь волны движения частиц, которые по сути являются звуковыми волнами, поражающими ваши барабанные перепонки. И давайте даже не будем упоминать барабанные перепонки, потому что резонанс волн в вашем слуховом канале также влияет на то, что вы слышите.
В общем, это слишком много симуляции для текущей игры, особенно если у вас есть надежда на интерактивную частоту кадров. Как было отмечено deft_code, игры редко точные расчеты, но довольно славно подделыванным из них. Вероятно, лучший способ достичь этого - начать с большого набора звуковых сэмплов и начать работать с DSP, пока не поймете, как вы можете повлиять на эффект этих звуков. DSP, безусловно, достаточно быстрые для игр в реальном времени, и если звук будет большим компонентом, то имеет смысл посвятить приличную часть времени вашего кадра обработке звука.
tl; dr: Точное моделирование, вероятно, остается вопросом на долгие годы. Большие игры притворяются. При достаточно большой набор образцов и достаточно тонкой настройки DSP вы можете, вероятно, подделка это тоже.
источник
Проверьте наш подход.
http://dsp.agh.edu.pl/en:research:rayav
Разработанная библиотека использует трассировку лучей, чтобы предоставить пользователю реалистичное звуковое оповещение. Все звуковые эффекты рассчитываются на основе фактической геометрии данного игрового уровня, а также его акустических свойств (акустические материалы, затухание воздуха). Звук динамически меняется вместе с движением игрового персонажа и источниками звука. Алгоритм создания звукового тракта поддерживает такие явления, как зеркальные отражения, диффузные отражения и дифракцию краев, в то время как обработка звука поддерживает фильтрацию сигналов (моделирование сброса воздуха, отражение / дифракционное воздействие и т. Д.), Моделирование эффекта Доплера и пространственные эффекты. Наконец, направленный звук реализован с использованием HRTF для каждого звукового пути.
источник
Я понимаю, что это старый вопрос, но за последние пару лет дела развивались, и то, что вы описываете, становится все более и более выполнимым в вычислительном отношении.
Такие инструменты, как Synthesis Toolkit, используются для ответа на следующий вопрос: «Мой физический движок сказал мне, что флейта вибрирует таким-то и таким-то образом. Какую ноту это производит?»
Однако есть еще один важный вопрос, на который необходимо ответить: «Как звучит эта нота с позиции слушателя?»
Это распространенное заблуждение, что аудио API, такие как OpenAL, позаботятся об этом. На самом деле все, что они делают, это то, что называется позиционным звуком . Они не моделируют распространение звука: взаимодействие звуковых волн с окружающей средой. Распространение звука включает в себя ответы на такие вопросы, как:
Phonon - это аудио-физический движок, который отвечает на эти вопросы. (Полное раскрытие: я участвую в разработке Phonon.) С Phonon пользователь должен указать очень маленький набор параметров (коэффициенты поглощения и рассеяния). Phonon тогда выполняет только достаточно вычислений, чтобы убедительно воспроизвести эффекты распространения звука для слушателя.
Phonon в настоящее время доступен как плагин для Unity. Помимо ПК и мобильных устройств, Phonon также может работать на VR-платформах, таких как Oculus Rift, и это тоже заметно.
Надеюсь это поможет!
источник
Читая ваш вопрос, я могу перевести его двумя способами.
В играх? не то чтобы я слышал
Да! они называются «3D-звуковые движки», хорошо известным является OpenAL .
источник