Досконалий фізичний (або десь поблизу) 3d звуковий двигун [закрито]


11

Я новачок у програмуванні ігор, хоча маю багаторічний досвід роботи в консолі / веб-розробці. Моя проблема не стільки в тому, що я не можу знайти те, що шукаю, це просто те, що я не маю термінології, щоб фактично здійснити успішний пошук.

Я шукаю двигун фізики, який має велику увагу на звуки. Насправді мене взагалі нічого не цікавить. Що я маю на увазі, краще пояснити на прикладі:

Припустимо, гра першого типу. Ви дивитесь на Північ, а хтось десь навколо вас кидає на вас флейту (ніколи не зважайте на безглуздість ситуації). Флейта крутиться, поки вона на своєму шляху, видаючи звуки через свої отвори. Вітер, скажімо, 5 вузлів південний.

Я думаю, що фізичний двигун зможе обчислити траєкторію флейти, а також напрямок, який вона здійснює після її удару. Мені хочеться, щоб фізичний двигун розраховував точні звуки, які він видаватиме з будь-якої точки зору слухача.

Чи існує такий двигун? Якщо їх декілька, який із найкращих на прикладі вище?

Відповіді:


10

Ви ставите неправильне запитання. Ви робите помилку, яку роблять багато нових ігрових програмістів. Ігри не є ідеальними симуляціями, вони навіть не близькі. Ігри імітують достатньо просто, щоб було весело / цікаво. Все інше підроблене.

Справа в суті:
Світ Goo: імітує масу, міцність на розрив та еластичність. Решта підроблена, тому що це не додає відчуття гри. Наприклад, він не імітує гравітацію. Всі об'єкти прискорюються вниз з постійною силою. Боянсі підроблений. Балони підтягуються з постійною силою, а гулі кулі під водою також відчувають постійну силу вгору. Це все чудово підходить для гри. Однак це може вийти з ладу, якщо ви спробуєте зробити космічний ліфт за допомогою фізичного двигуна World of Goo.

Давайте уявимо майже ідеальний звуковий двигун на основі фізики. А як щодо впливу на навколишнє середовище? Чи флейта в печері чи в полі. Чи надає двигун заздалегідь заданий набір середовищ (скільки?) Чи він з'ясовує це шляхом обчислення фактичної фізичної топографії (так, так)? У гравця є спрямовані вуха (ала людина) або просто вушні отвори (ала дельфін або інопланетянин) або багатонаправлені, як тварина? Повітря гаряче? Як воно вологе. Цей список може швидко вийти з-під контролю.

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

Що ви мали б запитати:
Як я можу імітувати звук на флейті, коли він пролітає повз плеєр?

OpenAL може робити все, що завгодно.

  • Направлений слухач
  • Напрямні джерела звуку
  • швидкість джерела та ефекти доплера.

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


Ну, вся ідея гри обертається навколо рухомих предметів, що видають звук. Наведений приклад за призначенням є надмірно складним, однак ідея гри залучає в рух реально звучать об'єкти.
Фелікс Сапареллі

Більшість параметрів насправді контролюватиметься: розглянемо закриту (герметичну) кімнату, кубічну кімнату зі стінами певного матеріалу (властивості якої я визначаю), температуру повітря, тиск, вологість тощо. Вуха люди. Мені навіть не потрібно розглядати решту тіла. Насправді, замість чорного списку, я можу точно вказати, які параметри я використовую, та визначити (константа) всі інші. Це мій (віртуальний) світ: я визначаю його таким, яким я хочу, щоб він був.
Фелікс Сапареллі

Моя думка полягала в тому, що докладати зусиль, яких потребує такий аудіо-двигун у загальному випадку, не варто. Особливо, коли талановиті звукоінженери можуть дуже переконливо підробити будь-які потрібні вам ефекти. Доплерівський вбудований. Ехо, демпфування тощо може бути виконано за допомогою фільтрації.
deft_code

8

Ви хочете фізичного моделювання? Спробуйте інструментарій синтезу:

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

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

Те, про що ви просите, насправді ще не винайдено. Ми все-таки наближаємось - перевірте це, я побачив це днями:

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


Цікаві речі. Це я маю на увазі, і те, що ще не зроблено, не заважає мені. Я не планую розпочинати фактичну (неконцептуальну) роботу над нею до 1-2 років.
Фелікс Сапареллі

4

