Doskonały pod względem fizyki (lub gdzieś w pobliżu) silnik dźwięku 3d [zamknięty]

11

Jestem nowy w programowaniu gier, chociaż mam kilka lat doświadczenia w tworzeniu konsol / stron internetowych. Mój problem nie polega na tym, że nie mogę znaleźć tego, czego szukam, po prostu nie mam terminologii, by przeprowadzić udane wyszukiwanie.

Szukam silnika fizyki, który koncentruje się na dźwiękach. W rzeczywistości nie dbam o nic innego. To, co mam na myśli, lepiej wyjaśnić przykładem:

Załóżmy, że jest to gra typu first person. Stajesz twarzą na północ, a ktoś gdzieś wokoło rzuca w ciebie fletem (nie mówiąc o absurdalności sytuacji). Flet obraca się, gdy jest w drodze, wydając dźwięki przez otwory. Jest powiedzmy wiatr 5 węzłów na południe.

Wyobrażam sobie, że silnik fizyki będzie w stanie obliczyć trajektorię fletu, a także kierunek, w którym podąża po uderzeniu. Chcę, aby silnik fizyki obliczał dokładne dźwięki, jakie wyda, z perspektywy każdego słuchacza.

Czy istnieje taki silnik? Jeśli jest ich kilka, który z nich byłby najlepszy dla powyższego przykładu?

Félix Saparelli
źródło

Odpowiedzi:

10

Zadajesz złe pytanie. Popełniasz błąd wielu nowych programistów gier. Gry nie są idealnymi symulacjami, nie są nawet blisko. Gry symulują tylko tyle, by być zabawnym / interesującym. Wszystko inne jest sfałszowane.

Przykład:
World of Goo: symuluje masę, wytrzymałość na rozciąganie i elastyczność. Reszta jest sfałszowana, ponieważ nie dodaje wrażenia z gry. Na przykład nie symuluje grawitacji. Wszystkie obiekty przyspieszają w dół ze stałą siłą. Boyancy jest sfałszowany. Balony podciągają się ze stałą siłą, a lepkie kule pod wodą również mają stałą siłę skierowaną do góry. To wszystko działa świetnie w grze. Zepsułby się jednak, gdybyś próbował zbudować kosmiczną windę za pomocą silnika fizyki World of Goo.

Wyobraźmy sobie niemal idealny silnik dźwiękowy oparty na fizyce. Co z efektami środowiskowymi? Jest fletem w jaskini lub na polu. Czy silnik zapewnia wstępnie zdefiniowany zestaw środowisk (ile?) Czy oblicza go, obliczając rzeczywistą topografię fizyczną (tak, prawda)? Czy gracz ma kierunkowe uszy (ala ludzkie) lub tylko dziurki uszu (ala delfin lub obcy) lub wielokierunkowe jak zwierzę? Czy powietrze jest gorące? Jakie to wilgotne. Ta lista może szybko wymknąć się spod kontroli.

