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.
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
źródło
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.
źródło
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
źródło
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ć.
źródło
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.
źródło
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:
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!
źródło
Czytając twoje pytanie, mogę je przetłumaczyć na dwa sposoby.
W grach? nie o tym słyszałem.
Tak! nazywane są „silnikami dźwięku 3D”, dobrze znanym jest OpenAL .
źródło