Сумніваюсь, ви знайдете фізико-звуковий двигун. Що більш імовірно, це використовувати будь-який фізичний двигун, який вам подобається (наприклад, Bullet ) і використовувати OpenAL для звуку. Обчисліть положення флейти і використовуйте це як положення Джерела.


Я хочу зовсім трохи більше, ніж це.
Фелікс Сапареллі,

1
Що ще ти хочеш? З моєї пропозиції, ви можете змінити положення звуку кожного кадру. Я думаю, що мені чогось не вистачає.
Качка комуніста

6
Я думаю, що він має на увазі моделювання повітряних хвиль та інших коливань, щоб генерувати звуки. І точно це можливо, але жоден комп’ютер (крім, можливо, супер суперкомп'ютерних кластерів) не міг би обчислити це для будь-якого простору корисного розміру в режимі реального часу, так ні, якщо ви маєте на увазі, що тоді такого немає (а також немає реальної потреби, використовуйте фізичний двигун і зчитувати дані зіткнення для відтворення відповідного зразка "досить близько").
Ельва

3
Якщо ви хочете досягти такого передового досвіду, існує не тільки a) Як сказав Yourdoom, жоден спосіб, щоб звичайний комп'ютер міг це зробити, і b) ніхто не зміг би визначити різницю.
Качка комуніста

3
Є ще багато того, що роблять сучасні ігри (і API API вищого рівня, як FMOD), що OpenAL не може робити, або, принаймні, не робити поза коробкою - такі як (геометричні) об'ємні ефекти, які можна додатково підключити на портали для імітації звуку, що проходить через кілька кімнат. Це не є звичайним, але це робиться, і ви можете сказати різницю.

4

Phya - це бібліотека синтезу аудіо зіткнень на основі фізичної вибірки, яку можна керувати двигуном фізичної гри. (Куля була використана в прикладах)

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

Не впевнений, що таке останнє, останнє оновлення сайту вже понад рік тому.

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

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

Питання, на яке потрібно відповісти, полягає в тому, наскільки повно вам потрібно імітувати, і скільки ви можете підробити? Якщо аудіо, що має певну модуляцію звуку в реальному часі досить переконливо, отримує багато, не моделюючи акустичні коливання до молекули.

Можливо, це допомагає. Добре запитання, btw.

-j


Я можу багато підробити. Просто ... набагато менше, ніж сучасні відеоігри. Який сенс: я створюю не відео-гру, а аудіо-гру. Свого роду.
Фелікс Сапареллі

3

Насправді, точне моделювання фізики, що займається тут, було б значно складнішим (і обчислювально дорогим), ніж система фізики, що працює на млинах, як Хавок або Куля. Традиційна система фізики оптимізована для жорстких тіл і м'яких тіл, обидва вони обмежені своєю складністю сітки з міркувань швидкості.

З іншого боку, звук - це поширення хвиль по повітрю, а частоти, генеровані чимось на зразок вашого прикладу, залежать від тонн і тонн властивостей. З якого матеріалу вона виготовлена? Яку математичну модель слід використовувати для частинок повітря, що взаємодіють із цим матеріалом? Якщо це форма трубки, які розміри трубки? (Це визначає резонансну частоту.) І т. Ін.

На додаток до всього, вам належить запустити досить складну імітацію частинок для моделювання повітря, а також витягувати хвилі руху частинок, які по суті є звуковими хвилями, що вражають ваші барабанні перетинки. І навіть не будемо згадувати вушні перетинки, адже резонанс хвиль у вашому вушному каналі впливає і на те, що ви чуєте.

Загалом, це занадто сильне моделювання для поточної гри, особливо якщо ви сподіваєтесь на інтерактивну частоту кадрів. Як зазначалося 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 доступний як плагін для Unity. Крім ПК та мобільних пристроїв, Phonon також може працювати на VR-платформах, таких як Oculus Rift, і це також робить помітну різницю.

Сподіваюся, це допомагає!


0

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

  1. Чи є двигун, який може створювати звуки на основі фізичних симуляцій? Такі, як повітря, що дме через очерет, або молот, що б'є по струні?

У іграх? не те, що я чув.

  1. Чи є двигун, який відтворює наявні звуки, але модифікує їх на основі фізичної інформації, наприклад відстані від мікрофона, щоб імітувати "об'ємний звук"?

Так! їх називають "3D-звуковими двигунами", відомим є OpenAL .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.