Załóżmy teraz, że istniał taki prawdziwy silnik dźwiękowy fizyki. Czy naprawdę chcesz go użyć do stworzenia gry? Jak długo zajęłoby Ci określenie dźwięku fletu lecącego w powietrzu. Ile parametrów musisz uzyskać dokładnie (100's?).

Powinieneś zapytać:
jak mogę zasymulować dźwięk fletu przelatującego obok odtwarzacza?

OpenAL może robić, co chcesz.

  • Słuchacz kierunkowy
  • Kierunkowe źródła dźwięku
  • prędkości źródła i efekty Dopplera.

Sugerowałbym powtarzalny efekt dźwiękowy wirującego fletu. Podaj pozycję gracza i pozycję / prędkość fletu. Na razie pomiń kierunkowe rzeczy.
Możesz nagrywać dźwięk dochodzący z każdego końca fletu, gdy powietrze przepływa, i flet może korzystać z dwóch źródeł dźwięku. Wątpię jednak, by był wart wysiłku, gdyby cała mechanika gry nie kręciła się wokół rzucanych i wirujących fletów.

deft_code
źródło
Cała idea gry obraca się wokół poruszających się obiektów, które wydają dźwięk. Podany przykład jest celowo zbyt skomplikowany, jednak pomysł na grę obejmuje poruszające się realistycznie brzmiące obiekty.
Félix Saparelli
Większość parametrów faktycznie byłaby kontrolowana: rozważmy zamknięte (zamknięte), sześcienne pomieszczenie ze ścianami z określonego materiału (którego właściwości określam), temperatura powietrza, ciśnienie, wilgotność itp. Są kontrolowane. Uszy są ludzkie. Nie muszę nawet brać pod uwagę reszty ciała. W rzeczywistości zamiast czarnej listy mogę dokładnie określić, których parametrów używam i zdefiniować (stałą) całą resztę. To mój (wirtualny) świat: definiuję go tak, jak chcę.
Félix Saparelli
Chodzi mi o to, że wysiłek, jaki taki silnik audio wymagałby w ogólnym przypadku, nie jest tego wart. Zwłaszcza, gdy utalentowani inżynierowie dźwięku mogą bardzo przekonująco sfałszować wszelkie potrzebne efekty. Wbudowany doppler. Echo, tłumienie itp. Można wykonać za pomocą filtrowania.
deft_code
8

Chcesz modelowania fizycznego? Wypróbuj zestaw narzędzi do syntezy:

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

Będziesz musiał napisać kod kleju, który sam określa prędkość / amplitudę wiatru.

To, o co prosisz, nie zostało jeszcze wynalezione. Zbliżamy się jednak - sprawdź to, widziałem to innego dnia:

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

homebrew
źródło
Interesujące rzeczy. Mam na myśli to, że jeszcze tego nie zrobiłem, nie przeszkadza mi to. Nie planuję rozpocząć rzeczywistej (nie konceptualnej) pracy nad nim przed 1-2 lat.
Félix Saparelli
4

Wątpię, czy znajdziesz silnik fizyki audio. Bardziej prawdopodobne jest użycie dowolnego silnika fizyki, który lubisz (takiego jak Bullet ) i użycie OpenAL do dźwięku. Oblicz pozycję fletu i użyj jej jako pozycji źródła.

Kaczka komunistyczna
źródło
Chcę jednak trochę więcej.
Félix Saparelli,
1
Czego jeszcze chcesz? Za moją sugestią możesz zmienić położenie dźwięku w każdej klatce. Chyba coś mi umknęło.
Kaczka komunistyczna,
6
Myślę, że ma na myśli symulację fal powietrza i innych wibracji w celu wygenerowania dźwięków. I na pewno jest to możliwe, ale żaden komputer (z wyjątkiem niektórych klastrów superkomputerów) nie byłby w stanie obliczyć tego dla dowolnej użytecznej przestrzeni wielkości w czasie rzeczywistym, więc nie, jeśli masz na myśli, że nie ma czegoś takiego (nie ma też żadnej rzeczywistej potrzeby, użyj silnik fizyki i odczyt danych kolizji w celu odtworzenia odpowiedniej próbki jest „wystarczająco blisko”).
Elva,
3
Jeśli chcesz uzyskać takie zaawansowane, nie tylko jest to: a) Jak powiedział Yourdoom, nie ma mowy, aby zwykły komputer mógł to zrobić, i b) nikt nie byłby w stanie powiedzieć różnicy.
Kaczka komunistyczna,
3
Wciąż jest wiele rzeczy, które oferują współczesne gry (i interfejsy API wyższego poziomu, takie jak FMOD), których OpenAL nie potrafi, a przynajmniej nie działa od razu po wyjęciu z pudełka - takie jak (geometryczne) efektory oparte na głośności, które można dodatkowo podłączyć do portali symulujących dźwięk przechodzący przez wiele pomieszczeń. To nie jest powszechne, ale jest zrobione i możesz odróżnić.
4

Phya jest biblioteką syntezy dźwięku opartą na „fizycznym próbkowaniu”, która może być sterowana przez silnik fizyki gry. (W przykładach zastosowano Bullet)

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

Nie jestem pewien, co jest najnowsze, ostatnia aktualizacja witryny jest ponad rok temu.

Nie jest on tak bardzo ukierunkowany na modelowanie rezonansu powietrza w objętości, ale może być dobrym przykładem tego, jak kierować syntezą audio w czasie rzeczywistym z fizyki.

Myślę, że nie musi to być przedsięwzięcie niemożliwie drogie pod względem procesora. Podany problem jest całkowicie deterministyczny i powinien być osiągalny na nowoczesnym sprzęcie. (przynajmniej do poziomu odpowiedniego dla produktu rozrywkowego / edukacyjnego.)

Pytanie, na które należy odpowiedzieć, brzmi: jak w pełni musisz symulować i ile możesz sfałszować? Jeśli chodzi o audio, wystarczy mieć jakąś modulację dźwięku w czasie rzeczywistym w rozsądnie przekonujący sposób, co często daje ci bez konieczności modelowania drgań akustycznych do cząsteczki.

Może to pomaga. Dobre pytanie, przy okazji.

-jot

Jason Cobb
źródło
Mogę dużo sfałszować. Po prostu ... znacznie mniej niż współczesne gry wideo. O to chodzi: nie tworzę gry wideo, ale grę audio. Trochę
Félix Saparelli
3

Właściwie przeprowadzenie dokładnej symulacji fizyki tutaj zaangażowanej byłoby znacznie bardziej złożone (i kosztowne obliczeniowo) niż zwykły system fizyki, taki jak Havok lub Bullet. Tradycyjny system fizyki jest zoptymalizowany dla ciał sztywnych i ciał miękkich, które ze względu na prędkość mają ograniczoną złożoność siatki.

Z drugiej strony dźwięk jest propagacją fal w powietrzu, a częstotliwości generowane przez coś takiego jak twój przykład zależą od ton właściwości. Z jakiego materiału to zrobiło? Jakiego modelu matematycznego powinniśmy użyć dla cząstek powietrza oddziałujących z tym materiałem? Jeśli jest to kształt rury, jakie są wymiary rury? (To określa częstotliwość rezonansową.) Itd. Itp.

Ponadto musisz przeprowadzić dość zaawansowaną symulację cząstek, aby wymodelować powietrze, a także wyodrębnić fale ruchów cząstek, które są w zasadzie falami dźwiękowymi uderzającymi w bębenki uszne. Nie wspominając nawet o błonach bębenkowych, ponieważ rezonans fal w kanale słuchowym wpływa również na to, co słyszysz.

Podsumowując, jest to zdecydowanie za dużo symulacji, aby mogła ją wykonać obecna gra, zwłaszcza jeśli masz nadzieję na interaktywną liczbę klatek na sekundę. Jak zauważył deft_code, gry rzadko są dokładnymi symulacjami, ale są chwalebnie udawane. Najlepszym sposobem, aby do tego podejść, byłoby prawdopodobnie rozpoczęcie od dużego zestawu próbek dźwięku i rozpoczęcie działania przez procesor DSP, dopóki nie zrozumiesz, w jaki sposób możesz wpłynąć na efekt tych dźwięków. Procesory DSP są zdecydowanie wystarczająco szybkie do gier w czasie rzeczywistym, a jeśli dźwięk byłby dużym komponentem, sensowne jest poświęcenie przyzwoitej części swojego czasu na przetwarzanie dźwięku.

tl; dr: Dokładna symulacja prawdopodobnie nie wchodzi w rachubę przez wiele lat. Świetne gry to podróbka. Przy wystarczająco dużym zestawie próbek i dostrojeniu DSP prawdopodobnie możesz go również sfałszować.

Bob Somers
źródło
2

Sprawdź nasze podejście.

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

Opracowana biblioteka wykorzystuje śledzenie wiązki, aby zapewnić użytkownikowi realistyczną auralizację dźwięku. Wszystkie efekty audio są obliczane na podstawie faktycznej geometrii danego poziomu gry, a także jego właściwości akustycznych (materiały akustyczne, tłumienie powietrza). Dźwięk zmienia się dynamicznie wraz z ruchem postaci i źródeł dźwięku. Algorytm tworzenia ścieżki dźwiękowej obsługuje takie zjawiska, jak odbicia lustrzane, odbicia rozproszone i dyfrakcja krawędzi, podczas gdy przetwarzanie audio obsługuje filtrowanie sygnałów (modelowanie zrzutu powietrza, wpływ odbicia / dyfrakcji itd.), Modelowanie efektu Dopplera i efekty przestrzenne. Wreszcie dźwięk kierunkowy jest implementowany przy użyciu HRTF dla każdej ścieżki dźwiękowej.

NoMoreMrNiceGaius
źródło
0

Zdaję sobie sprawę, że to stare pytanie, ale w ciągu ostatnich kilku lat postępy postępują, a to, co opisujesz, staje się coraz bardziej wykonalne obliczeniowo.

Narzędzia takie jak Synthesis Toolkit służą do odpowiedzi na następujące pytanie: „Mój silnik fizyki powiedział mi, że flet wibruje w taki a taki sposób. Jaka to nuta?”

Należy jednak odpowiedzieć na inne ważne pytanie: „Jak brzmi ta nuta z pozycji słuchacza?”

Jest powszechnym błędnym przekonaniem, że interfejsy API audio, takie jak OpenAL, zajmują się tym. W rzeczywistości wszystko, co robią, to tak zwane audio pozycyjne . Nie modelują propagacji dźwięku: interakcji między falami dźwiękowymi a otoczeniem. Propagacja dźwięku obejmuje odpowiadanie na pytania takie jak:

  • Czy ten pokój jest wystarczająco duży, aby można było dostrzec pogłos?
  • Czy meble w pokoju pochłaniają większość dźwięku?
  • Czy stojąc na zewnątrz, czy powinienem słyszeć echa z odległego wzgórza? Pobliski budynek?
  • Czy dźwięk rozprasza się na duże odległości?
  • Czy źródło dźwięku jest zasłonięte (ukryte) przez słuchacza?
  • Jeśli tak, to czy istnieją alternatywne trasy, za pomocą których fale dźwiękowe mogą dotrzeć do słuchacza? Może spod zamkniętych drzwi, za rogiem korytarza lub przez otwór wentylacyjny?

Phonon to silnik audio-fizyki, który odpowiada na te pytania. (Pełne ujawnienie: jestem zaangażowany w opracowywanie Phonon.) W Phonon użytkownik musi określić bardzo mały zestaw parametrów (współczynniki absorpcji i rozproszenia). Phonon wykonuje wtedy tylko tyle obliczeń, aby móc przekonująco odtworzyć efekty propagacji dźwięku dla słuchacza.

Phonon jest obecnie dostępny jako wtyczka do Unity. Oprócz komputerów i urządzeń mobilnych Phonon może także działać na platformach VR, takich jak Oculus Rift, i robi to zauważalną różnicę.

Mam nadzieję że to pomoże!

Lakulish Antani
źródło
0

Czytając twoje pytanie, mogę je przetłumaczyć na dwa sposoby.

  1. Czy istnieje silnik, który może generować dźwięki na podstawie symulacji fizycznych? Na przykład powietrze nadmuchujące trzcinę lub młot uderzający w sznurek?

W grach? nie o tym słyszałem.

  1. Czy istnieje silnik, który odtwarza istniejące wcześniej dźwięki, ale modyfikuje je w oparciu o informacje fizyczne, takie jak odległość od mikrofonu, aby symulować „wrażenia dźwięku przestrzennego”?

Tak! nazywane są „silnikami dźwięku 3D”, dobrze znanym jest OpenAL .

Nathan Goings
źródło