akademia gÓrniczo-hutnicza - dsp.agh.edu.pldydaktyka:bmiga_mgr.pdf · niezbedne˛ pojecia˛...
TRANSCRIPT
AKADEMIA GÓRNICZO-HUTNICZA
IM. STANISŁAWA STASZICA W KRAKOWIE
Wydział Inzynierii Mechanicznej i Robotyki
MAGISTERSKA PRACA DYPLOMOWA
BARTŁOMIEJ MAREK MIGA
MODELOWANIE ZJAWISK AKUSTYCZNYCH W SILNIKUAUDIO GIER KOMPUTEROWYCH
dr inz. Bartosz Ziółko
Promotor pracy
. . . . . . . . . . . . . . . . . . . . . .
Ocena, data,
podpis promotora
Kraków, rok 2012 / 2013
Kraków, dn. . . . . . . . . . . . . . . . . . . . . .
Imie i nazwisko: Bartłomiej Marek Miga
Nr albumu: 220046
Kierunek studiów: Inzynieria Akustyczna
Specjalnosc: Inzynieria dzwieku w mediach i kulturze
OSWIADCZENIE AUTORA PRACY
Swiadomy odpowiedzialnosci karnej za poswiadczanie nieprawdy oswiadczam, ze niniejsza
magisterska prace dyplomowa wykonałem osobiscie i samodzielnie oraz nie korzystałem ze
zródeł innych niz wymienione w pracy.
Jednoczesnie oswiadczam, ze dokumentacja pracy nie narusza praw autorskich w rozu-
mieniu ustawy z dnia 4 lutego 1994 roku o prawie autorskim i prawach pokrewnych
(Dz. U. z 2006 r. Nr 90 poz. 631 z pózniejszymi zmianami) oraz dóbr osobistych chro-
nionych prawem cywilnym. Nie zawiera ona równiez danych i informacji, które uzyskałem
w sposób niedozwolony. Wersja dokumentacji dołaczona przeze mnie na nosniku elektro-
nicznym jest w pełni zgodna z wydrukiem przedstawionym do recenzji.
Zaswiadczam takze, ze niniejsza magisterska praca dyplomowa nie była wczesniej podstawa
zadnej innej urzedowej procedury zwiazanej z nadawaniem dyplomów wyzszej uczelni lub
tytułów zawodowych.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
podpis
Kraków, dn. . . . . . . . . . . . . . . . . . . . . .
Imie i nazwisko: Bartłomiej Marek Miga
Adres korespondencyjny: ul. Lesna 9, 26-660 Jedlinsk
Temat magisterskiej pracy dyplomowej: Modelowanie zjawisk akustycznych w silniku
audio gier komputerowych
Nr albumu: 220046
Kierunek studiów: Inzynieria Akustyczna
Specjalnosc: Inzynieria dzwieku w mediach i kulturze
OSWIADCZENIE
Niniejszym oswiadczam, ze zachowujac moje prawa autorskie, udzielam Akademii
Górniczo-Hutniczej im. S. Staszica w Krakowie nieograniczonej w czasie nieodpłatnej li-
cencji niewyłacznej do korzystania z przedstawionej dokumentacji magisterskiej pracy dy-
plomowej, w zakresie publicznego udostepniania i rozpowszechniania w wersji drukowanej
i elektronicznej. 1
Kraków, dn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
data, podpis
1Na podstawie Ustawy z dnia 27 lipca 2005 r. Prawo o szkolnictwie wyzszym (Dz.U. 2005 nr 164 poz.
1365) Art. 239. oraz Ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (Dz.U. z
2000 r. Nr 80, poz. 904, z pózn. zm.) Art. 15a. „Uczelni w rozumieniu przepisów o szkolnictwie wyzszym
przysługuje pierwszenstwo w opublikowaniu pracy dyplomowej studenta. Jezeli uczelnia nie opublikowała
pracy dyplomowej w ciagu 6 miesiecy od jej obrony, student, który ja przygotował, moze ja opublikowac,
chyba ze praca dyplomowa jest czescia utworu zbiorowego.”
Kraków, . . . . . . . . . . . . . . . . . . . . .
Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie
Wydział Inzynierii Mechanicznej i Robotyki
TEMATYKA MAGISTERSKIEJ PRACY DYPLOMOWEJ
dla studenta II roku studiów stacjonarnych
Bartłomiej Marek Miga
TEMAT MAGISTERSKIE PRACY DYPLOMOWEJ:
Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
Miejsce praktyki dyplomowej: nie dotyczy
Promotor pracy: dr inz. Bartosz Ziółko
Recenzent pracy: . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
podpis dziekana
PROGRAM PRACY I PRAKTYKI DYPLOMOWEJ:
1. Omówienie tematu pracy i sposobu realizacji z promotorem.
2. Zebranie i opracowanie literatury dotyczacej tematu pracy.
3. Zebranie i opracowanie wyników badan.
4. Analiza wyników badan, ich omówienie i zatwierdzenie przez promotora.
5. Opracowania redakcyjne.
Kraków, . . . . . . . . . . . . . . . . . . . . . . . . . .
data i podpis dyplomanta
Termin złozenia do dziekanatu: . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
podpis promotora
Kraków, . . . . . . . . . . . . . . . . . . . . .
Akademia Górniczo-Hutnicza im. Stanisława Staszica
Wydział Inzynierii Mechanicznej i Robotyki
Kierunek studiów: Inzynieria Akustyczna
Specjalnosc: Inzynieria dzwieku w mediach i kulturze
Bartłomiej Marek Miga
Magisterska praca dyplomowa
Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
Promotor: dr inz. Bartosz Ziółko
STRESZCZENIE
Niniejsza praca magisterska przedstawia zagadnienia zwiazane z symulacja dzwieku na po-
trzeby silnika audio dedykowanego do gier komputerowych. Kolejne rozdziały przedstawiaja
niezbedne pojecia dotyczace dziedziny akustyki, przetwarzania sygnałów oraz podstawowe
aspekty programowania gier komputerowych. Krótko przedstawiono narzedzia do kreowania
dzwieku w grach komputerowych oraz sposoby symulacji pola akustycznego. Czesc prak-
tyczna opisuje sposób, w jaki modelowane zostaja zjawiska akustyczne w wirtualnym swie-
cie gry. Wyszczególniono w nim architekture czesci odpowiedzialnej za tworzenie modeli
zjawisk akustycznych takich jak odbicie, transmisja, dyfrakcja oraz tłumienie przez powie-
trze. Moduł ten opisano w kontekscie działania metody sledzenia wiazek oraz czesci odpo-
wiedzialnej za przetwarzanie i synteze dzwieku w czasie rzeczywistym.
Krakow, the . . . . . . . . . . . . . . . . . . . . .
AGH University of Science and Technology
Faculty of Mechanical Engineering and Robotics
Field of Study: Acoustic Engineering
Specialisations: Sound engineering in media and culture
Bartłomiej Marek Miga
Master Diploma Thesis
Acoustic phenomena modeling in audio engine for computer games
Supervisor: Bartosz Ziółko Ph.D
ABSTRACT
This master thesis presents issues related to sound simulation in audio engine for compu-
ter games. Theoretical part discusses essential principles of acoustics, signal processing and
video games programming. Then brief description of tools for sound design in computer
games and methods of acoustic field simulation has been presented. The practical part of
this thesis explains approach to acoustic phenomena modelling in virtual world of computer
game. It takes into account architecture of effects part, which is responsible for creating mo-
dels of following acoustic phenomena: reflection, transmission, diffraction and attenuation
within the air. This module has been described in the context of beam tracing method and
the real-time audio processing and synthesis module.
Składam serdecznie podziekowania dr. Bartoszowi Ziółce
za zachete do podjecia pracy przy projekcie RAYAV, w ra-
mach którego mogła zostac zrealizowana niniejsza praca
dyplomowa oraz za wszystkie cenne wskazówki podczas jej
tworzenia.
Dziekuje Tomkowi, Kasi, Paulinie, Irkowi, Szymonowi,
Krzyskowi oraz Piotrkowi za rok fascynujacej współpracy.
Spis tresci
1. Wstep........................................................................................................................... 12
1.1. O czym jest, a o czy nie jest ta praca.................................................................. 12
1.2. Uzasadnienie wyboru tematu pracy.................................................................... 13
1.3. Zawartosc pracy.................................................................................................. 14
2. Omówienie zagadnien teoretycznych ....................................................................... 15
2.1. Techniczne aspekty tworzenia gier wideo .......................................................... 15
2.1.1. Gry komputerowe jako specyficzny rodzaj oprogramowania ................ 15
2.1.2. Edytor gry............................................................................................... 17
2.1.3. Pojecie silnika......................................................................................... 17
2.1.4. Silnik technologiczny ............................................................................. 18
2.1.5. Silnik gry ................................................................................................ 19
2.2. Fale ..................................................................................................................... 20
2.2.1. Podstawowe cechy opisujace fale........................................................... 20
2.2.2. Uogólniony opis matematyczny ............................................................. 21
2.2.3. Rodzaje fal.............................................................................................. 21
2.3. Fale akustyczne................................................................................................... 22
2.3.1. Cisnienie, predkosc akustyczna.............................................................. 23
2.3.2. Predkosc dzwieku................................................................................... 23
2.3.3. Natezenie dzwieku.................................................................................. 24
2.3.4. Poziom cisnienia akustycznego, poziom natezenia................................ 24
2.3.5. Fala kulista.............................................................................................. 25
2.3.6. Pole bliskie i dalekie............................................................................... 25
2.4. Opis zjawisk akustycznych................................................................................. 26
9
SPIS TRESCI 10
2.4.1. Odbicie i transmisja fali dzwiekowej ..................................................... 26
2.4.2. Dyfrakcja ................................................................................................ 28
2.4.3. Zjawisko Dopplera ................................................................................. 28
2.5. Niezbedne pojecia teorii sygnałów..................................................................... 29
2.5.1. Definicja sygnału .................................................................................... 29
2.5.2. Klasyfikacja sygnałów............................................................................ 30
2.5.3. Sygnały analogowe i dyskretne .............................................................. 31
2.5.4. Twierdzenie o próbkowaniu ................................................................... 32
2.5.5. Energia i wartosc skuteczna sygnału ...................................................... 33
2.5.6. Transformata Fouriera ............................................................................ 34
2.5.7. Dyskretna transformata Fouriera ............................................................ 35
2.5.8. Złozonosc obliczeniowa DFT oraz FFT................................................. 35
2.5.9. Widmo sygnałów dyskretnych ............................................................... 36
2.5.10. Podstawowe własnosci transformaty Fouriera ....................................... 37
2.5.11. Splot i filtracja sygnałów........................................................................ 38
2.5.12. Transformacja Z ..................................................................................... 39
2.5.13. Filtry FIR i IIR........................................................................................ 39
2.5.14. Realizacja splotu przy pomocy FFT....................................................... 41
2.6. Praca z dzwiekiem na potrzeby gier komputerowych ........................................ 43
2.6.1. Stosowane obecnie rozwiazania do tworzenia dzwieku w grach kom-
puterowych ............................................................................................. 43
2.7. Metody symulacji akustyki................................................................................. 45
2.7.1. Metody geometryczne ............................................................................ 45
2.7.2. Metoda elementów skonczonych............................................................ 46
2.7.3. FDTD...................................................................................................... 46
3. Projekt i implementacja ............................................................................................ 50
3.1. Analiza wymagan ............................................................................................... 50
3.1.1. Załozenia ogólne .................................................................................... 50
3.1.2. Wymagana funkcjonalnosc z punktu widzenia przyszłego uzytkownika 51
3.2. Załozenia techniczne .......................................................................................... 52
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
SPIS TRESCI 11
3.2.1. Platformy sprzetowe ............................................................................... 52
3.2.2. Narzedzia programistyczne i biblioteki.................................................. 52
3.3. Koncepcja działania silnika ................................................................................ 53
3.3.1. Propagacja wiazek .................................................................................. 53
3.3.2. Modele zjawisk akustycznych ................................................................ 55
3.3.3. Synteza dzwieku..................................................................................... 56
3.4. Uzasadnienie przyjetej metody postepowania.................................................... 57
3.5. Reprezentacja zjawisk akustycznych w silniku.................................................. 58
3.5.1. Efekt jako model zjawiska akustycznego............................................... 58
3.5.2. Materiały akustyczne.............................................................................. 58
3.6. Architektura modułu efektów............................................................................. 60
3.7. Modelowanie propagacji dzwieku...................................................................... 63
3.8. Modelowanie zjawisk akustycznych .................................................................. 65
3.8.1. Odbicie dzwieku..................................................................................... 65
3.8.2. Transmisja dzwieku................................................................................ 67
3.8.3. Pochłanianie dzwieku przez powietrze................................................... 70
3.8.4. Spadek amplitudy fali z odległoscia ....................................................... 72
3.8.5. Dyfrakcja ................................................................................................ 73
3.8.6. Optymalizacja obliczen dyfrakcji........................................................... 76
3.8.7. Zjawiska odpowiedzialne za percepcje kierunkowosci .......................... 77
3.8.8. Zjawisko Dopplera ................................................................................. 78
3.9. Filtry reprezentujace zjawiska akustyczne ......................................................... 78
3.9.1. Synteza szeregu zjawisk akustycznych .................................................. 79
3.10. Przetwarzanie dzwieku ....................................................................................... 80
3.11. Obsługa dzwieku przestrzennego ....................................................................... 81
3.11.1. HRTF, słuchawki .................................................................................... 81
3.11.2. VBAP, system głosników ....................................................................... 82
4. Zakonczenie ................................................................................................................ 84
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
1. Wstep
1.1. O czym jest, a o czy nie jest ta praca
Tytuł niniejszej pracy moze sugerowac, ze na potrzeby jej realizacji autor poddał sie do-
głebnej analizie zjawisk akustycznych. Moga kojarzyc sie z tym wszelkie próby uzyskania
dokładnego opisu matematycznego popartego licznymi dowodami i doswiadczeniami. Nie
jest to jednak przedmiotem tej pracy. Niewatpliwie poswiecono w niej wystarczajaca ilosc
uwagi na opis zjawisk akustycznych wykorzystujac rozwazania przedstawione w cenionej
literaturze. Nalezy jednak jasno powiedziec, ze priorytetem przy tworzeniu pracy nie było
znalezienie i zaimplementowanie dokładnych algorytmów, które wiernie oddadza skompli-
kowana nature dzwieku.
Główny nacisk połozono na analize, implementacje, przetestowanie i porównanie róz-
nych podjesc do problemu, a nastepnie wybór najbardziej odpowiedniego. Nie jest to rów-
noznaczne z wyborem rozwiazania najdokładniejszego. Autor w pełni zdaje sobie sprawe,
ze w wielu wypadkach przyjmowane załozenia i stosowane uproszczenia moga okazan sie
wrecz razace dla osób, którym doskonale znane sa zagadnienia teorii pola akustycznego
oraz jego opis matematyczny. Wybór przedstawionych w pracy dróg prowadzacych do roz-
wiazania konkretnych problemów był wielokrotnie poddawany analizie, a ostateczna de-
cyzja nierzadko wymagała kompromisu. Nie wolno zapominac, ze podjety temat dotyczy
gier komputerowych, w których – zdaniem autora na szczescie – przedstawiony swiat nie
jest wiernym opisem rzeczywistosci. Z wielu róznych wzgledów czesto wrecz nie powinien
nim byc. W kazdej współczesnej grze komputerowej niezwykle wazna kwestia jest wizja jej
twórców. Dotyczy to zarówno fabuły jak i zjawisk fizycznych zachodzacych w wirtualnym
swiecie. Z tego powodu głównym celem nie było wierne odwzorowanie czesto skompli-
kowanych zaleznosci matematycznych opisujacych złozone zjawiska falowe. Jako priorytet
obrano natomiast stworzenie elastycznego oprogramowania (konkretnie jego czesci), które
12
1.2. Uzasadnienie wyboru tematu pracy 13
zapewni jego uzytkownikom subiektywnie dobre, a czasami wrecz zaskakujace, niespoty-
kane wczesniej wrazenia dzwiekowe w grach komputerowych.
1.2. Uzasadnienie wyboru tematu pracy
Wykorzystanie komputerów juz od wielu lat staje sie coraz bardziej powszechne. Od mo-
mentu powstania pierwszych jezyków programowania i kompilatorów obliczenia naukowe,
symulacje fizyczne i niedługo potem takze gry komputerowe stały sie prezna gałezia roz-
woju oprogramowania. Trwa to do dzisiaj i z pewnoscia minie jeszcze dosc duzo czasu
zanim tego typu oprogramowanie przestanie byc tworzone. Zdaniem autora sa to niezwy-
kle ciekawe dziedziny, w kierunku których warto rozwijac swoje zainteresowania. Cenna
dla kazdego inzyniera i naukowca specjalizujacego sie w konkretnej dyscyplinie naukowej
jest umiejetnosc tworzenia oprogramowania. Szczególnie takiego, które ma zwiazek z mo-
delowaniem i symulacja. Nie wystarcza tutaj tylko niezbedna wiedza dotyczaca architektury
i sposobu działania komputera, umiejetnosc programowania czy tez znajomosc poszczegól-
nych jezyków, technologii i narzedzi. Z doswiadczen autora wynika, ze na tym gruncie wrecz
niezbedna jest umiejetnosc wykorzystania wiedzy z wielu, czesto nawet odrebnych dziedzin
w skuteczny sposób.
Tematyka pracy od poczatku wydawała sie atrakcyjnym wyzwaniem. Zgodnie z oczeki-
waniami dała autorowi szanse do stawienia czoła zadaniu, które znajduje sie na pograniczu
dziedziny akustyki, cyfrowego przetwarzania sygnałów, informatyki i nierozerwalnie z nia
zwiazana inzynieria oprogramowania. Od samego poczatku tworzenia projektu motywujaca
była ciagła wizja wydania oprogramowania, które – w co autor ciagle wierzy – w przyszłosci
zostanie wykorzystane przy produkcji gier wideo. Skuteczna zacheta okazała sie mozliwosc
pracy nad rzeczywistym projektem, realizowanym w kilkuosobowym zespole, gdzie kazdy
twórca odpowiada za jego konkretna funkcjonalnosc. Autor podjał sie tego zadania majac
na uwadze nie tylko swoje dotychczasowe zainteresowania, ale takze swoja przyszła kariere
zawodowa zwiazana z tworzeniem oprogramowania. Praca przy realizacji silnika dzwieko-
wego była wspaniała okazja do nauczenia sie efektywnej współpracy z innymi programi-
stami oraz prezentowania i tłumaczenia w zrozumiały sposób swoich pomysłów i uwag.
Mimo tego, ze kazdy z członków zespołu odpowiadał za realizacje swojego zadania, wyma-
gało to ciagłego kontaktu i uzgadniania technicznych szczegółów z osobami realizujacymi
inne fragmenty oprogramowania.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
1.3. Zawartosc pracy 14
Dodatkowo autor w swoim dziecinstwie był miłosnikiem gier wideo. Najpierw były to
gdy na 8-bitowym Atari, a pózniej takze legendarnej juz dzisiaj konsoli Pegasus. Pierw-
szy posiadany przez autora komputer PC wyposazony był w procesor Intel Pentium, który
umozliwiał zagranie w tytuły takie jak Doom i Quake. W wieku dwunastu lat rozpoczał
przygode z muzyka, której od strony praktyki wykonawczej a takze teoretycznej uczył sie
w szkole muzycznej I i II stopnia. Zamiłowanie do muzyki zacheciło do studiowania Inzynie-
rii Akustycznej. Czas studiów dał szanse na poznanie fascynujacej natury dzwieku od strony
inzynierskiej oraz zachecił do pogłebiania wiedzy z dziedziny informatyki – głównie two-
rzenia programowania. Zacheciło to autora do studiowania drugiego fakultetu na kierunku
Informatyka.
Pasja autora do muzyki trwa do chwili obecnej, jednak spowodowała, ze na blisko 10 lat
gry komputerowe odeszły w zapomnienie. Realizacja projektu pozwoliła autorowi przypo-
mniec sobie o swojej fascynacji grami komputerowymi z dziecinstwa i spojrzec na nie juz
z zupełnie innej, technicznej oraz naukowej strony.
1.3. Zawartosc pracy
Rozdział 2. zawiera teoretyczny opis zagadnien, które wykorzystywane sa w czesci prak-
tycznej pracy. Na poczatku nakreslono specyfike tworzenia gier komputerowych. Nastepnie
przedstawiono matematyczny opis fal dzwiekowych oraz towarzyszacych im zjawisk. Ko-
lejna czesc stanowi opis zagadnien wykorzystywany w dziedzinie teorii sygnałów oraz cy-
frowego przetwarzania sygnałów. Koniec rozdziału prezentuje istniejace rozwiazania stoso-
wane przy pracy z dzwiekiem na potrzeby gier komputerowych oraz w skrócie omawia trzy
metody symulacji pola akustycznego.
Czesc praktyczna pracy opisana została w rozdziale 3. Rozdział ten omawia przyjete za-
łozenia, wymagania dotyczace funkcjonalnosci oraz ogólna koncepcje działania tworzonego
oprogramowania. Nastepnie przedstawiono w nim architekture tworzonego w ramach pracy
modułu odpowiadajacego za symulowanie zjawisk akustycznych w silniku dzwiekowym,
oraz zaprezentowano metody postepowania prowadzace do uzyskania konkretnych efektów
dzwiekowych reprezentujacych najwazniejsze zjawiska akustyczne. Rozdział konczy omó-
wienie zastosowanych rozwiazan do realizacji obsługi dzwieku przestrzennego.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2. Omówienie zagadnien teoretycznych
2.1. Techniczne aspekty tworzenia gier wideo
2.1.1. Gry komputerowe jako specyficzny rodzaj oprogramowania
Tworzenie oprogramowania takiego jak gry komputerowe nie bez powodu uwazane jest
za trudne wyzwanie. Wyłaczajac działajace w czasie rzeczywistym symulacje fizyczne czy
tez zaawansowane technologie wojskowe takie jak m.in. samoloty sterowane przez sztuczna
inteligencje, programowanie gier wideo jest jednym z najbardziej skomplikowanych progra-
mistycznie zagadnien na swiecie. Przy tworzeniu tego typu aplikacji niezbedna jest troska
o jak najwyzsza jakosc wielu elementów takich jak grafika, dzwiek, obsługa sieci i urzadzen
wejscia oraz nierzadko skomplikowana algorytmika. Nacisk na mozliwie najwyzsza wydaj-
nosc spowodowany jest potrzeba działania aplikacji w czasie rzeczywistym [20]. Nic zatem
dziwnego, ze stworzenie takiej aplikacji wymaga duzego doswiadczenia. Zarówno od pro-
gramistów jak i od projektantów oprogramowania. Problem ten jednak nie dotyczy tylko ich.
Ze wzgledu na swoja specyfike ogromna odpowiedzialnosc spoczywa na producentach oraz
grupie osób odpowiedzialnych za wartosc artystyczna projektu. Ponizszy przykład pozwala
nakreslic róznice miedzy grami komputerowymi, a aplikacjami biznesowymi w procesie ich
tworzenia.
W wypadku szeroko pojetych aplikacji biznesowych oprogramowanie tworzone jest dla
konkretnego klienta, który z reguły od samego poczatku jest w stanie okreslic swoje pod-
stawowe oczekiwania. Ułatwia to mozliwie szybkie stworzenie prototypu. Przez niemal cały
czas tworzenia systemu informatycznego klient jest czescia zespołu realizujacego przedsie-
wziecie. Jego twórcy regularnie konsultuja z klientem kolejne etapy pracy. W ustalonych
odstepach czasu odbiorca otrzymuje kolejne wersje uzupełniane o nowe funkcjonalnosci.
Nawet nie w pełni gotowe oprogramowanie posiadajace jedynie najwazniejsza funkcjonal-
nosc moze byc równolegle uzywane i testowane przez klienta. Dzieki temu ten ostatni ma
15
2.1. Techniczne aspekty tworzenia gier wideo 16
mozliwosc raportowania błedów, wskazania uwag dotyczacych jego jakosci i wygody uzyt-
kowania oraz udzielenia dalszych porad. Wszelkie poprawki sa wprowadzane regularnie,
dzieki czemu taki proces ma znaczne wieksze szanse zakonczenia sukcesem – odbiorca sys-
temu bedzie usatysfakcjonowany.
Nieco inaczej sytuacja przedstawia sie w przemysle gier komputerowych. Tryb pracy
nad rozwojem oprogramowania moze byc podobny. Tutaj równiez konieczne jest szybkie
stworzenie prototypu. W regularnych odstepach czasu dodawane sa kolejne, nowe funkcjo-
nalnosci oraz do juz istniejacych wprowadzane poprawki. Jednak przy produkcji gier wideo
trudniej niz w wypadku aplikacji biznesowych bezposrednio okreslic kto jest klientem apli-
kacji. Z góry wiadomo jedynie, ze gra kierowana jest do graczy w konkretnym przedziale
wiekowym i zainteresowanych konkretnym gatunkiem. Po zakonczeniu realizacji gra trafi
na półki sklepowe i dopiero wyniki sprzedazy oraz rozgłos jaki uzyskała moga stac sie wy-
znacznikiem sukcesu. Głównym klientem, z którym twórcy gry konsultuja sie w trakcie jej
tworzenia jest producent. Na nim w duzej mierze spoczywa odpowiedzialnosc za losy pro-
jektu. Do samego konca realizacji trudno miec pewnosc, ze gra osiagnie sukces, nawet jesli
wszelkie oczekiwania doswiadczonego producenta zostana w pełni zrealizowane oraz pod
wzgledem technicznym nic nie mozna jej zarzucic. Bezbłedne i wydajne rozwiazanie wszel-
kich problemów technicznych, zapewnienie pozadanej funkcjonalnosci oraz niezawodnosci
jest konieczne w kazdym rodzaju oprogramowania. Jezeli system do zastosowan bizneso-
wych dodatkowo bedzie ergonomiczny i stabilny istnieje duza szansa, ze spotka sie z za-
dowoleniem klienta. W wypadku nowoczesnych gier komputerowych wspomniane cechy
sa niezbedne, ale nie sa juz wystarczajace. Tego typu aplikacja musi po prostu zaskoczyc
odbiorce grafika, efektami specjalnymi, dzwiekiem, fabuła i wieloma innymi detalami. Su-
biektywne wrazenie odbiorcy jest tutaj prawdopodobnie wazniejsze od dajacej sie ocenic
w obiektywy sposób poprawnoscia realizacji.
Twórcy gier komputerowych od dawna zdaja sobie sprawe, ze gra powinna byc złozo-
nym dziełem sztuki. Składaja sie nie grafika, oprawa dzwiekowa, efekty specjalne, a takze
charakterystyka bohaterów i zaskakujaca fabuła gry. Opracowujac kazdy z tych elementów
twórcy musza wykazac sie zmysłem artystycznym. Trudno zatem oczekiwac, ze wszystkie
te kwestie, zwłaszcza przy duzych produkcjach, beda mogły zostac zrealizowane przez jedna
osobe. Chociaz gry komputerowe od zawsze były i nadal beda projektami informatycznymi,
wiekszosc zespołu stanowia graficy, sound designerzy, level designerzy i inni. Programisci
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.1. Techniczne aspekty tworzenia gier wideo 17
sa w zdecydowanej mniejszosci [20].
2.1.2. Edytor gry
W celu usprawnienia pracy całego zespołu w trakcie tworzenia gry niezbedne jest stwo-
rzenie uniwersalnych narzedzi, które beda mogły zostac wykorzystane przy pracy nad kolej-
nymi czesciami, badz tez nad zupełnie nowym tytułami. Narzedzia te musza byc na tyle nie-
zalezne, by umozliwiły bezkonfliktowa prace programistów i grafików oraz szeroko pojetej
grupy artystów. Podstawowym tego typu narzedziem jest edytor gry. W zaleznosci od po-
ziomu jego złozonosci powinien oferowac mozliwosc konfigurowania poszczególnych usta-
wien czy tez umozliwic tworzenie oraz modyfikowanie poszczególnych elementów całego
tzw. gameplay’u. Zaawansowane narzedzia tego typu wyposazone sa w rozbudowany in-
terfejs graficzny, przy pomocy którego mozliwe jest modyfikowanie dowolnego elementu
gry. Rozbudowane edytory pozwalaja nie tylko na rozmieszczenie poszczególnych elemen-
tów sceny oraz ustalic sciezke po której beda sie poruszac. Na poziome edytora mozliwe
jest zdefiniowanie zachowania poszczególnych postaci przy pomocy skryptów, które beda
interpretowane przez moduł AI (ang. artificial intelligence – sztuczna inteligencja) w celu
sterowania poszczególnymi obiektami. Waznym elementem kazdego edytora jest takze moz-
liwosc kreowania sceny dzwiekowej. W zaleznosci od stopnia jego złozonosci mozliwe jest
ustawianie konkretnych efektów DSP takich jak pogłos, equalizer czy tez kompresor. Nie-
zbedna cecha musi byc mozliwosc zdefiniowana zaleznosci zmiany głosnosci dzwieku do-
cierajace do słuchacza w funkcji jego odległosci od zródła.
Zrzut ekranu przedstawiajacy wyglad zaawansowanego edytora gry przedstawiono na
rysunku 2.1.
2.1.3. Pojecie silnika
Niemal wszystkie gry wideo posiadaja szereg wspólnych cech. Przy realizacji kolejnych
projektów implementowanie modułu obsługujacego karte graficzna lub urzadzenia wejscio-
wego typu klawiatura byłoby po prostu marnotrawstwem zasobów. Za niemal kazdy element
gry musieliby odpowiadac programisci, poniewaz kazda nowa postac, scene etc. nalezałoby
tworzyc na poziomie kodu zródłowego programu. Takie sytuacje nie maja miejsca w realnym
swiecie. W przeciwnym wypadku tak szybki rozwój gier komputerowych byłby niemozliwy.
Branza gier komputerowych liczy sobie ok. 40 lat, jednak pojecie silnika pojawiło sie po raz
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.1. Techniczne aspekty tworzenia gier wideo 18
Rysunek 2.1: Edytor oferowany wraz z Unreal Engine jako czesc Unreal Development Kit
[9]
pierwszy na poczatku lat 90. Wiazało sie to ze stworzeniem przez ID Software gier FPP
takich jak Wolfenstein 3D i Doom. Pierwszy widoczny krok w kierunku sformalizowania
podejscia w tworzeniu silników wiazał sie z wydaniem gry Quake w 1996 roku. Silnik nosi
nazwe Quake Engine. Rewolucja na tym polu było wydanie Unreal Engine przez firme Epic
Games. Jego pierwsza wersja została wydana w 1997 r. Od roku 2000 powstaje wiele gier
korzystajacych własnie z tej technologii [20].
2.1.4. Silnik technologiczny
Tworzac oprogramowanie dla konkretnej platformy programisci korzystaja z dedykowa-
nego dla niej SDK (ang. software development kit). SDK konkretnej platformy udostepnia
funkcjonalnosci zwiazane z obsługa urzadzen wejscia, grafiki, dzwieku czy dostepem do
systemu plików. Zadaniem silnika technologicznego jest zapewnienie spójnego interfejsu
dostepu do jego funkcjonalnosci niezaleznie od platformy, na której zostanie uruchomiona
gra. Istnienie warstwy silnika technologicznego zwalnia zespół pracujacy nad silnikiem gry
z potrzeby znajomosci SDK konkretnej platformy. Znacznie ułatwia to podział zakresu obo-
wiazków poszczególnych programistów. Tego typu oprogramowanie tworzone jest z mysla
o konkretnym gatunku, gdzie silnik bedzie mógł zostac wykorzystany.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.1. Techniczne aspekty tworzenia gier wideo 19
2.1.5. Silnik gry
W warstwowej strukturze oprogramowania silnik gry znajduje sie nad silnikiem techno-
logicznym. Moze zawierac wiele mechanizmów, które zostana wykorzystane tylko w kon-
kretnej grze. Rozstrzygniecie czy dana funkcjonalnosc powinna byc implementowana w ko-
dzie silnika gry czy samej gry jest trudniejsze niz w przypadku silnika technologicznego.
Poprawny podział pozwoli jednak uniknac niepozadanego zazebienia logiki gry z jej funk-
cjonalnoscia. Schematyczny podział architektury prostej gry przedstawia diagram klas na
rysunku 2.2. Najnizsza warstwa silnika znajduje sie sie na górze (klasa Engine). Kolejne
warstwy silnika obudowuja klase Engine.
Rysunek 2.2: Kolejne warstwy gry Arkanoid na podstawie przykładu zamieszczonego w [20]
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.2. Fale 20
2.2. Fale
Róznorakie zjawiska falowe wystepuja bardzo powszechnie. Czesc z nich w pewnym
zakresie moze byc odbierana za pomoca zmysłów. Fale elektromagnetyczne w okreslonym
zakresie sa widzialne. Fale mechaniczne, które znajduja sie w zakresie słyszalnosci czło-
wieka sa odbierane przez uszy. Z kolei fale sejsmiczne sa odczuwane w jeszcze inny sposób.
Przed dokładniejszym omówieniem fal akustycznych przedstawiono ogólne cechy, które sa
opisem wszystkich rodzajów fal.
2.2.1. Podstawowe cechy opisujace fale
Do opisu matematycznego wszystkich rodzajów fal wykorzystywane sa nastepujace
wielkosci.
Amplituda
Amplituda fali jest bezwzgledna wartoscia maksymalnego wychylenia wzgledem poło-
zenia równowagi. W kolejnych wzorach oznaczona przez Ymax.
Długosc fali
Długosc fali oznaczana jest przez λ. Jest odległoscia mierzona równolegle do kierunku
rozchodzenia sie fali miedzy kolejnymi punktami o tej samej fazie. W układzie SI wyrazana
w metrach.
Faza fali
Argument funkcji trygonometrycznej w przedstawionych ponizej równaniach.
Okres
Jest to czas wykonania jednego cyklu. Oznaczany przez T i wyrazany w sekundach.
Czestosc i czestotliwosc
Czestosc, a dokładniej czestosc katowa jest bezposrednio zwiazana z okresem fali (T )
zaleznoscia (2.1). Jednostka czestosci jest radian na sekunde.
ω =2π
T(2.1)
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.2. Fale 21
Czestotliwosc jest odwrotnoscia okresu fali. Wyrazana w hercach [Hz = 1s] na czesc nie-
mieckiego fizyka Heinricha Hertza (1857 – 1894), który zajmował sie m.in. badaniem fal
elektromagnetycznych [29].
Liczba falowa
Jednostka liczby falowej jest radian przez metr. Jej wartosc powiazana jest z długoscia
fali zaleznoscia (2.2).
k =2π
λ(2.2)
Predkosc fali
W najprostszej postaci mozna wyrazic ja równaniem (2.3).
c =λ
T= λf (2.3)
W wypadku fal elektromagnetycznych c jest wartoscia stała. Dla dzwieku powyzsza za-
leznosc równiez jest prawdziwa, jednak predkosc dzwieku zalezy takze od własciwosci
osrodka.
2.2.2. Uogólniony opis matematyczny
Równania (2.4) oraz (2.5) przedstawiaja ogólny opis fali w jednym wymiarze stosujac
zapis przy pomocy funkcji trygonometrycznej oraz zapisu zespolonego.
y(x, t) = Ymaxsin(ωt− kx+ φ) (2.4)
y(x, t) = Ymaxej(ωt−kx+φ) (2.5)
Znak stojacy przed liczba falowa okresla kierunek propagacji fali. W równaniach (2.4)
oraz (2.5) znak − oznacza, ze fala biegnie w dodatnim kierunku osi x. Wystapienie znaku +
przed liczba falowa k oznacza, ze fala biegnie w ujemnym kierunku osi x. Zastosowany opis
jest prawdziwy, gdy wartosc liczby falowej jest dodatnia.
2.2.3. Rodzaje fal
Ze wzgledu na specyficzne cechy poszczególnych fal mozna wyszczególnic trzy główne
ich rodzaje: mechaniczne, elektromagnetyczne, fale materii [21]. Ze wzgledu na charakter
propagacji mozna wyróznic fale podłuzne, poprzeczne, gietne i inne.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.3. Fale akustyczne 22
Fale mechaniczne
Najbardziej znany rodzaj fal, poniewaz sa spotykane niemal wszedzie i łatwo dostrze-
galne. Ich przykładem moga byc fale akustyczne, fale na wodzie, fale sejsmiczne. Wykorzy-
stuje sie je równiez w ultrasonografii. Najwazniejsza ich cecha jest to, ze podlegaja zasadom
dynamiki Newtona. Moga propagowac sie jedynie w materialnym, sprezystym osrodku ta-
kim jak np. powietrze, woda, metal, skała [21].
Fale elektromagnetyczne
Ich główna cecha jest zdolnosc do propagacji w prózni, co niemozliwe jest w wypadku fal
mechanicznych. Do fal elektromagnetycznych zalicza sie swiatło (nie tylko widzialne), pro-
mieniowanie rentgenowskie, fale radiowe, telewizyjne. Fale elektromagnetyczne poruszaja
sie w prózni ze stała predkoscia oznaczana jako c = 299792458 ms
. Wielkosc ta powszechnie
nazywana jest predkoscia swiatła.
Fale materii
Ten rodzaj fal zwiazany jest z czastkami elementarnymi (elektronami, protonami), ale
takze z atomami i czasteczkami.
Fala poprzeczna i podłuzna
W falach poprzecznych kierunek wychylenia osrodka jest prostopadły do kierunku pro-
pagacji. Dobrym przykładem tego rodzaju fal jest drgajaca struna lub fale na wodzie. W fa-
lach podłuznych kierunek wychylenia osrodka jest zgodny z kierunkiem biegu fali.
2.3. Fale akustyczne
Fala akustyczna jest rozchodzace sie w osrodku sprezystym zaburzenie gestosci i cisnie-
nia, które wprawia w drgania czasteczki osrodka. Fale dzwiekowe zaliczane sa do grupy
fal podłuznych, poniewaz wychylenie czastek osrodka z połozenia równowagi jest zgodna
z kierunkiem propagacji fali. Do analitycznego opisu fal dzwiekowych stosuje sie opisane
dalej wielkosci.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.3. Fale akustyczne 23
2.3.1. Cisnienie, predkosc akustyczna
Cisnienie akustyczne
Definiowane jest jako:
p = P − P0 (2.6)
gdzie P jest cisnieniem w osrodku, natomiast P0 jest cisnieniem osrodka niezaburzonego.
Mimo tego, ze w fizyce cisnienie okreslane jest jako wielkosc wektorowa, cisnienie aku-
styczne jest skalarem [23].
Predkosc akustyczna
Okresla chwilowa predkosc czastki osrodka.
~u(t) =∂~ξ(t)
∂t(2.7)
~ξ(t) jest chwilowym wychyleniem czastki akustycznej z połozenia równowagi. Predkosc
akustyczna jest wielkoscia wektorowa. W wypadku fali płaskiej jest proporcjonalna do ci-
snienia akustycznego i odwrotnie proporcjonalna do impedancji charakterystycznej osrodka
Z, w którym propaguje sie fala dzwiekowa.
~u(t) =p(t)
Z(2.8)
Wartosc impedancji charakterystycznej osrodka Z definiuje sie jako iloczyn ρ0c, gdzie
ρ0 jest gestoscia, a c predkoscia propagacji fali w osrodku.
Ruch czastki akustycznej opisany jest takze przez równanie Eulera, które wiaze predkosc
akustyczna z gestoscia osrodka oraz cisnieniem akustycznym. Przedstawiono tutaj liniowe
przyblizenie równania Eulera [29].
ρ0∂~u
∂t+∇p = 0 (2.9)
2.3.2. Predkosc dzwieku
Fale mechaniczne potrzebuja osrodka sprezystego aby mogły sie rozchodzic. Predkosc
dzwieku mozna wyrazic ogólnie jako pierwiastek ilorazu miary sprezystosci i miary bez-
władnosci osrodka [21]. W wypadku fal poprzecznych takich jak np. drgania struny miara
sprezystosci jest T – naprezenie struny wyrazone w Newtonach, a miara bezwładnosci –
gestosc liniowa struny w kgm . Dla fal rozchodzacych sie w powietrzu analogicznie jak w wy-
padku struny miara bezwładnosci jest gestosc objetosciowa wyrazona w kgm3 .
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.3. Fale akustyczne 24
Predkosc dzwieku zalezy od własciwosci osrodka, w którym sie rozchodzi. Pomijajac
wyprowadzania dostepne np. w [29, 16] wzór wyrazajacy predkosc dzwieku w powietrzu
przyjmuje postac:
c = 332 + 0, 6τa (2.10)
gdzie τa jest temperatura powietrza wyrazona w ◦C. Dla temperatury 15◦C predkosc
dzwieku w powietrzu wynosi 341ms . Predkosc dzwieku nie zalezy od amplitudy fali gdy
jest ona odpowiednio mała. Dla duzych amplitud (np. wybuchy) przestaja obowiazywac li-
niowe modele matematyczne opisujace fale akustyczne. W takiej sytuacji amplituda drgan
ma istotny wpływ na predkosc dzwieku [23]. Zagadnienie to jednak wykracza poza ramy
pracy, poniewaz w obecnej wersji silnika dzwiekowego nieliniowe zjawiska akustyczne nie
sa rozpatrywane.
2.3.3. Natezenie dzwieku
Natezenie jest energia fali, która przepływa w jednostce czasu przez jednostke po-
wierzchni prostopadłej do kierunku propagacji. Okreslane jest takze mianem powierzchnio-
wej gestosci mocy. Wraz z cisnieniem i predkoscia akustyczna wiaze je zaleznosc (2.11).
I(t) = p(t)u(t) (2.11)
Łaczac zaleznosci (2.11) i (2.8) natezenie fali płaskiej mozna przedstawic jako:
I(t) =p2(t)
Z(2.12)
Widac tutaj zwiazek miedzy natezeniem dzwieku i natezeniem pradu. Cisnienie akustyczne
jest analogiczne do napiecia, a impedancja charakterystyczna osrodka do impedancji obwodu
elektrycznego.
2.3.4. Poziom cisnienia akustycznego, poziom natezenia
Wartosci tych dwóch wielkosci wyraza sie w decybelach. Poziom cisnienia akustycz-
nego oznaczany jest jako Lp lub czesto takze jako SPL (ang. sound pressure level). Jest to
dziesieciokrotnosc logarytmu stosunku kwadratu cisnienia akustycznego do kwadratu war-
tosci referencyjnej oznaczanej jako p0 i wynoszacej 20 µPa. Zatem dla wartosci p0 poziom
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.3. Fale akustyczne 25
cisnienia akustycznego wynosi 0 dB 1.
Lp = 10logp2
p02= 20log
p
p0(2.13)
Poziom cisnienia akustycznego moze byc wyznaczony w dowolnej chwili czasowej. Mówi
sie wtedy o chwilowym poziomie cisnienia akustycznego. W praktyce jednak poziom wy-
znacza sie dla wartosci skutecznej cisnienia akustycznego [23]. Definicja wartosci skutecznej
została omówiona w 2.5.5.
Poziom natezenia dzwieku wyraza sie analogicznie jak w wypadku poziomu cisnienia
akustycznego. Jako wartosc odniesienia I0 przyjmuje sie 10−12 Wm2 .
LI = 10logI
I0(2.14)
2.3.5. Fala kulista
Fala kulista generowana jest przez zródło punktowe bedace izotropowa, pulsujaca sfera.
Zródło punktowe posiada stała charakterystyke kierunkowa [23]. Nazywane jest takze mono-
polem akustycznym. Pojecie monopolu akustycznego zostało wprowadzone przez H. Helm-
holtza [29]. W rzeczywistosci osiagniecie idealnej fali kulistej jest niemozliwe.
Sfera pulsujaca z czestotliwoscia f jest zródłem fali kulistej, a jej cisnienie akustyczne
jest funkcja czasu i odległosci r. Wzór (2.15) przedstawia opis matematyczny fali kulistej.
p(t, r) =Ymaxr
cos(2πf − kr) (2.15)
Znak − przed liczba falowa k oznacza propagacje zgodna ze zwrotem wektora r maja-
cego poczatek w zródle dzwieku. Przyjeta konwencja dotyczaca zapisu kierunku rozchodze-
nia sie fali została wyjasniona przy prezentacji uogólnionego opisu matematycznego w 2.2.2.
2.3.6. Pole bliskie i dalekie
W zaleznosci od odległosci od zródła dzwieku oraz długosci fali definiuje sie pole bliskie
i dalekie. Granice miedzy polem bliskim i polem dalekim fali kulistej definiuje zaleznosc
(2.16). W polu dalekim fala kulista w przyblizeniu zachowuje sie jak fala płaska.
1Wartosc 0 dB nie oznacza, ze jest to najcichszy słyszalny dzwiek. Ludzkie narzady słuchu sa w stanie
usłyszec dzwieki, dla których cisnienie akustyczne jest mniejsze od 20 µPa. Dokładniejsza analiza wykracza
jednak poza ramy pracy.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.4. Opis zjawisk akustycznych 26
rg =λ
2π(2.16)
2.4. Opis zjawisk akustycznych
Podobnie jak w przypadku fal elektromagnetycznych takze i przy propagacji fal dzwie-
kowych zachodzi wiele zjawisk takich jak interferencja, odbicie, załamanie, ugiecie, a takze
zjawisko Dopplera. Maja one zastosowanie we wszystkich zjawiskach fizycznych o falowym
charakterze. W tej sekcji zostały one krótko opisane w kontekscie fal dzwiekowych.
2.4.1. Odbicie i transmisja fali dzwiekowej
Fale akustyczne do swojej propagacji wymagaja osrodka sprezystego. Kazdy osrodek
sprezysty charakteryzuja dwie podstawowe wielkosci – predkosc propagacji dzwieku c oraz
jego gestosc ρ. Iloczyn tych wartosci jest impedancja charakterystyczna osrodka oznaczana
jako Z. Wiaze ona zaleznosc cisnienia i predkosci akustycznej fali płaskiej, co pokazano
w równaniu (2.8). W wyniku napotkania przez fale granicy osrodków (o róznej impedancji
charakterystycznej) czesc energii fali przenika do drugiego osrodka, a czesc zostaje odbita.
Rysunek 2.3: Odbicie i transmisja fali płaskiej na granicy osrodków
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.4. Opis zjawisk akustycznych 27
Rysunek 2.3 ilustruje fale padajaca oznaczona jako pI , fale odbita pR oraz fale przenika-
jaca do drugiego osrodka pT . Przyjeto, ze osrodki sa nieskonczone oraz granice miedzy nimi
wyznacza płaszczyzna x = 0. Amplitudy poszczególnych fal oznaczono kolejno przez A1,
A2 oraz A3. Impedancja fali płaskiej w scianie wynosi Z = ρaca. Wielkosc ta jest rózna od
impedancji powietrza wynoszacej ρ0c.
Poniewaz przyjmuje sie, ze jest to fala płaska, cisnienia i predkosci akustyczne wynosza
kolejno:
pI = A1ej(ωt+kx)
uI = −A1
ρ0cej(ωt+kx)
(2.17)
pR = A2ej(ωt−kx)
uR =A2
ρ0cej(ωt−kx)
(2.18)
pT = A3ej(ωt+kx)
uT = −A3
Zej(ωt+kx)
(2.19)
W powyzszych wzorach zastosowano przyjeta konwencje dotyczaca znaku przed liczba
falowa w wykładniku eksponenty, która przedstawiono w 2.2.2. W zaleznosci od kierunku
propagacji fali znak przy impedancji fali płaskiej w danym osrodku jest zgodny z kierunkiem
propagacji fali.
Zgodnie z zasada zachowania masy oraz zasada zachowania energii w dowolnej chwili
czasu na granicy osrodków spełnione sa ponizsze dwie zaleznosci.
uI + uR = uT
(pI + pR)(uI + uR) = pTuT
(2.20)
Na podstawie wzoru (2.12) natezenia poszczególnych fal wynosza:
II =A1
2
2ρ0c
IR =A2
2
2ρ0c
IT =A3
2
2Z
(2.21)
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.4. Opis zjawisk akustycznych 28
Natezeniowy współczynnik odbicia fali definiuje stosunek natezenia fali odbitej do nate-
zenia fali padajacej, stad:
|R|2 =IRII
(2.22)
Natezeniowy współczynnik odbicia zwiazany jest z natezeniowym współczynnikiem pochła-
niania α poprzez zaleznosc:
|R|2 + α = 1 (2.23)
Jeden ze sposobów pomiaru współczynnika α opisany jest w [3].
2.4.2. Dyfrakcja
Zjawisko to moze zostac najprosciej zdefiniowane jako zmiana kierunku propagacji
w wyniku napotkania przeszkody. Według zasady sformułowanej przez Christiana Huygensa
w drugiej połowie XVII stulecia [29], punkty osrodka pobudzone do drgan fala pierwotna
staja sie zródłami wtórnych fal kulistych. Dzieki zjawisku dyfrakcji mozliwe jest usłyszenie
dzwieku dobiegajacego zza uchylonych drzwi czy tez – co czesto jest powaznym problemem
– hałasu docierajacego z autostrady oddzielonej ekranem akustycznym.
Dyfrakcja zwana takze ugieciem fali jest znacznie silniejsza dla niskich czestotliwosci.
Łatwo to udowodnic na podstawie obserwacji. Za ekranem akustycznym chroniacym przed
hałasem od drogi o duzym natezeniu ruchu znacznie wyrazniej słyszane sa niskie czestotli-
wosci.
Analityczne wyprowadzenia opisujace dyfrakcje zostały tutaj celowo pominiete. Sposób
w jaki potraktowano dyfrakcje został opisany w 3.8.5 przy okazji omawiania implementacji
tego zjawiska w silniku. Zrzut ekranu z wykonanego niegdys przez autora programu do
symulacji pola akustycznego przedstawiony na rysunku 2.8 jest doba ilustracja ugiecia fali
na krawedzi.
2.4.3. Zjawisko Dopplera
Zjawisko Dopplera znane takze pod pojeciem efektu Dopplera jest bardzo czesto spoty-
kane w codziennym zyciu. Wystepuje zawsze, gdy zródło dzwieku lub odbiornik znajduja
sie w ruchu. Dla zobrazowania załozono, ze zródło emituje fale harmoniczna o stałej czesto-
tliwosci. W wypadku poruszajacego sie zródła, odległosc miedzy kolejnymi zageszczeniami
i rozrzedzeniami osrodka sprezystego zmienia sie [34]. Gdy zródło zbliza sie do odbior-
nika, fala dzwiekowa jest krótsza. Gdy zródło oddala sie – dłuzsza. W wypadku nierucho-
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 29
mego zródła dzwieku i poruszajacego sie odbiornika długosc fali jest stała, jednak w wyniku
niezerowej predkosci z jaka porusza sie odbiornik, czestotliwosc odbieranych przez niego
maksymalnych i minimalnych wartosci cisnienia akustycznego zwieksza sie lub zmniejsza.
Zalezy to od tego, czy odbiornik zbliza sie, czy tez oddala od zródła. Z tego powodu np. słu-
chajac sygnału przejezdzajacej, „trabiacej” lokomotywy łatwo dostrzec zmiane wysokosci
odbieranego dzwieku.
Czestotliwosc odbierana przez słuchacza mozna wyrazic przy pomocy wzoru (2.24).
f ′ = fc± vrc∓ vs
(2.24)
gdzie:
– f ′ – czestotliwosc fali rejestrowanej przez odbiornik
– f – czestotliwosc fali emitowanej przez zródło dzwieku
– c – predkosc rozchodzenia sie dzwieku w osrodku
– vr – predkosc odbiornika wzgledem osrodka
– vs – predkosc zródła wzgledem osrodka
Wzór (2.24) zakłada, ze w sytuacji gdy zródło i odbiornik zblizaja sie do siebie, nalezy
zastosowac znaki górne w liczniku i mianowniku. W przeciwnym wypadku, gdzie zródło
i odbiornik oddalaja sie od siebie – znaki dolne [34].
2.5. Niezbedne pojecia teorii sygnałów
2.5.1. Definicja sygnału
Sygnał moze byc rozumiany jako proces zmian pewniej wielkosci fizycznej lub stanu
obiektu fizycznego. Z tego wzgledu za modele matematyczne sygnałów jednowymiarowych
przyjmowane sa głównie funkcje, których argumentem jest czas. Przy jego pomocy mozna
zapisac przebieg napiecia w sieci energetycznej. W bardziej złozonych zagadnieniach, np.
przetwarzania obrazów, stosuje sie funkcje wielu zmiennych – czasu i współrzednych prze-
strzennych [37]. Funkcje opisujace sygnały moga przyjmowac zarówno wartosci rzeczywiste
jak i zespolone. Takie sygnały nazywa sie odpowiednio rzeczywistymi i zespolonymi. Opis
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 30
zespolony jest bardziej uniwersalny i znacznie ułatwia formalna analize sygnałów, dlatego
z powodzeniem jest wykorzystywany.
Sygnały, które interesuja autora w kontekscie niniejsze pracy opisuja przebieg cisnienia
akustycznego w funkcji czasu.
2.5.2. Klasyfikacja sygnałów
Sygnały mozna podzielic na podstawowe grupy. Podział zaproponowany w [41] przed-
stawiono na rysunku 2.4.
Rysunek 2.4: Schemat klasyfikacji sygnałów zaproponowany w [41]
Oprócz podziału zaprezentowanego na schemacie 2.4 sygnały mozna podzielic na:
1. funkcja róznych argumentów, np. czasu lub połozenia,
2. funkcje róznej liczby argumentów (wieloargumentowe, np. jedno-, dwu-, wielowy-
miarowe)
3. sygnały deterministyczne i losowe
4. sygnały analogowe i dyskretne
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 31
Sygnały deterministyczne
W dowolnej chwili czasowej przyjmuja okreslone wartosci, które mozna okreslic przy
pomocy znanych zaleznosci matematycznych. Z sygnałów tych mozna wyodrebnic dwie
podstawowe klasy: o ograniczonej energii oraz o ograniczonej mocy sredniej [41].
Sygnały losowe
Zwane takze sygnałami stochastycznymi. W wypadku tych sygnałów nie jest znana za-
leznosc matematyczna, pozwalajaca okreslic dokładna wartosc sygnału w konkretnej chwili
czasowej lub punkcie przestrzeni (w przypadku sygnałów wielowymiarowych). Dla nich
mozliwe jest jedynie okreslenie prawdopodobienstwa przyjecia poszczególnych wartosci
przez sygnał [41].
Wsród sygnałów stochastycznych mozna wyodrebnic dwie grupy – sygnały stacjonarne
i niestacjonarne. W przeciwienstwie do sygnałów niestacjonarnych, w sygnałach stacjonar-
nych podstawowe parametry statystyczne takie jak np. wartosc srednia lub odchylenie stan-
dardowe sa niezmienne w czasie.
2.5.3. Sygnały analogowe i dyskretne
Podział sygnałów na te dwie grupy ma niewatpliwie najwieksze znaczenie w przetwa-
rzaniu sygnałów.
Sygnały analogowe
Z tym typem sygnałów spotykamy sie najczesciej w naturze, np. zmiana cisnienia aku-
stycznego rejestrowany przez uszy. Cecha takich sygnałów jest to, ze dziedzina oraz przeciw-
dziedzina, w której sa okreslone sa ciagłe. W przypadku przytoczonego przykładu dziedzina
jest czas, a przeciwdziedzina cisnienie akustyczne. W wypadku mało skomplikowanych sy-
gnałów, czyli takich, których opis matematyczny jest znany, mozliwa jest ich dokładna ana-
liza. Niestety, wyznaczenie matematycznej reprezentacji np. sygnału przejezdzajacego nie-
opodal ambulansu docierajacego do autora w chwili pisania tego tekstu nie jest juz mozliwe.
Sygnały dyskretne czasu ciagłego
Dobrym przykładem obrazujacym ten rodzaj sygnałów jest muzyka odtwarzana z płyty
CD. Odczytywane próbki sa skwantowane, czyli naleza do skonczonego zbioru zawieraja-
cego wartosci dyskretne. Sygnał wyjsciowy z przetwornika A/C, który wysyłany jest nastep-
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 32
nie do głosników lub słuchawek jest sygnałem ciagłym w czasie, ale przyjmujacym dys-
kretne wartosci.
Sygnały ciagłe czasu dyskretnego
Powstaja w wyniku operacji próbkowania. Przykładem takiego dwuwymiarowego sy-
gnału jest obraz zapisany w analogowej pamieci kamery CCD. Po dokonaniu próbkowania
otrzymuje sie ciag liczb zwanych próbkami, które reprezentuja wartosc sygnału w kolejnych
chwilach czasowych. Zbiór wartosci przyjmowany przez próbki jest ciagły.
Próbkowanie moze byc równomierne i nierównomierne. W przypadku sygnałów jedno-
wymiarowych próbkowanie zachodzi zwykle w dziedzinie czasu. Przy próbkowaniu rów-
nomiernym odstep czasowy miedzy pobieranymi próbkami jest stały i nazywany okresem
próbkowania oznaczanym przez ∆t. Odwrotnoscia okresu próbkowania tak jak przy opisie
fali jest czestotliwosc próbkowania, oznaczana zwykle jako fs. Indeks s to skrót od angiel-
skiego słowa sampling oznaczajacego próbkowanie.
Sygnały cyfrowe
W ten sposób nazywane sa sygnały spróbkowane w swojej dziedzinie, a wartosci otrzy-
manych próbek zostaja poddane kwantyzacji. Po tych operacjach kolejne próbki moga przyj-
mowac tylko skonczona ilosc dyskretnych, dokładnie okreslonych wartosci. W efekcie rózne
wartosci z pewnego zakresu sygnału analogowego otrzymuja jednakowe wartosci. Skwan-
towane wartosci z reguły zapisywane sa w pamieci. Aby tego dokonac musza zostac zako-
dowane. Najczesciej stosowane kodowania to kodowanie binarne bez znaku lub ze znakiem
oraz kod uzupełnien do dwóch [41].
2.5.4. Twierdzenie o próbkowaniu
Aby podczas próbkowania nie utracic informacji zawartych w sygnale nalezy zadbac
o odpowiedni dobór odstepu czasowego, w którym pobierane sa próbki. Jego odwrotnosc to
czestotliwosc próbkowania, która okresla twierdzenie o próbkowaniu zwane twierdzeniem
Whittakera-Nyquista lub Kotielnikova-Shannona. Aby poprawnie odtworzyc informacje ze
spróbkowanego sygnału, czestotliwosc próbkowania musi byc co najmniej dwa razy wieksza
od maksymalnej czestotliwosci wystepujacej w sygnale poddanym tej operacji. W rzeczy-
wistosci czestotliwosc próbkowania musi byc co najmniej dwa razy wieksza niz szerokosc
pasma próbkowanego sygnału [28]. Jesli warunek ten nie jest spełniony, składowe czesto-
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 33
tliwosciowe próbkowanego sygnału powyzej połowy czestotliwosci próbkowania w wyniku
aliasingu beda objawiały sie jako składowe o nizszej czestotliwosci. Dla sygnałów audio,
o których mowa w niniejszej pracy, ich pasmo ogranicza sie tylko od góry. W technice audio
najczesciej stosuje sie próbkowanie o czestotliwosci 44,1 kHz (płyta CD), 4800 kHz [38]
i coraz czesciej 96 kHz oraz 192 kHz.
2.5.5. Energia i wartosc skuteczna sygnału
Ponizej przedstawiono definicje energii oraz wartosci skutecznej sygnału jednowymiaro-
wego kolejno dla sygnałów analogowych i dyskretnych. Sygnał oznaczono przez p co rózni
sie od konwencji przyjetej w literaturze. Jest to zabieg celowy. Przy rejestracji sygnałów
dzwiekowych próbkowane sa wartosci cisnienia akustycznego. Sygnały przetwarzane w sil-
niku to nagrania dzwiekowe, dlatego zastosowano zapis w formie p(t) lub p[n] dla jego
dyskretnego odpowiednika.
Znaczenie poszczególnych symboli uzytych w równaniach (2.25), (2.26), (2.27) oraz
(2.28): t – czas, T – okres, n – numer próbki, N - ilosc próbek.
Energia sygnału
E =
∞∫−∞
p2(t)dt (2.25)
E =∞∑
n=−∞
p2[n] (2.26)
Wartosc skuteczna sygnału
RMS =
√√√√√ 1
T
t0+T∫t0
p2(t)dt (2.27)
RMS =
√√√√ 1
N
n0+N−1∑n=n0
p2[n] (2.28)
Pozostałe zaleznosci pozwalajace wyliczyc inne, takze wazne wartosci zostały celowo
pominiete przez autora. Nie odgrywaja istotnego wpływu przy implementacji algorytmów
modelujacych zjawiska akustyczne w tworzonym silniku dzwiekowym.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 34
2.5.6. Transformata Fouriera
Przekształcenie Fouriera jest bez watpienia jednym z najwiekszych odkryc naukowych.
Grupa dziedzin, w których ma ona zastosowanie jest bardzo liczna i ciagle sie rozrasta.
Z powodzeniem jest wykorzystywane jako podstawowe narzedzie w analizie sygnałów. Po
dokonaniu transformacji mozna spojrzec na analizowany sygnał zupełnie z innej perspek-
tywy – od strony dziedziny czestotliwosci i dzieki temu uzyskac wiele waznych informacji
na jego temat, które nie sposób zauwazyc przed jej przeprowadzeniem.
Transformata Fouriera wraz z transformata odwrotna definiowana jest zaleznosciami
(2.29) oraz (2.30) [42].
p(f) =
∞∫−∞
p(t)e−j2πftdt (2.29)
p(t) =
∞∫−∞
p(f)ej2πftdf (2.30)
Rezultat przekształcenia Fouriera ma postac zespolona i zdefiniowany jest w dziedzi-
nie czestotliwosci. Wynik transformaty (2.31) nazywany jest powszechnie widmem sygnału
(ang. spectrum).
p(f) = <p(f) + j=p(f) = |p(f)|ejφ(f) = A(f)ejθ(f) (2.31)
gdzie kolejno |p(f)| oraz A(f) oznaczaja widmo amplitudowe, natomiast ϕ(f) i θ(f)
– widmo fazowe. Czesci rzeczywista i urojona widma zwane sa odpowiednio widmem rze-
czywistym i widmem urojonym. Kolejne zaleznosci (2.32) i (2.33) definiuja postac widma
amplitudowego oraz fazowego.
|p(f)| =√<p(f)2 + =p(f)2 (2.32)
θ(f) = arctan=p(f)
<p(f)(2.33)
W powyzszych wzorach czesci rzeczywiste i urojone liczb zespolonych zostały ozna-
czone odpowiednio przez < oraz =.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 35
2.5.7. Dyskretna transformata Fouriera
Transformacji Fouriera mozna poddawac takze sygnały dyskretne. Przekształcenie to
nazywane jest dyskretna transformata Fouriera – DFT (ang Discrete Fourier Transform).
Przekształcenie odwrotne – z dziedziny czestotliwosc do dziedziny czasu okresla sie mia-
nem IDFT (ang. Inverse Discrete Fourier Transform). Dyskretna postac tego przekształcenia
wraz z przekształceniem odwrotnym przedstawiaja wzory (2.34) oraz (2.35).
p[k] =N−1∑n=0
x[n]e−j2πNkn, k = 0, 1, 2, . . . , N − 1 (2.34)
p[n] =1
N
N−1∑k=0
p[k]ej2πNkn, n = 0, 1, 2, . . . , N − 1 (2.35)
Indeks n oznacza kolejne numery próbek sygnału. p[k] jest dyskretnym widmem sygnału
p[n], a jego próbki indeksowane sa przez k. N jest iloscia próbek sygnału, który poddaje sie
przekształceniu. Ze wzgledów praktycznych wartosc ta zawsze jest skonczona. Otrzymane
próbki podobnie jak w przypadku transformaty Fouriera dla sygnałów ciagłych maja warto-
sci zespolone. Ilosc wyjsciowych próbek jest równa ilosci próbek wejsciowych.
Warto zwrócic uwage na czynnik skalujacy 1N
wystepujacy w równaniu (2.35). W li-
teraturze dotyczacej DSP (ang. digital signal processing – cyfrowe przetwarzanie sygna-
łów) dzielenie przezN najczesciej dokonuje sie przy transformacie odwrotnej. Podobnie jest
w pakietach do zaawansowanych obliczen naukowych takich jak Matlab [2] i GNUOctave
[1]. Te sama konwencje zastosowano w tworzonym silniku dzwiekowym.
2.5.8. Złozonosc obliczeniowa DFT oraz FFT
Dokonanie DFT w formie klasycznej wymaga ogromnej ilosc obliczen. Złozonosc algo-
rytmu polegajacego na mnozeniu macierzy wynosi bowiem O(n2). W 1965 r. Cooley i Tu-
key opracowani bardzo skuteczny algorytm realizujacy DFT [14] okreslony mianem szybkiej
transformaty Fouriera, w skórcie FFT (ang. Fast Fourier Transform). Bez watpienia zrewo-
lucjonizował dziedzine przetwarzania sygnałów i pozwolił na intensywniejsze prowadzenie
badan naukowych w wielu dziedzinach. Wykorzystujac symetrie funkcji trygonometrycz-
nych (bedacych baza przekształcenia Fouriera) udało sie zredukowac ilosc obliczen i osia-
gnac ten sam efekt co w przypadku DFT, ale przy złozonosci O(nlogn) [15]. Swiadomie
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 36
pominieto tutaj opis algorytmu szybkiej transformaty Fouriera. Idea działania algorytmu zo-
stała dokładnie wyjasniona m.in. w [41, 28, 15].
W technice audio przekształcenie to jest bardzo intensywnie wykorzystywane. Opisy-
wany w pracy silnik dzwiekowy nie jest wyjatkiem. W kontekscie tej pracy, co zostanie póz-
niej pokazane, dyskretne przekształcenie Fouriera, a dokładniej jego implementacja z wyko-
rzystaniem FFT gra kluczowa role w złozonym procesie przetwarzania dzwieku. Niezbedne
jest zatem zaprezentowanie podstawowych własnosci przekształcenia Fouriera.
2.5.9. Widmo sygnałów dyskretnych
Z operacja próbkowania zwiazany jest nierozerwalnie bardzo istotny aspekt. Widmo dys-
kretnego sygnału jest okresowe i powtarza sie co N próbek (2.36). Wynika to z natury tej
operacji. Polega ono na wymnazaniu sygnału przez ciag opóznionych w czasie delt Diraca.
p[k] = p[k + nN ] (2.36)
Wystarczy znac tylko jeden okres widma aby poznac wartosci próbek sygnału przed
transformata. Jezeli sygnał został spróbkowany poprawnie (zgodnie z twierdzeniem Nyqu-
ista), to wszystkie potrzebne informacje znajduja sie w jednym okresie widma. Jeden okres
zawiera pasmo czestotliwosci −fs2≤ f ≤ fs
2, gdzie fs jest czestotliwoscia próbkowania
sygnału.
fN−12
=N − 1
2∆tN<fs2
(2.37)
fN−12
=N − 1
2∆f (2.38)
gdzie:
∆f =1
N∆t=fsN
(2.39)
Wartosci widma dyskretnego mozna odczytac tylko dla wybranych czestotliwosci okre-
slanych jako fk = k∆f , gdzie k = 0, 1, 2, . . . , N − 1. Dodatkowo spełniona jest zaleznosc
p[k] = p[k + nN ]. Połozenie skrajnych punktów musi uwzgledniac załozenia twierdzenia
o próbkowaniu. Jezeli transformowany ciag zawiera próbki sygnału o czestotliwosci róznej
od wielokrotnosci ∆f informacje o tej składowej rozłoza sie w sasiednich prazkach widma.
Zjawisko to znane jest pod nazwa przecieku widma [28].
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 37
Warto w tym miejscu wspomniec, ze transformate Fouriera, zarówno ciagła jak i dys-
kretna, mozna stosowac takze dla sygnałów wielowymiarowych – np. dla obrazów cyfro-
wych. Nie przedstawiono tutaj jednak ich definicji, poniewaz w niniejszej pracy autor ma do
czynienia z przetwarzaniem sygnałów audio.
2.5.10. Podstawowe własnosci transformaty Fouriera
Obecna sekcja prezentuje najwazniejsze cechy charakteryzujace transformate Fouriera,
które sa wykorzystywane przy przetwarzaniu sygnałów dzwiekowych w silniku. Podobnie
jak w poprzednim podrozdziale pominieto dowody oraz wyprowadzenia, poniewaz wykra-
cza to poza ramy pracy. Mozna znalezc je w bogatej literaturze dotyczacej dziedziny prze-
twarzania sygnałów, m.in. [37, 41, 28]. Prezentowane własnosci sa prawdziwe zarówno dla
transformaty sygnałów ciagłych jak i dyskretnych. Zdaniem autora zapis w postaci całek jest
czytelniejszy niz w postaci sum i z tego powodu głównie on jest wykorzystywany w przed-
stawionych ponizej równaniach.
Parzystosc widma rzeczywistego i amplitudowego oraz nieparzystosc widma uro-
jonego i fazowego
Gdy transformacie Fouriera poddany zostanie sygnał rzeczywisty, otrzymane widmo ma
wazna ceche. Jego rzeczywista czesc oraz jego moduł (widmo amplitudowe) (2.32) sa funk-
cjami parzystymi – równanie (2.40). Czesc urojona widma oraz widmo fazowe (2.33) sa
funkcjami nieparzystymi – równanie (2.41).
|p(f)| = |p(−f)| (2.40)
θ(−f) = −θ(f) (2.41)
Przekształcenie liniowe
Transformata z kombinacji liniowej sygnałów jest kombinacja liniowa transformat tych
sygnałów – (2.42).
∞∫−∞
[ap1(t) + bp2(t)]e−j2πftdt = ap1(f) + bp2(f) (2.42)
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 38
Zachowanie energii
Twierdzenie to znane jest takze pod nazwa twierdzenia Persevala. Mówi ono, ze kwa-
drat normy sygnału otrzymanego w wyniku przekształcenia Fouriera jest równy kwadratowi
normy sygnału przed przekształceniem – wzory (2.43) do (2.44). Wzór (2.45) przedstawia
twierdzenie Persevala dla sygnałów dyskretnych.
||p(f)||2L2 = ||p(t)||2L2 (2.43)
∞∫−∞
p2(t)dt =
∞∫−∞
|p(f)|2df (2.44)
N−1∑n=0
p2[n] =1
N
N−1∑n=0
p2[k], k, n = 0, 1, 2, . . . , N − 1 (2.45)
2.5.11. Splot i filtracja sygnałów
W wyniku operacji splotu dwóch sygnałów oznaczonych jako p(τ) oraz h(τ) otrzymuje
sie nowy sygnał – y(t) (2.46), (2.47).
y(t) =
∞∫−∞
p(τ)h(τ − t)dτ =
∞∫−∞
h(τ)p(τ − t)dτ (2.46)
Dla sygnałów dyskretnych:
y[n] =∞∑
k=−∞
p[k]h[n− k] =∞∑
k=−∞
h[k]p[n− k] (2.47)
Powyzsze zapisy prezentuja filtracje sygnału p przez sygnał h, lub odwrotnie – sygnału
h przez sygnał p. W efekcie uzyskany wynik bedzie identyczny. Inna nazwa tej operacji to
konwolucja (ang. convolution). Z dotychczasowych doswiadczen autora wynika, ze termin
konwolucja stosuje sie czesciej przy filtracji obrazów niz sygnałów jednowymiarowych.
Rezultatem splotu sygnałów dyskretnych o długosciach N1 oraz N2 jest ciag próbek
o długosci N1 +N2 − 1.
Iloczyn widm i splot w dziedzinie czasu
Przekształcenie Fouriera i operacje splotu łaczy bardzo wazna zaleznosc, która takze zo-
stała wykorzystana przy implementacji silnika. Wynik operacji splotu sygnałów w dziedzinie
czasu poddany transformacie Fouriera jest tym samym co iloczyn widm tych sygnałów. Co
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 39
wiecej, iloczyn sygnałów w dziedzinie czasu po transformacie Fouriera jest równy splotowi
ich widm.
Jest to takze prawda w wypadku sygnałów dyskretnych. Przemnazane widma musze
miec jednakowa długosc oznaczona przez N . Po operacji IDFT otrzymany ciag ma równiez
długosc N . Oczekiwana długoscia, jak zaznaczono powyzej, jest 2N − 1. Bardzo istotna
róznica jest fakt, ze w wypadku sygnałów dyskretnych IDFT z iloczynu ich widm jest splo-
tem kołowym. Jest on wykorzystywany w operacji tzw. szybkiego splotu opisanej w sekcji
2.5.14.
Od tego miejsca mówiac o filtracji lub splocie, oznacza to, ze mowa o sygnałach dyskret-
nych, chyba ze wyraznie zaznaczono inaczej.
2.5.12. Transformacja Z
Przekształcenie Z definiowane jest w nastepujacy sposób:
X(z) =inf∑
n=− inf
x(n)z−n (2.48)
Zmienna z przyjmuje wartosci zespolone. Z-transformata jest dyskretnym odpowiedni-
kiem transformacji Laplace’a. Warunkiem konicznym istnienia transformaty X(z) sygnału
x(n), szereg musi byc zbiezny [41, 28].
2.5.13. Filtry FIR i IIR
Filtracja sygnałów ma na celu ich zmodyfikowanie polegajace na zmianie charakterystyki
czestotliwosciowej. Filtry FIR oraz IIR sa filtrami dyskretnymi, a w praktyce cyfrowymi.
Filtr FIR (ang. finite impulse response) jest ciagiem próbek, z którymi zostaje splatany sy-
gnał poddawany filtracji. Filtry te charakteryzuja sie stabilnoscia, czyli gwarantuja, ze gdy na
wejscie układu zostanie podany sygnał o skonczonej amplitudzie, to na jego wyjsciu równiez
pojawi sie sygnał o skonczonej amplitudzie. Odpowiedz impulsowa kazdego filtru FIR jest
skonczona. Stad bierze sie jego nazwa. Dzieki wymienionym wczesniej cechom, filtry typu
FIR mozna projektowac w łatwy sposób modelujac ich pozadana charakterystyke czestotli-
wosciowa. Za ich zalete uznaje sie takze ich liniowa faze – filtr wprowadza stałe opóznienie
czasowe. Najwieksza ich wada (choc ze wzgledu na ciagle rosnaca moc obliczeniowa ukła-
dów ma to coraz mniejsze znaczenie) jest ich duza złozonosc obliczeniowa. Z reguły filtry
tego typu wymagaja stosunkowo długiej odpowiedzi impulsowej w celu uzyskania pozada-
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 40
nej charakterystyki amplitudowo-czestotliwosciowej. Wada tego rodzaju filtrów jest takze
wprowadzanie opóznienia proporcjonalnego do ilosci współczynników. Matematyczny opis
filtru FIR przedstawiaja zaleznosci (2.49) i (2.50) odpowiednio w dziedzinie czasu oraz z.
y[n] =M∑m=0
bmx[n−m] (2.49)
Y (z) = X(z)M∑m=0
bmz−m (2.50)
Transmitancja filtru FIR:
H(z) =Y (z)
X(z)=
M∑m=0
bmz−m (2.51)
Współczynniki bm wystepujace w równaniach sa kolejnymi próbkami odpowiedzi im-
pulsowej filtru FIR.
Filtry o nieskonczonej odpowiedzi impulsowej – IIR (ang. infinite impusle response) sa
tzw. filtrami rekursywnymi. Kolejne próbki sygnału wyjsciowego podawane sa ponownie na
wejscie układu. W konsekwencji filtry tego typu nie sa z definicji stabilne. Mozliwe i dosc
łatwe jest zaprojektowanie filtru IIR, którego odpowiedz impulsowa bedzie z czasem rosnac
do nieskonczonosci. Przy projektowaniu filtrów tego rodzaju nalezy szczególnie zadbac o ich
stabilnosc – bieguny transmitancji musza znalezc sie w okregu o promieniu 1 na płaszczyz-
nie z. Bieguny filtru wyznacza sie poszukujac miejsc zerowych wyrazenia znajdujacego sie
w mianowniku transmitancji H(z).
Duza zaleta filtrów IIR jest duzo mniejsza złozonosc obliczeniowa wzgledem filtrów
o skonczonej odpowiedzi impulsowej. Przy stosunkowo małej liczbie współczynników wa-
gowych bm oraz ak, duzo mniejszej niz w wypadku filtrów FIR, mozliwe jest uzyskanie bar-
dzo stromych charakterystyk amplitudowo-czestotliwosciowych. Ta zaleta ma jednak swoje
skutki uboczne w postaci nieliniowej charakterystyki fazowej. Powoduje takze dodatkowe
deformacje sygnału na wyjsciu, poniewaz opóznienia poszczególnych składowych czestotli-
wosciowych sygnału wyjsciowego sa rózne.
Projektowanie filtrów o nieskonczonej odpowiedzi impulsowej wydaje sie – zdaniem
autora słusznie – trudniejsze niz filtrów FIR. Problem staje sie jeszcze wiekszy w sytuacji,
gdy filtry musza byc tworzone automatycznie, poniewaz nalezy z troska odnosic sie do ich
stabilnosci.
Równania (2.52) oraz (2.53) opisuja filtracje w dziedzinie czasu oraz z.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 41
y[n] =M∑m=0
bmx[n−m] +N∑k=1
aky[n− k] (2.52)
Y (z) = X(z)M∑m=0
bmz−m + Y (z)
N∑k=1
aky[n− k] (2.53)
Transmitancja filtru IIR:
H(z) =Y (z)
X(z)=
∑Mm=0 bmz
−m
1−∑N
k=1 akz−k
(2.54)
W tym miejscu nie przedstawiono metod projektowanie filtrów cyfrowych. W dalszym
opisie pracy przedstawiony został sposób tworzenia filtrów o skonczonej odpowiedzi impul-
sowej modelujacych poszczególne zjawiska akustyczne. Filtrom typu IIR nie poswiecono
wiecej uwagi, poniewaz nie zostały wykorzystane przy realizacji opisywanej czesci silnika.
Warto tutaj jedynie wspomniec o szeregu istniejacych metod słuzacych do projektowania
filtrów IIR. Do bezposrednich zalicza sie metode Yule’a-Walkera. Do posrednich, w któ-
rych wykorzystywane własciwosci znane z projektowania filtrów analogowych zalicza sie
metode niezmiennosci odpowiedzi impulsowej, metode dopasowanej transformacji Z oraz
transformacje biliniowa [41].
2.5.14. Realizacja splotu przy pomocy FFT
Splot dwóch sygnałów jest kosztowna operacja. Staje sie to odczuwalne przy programo-
wej realizacji filtracji wielu sygnałów przy pomocy długich filtrów o skonczonej odpowiedzi
impulsowej. Taka sytuacja ma miejsce przy przetwarzania dzwieku w opisywanym w pracy
silniku audio. W takiej sytuacji wydajniejszym rozwiazaniem jest wykorzystanie własno-
sci, ze splot kołowy w dziedzinie czasu odpowiada iloczynowi dyskretnych widm sygnałów.
Metoda szybkiego splotu sygnałów cyfrowych realizowana jest w sposób blokowy, a nie
próbka po próbce, jak ma to miejsce w metodzie klasycznej. Decydujac sie na opisywane
tutaj rozwiazanie nalezy byc swiadomym, ze wprowadza ono wieksze opóznienie niz me-
toda klasyczna. Jest ono proporcjonalne do długosci przetwarzanego bloku próbek. Kosztem
wiekszego opóznienia mozna zaoszczedzic wiele mocy obliczeniowej, co z kolei umozliwia
równoczesne przetwarzanie wiekszej ilosci strumieni danych w czasie rzeczywistym. Taka
sytuacja ma miejsce w tworzonym w ramach pracy silniku audio.
Wylistowane ponizej pseudokody przedstawiaja sposób postepowania w celu realizacji
splotu przy pomocy FFT z zastosowaniem dwóch metod – overlap-add oraz overlap-save.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.5. Niezbedne pojecia teorii sygnałów 42
Overlap-save
h := odpowiedz impulsowa filtru FIR;
M := długosc(h);
zakładka := M - 1;
N := długosc analizowanej ramki; //najlepiej potega 2
krok := N - zakładka;
wydłuz wektor h do N próbek uzupełniajac na koncu zerami;
przyjmij sygnał wejsciowy x;
y := bufor wyjsciowy;
i := 0;
while i + N <= długosc(x)
yt := IDFT(DFT(x(1 + i : N + i)) * H);
y(1 + i : krok + i) := yt(M : N);
i := i + krok;
end
Overlap-add
h := odpowiedz impulsowa filtru FIR;
N := długosc ramki;
wydłuz wektor h do N próbek uzupełniajac na koncu zerami;
H := DFT(h);
i := 0;
x := sygnał wejsciowy;
Nx := długosc filtrowanego sygnału;
while i <= Nx
il := min(i+L-1, Nx);
// IDFT z DFT ramki sygnału pomnozonej przez
// widmo filtru
yt := IFFT(FFT(x(i:il)) * H);
k := min(i+N-1,Nx);
//dodaj nakładajace sie ramki
y(i:k) := y(i:k) + yt(1:k-i+1);
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.6. Praca z dzwiekiem na potrzeby gier komputerowych 43
i := i + L;
end
2.6. Praca z dzwiekiem na potrzeby gier komputerowych
Powstajace obecnie gry komputerowe sa z reguły bardzo rozbudowane. Juz od dawna do
wykonania dobrej gry nie wystarcza praca jednego programisty, ale za kazdy aspekt wiek-
szego projektu odpowiadaja poszczególne zespoły. Od strony technicznej takimi dziedzinami
moga sa m.in. grafika, fizyka, sztuczna inteligencja oraz dzwiek.
W celu zapewnienia mozliwie najefektywniejszej współpracy zespołu tworzacego gre
komputerowa konieczne jest istnienie odpowiedniego zestawu narzedzi. Dobrze jest, gdy
stworzone rozwiazania dotyczace np. dzwieku mozna od razu przetestowac uruchamiajac
aktualna wersje gry. Taka funkcjonalnosc takze dla dzwieku powinien zapewnic edytor gry.
Jezeli do pracy z dzwiekiem udostepnia zestaw funkcjonalnosci zblizony do programów
typu DAW (ang. digital audio workstation) staje sie bardzo wygodnym narzedziem pracy
dla sound designera. Odpowiedni dobór parametrów efektów DSP pozwala na wykreowanie
pozadanego brzmienia dla konkretnej sceny gry.
Osiagniecie imponujacych rezultatów w dalszym ciagu wymaga wytezonej pracy do-
swiadczonego sound designera. W przewazajacej wiekszosci dla kazdej próbki w zaleznosci
od kontekstu w jakim zostanie wykorzystana, wymagane jest ustawienie odpowiednich pa-
rametrów takich jak np. equalizer, kompresor, pogłos i inne2. Nawet jezeli edytor bedzie
posiadał idealny pod wzgledem wygody uzytkowania interfejs, co w praktyce jest raczej
niemozliwe, wymaga to ogromnego nakładu pracy. Aby przyspieszyc proces przygotowy-
wania odpowiednio brzmiacych próbek dzwiekowych konieczna jest automatyzacja doboru
parametrów efektów.
2.6.1. Stosowane obecnie rozwiazania do tworzenia dzwieku w grach komputero-
wych
Duze, znaczace w branzy firmy zajmujace sie produkcja gier komputerowych z reguły
posiadaja własne rozwiazania, które wykorzystuja przy tworzeniu kolejnych tytułów. Nie-
rzadko wypracowana technologia z oczywistych powodów jest okryta tajemnica.
2Opis działania wymienionych tutaj efektów przedstawiony jest np. w [38]
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.6. Praca z dzwiekiem na potrzeby gier komputerowych 44
Istnieje szereg narzedzi, które wyznaczaja standardy dotyczace tworzenia dzwieku
w grach wideo. W obecnej sekcji w skrócie przedstawiono cechy biblioteki FMOD [5] wraz
z edytorem FMOD Studio. Jest to obecnie najpopularniejsze narzedzie do tworzenia dzwieku
na potrzeby gier komputerowych.
FMOD Studio
FMOD jest bogata biblioteka udostepniajaca szereg funkcjonalnosci. Próbki dzwiekowe
moga byc przetwarzane w wielu niezaleznych kanałach z zastosowaniem róznorakich efek-
tów DSP. Biblioteka ta posiada wysokopoziomowe API bedac równoczesnie bardzo wy-
dajna. Wspomniane cechy nie sa niczym zaskakujacym.
Niewatpliwie swoja popularnosc w swiecie twórców gier wideo zyskała dzieki FMOD
Studio. Jest to zaawansowany edytor dzwieku udostepniajacy szereg funkcjonalnosci na
wzór popularnych programów typu DAW. Rysunek 2.5 prezentuje widok aplikacji.
Rysunek 2.5: Okno programu FMod Studio
Podobnie jak kazda aplikacja typu DAW udostepnia wiele kanałów, które mozna mik-
sowac ze soba. Pozwala na stosowanie efektów do korekcji barwy brzemienia, procesory
dynamiki takie jak kompresor, limiter, a takze rozmaite efekty typu chorus, reverb. Wazna
cecha jest mozliwosc definiowania krzywej zmiany głosnosci dzwieku w funkcji odległosci.
Pozwala na prace z dzwiekiem przestrzennym.
Wymienione wyzej funkcjonalnosci to tylko namiastka tego, co oferuje edytor. Waz-
nym udogodnieniem jest mozliwosc jego współpracy np. z Unreal Engine. W edytorze tego
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.7. Metody symulacji akustyki 45
silnika mozliwy jest import przygotowanych przy pomocy FMOD Studio próbek dzwieko-
wych.
Inne narzedzia
Warto wspomniec, ze FMOD nie jest jedynym rozwiazaniem. Na tym polu mozna sko-
rzystac z wielu innych bibliotek takze oferujacych szerokie mozliwosci. Przykładami takich
rozwiazan moga byc np. OpenALL, WWsie, DirectSound wchodzacy w skład DirectX ofero-
wanego przez Microsoft.
2.7. Metody symulacji akustyki
Krótkie przedstawienie wybranych sposobów symulacji pola akustycznego jest takze nie-
zbedne. Chociaz przeznaczeniem tego typu aplikacji nie sa gry, warto poswiecic im odrobine
uwagi. Implementowanie zjawisk akustycznych w tworzonym w ramach pracy silniku audio
jest scisle powiazane z symulacja.
Aplikacje do symulacji na podstawie danych wejsciowych takich jak geometria pomiesz-
czenia czy tez własciwosci akustyczne materiałów, pozwalaja na wyznaczenie liczbowych
parametrów opisujacych pole akustyczne. Moga byc nimi np. czas pogłosu (np. T-20, T-30),
C-50, C-80, okreslajacy zrozumiałosc mowy STI (ang. speech transmission index) i inne
[40]. Nacisk w tego typu narzedziach połozony jest na mozliwie najwierniejsze odzwiercie-
dlenie rzeczywistosci. Nie działaja one zatem w czasie rzeczywistym. Po prostu zwykle nie
ma takiej potrzeby.
Obecnie narzedzia do symulacji oferuja znacznie wiecej niz tylko wyznaczenie parame-
trów liczbowych. Coraz czesciej skupiaja sie one na wyznaczeniu odpowiedz impulsowej
pomieszczenia. Po splocie nagrania dzwiekowego z symulowana odpowiedzia impulsowa
mozliwe jest odsłuchanie, jak przypuszczalnie bedzie brzmiał koncert orkiestry symfonicz-
nej w dopiero co projektowanej filharmonii.
2.7.1. Metody geometryczne
Obecnie metody geometryczne sa szeroko stosowane w programach do symulacji aku-
styki pomieszczen. Przykładami takich aplikacji moga byc CATT Acoustic [10] lub Odeon
[7]. Metody geometryczne traktuja rozchodzace sie fale dzwiekowe jako promienie badz
wiazki promieni [19]. Ich ilosc zwiazana jest z zamierzona dokładnoscia symulacji. Kazdy
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.7. Metody symulacji akustyki 46
promien ma swoje zródło. W przypadku promieni pierwotnych zródłem jest punkt emitujacy
dzwiek, natomiast kazdy odbity promien posiada swoje zródło pozorne. W wyniku odbic
od powierzchni pokrytych materiałami o konkretnych własciwosciach, promienie wytracaja
swoja energie. Odbicia promieni zachodza zgodnie z prawem Snella [16]. Aby dotarcie od-
powiednio duzej ich ilosci do odbiornika było mozliwe, modeluje sie go jako sfere a nie jako
punkt. Niedoskonałosc narzedzi wykorzystujacych metody geometryczne wyraznie objawia
sie w symulacji niskich czestotliwosci. Fale, których długosc jest wieksza od wymiaru prze-
szkody sa znacznie słabiej pochłaniane. W takim wypadku nie mozna przyjac, ze zjawisko
ich odbicia zachodzi z prawem Snella.
2.7.2. Metoda elementów skonczonych
Metoda elementów skonczonych ang. finite element method bazuje na rozwiazaniu rów-
nania falowego. Traktuje wnetrze obszaru jako układ połaczonych wezłami elementów, któ-
rym odpowiada układ równan rózniczkowych lub algebraicznych, opisujacych przemiesz-
czenia uogólnione wezłów [19]. Metoda dzieli przestrzen na elementy o prostych kształ-
tach – z reguły trójkaty (w dwóch wymiarach lub czworosciany w przestrzeni trójwymia-
rowej). Przed rozpoczeciem obliczen nalezy okreslic warunki poczatkowe oraz brzegowe.
W wezłach wylicza sie wybrana wielkosc pola akustycznego, a nastepnie wykorzystujac
odpowiednio dobrane funkcje aproksymujace wielkosci wewnatrz elementów. Jako funkcje
aproksymujace przyjmuje sie zazwyczaj wielomiany niskiego rzedu [11]. Przykładem dar-
mowej aplikacji słuzacej do symulacji m.in. pola akustycznego z wykorzystaniem metody
elementów skonczonych jest Elmer FEM solver [6].
2.7.3. FDTD
Bardzo ciekawa zdaniem autora metoda, która pozwala symulowac pole akustyczne wraz
z szeregiem zachodzacych w nim zjawisk jest finite-difference time-domain. Jest uwazana za
prawdopodobnie najprostsza ze wszystkich metod falowych zarówno pod wzgledem idei,
na której sie opiera jak tez poziomu skomplikowania implementacji [35]. Pierwsze zastoso-
wanie tej metody obejmowało próbe symulacji pola elektromagnetycznego. Nadaje sie ona
takze do symulacji wszelkich innych zjawisk falowych.
FDTD zakłada równomierna dyskretyzacje czasu i przestrzeni. Kazdy krok czasowy sy-
mulacji wymaga wyznaczenia wartosci we wszystkich jej punktach. Implementacja opiera
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.7. Metody symulacji akustyki 47
sie o automat komórkowy. Stan poszczególnych komórek w kolejnych krokach symulacji
wyliczany jest na podstawie ich stanów w poprzedniej iteracji oraz stanów jej sasiadów.
W automacie komórkowym mozna wyróznic dwa rodzaje sasiedztw – von Neumana oraz
Moore’a.
Rysunek 2.6: Sasiedztwo von Neumana oraz Moore’a
Podobnie jak w kazdym automacie komórkowym takze tutaj konieczne jest okreslenie
stanu komórki oraz reguł zmian ich stanów. Przy symulacji pola akustycznego ta metoda,
na stan komórki składaja sie cisnienie akustyczne oraz wektor predkosci akustycznej. Re-
guły zmiany stanu komórek wynikaja z rozwiazania równan rózniczkowych przedstawio-
nych w formie dyskretnej, czyli równan róznicowych. W literaturze przedstawianych jest
wiele sposobów odpowiedniego dobrania parametrów w celu uzyskania mozliwe najlep-
szych wyników.
Ponizsze równania przedstawiaja rozwiazanie dla przypadku dwuwymiarowego zakła-
dajacego sasiedztwo Moore’a zaczerpniete z [24].
Vi(x, y, t+ 1) = Vi(x, y, t)− (P (x+ dx, y + dy, t)− P (x, t)) (2.55)
P (x, y, t+ 1) = P (x, y, t)− c2N∑k=1
Vk(x, y, t+ 1) (2.56)
Vi okresla predkosc w kierunku i-tego sasiada, x i y to współrzedne komórki, dx i dy
oznaczaja odległosci miedzy punktami przestrzeni. P jest wartoscia cisnienia akustycznego
w komórce.
Problemem, który nalezy rozstrzygnac sa warunki brzegowe. Najłatwiej zamodelowac
idealnie sztywna sciane, gdzie warunki brzegowe mozna przedstawic jako ∂~u∂t
= 0, gdzie ~u
jest predkoscia akustyczna. Okreslenie pola swobodnego, gdzie fala akustyczna nie bedzie
odbijała sie od granic automatu jest znacznie trudniejsze.
FDTD pozwala uzyskac dobre rezultaty dla niskich czestotliwosci, gdzie duzo słabiej
wypadaja metody geometryczne. Wyniki przestaja byc jednak poprawne dla wysokich.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.7. Metody symulacji akustyki 48
Rysunek 2.7: Rozkład cisnienia akustycznego w symulacji metoda FDTD
Górna granica czestotliwosci, które daja sie poprawnie symulowac jest nizsza od połowy
czestotliwosci próbkowania sygnału zwiazanej bezposrednio z przyjetym krokiem czaso-
wym symulacji. Granica ta zmienia sie w zaleznosci od zastosowanych reguł [25]. Metoda
poza odbiciami naturalnie symuluje dyfrakcje fali na krawedziach oraz zjawisko Dopplera.
W celu graficznej prezentacji wyników symulacji posłuzono sie zrzutami ekranu (rysunki
2.7, 2.8 oraz 2.9) z wykonanej niegdys przez autora aplikacji do symulacji pola akustycznego
opisywana metoda. Ogromna złozonosc obliczeniowa oraz zapotrzebowanie pamieciowe ak-
tualnie wykluczaja te metode z praktycznych zastosowan. Nie ma zatem mowy, aby metoda
ta była przydatna do symulacji akustyki w grach wideo.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
2.7. Metody symulacji akustyki 49
Rysunek 2.8: Symulacja odbicia oraz dyfrakcji fali z wykorzystaniem FDTD
Rysunek 2.9: Zjawisko Dopplera w symulacji metoda FDTD
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3. Projekt i implementacja
3.1. Analiza wymagan
3.1.1. Załozenia ogólne
Istotna zaleta kazdego dobrze zaprojektowanego oprogramowania jest mozliwosc jego
wielokrotnego wykorzystania w kolejnych projektach. W idealnym wypadku bez wprowa-
dzania modyfikacji. W tym celu silnik nalezy zaprojektowac w taki sposób, aby zapew-
niał wymagana funkcjonalnosc oraz umozliwiał jego ponowne wykorzystanie niezaleznie
od kontekstu w jakim zostanie uzyty w przyszłosci.
Opisywany w pracy silnik dzwiekowy tworzony w ramach projektu RAYAV jest oprogra-
mowaniem, które docelowo ma byc wykorzystywane przy produkcji gier komputerowych.
Powierzchowne okreslenie jego zadan wydaje sie oczywiste. Ma po prostu zajac sie wszyst-
kim co wiaze sie z docierajacym do gracza dzwiekiem. Wszelkie obliczenia musza byc na
tyle wydajne, aby zapewnic renderowane dzwieku w czasie rzeczywistym.
Na samym poczatku fazy projektowania biblioteki wraz z pozostałymi twórcami nale-
zało ustalic w jaki sposób silnik bedzie widziany z zewnatrz. Z punktu widzenia klienta
musi posiadac intuicyjne oraz dobrze udokumentowane API 1. W tym wypadku potencjal-
nymi klientami sa producenci gier komputerowych i pracujacy dla nich programisci. Wszyst-
kie algorytmy przetwarzania dzwieku oraz nierzadko skomplikowane struktury danych re-
prezentujace wewnetrzny stan silnika musza byc ukryte za zewnetrznym interfejsem. Taka
mozliwosc daje stosowany od samego poczatku pracy nad projektem model programowania
obiektowego – OOP (ang. object oriented programming).
Ukrycie mozliwie najwiekszej ilosci szczegółów dotyczacych implementacji pozwala
programiscie gry skupic sie jedynie na wywołaniu poszczególnych metod z odpowiednim
wartosciami argumentów. Z jego punktu widzenia istotny jest słyszalny rezultat wykonanej
1ang. application programming interface
50
3.1. Analiza wymagan 51
pracy, a nie sposób w jaki silnik wyliczy wynikowe wartosci. Ukrycie szczegółów imple-
mentacyjnych to nie jedyny powód zastosowania takiego podejscia. Ogromna ilosc oprogra-
mowania, bez wzgledu na to czy jest udostepniana za darmo czy tez komercyjnie, dystry-
buowana jest w formie binarnej, skompilowanej dla konkretnej platformy sprzetowej. Dla
sytemu Windows beda to pliki .exe, .lib lub .dll. W takiej sytuacji jedynymi zródłami, które
udostepniane sa uzytkownikowi biblioteki sa pliki .h (z jez. ang. header) lub w jezyku pol-
skim plikami nagłówkowymi stosowanych w jezykach C oraz C++. Na takie podejscie zde-
cydowano sie w opisywanym silniku audio.
3.1.2. Wymagana funkcjonalnosc z punktu widzenia przyszłego uzytkownika
Obecna wersja projektu zakłada, ze silnik odpowiada za wszystkie funkcjonalnosci zwia-
zane z dzwiekiem. Wykorzystujac SDK platformy sprzetowej, na której zostanie urucho-
miony zarzadza i obsługuje urzadzenia odpowiadajace za odtwarzanie dzwieku. Na silniku
spoczywa odpowiedzialnosc wykrycia tych urzadzen oraz odpowiednia ich konfiguracja.
Mowa tutaj szczególnie o czestotliwosci próbkowania, ilosci wymaganych kanałów oraz
o formacie kodowania próbek dzwiekowych, które beda odtwarzane. Biblioteka odpowiada
takze za obsługe dzwieku przestrzennego w zaleznosci od zastosowanego zestawu głosniko-
wego. Musi obsługiwac wszystkie popularne systemy: 2.0, 2.1, 5.1, 7.1 oraz słuchawki.
Kolejnym istotnym zadaniem jest zarzadzenie zasobami, głównie karta dzwiekowa.
Wazna jest maksymalna optymalizacja wykorzystania procesora CPU (ang. central proces-
sing unit), watków dostepnych dla danej platformy oraz dostepnej pamieci. Nie wolno tutaj
zapominac, ze dzwiek jest tylko jednym z elementów gry. Poza nim duzo bardziej kosz-
towna obliczeniowo jest grafika badz fizyka gry. Ilosc zasobów zuzywanych przez silnik
powinna byc zatem mozliwie najmniejsza. Dodatkowo biblioteka musi zadbac o ładowanie
i zwalnianie zasobów takich jak pliki dzwiekowe, sceny, materiały, prekalkulowane efekty
dzwiekowe.
Z punktu widzenia programisty programujacego gre komputerowa konieczne jest udo-
stepnienie mozliwosci definiowania dowolnej ilosci zródeł dzwieku. Kazde z nich musi
posiadac konkretna charakterystyke, np. kierunkowosc oraz przypisana konkretna próbke
dzwiekowa. Niezbedna jest mozliwosc ustalenia ich trajektorii oraz oprogramowania ich re-
akcji na poszczególne zdarzenia wystepujace w swiecie gry.
Oczywista funkcjonalnoscia jest równiez ustalenie poszczególnych cech odbiornika.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.2. Załozenia techniczne 52
Musi pozwolic na jego przemieszczanie oraz obrót w dowolny sposób. Zmiana połozenia
zarówno odbiornika jak i zródeł musi wpływac na koncowy efekt dzwiekowy docierajacy do
słuchacza.
Efekty dzwiekowe rejestrowane przez uzytkownika zaleza nie tylko od połozenia i in-
nych cech zwiazanych ze zródłami dzwieku i odbiornikiem. Równie wazny jest tutaj cały
wirtualny swiat, w którym bedzie toczyc sie rozgrywka. Kluczowa role odgrywa geometria
sceny wraz z własciwosciami akustycznymi materiałów, z których jest ona wykonana.
3.2. Załozenia techniczne
3.2.1. Platformy sprzetowe
Poniewaz jest to silnik audio dedykowany na potrzeby gier wideo, konieczna jest tro-
ska, by zapewnic mu mozliwosc wydajnego działania na wszystkich wiodacych platformach
sprzetowych. Podstawowa, na której obecnie rozwijany jest silnik sa komputery klasy PC.
W przyszłosci zakres obsługiwanych platform powinien objac takze konsole Xbox 360 firmy
Microsoft, Sony PlayStation 3 oraz oczekiwane Xbox One i PlayStation 4.
Do wykonania obliczen w czasie rzeczywistym niezbedny jest jeden fizyczny rdzen pro-
cesora CPU. W trakcie realizacji okazało sie, ze pomocne moze okazac sie wykorzystanie
w niewielkim stopniu GPU (ang. general-purpose processing unit). Ze wzgledu na swoja ar-
chitekture nowoczesne karty graficzne wydajniej radza sobie z realizacja wielu problemów
obliczeniowych, które moga byc wykonywane równolegle.
3.2.2. Narzedzia programistyczne i biblioteki
Projekt silnika od poczatku zakładał samodzielna realizacje wszystkich wyzwan pro-
gramistycznych dotyczacych implementacji poszczególnych algorytmów. Dotyczy to za-
równo propagacji wiazek, tworzenia filtrów na potrzeby modelowania poszczególnych zja-
wisk akustycznych, DSP, a takze obsługi dzwieku przestrzennego. Oczywiscie do obsługi
karty dzwiekowej skorzystano z gotowego Core API dla Windows.
Wyjatkiem jest algorytm FFT. Odgrywa on kluczowa role w przetwarzaniu sygnału au-
dio. Jego samodzielna implementacja wymagałaby duzego nakładu pracy, który mozna było
przeznaczyc na realizacje innych zadan. Chcac osiagnac mozliwie najwieksza wydajnosc
posłuzono sie biblioteka FFTW, która wykorzystywana jest m.in. w pakiecie Matlab [4].
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.3. Koncepcja działania silnika 53
Kod całego silnika pisany jest z wykorzystaniem jezyka C++. Za wyborem przemawia
jego wysoka wydajnosc oraz fakt, ze jest to główny jezyk programowania wykorzystywany
przy tworzeniu gier wideo [20]. Ostatni standard jezyka (oznaczany jako C++11 lub C++0x)
wprowadza wiele udogodnien [36], które pozwalaja szybciej tworzyc znacznie czytelniejszy,
wydajniejszy i łatwiejszy w utrzymaniu kod.
Głównym kompilatorem uzywanym w projekcie jest Visual C++ 11 oraz zintegrowane
srodowisko programistyczne (ang. IDE – integrated development environment) Microsoft
Visual Studio 2012. Do wersjonowania kodu zródłowego projektu posłuzono sie systemem
kontroli wersji Git [8].
3.3. Koncepcja działania silnika
Diagram czynnosci na rysunku 3.1 w sposób bardzo ogólny przedstawia sekwencje ko-
lejnych operacji prowadzacych do generowania dzwieku przez silnik.
3.3.1. Propagacja wiazek
Silnik audio działa w oparciu o metody geometryczne, o których wspomniano przy okazji
opisu metody symulacji pola akustycznego w 2.7.1. Rozchodzenie sie dzwieku symulowane
jest przy pomocy metod sledzenia wiazek (ang. beam tracing) oraz sledzenia promieni (ang.
ray tracing). Mimo wad tego podejscia jest ono najbardziej odpowiednie. Tylko w ten sposób
po zastosowaniu odpowiednich uproszczen mozliwe jest symulowanie dzwieku w czasie
rzeczywistym.
Pojedyncza wiazka geometrycznie modelowana jest przez ostrosłup o podstawie czwo-
rokata. Wierzchołek ostrosłupa reprezentuje zródło emitujace dzwiek, który nastepnie trans-
portowany jest przez wiazke. Obszar kazdej wiazki, w której słyszany jest dzwiek ograni-
czony jest przez dwie płaszczyzny, które oznaczono na rysunku 3.2 odpowiednio kolorem
niebieskim oraz zielonym. Z kazdego zródła, w zaleznosci od jego charakterystyki kierunko-
wej, generowana jest grupa wiazek w poszczególnych kierunkach. W obecnej implementacji
dostepne sa jedynie zródła wszechkierunkowe emitujace fale kulista (2.3.5). Zastały one za-
modelowane jako szesciany. Wierzchołek kazdej wiazki umieszczony jest w jego srodku,
natomiast słyszalne czesci wiazek znajduja sie poza nim. Kazda ze scian bryły jest czescia
płaszczyzny oznaczonej na rysunku 3.3 kolorem fioletowym. Zródło wszechkierunkowe ge-
neruje zatem szesc jednakowych wiazek. Ilustruje to rysunek 3.3.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.3. Koncepcja działania silnika 54
Rysunek 3.1: Diagram czynnosci obrazujacy działanie silnika
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.3. Koncepcja działania silnika 55
Rysunek 3.2: Wyglad pojedynczej wiazki reprezentujacej fale dzwiekowa
Wiazki propagujace sie w scenie napotykaja na przeszkody, od których moga sie od-
bic. W wyniku powstaja kolejne wiazki reprezentujace fale odbite. Beamy, które napotkały
krawedzie generuja wiazki dyfrakcyjne. Kolejne wiazki powstaja takze w wyniku transmi-
sji dzwieku przez sciany. Na rysunku 3.5 w uproszczony sposób zaprezentowano wiazke
pierwotna oraz wiazki powstałe w wyniku kolejnych odbic, transmisji oraz dyfrakcji.
3.3.2. Modele zjawisk akustycznych
W wyniku tworzenia kazdej nowej wiazki jako skutek obicia lub innych wspomnia-
nych zjawisk nastepuje zmiana charakterystyki czestotliwosciowej dzwieku. Z przebyciem
konkretnej odległosci przez fale dzwiekowa wiaze sie jego modyfikacja spowodowana tłu-
mieniem powietrza, a takze spadek amplitudy wraz ze zwiekszaniem odległosci od zródła
dzwieku. Charakterystyka czestotliwosciowa sygnału zmienia sie równiez w wyniku odbicia,
transmisji oraz ugiecia fali na krawedzi. W wypadku zjawiska odbicia i transmisji zmiany te
zaleza bezposrednio od własciwosci akustycznych materiałów, z których zbudowane sa po-
szczególne elementy sceny. Efekt dyfrakcji zalezy od odległosci zródła oraz odbiornika od
krawedzi, a takze katów padania promieni reprezentujacych fale bezposrednia i dyfrakcyjna.
Kazda wiazka posiada wiedze o zjawisku akustycznym, w wyniku którego powstała, oraz
o zmianie charakterystyki czestotliwosciowej sygnału jaki ze soba niesie.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.3. Koncepcja działania silnika 56
Rysunek 3.3: Widok okna pierwszej wersji aplikacji wizualizujacej propagacje wiazek w sil-
niku – wiazki generowane przez zródło wszechkierunkowe
Efekty statyczne takie jak odbicie i transmisja zwiazane sa bezposrednio z własciwo-
sciami materiałów i sa wyliczane raz w momencie ładowania sceny. Moga zostac przypi-
sane do wiazek juz na etapie ich generowania. Efekty dynamiczne, czyli pochłanianie przez
powietrze oraz dyfrakcja wyznaczane sa na etapie liczenia sciezek propagacji dzwieku ze
zródeł do odbiornika. Ma to miejsce przy syntezie dzwieku.
3.3.3. Synteza dzwieku
Kolejnym etapem jest synteza wszystkich dzwieków słyszalnych w punkcie odbioru. Dla
kazdej z docierajacych do odbiornika wiazek wyliczana jest odpowiedz impulsowa filtru sy-
mulujacego zmiane parametrów dzwieku na przebytej drodze miedzy zródłem i słuchaczem.
Finalny filtr generowany jest na podstawie wystepujacych kolejno po sobie poszczególnych
zjawisk. Znajac długosc przebytej drogi dla kazdej wiazki wyliczany jest czas po którym
dzwiek dobiegnie do słuchacza. Wszystkie wygenerowane wiazki posiadaja swoje zródło po-
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.4. Uzasadnienie przyjetej metody postepowania 57
zorne co pozwala zlokalizowac kierunek, z którego dochodza poszczególne sygnały. Na tej
podstawie symulowany jest efekt przestrzennosci, który liczony jest na dwa sposoby w za-
leznosci od uzytego zestawu odsłuchowego. Wszystkie otrzymane sygnały sa ostatecznie
miksowane, a nastepnie po odpowiedniej konwersji kolejkowane w buforze karty dzwieko-
wej w celu odtworzenia dzwieku na skonfigurowanym wczesniej systemie głosników lub
słuchawkach.
3.4. Uzasadnienie przyjetej metody postepowania
Krótki opis zamieszczony w 2.6.1 oraz 2.7 obrazuje skrajne podejscia do tematu dzwieku
w grach komputerowych i symulacjach. Obecne rozwiazania w silnikach dzwiekowych,
mimo iz bez watpienia sa zaawansowane, wymagaja bardzo duzego wkładu pracy. Osiagnie-
cie realizmu jest mozliwe wyłacznie dzieki umiejetnosciom i doswiadczeniu osoby kreujacej
dzwiek na potrzeby gry. Brakuje w nich pełnej automatyzacji polegajacej na dobraniu para-
metrów wszystkich efektów na podstawie geometrii sceny. Z tego powodu całkiem realna
jest sytuacja, w której gracz bedzie znajdował sie w ciasnym, wytłumionym pomieszcze-
niu, jednak wszystkie otaczajace go odgłosy beda brzmiały jak w kosciele ze specyficznym
dla siebie pogłosem. Pomijajac wyjatki gdzie taki własnie moze byc zamysł twórcy, tego
typu sytuacje sa niepozadane. Z kolei chcac osiagnac realistyczne brzmienie, niezbedne jest
dobranie własciwych próbek dzwiekowych wraz z poprawnym ustawieniem efektów dzwie-
kowych w edytorze. To natomiast wymaga od projektanta duzej ilosci czasu oraz niemałego
doswiadczenia.
Proponowane rozwiazanie jest symulacja. Poniewaz musi odbywac sie ona w czasie rze-
czywistym, równoczesnie pozwalajac na równoległe działanie innych elementów gry, jej zło-
zonosc obliczeniowa musi byc mozliwe najmniejsza. Aby to osiagnac nalezy przyjac wiele
uproszczen. Nie jest ona zatem dokładna, ale wystarczajaca na potrzeby gier wideo. W ak-
tualnej wersji skupiono sie na odwzorowaniu najwazniejszych zjawisk fizycznych dotycza-
cych akustyki. Sa nimi pierwsze odbicia dzwieku, transmisja przez przeszkody, pochłanianie
przez osrodek, w którym nastepuje propagacja dzwieku oraz załamanie fali na krawedziach.
Na tak otrzymany dzwiek nakładany jest pózny pogłos wyliczany na podstawie statystyk.
Zagadnieniu póznego pogłosu nie poswiecono w tej pracy uwagi.
Dalsza czesc rozdziału poswiecona jest czesc implementacyjnej omówionych wyzej wy-
magan i załozen.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.5. Reprezentacja zjawisk akustycznych w silniku 58
3.5. Reprezentacja zjawisk akustycznych w silniku
Poszczególne zjawiska akustyczne w tworzonym silniku dzwiekowym reprezentowane
sa ostatecznie przez filtry o skonczonej odpowiedzi impulsowej o stałej, z góry ustalonej
długosci. Charakterystyka czestotliwosciowa filtrów docelowo symuluje konkretne zdarze-
nia dzwiekowe takie jak odbicie dzwieku, transmisja, jego pochłanianie przez powietrze oraz
dyfrakcja.
3.5.1. Efekt jako model zjawiska akustycznego
Pojedyncze zjawiska akustyczne wystepujace w wirtualnej scenie modelowane sa
jako obiekty klasy Effect. Obiekty tej klasy reprezentuja aproksymacje charakterystyki
amplitudowo-czestotliwosciowej. Aproksymacja ta zawiera informacje o zmianie amplitudy
sygnału w poszczególnych pasmach oktawowych. Pasma te zawieraja sie w zakresie 63,
125, 250, 500, 1000, 2000, 4000, 8000 oraz 16000 Hz. Dodatkowo zawarta jest informacja
o składowej stałej (0 Hz). Nie wnosi ona istotnych informacji, ale jest przydatna podczas
interpolacji dla niskich czestotliwosci, która zostanie omówiona pózniej. Dodatkowo kazdy
efekt posiada swój hash bedacy liczba pierwsza, który zostaje uzyty przy optymalizacji skła-
dania efektów w procesie syntezy.
Wartosci współczynników stanowiacych aproksymacje charakterystyki amplitudowej re-
prezentowane sa przez liczby zmiennoprzecinkowe pojedynczej precyzji w zakresie od 0 do
1. Dla kazdego efektu współczynniki umieszczone sa w ciagłym obszarze pamieci. W obec-
nej implementacji liczby te znajduja sie kontenerze klasy std::vector dostepnego w bibliotece
standardowej jezyka C++. W wypadku znanej z góry liczby elementów, jak ma to miejsce
tutaj, lepszym wyborem byłaby po prostu dziesiecioelementowa tablica. Klasa ta jednak zo-
stała zaprojektowana zanim ustalono, ze kazdy efekt bedzie posiadał stała liczbe współczyn-
ników i jest to poniekad zaszłosc historyczna, która zostanie zmieniona w procesie optyma-
lizacji. W obecnej wersji nie ma to istotnego znaczenia.
3.5.2. Materiały akustyczne
Niezwykle waznym czynnikiem determinujacym warunki akustyczne w scenie gry sa
materiały, którymi pokryte sa elementy geometrii wirtualnego swiata. Własciwosci aku-
styczne materiału wpływaja na sposób, w jaki bedzie on odbijał i pochłaniał dzwiek, a takze
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.5. Reprezentacja zjawisk akustycznych w silniku 59
jaka izolacyjnosc akustyczna jest w stanie zapewnic wykonany z niego element sceny. Ich
istotny wpływ nie moze zatem zostac zaniedbany przy implementacji modułu efektów w sil-
niku.
W grafice komputerowej materiały, którymi pokryte sa poszczególne elementy geometrii
sceny reprezentowane sa przy pomocy tekstur. Musza one zawierac informacje m.in. o sposo-
bie odbicia i rozproszenia swiatła oraz ich przezroczystosci. Chcac osiagnac wysoki poziom
realizmu czesto stosowane sa tekstury, które po prostu sa fotografiami materiału wystepuja-
cego w rzeczywistosci. Miedzy innymi dlatego na obecnym etapie mozliwe jest osiagniecie
wysokiego realizmu w renderowanych obrazach.
Analogicznie do grafiki komputerowej w kontekscie silnika audio niezbedne okazuja sie
tekstury akustyczne. Dzwiek podobnie jak swiatło ulega szeregowi zjawisk – odbiciu, za-
łamaniu i wielu innym. Niestety w tym wypadku dostep do tekstur akustycznych stał sie
niemozliwy. Obecnie nie ma standardu zapisu materiałów, który mógłby byc wykorzystany
w aplikacjach do symulacji akustyki. Tym bardziej trudno oczekiwac takiego rozwiazania
dla potrzeb gier komputerowych. Stworzenie dokładnej bazy dla wielu materiałów byłoby
bardzo kosztowne. Dodatkowo nalezałoby dostosowac jej format do metody przeprowadza-
nia symulacji.
Materiały akustyczne poddawane sa badaniom i pomiarom, które wykorzystywane sa
chociazby w budownictwie. Nie sa one jednak bardzo szczegółowe, poniewaz do takich za-
stosowan nie jest to wymagane. Najczesciej mierzona wielkoscia jest w tym wypadku pogło-
sowy współczynnik pochłaniania. Pomiary dokonywane sa dla próbek o odpowiednio duzej
powierzchni w komorze pogłosowej. Poniewaz przyjmuje sie, ze w komorze pogłosowej ist-
nieje rozproszone pole akustyczne, wartosci te sa usredniane dla wszystkich katów padania
dzwieku. Wartosci mierzonego współczynnika pochłaniania znajduja sie w zakresie 0 – 1
i wyznaczane sa dla pasm oktawowych od 125 Hz do 4 kHz [3]. Pogłosowy współczynnik
pochłaniania oznaczany jest jako α.
Trudno znalezc wieksza ilosc współczynników pozwalajacych dokładniej opisac własci-
wosci akustyczne materiałów. W obecnej wersji mozliwe jest wykorzystanie nastepujacych
wielkosci charakterystycznych:
– wartosci pogłosowego współczynnika pochłaniania w pasmach oktawowych: 63, 125,
250, 500, 1 k, 2 k oraz 4 kHz
– gestosc
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.6. Architektura modułu efektów 60
– grubosc
– moduł Younga
– predkosc propagacji dzwieku
– współczynnik tłumienia materiału η
Na potrzeby silnika stworzono baze materiałów o róznych własciwosciach. Obejmuje
ona materiały takie jak: drewno, kosta brukowa, beton, szkło, dywan i inne. Kazdy materiał
zdefiniowany jest w pliku tekstowym, którego format przedstawiono na ponizszym listingu.
# Material data file. Version 1.0
Name="Concrete"
Alphas="0.36 0.44 0.31 0.29 0.39 0.25 "
SoundSpeed="343"
Density="850"
YoungModulus="3.8E9" # Young modulus in Pa
Thickness="0.3" # in meters
PoissonCofficient="0.2"
Eta="0.008" # material damping coefficient
Przy tworzeniu bazy swiadomie zrezygnowano z binarnego formatu zapisu danych. Czas
wczytywania plików tekstowych oraz ich parsowanie w celu odczytania potrzebnych warto-
sci jest z reguły dłuzszy niz plików binarnych. W tworzonym silniku nie ma to znaczenia,
poniewaz potrzebne materiały wczytywane sa z plików tylko raz w momencie ładowania
sceny. Dzieki temu podejsciu mozliwa jest reczna edycja plików przez uzytkowników nie
bedacych programistami. Dodatkowo tworzenie i edycja plików nie wymaga uzycia osob-
nego edytora, który musiałby zostac napisany specjalnie w tym celu.
3.6. Architektura modułu efektów
Mozliwosc współpracy modułu efektów z pozostałymi elementami funkcjonalnosci sil-
nika zapewnia klasa EffectsManager. Jest ona fasada [17] dla innych klas, których funkcjo-
nalnosc nie musi, a poprawnie pod wzgledem projektowania obiektowego wrecz nie powinna
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.6. Architektura modułu efektów 61
byc znana i widoczna na zewnatrz. Diagram na rysunku 3.4 przedstawia relacje miedzy kla-
sami w module efektów.
Rysunek 3.4: Struktura klas modułu efektów
Autor wyszczególnił na diagramie jedynie najbardziej istotne informacje. Swiadomie
zrezygnowano z prezentacji pól klas oraz sygnatur metod aby nie zatrzec czytelnosci sche-
matu. Mało znaczace klasy pomocnicze takze zostały pominiete.
EffectsManager
Jest to główna klasa czesci odpowiedzialnej za efekty i modelowanie zjawisk akustycz-
nych w silniku. Wewnetrznie zajmuje sie zarzadzaniem przechowywanymi efektami i mate-
riałami. Interfejs klasy umozliwia pobranie efektu, który został prekalkulowany w momen-
cie inicjalizacji obiektu, badz tez zlecenie stworzenia dynamicznego efektu wykorzystujac
fabryke efektów. Na potrzeby obsługi dzwieku przestrzennego przy odsłuchu binauralnym
(z wykorzystaniem słuchawek) zwraca odpowiednie zestawy filtrów.
MaterialsManager
Klasa ta jest kontenerem, który przechowuje materiały nazywanymi na potrzeby silnika
teksturami akustycznymi. Wczytuje własciwosci materiałów z plików tekstowych korzy-
stajac z obiektu klasy MaterialsReader. Wewnetrznie wykorzystuje dwie tablice hashujace
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.6. Architektura modułu efektów 62
[15] (obiekty klasy std::unordered_map). Pierwsza mapuje nazwy materiałów na ich iden-
tyfikator. Druga przechowuje materiały, które mozna odczytac przy pomocy identyfikatora.
Udostepnia metody pozwalajace uzyskac materiał zarówno na podstawie jego nazwy jak
i identyfikatora.
EffectsFactory
Przy pomocy konkretnych metod zwraca obiekty klasy Effect reprezentujace poszcze-
gólne zjawiska akustyczne. Sposoby postepowania przy wyliczaniu efektów przedstawiono
w dalszej czesci rozdziału. Sygnatura przykładowej metody tworzacej efekt odbicia dzwieku
od konkretnego materiału wyglada nastepujaco:
void createReflectionEffect(const Material& material,
Effect& effect) const;
Zdaniem autora przyjety sposób zwracania rezultatu z funkcji wymaga krótkiego ko-
mentarza. W jezyku C++ metody fabryczne z reguły zwracaja wskaznik na utworzony przed
chwila na stercie obiekt. W obecnej wersji silnika klasa ta nie implementuje wzorca pro-
jektowego Factory [17]. Nie ma to sensu, poniewaz obecnie nie istnieje hierarchia klas dla
typu Effect. Nazwa klasy to zaszłosc historyczna. W tym wypadku, podobnie jak w wielu in-
nych miejscach, postanowiono minimalizowac tworzenie obiektów na stercie. Najwazniej-
szym powodem jest tutaj ochrona przed potencjalnymi wyciekami pamieci wykorzystujac
mechanizm RAII2 (ang. resource acquisition is initialization) [36]. Dzieki temu programi-
sta jest zwolniony z obowiazku wywołania operatora delete. Nie jest to jedyny powód. Stos
zachowuje sie bardziej deterministycznie niz sterta, dzieki czemu chroni przed (tutaj prawie
niemozliwa, ale stajaca sie realnym problemem w wypadku czestej alokacji i dezalokacji
duzych obiektów) defragmentacja pamieci.
W jezyku C++ poza wymienionymi wczesniej dwoma sposobami zwracania obiektu
z funkcji, istnieje jeszcze sposób standardowy – zwracanie przez wartosc. Wymaga on jed-
nak wywołania konstruktora, nastepnie konstruktora kopiujacego i destruktora obiektu stwo-
rzonego w funkcji.3 Standard C++11 wprowadza konstruktory przenoszace (ang. moving
constructor), który pozwala uniknac kopiowania. Wymaga to jednak implementacji takiego2Moze wydawac sie kwestia sporna, czy jest to rzeczywiscie RAII. W literaturze dotyczacej programowania
w C++ (np. [30]) stosuje sie ten mechanizm w celu zapewnienia zwolnienia zasobów takich jak np. mutexy.
Zdaniem autora pojecie to jest uzyte trafnie przyjmujac, ze zasobem jest pamiec.3Operacja ta moze byc zoptymalizowana przez kompilator, jednak nie nalezy na to liczyc.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.7. Modelowanie propagacji dzwieku 63
konstruktora w klasie efektu. Chociaz nie jest to czasochłonne, swiadomie zrezygnowano
z tego rozwiazania m.in. dlatego, ze obecnie nie wszystkie kompilatory obsługuja najnow-
szy standard jezyka.
HrtfContainer
Wykorzystywana w wypadku odsłuchu binuralnego (przy pomocy słuchawek). Przecho-
wuje filtry odpowiedzialne za modelowanie kierunku, z którego dzwiek dotrze do słucha-
cza. Pozwala na pobranie filtru dla lewego i prawego ucha słuchacza na podstawie katów
w płaszczyznie horyzontalnej i wertykalnej. Bank filtrów wczytywany jest z pliku binarnego
zawierajacego filtry wyrazone w dziedzinie czestotliwosci. Do wczytania bazy wykorzystuje
obiekt klasy HrtfReader. Filtry przechowywane sa w tzw. tablicy przeszukiwan (ang. lookup
table). Dzieki temu po otrzymaniu pary katów definiujacych kierunek dochodzenia dzwieku
do słuchacza, mozliwe jest wskazanie konkretnej pary filtrów przy pomocy kilku prostych
operacji arytmetycznych na liczbach zmiennoprzecinkowych.
3.7. Modelowanie propagacji dzwieku
Rozchodzenie sie fal dzwiekowych w scenie symulowane jest przy pomocy wiazek.
Kazda z nich niesie w sobie teoretycznie nieskonczona ilosc promieni. Takie podejscie za-
pobiega aliasingowi, który wystepuje w przypadku zastosowaniu samych promieni, nawet
w bardzo duzej ilosci. W obecnej wersji biblioteki sledzenie wiazek odbywa sie od zródła
do słuchacza. Sa one implementowane podobnie jak frustum w grafice komputerowej. Po
napotkaniu na płaszczyzne powstaja nowe wiazki, które reprezentuja wiazki odbite, prze-
chodzace na druga strone materiału wiazki transmisyjne oraz wiazki dyfrakcyjne. Proces
generowania wiazek symulujacych rozchodzenie sie dzwieku przedstawiono na rysunku 3.5.
Kolejne liczby od 0 do 2 w wiazkach przedstawiaja numer generacji wiazki. Wartosc 0 ozna-
cza wiazke pierwotna wychodzaca ze zródła dzwieku.
Kazda z wiazek powstaje jako wynik konkretnego zjawiska akustycznego. Musi zatem
posiadac informacje na jego temat. Rozwiazano to przy pomocy pola w klasie Beam, które
przechowuje identyfikator konkretnego efektu, który nastepnie moze zostac pobrany przy
pomocy odpowiedniej metody z klasy EffectsManager.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.7. Modelowanie propagacji dzwieku 64
Rysunek 3.5: Rozchodzenie sie wiazek w scenie
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 65
3.8. Modelowanie zjawisk akustycznych
Przed opisem sposobu w jaki wyliczane sa współczynniki aproksymujace charaktery-
styke amplitudowo-czestotliwosciowa poszczególnych efektów akustycznych nalezy podzie-
lic je na dwie grupy – statyczne i dynamiczne. Efekty statyczne zwiazane sa bezposrednio
z własciwosciami materiału. Efekty dynamiczne zaleza od długosci sciezki, jaka przebył
dzwiek docierajacy ze zródła do słuchacza, a takze kat padania promieni dzwiekowych na
krawedz przy modelowaniu dyfrakcji.
Efekty statyczne sa wyliczane tylko raz. Dzieje sie to w momencie ładowania konkret-
nego materiału.
3.8.1. Odbicie dzwieku
Pierwszy etap modelowania zjawiska odbicia ma miejsce w momencie wyliczania
wiazki. Przy tworzeniu wiazki odbitej korzysta sie z prawa Snella znanego z optyki. Na
jego podstawie stwierdza sie, ze kat padania pierwotnej fali dzwiekowej wzgledem nor-
malnej do płaszczyzny jest równy katowi fali odbitej. Wynika z tego zaleznosc, ze zródło
pozorne wiazki odbitej jest symetrycznym odbiciem punktu bedacego zródłem wiazki pier-
wotnej wzgledem płaszczyzny, na której nastapiło zjawisko (rys. 3.6). Dla tworzonej wiazki
odbitej nalezy dopisac identyfikator efektu reprezentujacego odbicie od danego materiału.
Identyfikator ten odczytywany jest bezposrednio z materiału, do którego odbiła sie wiazka.
Efekt odbicia został wyliczony i przypisany do materiału na etapie prekalkulacji w momen-
cie ładowania sceny.
Efekt reprezentujacy charakterystyke czestotliwosciowa fali odbitej liczony jest na pod-
stawie wartosci pogłosowego współczynnika pochłaniania dzwieku, który zapisany jest
w obiekcie materiału. Współczynnik pochłaniania dzwieku mierzony jest dla szesciu pasm
oktawowych od 125 Hz od 4 kHz [3]. Effect wymaga okreslenia dziesieciu współczynni-
ków, czyli dodatkowo oktaw o czestotliwosci srodkowej wynoszacych kolejno 63 Hz, 8 kHz,
16 kHz oraz składowej stałej. W tym celu nalezy dokonac ekstrapolacji pogłosowego współ-
czynnika pochłaniania. Dla wiekszosci materiałów współczynnik α rosnie wraz z czestotli-
woscia. Dobór odpowiedniego sposobu interpolacji nie jest sprawa łatwa. Nie jest zawsze
taki sam i zalezy od własciwosci konkretnego materiału.
Pierwszym i zarazem najłatwiejszym w implementacji pomysłem jest ekstrapolacja
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 66
Rysunek 3.6: Wiazka odbita wraz ze zródłem pozornym
współczynników w sposób liniowy. Wartosci ograniczane sa do zakresu 0 - 1. Dla pasm
ponizej 125 Hz nałozono dodatkowe ograniczenie – współczynnik pochłaniania nie moze
byc wyzszy niz dla wyzszego pasma. Po dokonaniu testów odsłuchowych otrzymany efekt
okazał sie satysfakcjonujacy.
Po okresleniu współczynnika pochłaniania dla wszystkich wymaganych 10 pasm wy-
znacza sie współczynniki odbicia. Punktem wyjscia jest zaleznosc (2.23). Na jego postawie
wyznaczany jest stosunek amplitudy cisnienia akustycznego fali odbitej do amplitudy cisnie-
nia akustycznego fali padajacej.
|R| =√
1− α (3.1)
Wartosc współczynnika |R| znajduje sie w przedziale 0 - 1. Oznacza to, ze dla |R| = 1
nastepuje pełne odbicie, natomiast dla |R| = 0 nie powstaje fala odbita.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 67
Rysunek 3.7: Efekt odbicia dla róznych materiałów
W rzeczywistosci wartosc współczynnika odbicia zalezy takze od innych czynników,
np. kata padania fali dzwiekowej oraz porowatosci materiału [27]. W obecnej wersji biblio-
teki odbicie dzwieku od danego materiału jest zawsze jednakowe. Zaniedbano tutaj wpływ
kata padania wiazki oraz porowatosc materiału. Taka decyzja spowodowana jest brakiem
dostepnosci wystarczajacej ilosci danych. Okazuje sie jednak, ze przy przyjetym sposobie
symulacji i zastosowanych uproszeniach, dokładniejsze modelowanie nie jest konieczne.
Autor ma swiadomosc, ze zjawisku odbicia dzwieku towarzyszy takze jego rozproszenie.
W obecnej wersji zostało ono zaniedbane. Wynika to bezposrednio z obranej metody symu-
lacji rozchodzenia sie dzwieku wykorzystujacej sledzenie wiazek, które symuluja idealne
dobicie.
3.8.2. Transmisja dzwieku
Transmisja dzwieku przez przeszkode jest kolejnym efektem, który zalezy od własci-
wosci materiału, którym przeszkoda jest pokryta. Podobnie jak ma to miejsce przy zjawisku
odbicia, do powstałej wiazki transmisyjnej dopisywany jest identyfikator efektu przejscia od-
czytany z materiału. Wiazka powstała w wyniku transmisji dzwieku przez sciane ma zródło
w tym samym punkcie co wiazka bedaca rodzicem (rys. 3.6).
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 68
Ze zjawiskiem transmisji nierozerwalnie zwiazana jest refrakcja spowodowana zmiana
własciwosci osrodka. W najprostszym wypadku – czyli przejsciu dzwieku przez jednorodna,
np. wykonana z betonu sciane, refrakcja wystepuje dwukrotnie. Zjawisko to zostało pomi-
niete z praktycznych wzgledów. Po pierwsze, przyjety sposób traktowania dzwieku za po-
moca wiazek jest wystarczajaco złozony obliczeniowo. Po drugie, trudno wyznaczyc model
takiego zjawiska. Ostatnim, najwazniejszym czynnikiem przemawiajacym za wyborem ta-
kiego sposobu postepowania jest fakt, ze słuchacz nigdy nie znajdzie sie w scianie.
Współczynniki zapisane w obiekcie efektu reprezentujacego transmisje dzwieku na prze-
szkodzie sa stosunkiem amplitudy cisnienia fali akustycznej za przeszkoda do amplitudy
cisnienia akustycznego fali padajacej.
Algorytm tworzenia efektu transmisji dzwieku bazuje na opisanej w [22] metodzie wy-
znaczania indeksu izolacyjnosci akustycznej sciany.
Rysunek 3.8: Schemat do obliczen indeksu redukcji dzwieku, Zaczerpniety z [22]
1. Wyznaczyc czestotliwosc krytyczna fc
fc = 6 ∗ 104
√%
h√E
(3.2)
gdzie E – moduł Younga, % – gestosc materiału, h – grubosc sciany
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 69
2. Wyznaczyc wartosc Rp
Rp = 20log10(Ms) + 20log10(fc)− 58.5 (3.3)
gdzie Ms jest gestoscia powierzchniowa wyliczana jako %h
3. Wyznaczyc wartosci współczynnika redukcji dzwieku dla czestotliwosci ponizej 0, 3fc
stosujac spadek 6 dB na oktawe.
4. Przyjac wartosc współczynnika Rp + 3dB dla czestotliwosci 0, 6fc. (Punkt b).
5. Dla czestotliwosci 2fc przyjac wartosc współczynnika 25 + 10log10(η). (Punkt d).
6. Wyznaczyc współczynniki powyzej czestotliwosci 2fc (punkt d). Wzrost 7,5 dB na
oktawe.
7. Aproksymacja w obszarze koincydencji. Wyznaczyc wartosc indeksu (R) dla czesto-
tliwosci fc (punkt c). Przyjac:
– R = Rp − 5 dla fc ≥ 200 Hz
– R = Rp − 4 dla 160 Hz ≥ fc ≥ 200 Hz
– R = Rp − 3 dla 125 Hz ≥ fc ≥ 160 Hz
– R = Rp − 2 dla 100 Hz ≥ fc ≥ 125 Hz
Autorem metody jest Sig Ingemansson. Bazuje ona na wartosciach dobranych empirycz-
nie i jest szeroko stosowana do obliczen w konstrukcjach budowlanych [22].
Na podstawie otrzymanych wartosci indeksu R mozliwe jest wyliczenie wszystkich
współczynników efektu transmisji pTpI
, gdzie pT – amplituda fali powstałej w wyniku przej-
scia, pI – amplituda fali padajacej.
R = −20log10pTpi
(3.4)
zatem:pTpI
= 10−R20 (3.5)
Wykres na rysunku 3.9 przedstawia spadek amplitudy dzwieku po przejsciu przez sciany
wykonane z róznych materiałów.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 70
Rysunek 3.9: Transmisja dzwieku przez przeszkody z róznych materiałów
3.8.3. Pochłanianie dzwieku przez powietrze
Efekt pochłaniania przez powietrze symuluje zmiane charakterystyki amplitudowo-
czestotliwosciowej fali dzwiekowej w wyniku przebycia drogi o zadanej długosci. Efekt
ten nie jest zwiazany z zadna z wiazek, wiec nie jest wyliczany na etapie obliczen geome-
trycznych dla zadnej z nich. Jest on tworzony dynamicznie dla kazdej sciezki docierajacej
do słuchacza.
Implementacja bazuje na rozwiazaniu zaproponowanym w [26]. Natezenie dzwieku
w funkcji odległosci przedstawia zaleznosc (3.6)
I(r) = I(r0)e−m(r−r0) (3.6)
gdzie m jest współczynnikiem pochłaniania dzwieku przez powietrze. Wartosci m dla wy-
branych pasm czestotliwosci przedstawiono w tabeli 3.1.
W tabeli 3.1 brakuje współczynników pochłaniania przez powietrze dla oktaw ponizej
250 Hz oraz dla 16 kHz. Podobnie jak przy pogłosowym współczynniku pochłaniania α, na
potrzeby wyliczenia efektu reprezentujacego to zjawisko niezbedna jest ekstrapolacja warto-
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 71
czestotliwosc [Hz] 250 Hz 500 Hz 1 kHz 2 kHz 4 kHz 8 kHz
m [m−1] 0,00009 0,00025 0,0008 0,0025 0,007 0,02
Tablica 3.1: Współczynnik m pochłaniania dzwieku przez powietrze o wilgotnosci wzgled-
nej 50% i temperaturze 20◦C
sci dla brakujacych pasm. Niestety nie pasuje tutaj ekstrapolacja liniowa. Współczynniki te
dobrano w sposób empiryczny, aby otrzymac mozliwie realne brzmienie w siniku. W tabeli
3.2 przedstawiono dobrane współczynniki m dla brakujacych pasm. Dla składowej stałej (0
Hz) przyjeto, ze tłumienie nie wystepuje (m = 0).
czestotliwosc [Hz] 63 Hz 125 Hz 16 kHz
m [m−1] 0,0000007 0,000005 0.2
Tablica 3.2: Współczynniki m dobrane dla brakujacych pasm
Przy modelowaniu tego zjawiska przyjeto, ze nie ma sensu rozpatrywac go dla odległosci
mniejszych niz 1 m, zatem wartosc r0 wynosi 1 m.
Do wyliczenia efektu pochłaniania przez powietrze istotny jest stosunek amplitudy ci-
snienia akustycznego fali w odległosci r wzgledem amplitudy cisnienia akustycznego fali
w odległosci r0. Przyjeto, ze I(r0) wynosi 1. Metoda ta zakłada, ze wpływ powietrza na
charakterystyke czestotliwosciowa fali dzwiekowej wyliczany jest dla odpowiednio duzych
odległosci, gdzie fale kulista mozna traktowac jako fale płaska. W takiej sytuacji natezenie
fali płaskiej jest proporcjonalne do kwadratu cisnienia akustycznego (2.12).
W wyniku powyzszych załozen zaleznosc (3.6) zostaje przekształcona do postaci (3.7).
Przez A oznaczono amplitude efektu dla pojedynczego pasma.
A =p(r)
p(r0=
√I(r)
I(r0)=√e−m(r−1) (3.7)
Poniewaz wartosc współczynnika m zalezy od czestotliwosci, na podstawie danych z ta-
bel 3.1 oraz 3.2 mozliwe jest wyznaczenie kompletu współczynników dla efektu reprezen-
tujacego zjawisko pochłaniania dzwieku przez powietrze.
Autor ma swiadomosc, ze zaniedbano tutaj istotne czynniki takie jak np. wilgotnosc
czy temperatura powietrza. Maja one znaczacy wpływ nie tylko na wartosc współczynnika
pochłaniania m, ale równiez na predkosc propagacji fal akustycznych w osrodku. Nalezy
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 72
Rysunek 3.10: Zmiana charakterystyki amplitudowo-czestotliwosciowej wywołana wpły-
wem tłumienia przez powietrze
jednak pamietac, ze rozwiazanie dedykowane jest do silnika dzwiekowego docelowo wyko-
rzystywanego w grach komputerowych. Wystapienie sytuacji, w której gracz bedzie zwra-
cał uwage na zmiane charakterystyki widmowej fal dzwiekowych w róznych warunkach
atmosferycznych przy szeregu wystepujacych równolegle zjawisk dzwiekowych wydaje sie
– zdaniem autora słusznie – watpliwe. Niewykluczone, ze w przyszłosci równiez ten czynnik
zostanie rozwazony, jednak w chwili obecnej nie ma to istotnego znaczenia.
3.8.4. Spadek amplitudy fali z odległoscia
Zaleznosc zmiany amplitudy cisnienia akustycznego fali kulistej w polu swobodnym
przedstawiono w sekcji 2.3.5. Wzór (2.15) mówi, ze amplituda cisnienia fali jest odwrotnie
proporcjonalna do odległosci od zródła, które ja emituje. Natezenie jest odwrotnie propor-
cjonalne do kwadratu odległosci.
I(r) = I(r0)r0
2
r2(3.8)
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 73
Przy omawianiu implementacji pochłaniania dzwieku przez powietrze w 3.8.3 przyjeto,
ze spadek natezenia w funkcji odległosci wyznacza wzór (3.6). Konfrontujac go z (2.15)
i wynikajacym bezposrednio z niego (3.8) widac róznice miedzy teoretycznym zapisem ma-
tematycznym, a wynikami otrzymanymi doswiadczalnie. Wzór (3.6) sprawdza sie w silniku
znacznie lepiej.
Niezbedne jest jednak wprowadzenie dodatkowego czynnika skalujacego wpływajacego
na otrzymany rezultat. Czynnik ten zalezy od odległosci miedzy zródłem dzwieku a słucha-
czem. Spowodowane jest to potrzeba dostosowania sposobu osłabienia dzwieku dla konkret-
nej sceny. W tym celu zaimplementowano nastepujace rozwiazania:
– brak dodatkowego czynnika skalujacego
– A(r) = 1r
– A(r) = 1r2
– A(r) = 1rlogr
– A(r) = 1 + log10(1/r2)4
.
3.8.5. Dyfrakcja
Modelowanie tego zjawiska okazało sie najbardziej skomplikowane. Trudnosci pojawiły
sie zarówno przy wyliczaniu wiazek dyfrakcyjnych implementowanych przez innego uczest-
nika projektu, jak tez w dobraniu odpowiedniego algorytmu pozwalajacego na wyliczenie
współczynników efektów. Usprawiedliwia to takze w pewien sposób czesty brak symulacji
zjawisk dyfrakcji w programach wykorzystujacych do obliczen metody geometryczne.
Implementacja modelu dyfrakcji została zaczerpnieta z [39]. Bazuje na Uniform Theory
of Diffraction. W zastosowanej metodzie współczynniki dyfrakcji sa zalezne od wielkosci
zaznaczonych na rysunku 3.11.
Odległosci odbiornika oraz zródła od krawedzi dyfrakcyjnej to kolejno r oraz ρ. Kat pa-
dania fali dzwiekowej emitowanej przez zródło wzgledem płaszczyzny przeszkody to αi.
Przez αd oznaczono kat okreslajacy kierunek fali dyfrakcyjnej biegnacej od krawedzi do
odbiornika. Aby dyfrakcja mogła wystapic, musi byc spełniony warunek: 1 < n ≤ 2. Dy-
frakcja zachodzi jedynie gdy odbiornik znajduje sie w cieniu dyfrakcyjnym, czyli dodatkowo
spełniony jest warunek αd > αi + π.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 74
Rysunek 3.11: Odległosci oraz katy niezbedne do policzenia dyfrakcji
Przyjete uproszczenie nie odzwierciedla wiernie rzeczywistosci. Fala powstała w wyniku
dyfrakcji propaguje sie nie tylko w cieniu dyfrakcyjnym ale tez dla αd < αi+π. W przyjetym
toku postepowania wpływ fali poza cieniem dyfrakcyjnym został swiadomie zaniedbany.
Dociera tam takze dzwiek bezposredni ze zródła.
Na podstawie [39] do wyliczenia współczynników dyfrakcji posłuzono sie wzorami
przedstawionymi ponizej.
D(n, k, ρ, r, θi, αi, αd) = − e−jπ4
2n√
2kπsin(θi)
[tan−1(π + (αd − αi)
2n)F (kLa+(αd − αd))
+[tan−1(π − (αd − αi)
2n)F (kLa−(αd − αd))
+{[tan−1(π + (αd + αi)
2n)F (kLa+(αd + αd))
+[tan−1(π − (αd + αi
)2n)F (kLa−(αd + αd))}]
(3.9)
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 75
Poszczególne wielkosci katów i odległosci przedstawiono na rysunku 3.11. k jest liczba
falowa dla danej czestotliwosci wyznaczana według równania (2.2). Funkcje wchodzace
w skład powyzszego równania przedstawiaja sie w nastepujacy sposób:
F (X) = 2j√XejX
∞∫√X
e−jτ2
dτ (3.10)
L =ρr
ρ+ rsin2θi (3.11)
a±(β) = 2cos2(2πnN±
2) (3.12)
2πnN+ − β = π oraz 2πnN− − β = −π (3.13)
N+ =
0 dla β ≤ π(n− 1)
1 dla β > π(n− 1)
N− =
−1 dla β < π(n− 1)
0 dla π(1− n) ≤ β ≤ π(1 + n)
1 dla β > π(1 + n)
(3.14)
Powyzsze równania prowadza do uproszczenia:
dla X < 0, 8: F (X) =√πX(1−
√X
0, 7√X + 1, 2
)ej π4
√X
X+1,4
dla X ≥ 0, 8: F (X) = (1− 0, 8
(X + 1, 25)2)ej π4
√X
X+1,4
(3.15)
Wymagane wartosci wyliczane sa dla 10 pasm czestotliwosci reprezentowanych przez
obiekty klasy Effect. Ostateczny współczynnik dyfrakcji oznaczony jako ε jest normalizo-
wany przez wartosc współczynnika dyfrakcji na granicy cienia, gdzie αd = αsb.
Współczynniki efektu dyfrakcji zostaja ostatecznie wyliczone jako:
ε =D(n, k, ρ, r, θi, αi, αd)
D(n, k, ρ, r, θi, αi, αSB)(3.16)
gdzie: αSB = αi + π.
Otrzymane rezultaty dla róznych katów αd przy ustalonych odległosciach ρ, r oraz katów
αi oraz nπ przedstawiono na wykresie 3.12.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 76
Rysunek 3.12: Wartosci efektu dyfrakcji dla róznych katów
3.8.6. Optymalizacja obliczen dyfrakcji
W skomplikowanych scenach, dla których liczone sa trzy generacje wiazek okazuje sie,
ze powstaje ich duzo. Przy kazdej zmianie pozycji odbiornika lub zródła niezbedne jest po-
nowne wyznaczenie sciezek propagacji dzwieku od zródła do słuchacza. W tej sytuacji nie
da sie uniknac przejscia od poszczególnych lisci drzewa wiazek do jego korzenia. W wy-
padku wiazek dyfrakcyjnych nie wystarczy jedynie odczytanie identyfikatora efektu odbicia
badz transmisji. Efekt dyfrakcyjny musi byc wyliczony w trakcie tej operacji. Jednak juz
same obliczenia zwiazane z geometria sceny posiadaja wystarczajaco duza złozonosc.
W srednio skomplikowanej scenie do słuchacza moze docierac jednoczesnie nawet ponad
100 wiazek dyfrakcyjnych. Oprócz wyznaczenia niezbednych danych wejsciowych, w cza-
sie rzeczywistym nalezy wyznaczyc efekty dyfrakcji poprzez numeryczna realizacje wzorów
przedstawionych w 3.8.5. Zawieraja one duza ilosc operacji trygonometrycznych, których
wykonanie jest znacznie bardziej kosztowne od prostych operacji takich jak mnozenie czy
dodawanie. Nalezy tutaj takze podkreslic, ze przedstawione wzory bazujace na UDT dla
pojedynczego efektu musza zostac wykonane dziesieciokrotnie – dla kazdej oktawy. Osia-
gniecie płynnosci w działaniu aplikacji dla skomplikowanych scen stawało sie niemozliwe.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.8. Modelowanie zjawisk akustycznych 77
Aby uniknac wykonywania tak duzej ilosci obliczen współczynniki dyfrakcji zostały wy-
liczone raz dla konkretnych zastawów katów oraz odległosci. Otrzymane współczynniki za-
pisano w pliku, który ładowany jest przy starcie biblioteki. Inny uczestnik projektu podjał
zakonczona sukcesem próbe przyspieszenia wyznaczania parametrów dyfrakcji z wykorzy-
staniem interpolacji quad-liniowej. Dzieki uzyciu instrukcji wektorowych (SSE oraz AVX)
udało sie uzyskac 35-krotny wzrost wydajnosci.
Wykorzystana interpolacja quad-liniowa wprowadza błedy rzedu 15%, jednak biorac pod
uwage znaczny wzrost wydajnosci sa one akceptowalne, a zmiana połozenia zródła oraz
odbiornika wzgledem krawedzi dyfrakcyjnej jest wyraznie słyszalna.
3.8.7. Zjawiska odpowiedzialne za percepcje kierunkowosci
Ludzkie narzady słuchu sa w stanie okreslac kierunek docierajacego dzwieku. Wszystko
to za sprawa wielu czynników. Jest to uwarunkowane miedzy innymi róznica natezen, rózna
charakterystyka widmowa docierajacych sygnałów dzwiekowych. Róznice te spowodowane
sa głównie wpływem głowy oraz torsu [40]. Fale dzwiekowe ulegaja tutaj szeregowi skom-
plikowanych zjawisk. W zaleznosci od budowy głowy, kształtu małzowiny usznej, długosci
włosów oraz wielu innych czynników takich jak np. posiadanie okularów, zjawiska te posia-
daja inna charakterystyke.
W obecnych grach komputerowych obsługa dzwieku przestrzennego stała sie standar-
dem. Nie mogło zatem zabraknac jej w implementowanym oprogramowaniu. Jak wspo-
mniano wczesniej, dokładne zamodelowanie wszystkich czynników odpowiadajacych za
lokalizacje dzwieku przez ludzkie narzady słuchu jest niezwykle złozone. Nie da sie tego
zrobic przy zastosowaniu metod sledzenia wiazek. Dodatkowo zaproponowany model wy-
znaczania amplitud w poszczególnych pasmach oktawowych nie jest wystarczajacy by oddac
czesto tylko subtelne róznice w charakterystyce czestotliwosciowej sygnałów docierajacych
do uszu słuchacza.
Sposób realizacji dzwieku przestrzennego musi byc rózny w zaleznosci od wykorzysty-
wanego systemu głosnikowego lub słuchawek. O ile w wypadku słuchawek w zaleznosci
od ich rodzaju odgrywany przez nie dzwiek moze byc ewentualnie zmodyfikowany przez
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.9. Filtry reprezentujace zjawiska akustyczne 78
małzowine uszna i kanał uszny4, to w przy zastosowaniu zestawu głosnikowego dodatkowo
znaczacy wpływ wywiera ciało słuchacza. Realizacja zjawisk odpowiadajacych za percepcje
kierunku docierania dzwieku musi byc zatem realizowana w rózny sposób w zaleznosci od
dobranego zestawu odsłuchowego. Sposób realizacji opisano przy okazji omawiania obsługi
dzwieku przestrzennego w 3.11.
3.8.8. Zjawisko Dopplera
Sposób realizacji tego efektu jest znacznie inny niz ma to miejsce w wypadku odbicia,
transmisji i dyfrakcji dzwieku. Jego symulacja nie odbywa sie poprzez zmiane amplitud
w poszczególnych pasmach. W praktyce zjawisko Dopplera objawia sie tym, ze poszcze-
gólne składowe czestotliwosci zamieniane sa na inne. Efekt ten został osiagniety przez re-
sampling sygnału. Jest on okreslony przez ratio, który wyliczany jest na podstawie wzgled-
nej predkosci miedzy odbiornikiem i zródłem. Gdy zródła zblizaja sie do siebie ratio jest
wieksze od 1, gdy oddalaja – mniejsze od 1.
Operacja resamplingu dokonywana jest przez obiekt klasy Doppler dziedziczacej po abs-
trakcyjnej klasie IDspEffect. Obiekty tej klasy wchodza w skład potoków DSP omówionych
w dalszej czesci rozdziału.
3.9. Filtry reprezentujace zjawiska akustyczne
Wszystkie z opisywanych wyzej zjawisk akustycznych reprezentowane sa jako obiekty
klasy Effect. Na podstawie zestawu dziesieciu współczynników bedacych aproksymacja cha-
rakterystyki amplitudowo-czestotliwosciowej generowane sa filtry o skonczonej odpowiedzi
impulsowej. Filtry FIR w silniku reprezentowane sa w dziedzinie czestotliwosci przy po-
mocy obiektów klasy SpectrumVector wykorzystujacych klasy std::vector oraz std::complex
wchodzacych w skład biblioteki standardowej jezyka C++.
Za wyliczanie konkretnych wartosci widm filtrów FIR odpowiada klasa SpectraFactory.
Podobnie jak w przypadku klasy EffectsFactory nie implementuje ona obecnie wzorca pro-
jektowego fabryka [17], choc takie podejscie zastosowano w poczatkowej fazie rozwoju pro-
jektu. Nazwa klasy jest wiec zaszłoscia historyczna. Sygnatura metody wyglada nastepujaco:
4Słowo „ewentualnie” zostało tutaj uzyte celowo. Zalezy to głównie od rodzaju słuchawek. Stosujac słu-
chawki typu „pchełki” małzowina uszna nie ma wpływu na zmiane docierajacego dzwieku w przeciwienstwie
to słuchawek nausznych.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.9. Filtry reprezentujace zjawiska akustyczne 79
void createSpcetrum(const Effect& effect,
SpcetrumVector& spectrum) const
W obecnej wersji silnika stosowane sa filtry FIR o długosci 512 współczynników. Przy-
jeto, ze silnik przetwarza sygnały próbkowane z czestotliwoscia 48 kHz. W takiej sytuacji
mozliwe jest uzyskanie rozdzielczosci czestotliwosciowej wynoszacej ok. ∆f = 93Hz.
Aby wyznaczyc wszystkie prazki widma modelowanego filtru o skonczonej odpowie-
dzi impulsowej, niezbedna jest interpolacja współczynników zawartych w obiektach klasy
Effect. Priorytetem w tworzeniu interpolowanych charakterystyk jest szybkosc działania.
W tym celu zaimplementowano dwie metody interpolacji – liniowa oraz logarytmiczna.
SpectraFactory modeluje filtry FIR stosujac metode próbkowania w dziedzinie czesto-
tliwosci opisana m.in. w [41]. Dla kazdej wymaganej czestotliwosci na podstawie znanych
wartosci dla czestotliwosci reprezentujacych poszczególne oktawy, interpolowane sa wszyst-
kie prazki widma z zakresu 0 do 0, 5fs. Prazki te sa odbijane symetrycznie wzgledem cze-
stotliwosci 0, 5fs wraz ze sprzezeniem czesci urojonej.
Po dokonaniu odwrotnej transformaty Fouriera na zamodelowanym widmie oraz jej od-
powiednim przesunieciu o N2
próbek, otrzymuje sie odpowiedz impulsowa filtru. Odpowiedz
ta moze byc opcjonalnie wymnozona przez okno.
3.9.1. Synteza szeregu zjawisk akustycznych
Dzwiek przebywajacy konkretna droge zmienia swoja charakterystyke w wyniku naste-
pujacych po sobie kolejnych zjawisk akustycznych. Poszczególne zjawiska dzwiekowe re-
prezentowane jako Effect musza zostac przekształcane na filtry typu FIR. Wynikowy dzwiek
otrzymany jest w wyniku splotu sygnału ze zródła z odpowiedzia impulsowa filtru modelu-
jacego wpływ pojedynczej sciezki dzwieku. Z liniowosci operacji splotu wynika, ze w celu
otrzymania jednego filtru bedacego złozeniem kilku, pojedyncze filtry moga byc splatane
w dowolnej kolejnosci. Operacja splotu jest jednak bardzo kosztowna i kilkakrotna jej re-
alizacja na potrzeby pojedynczej sciezki dzwieku jest nie do przyjecia biorac pod uwage
fakt, ze do słuchacza dociera duza ilosc wiazek, a operacje musza zostac wykonane w czasie
rzeczywistym. Zamiast splotu w sposób klasyczny, operacja ta moze byc zrealizowana jako
iloczyn widm filtrów dajac w rezultacie splot kołowy. Testy odsłuchowe wykonane na po-
trzeby silnika wykazały, ze róznica w brzmieniu sygnałów splatanych z filtrami otrzymanymi
jedna i druga metoda nie jest zauwazalna przez uzytkowników.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.10. Przetwarzanie dzwieku 80
W praktyce okazało sie jednak, ze operacje iloczynu widm takze sa nadmiarowe. Efekty
modelowane sa bowiem jako wartosci amplitudy w poszczególnych pasmach oktawowych,
a dopiero na ich podstawie tworzone sa filtry. Nie ma zatem sensu interpolowac kazdego
efektu, tworzyc dla niego filtru, i przemnazac go z innymi filtrami w dziedzinie czestotliwo-
sci. Duzo wydajniejsze jest mnozenie ze soba kolejnych zestawów dziesieciu współczynni-
kach zawartych w efektach. Dopiero na podstawie wynikowego efektu tworzony jest jeden
filtr FIR, z którym splatany jest sygnał ze zródła dzwieku.
3.10. Przetwarzanie dzwieku
Dla kazdej słyszalnej przez słuchacza wiazki tworzony jest pojedynczy potok przetwa-
rzania próbek dzwiekowych. Składa sie on z efektów DSP realizujacych konkretna logike.
Rysunek 3.13 przedstawia schemat potoków przetwarzania. Poszczególne efekty DSP im-
plementuja klase abstrakcyjna IDspEffect.
Rysunek 3.13: Potoki przetwarzania audio
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.11. Obsługa dzwieku przestrzennego 81
Blok oznaczony jako Zródło dzwieku jest w praktyce obiektem klasy SoundSourceCon-
nector, która zwraca próbki z załadowanego pliku dzwiekowego.
Elementem kluczowym jest klasa Convolver. Realizuje ona splot sygnału w sposób blo-
kowy wykorzystujac algorytm overlap-save. W operacji splotu wykorzystywany jest filtr
modelujacy odpowiedz impulsowa konkretnej sciezki, która przebył dzwiek. Filtr ten two-
rzony jest przez obiekt klasy SpectraFactory na podstawie sekwencji efektów stworzonych
przez EffectsFactory.
Po splocie sygnału nastepuje jego ewentualny resampling z wykorzystaniem Doppler-a.
Nastepnie strumien próbek dzwiekowych musi zostac rozdzielony przy pomocy Splitter-a.
Za Splitterem próbki przetwarzane sa przez efekty odpowiadajace za realizacje efektu
przestrzennosci dzwieku, aby oddac kierunek, z którego dobiega do słuchacza wiazka repre-
zentujaca fale dzwiekowa.
3.11. Obsługa dzwieku przestrzennego
Zgodnie z tym co napisano w 3.8.7 realizacja dzwieku przestrzennego musi byc rózna
w zaleznosci od tego czy do odsłuchu wykorzystane zostana słuchawki czy system gło-
snikowy. Jest to ostatni etap przetwarzania dzwieku w potokach. Odbywa sie niezaleznie
w kazdym z poszczególnych kanałów.
3.11.1. HRTF, słuchawki
Przy odsłuchu binauralnym z wykorzystaaniem słuchawek, kierunkowosc uzyskuje sie
przez splot sygnału z odpowiednim filtrem. Jego transmitancja okreslana jest mianem funkcji
przeniesienia głowy (ang. head related transfer function) oznaczana w skrócie HRTF [32].
Odpowiedz impulsowa tego filtru nazywana jest head related impulse response, w skrócie
HRIR. Wyznaczenie filtru na podstawie modelu głowy wraz z małzowinami usznymi jest
bardzo trudnym zadaniem. Nawet jesli udałoby sie znalezc sposób tworzenie takiego filtru,
wyliczenie go w czasie rzeczywistym okazałoby sie z pewnoscia zbyt kosztowne.
W praktyce HRTF wyznacza sie doswiadczalnie. W tym celu czesto stosuje sie model
tzw. sztucznej głowy [18] lub mierzy odpowiedz impulsowa głowy poszczególnych osób
[13]. Na potrzeby silnika zaimportowano i przetestowano trzy bazy: CIPIC, Kemar oraz
KU100 [12] udostepniona przez Cologne University of Applied Sciences. Bazy te zawieraja
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.11. Obsługa dzwieku przestrzennego 82
odpowiedzi impulsowe dla lewego i prawego ucha dla wybranych katów w płaszczyznie
wertykalnej oraz horyzontalnej.
Znajac połozenie zródła docierajacej do słuchacza wiazki, a takze pozycje odbiornika
mozliwe jest wyznaczenie kierunku, z którego dzwiek dociera do słuchacza. Kierunek ten
okreslony jest przy pomocy katów w płaszczyznie horyzontalnej i wertykalnej φ i θ co po-
kazano na rysunku 3.14.
Rysunek 3.14: Kierunek docierajacego dzwieku wyznaczany na podstawie katów ϕ i ϑ, ilu-
stracja zaczerpnieta z [13]
W celu obsługi HRTF w opisywanym silniku, za Splitter-em ustawione sa obiekty
klasy Convolver realizujace splot z odpowiednim filtrem, który zostaje pobrany z obiektu
klasy EffectsManager na podstawie katów okreslajacych kierunek, z jakiego dociera wiazka
dzwieku.
3.11.2. VBAP, system głosników
Przy odsłuchu za pomoca głosników do obsługi dzwieku przestrzennego posłuzono sie
metoda VBAP (ang. vector base amplitude panning) [31, 32, 33]. Metoda ta wyznacza am-
plitudy sygnału dla poszczególnych kanałów. Za ustawienie odpowiednich amplitud w po-
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
3.11. Obsługa dzwieku przestrzennego 83
szczególnych kanałach odpowiadaja obiekty klasy Fader. Klasa Fader jest efektem DSP,
dlatego podobnie jak Doppler, Splitter i Convolver dziedziczy po klasie IDspEffect.
W obecnej implementacji obsługiwany jest tylko kierunek w płaszczyznie horyzontalnej
(2D). W przypadku dwuwymiarowym dzwiek z kazdej wiazki odtwarzany jest w dwóch ka-
nałach. Niezaleznym kanałem jest głosnik niskotonowy (subwoofer). W przypadku trójwy-
miarowym kierunek, z którego dobiega dzwiek musi byc wyznaczony na podstawie dwóch
katów θ oraz φ. Dodanie obsługi VBAP w wersji 3D nie bedzie przysparzac problemów.
Dzieki dobrze zaprojektowanej, elastycznej architekturze potoków przetwarzania audio im-
plementacja tej funkcjonalnosci sprowadzi sie jedynie do zdefiniowana nowej klasy dzie-
dziczacej po SpeakerSetup oraz implementacji odpowiednich dwóch metod szablonowych5.
Z powodu małej dostepnosci takich systemów głosnikowych zarówno wsród twórców bi-
blioteki jak i domowych uzytkowników, obecnie nie ma sensu wyposazania silnika w te
funkcjonalnosc.
Rysunek 3.15: Rozmieszczenie głosników oraz kat ϑ wyznaczajacy kierunek, z którego do-
biega dzwiek
5Zagadnienie metody szablonowej jako wzorca projektowego przedstawiono m.in. w [17]
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
4. Zakonczenie
Miniony rok poswiecony na udział w projekcie badawczym RAYAV okazał sie bardzo
owocny. W ciagu tego czasu autor miał okazje stawic czoło wielu problemom, których nie
udało sie wczesniej przewidziec. Wiele z nich okazało sie znacznie trudniejszych niz mozna
było sie spodziewac. Realizacja poszczególnych zadan pozwoliła skonfrontowac wiedze teo-
retyczna z praktyczna realizacja projektu informatycznego tworzonego w kilkuosobowym
zespole.
Implementacja poszczególnych funkcjonalnosci niejednokrotnie konczyła sie porazka
i wymagała opracowania innego podejscia. Wszelkie podjete podczas pracy wysiłki udzieliły
autorowi solidnej lekcji pokory. Wielokrotnie okazywało sie, ze zdobyta wczesniej wiedza
z róznych dziedzin nie jest wystarczajaca, a rozwiazania wielu problemów w podrecznikach
akademickich nie zawsze da sie zastosowac w ramach konkretnego zadania. Dotyczy to za-
równo wypracowanego wczesniej stylu pisania kodu programu, projektowania i testowania
aplikacji, jak równiez rozumienia natury zjawisk akustycznych wystepujacych w realnym
swiecie.
Wraz z rosnacym bagazem doswiadczen wynikajacych z setek godzin pracy przy im-
plementacji silnika, stopniowo nalezało godzic sie z faktem, ze perfekcyjna realizacja czesto
zbyt ambitnych załozen jeszcze przez długi czas nie bedzie mozliwa. Wynika to z wielu czyn-
ników. Pierwszym z nich jest oczywiscie moc obliczeniowa sprzetu, na którym uruchamiane
jest oprogramowanie. Nie jest to jednak jedyna bariera. Trudno znalezc metode, która bedzie
pozbawiona wad. Obrana metoda sledzenia wiazek nie jest idealna i z definicji wyklucza
wierne symulowanie fal dzwiekowych o niskich czestotliwosciach. Z drugiej jednak strony
jest jedyna, która w czasie rzeczywistym pozwoli symulowac akustyke wirtualnego swiata
gry. Jak zostało wielokrotnie podkreslone w tekscie pracy, autor ma pełna swiadomosc kon-
sekwencji wynikajacych z podjetych decyzji. Najwazniejsza w kontekscie niniejszej pracy
dyplomowej, ale takze bardzo znaczaca dla poziomu realnosci dzwieku jaki zapewnia całe
84
85
oprogramowanie okazała sie decyzja dotyczaca implementacji efektów akustycznych. Jak
wspomniano we wstepie, przy modelowaniu kazdego ze zjawisk akustycznych obsługiwa-
nych przez silnik przyjeto ogromna ilosc uproszczen. Przykładem moze byc załozenie, ze
fala dzwiekowa, która ulega odbiciu od sciany jest fala płaska. Owszem, takie przyblize-
nia stosuje sie równiez w dokładnych analitycznych wyprowadzeniach, ale w uzasadnio-
nych przypadkach, gdzie spełniony jest warunek pola dalekiego. Z kolei przy implementacji
silnika milczaco załozono, ze ten warunek spełniony jest zawsze. Kolejnym czynnikiem,
którego autor swiadomie unikał we wszelkich opisach jest charakterystyka fazowa zjawisk
akustycznych. O ile korekcja brzmienia sygnałów poprzez ustawienie tłumien w pasmach
oktawowych czesto okazuje sie wystarczajaca, to zastosowanie filtrów gdzie charaktery-
styka amplitudowa interpolowana jest liniowo a faza zaniedbywana, moze budzic zastrze-
zenia. Niestety wybrana metoda postepowania dyskwalifikuje modelowanie fazy, poniewaz
w wiekszosci wypadków bazuje na małym, w dodatku usrednianym zestawie danych, np.
współczynniki pochłaniania dzwieku mierzone w oktawach. Przykładów gdzie swiadomie
nalezało pogodzic sie zaniedbaniem istotnych czynników celem wybrania tzw. „mniejszego
zła” jest z pewnoscia wiecej.
Mimo wielu potencjalnych wad, o których wspomniano w poprzednim akapicie reali-
zacja projektu powinna byc uznana za sukces. Zamierzony cel został osiagniety. Niepod-
wazalnym argumentem jest fakt, ze stworzone i opisane na stronach pracy oprogramowanie
jest innowacyjne. Okazuje sie, ze wdrozenie silnika dzwiekowego do realnych komercyjnych
projektów mimo jego specyficznych cech jest bardzo realne. Pozwala w czasie rzeczywistym
symulowac akustyke sceny gry, która zmienia sie zgodnie z geometria oraz własciwosciami
zastosowanych materiałów. Stworzone rozwiazanie moze okazac sie niezwykle pomocne dla
tzw. sound designerów odpowiadajacych za tworzenie efektów dzwiekowych w grach kom-
puterowych. Zamiast ustawiac poszczególne parametry efektów DSP w edytorze, mozliwe
jest dokonanie tego w sposób automatyczny przez silnik. Narzedzie to moze stac sie jeszcze
bardziej atrakcyjne, jesli uda sie zintegrowac je z innymi szeroko wykorzystywanymi narze-
dziami do pracy z dzwiekiem na potrzeby gier takich jak np. FMOD, lub z całym silnikiem
do tworzenia gier, np. Unreal Engine.
Wypracowana w ciagu minionego roku technologia nie musi ograniczac sie tylko do
gier komputerowych. Kosztem rezygnacji z działania w czasie rzeczywistym, stosujac wiek-
sza dokładnosc w algorytmie sledzenia wiazek oraz dokładniejszy model poszczególnych
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
86
zjawisk akustycznych, mozna podjac próbe wykorzystania oprogramowania do symulacji
akustyki pomieszczen.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
Bibliografia
[1] Dokumentacja GNUOctave.
www.gnu.org/software/octave/doc/interpreter.
[2] Dokumentacja pakietu Matlab. www.mathworks.com/help/matlab.
[3] PN-EN ISO 354:2005P Akustyka – Pomiar pochłaniania dzwieku w komorze pogłoso-
wej.
[4] Strona domowa FFTW. www.fftw.org.
[5] Strona domowa FMOD. www.fmod.org.
[6] Strona domowa projektu Elmer. www.csc.fi/english/pages/elmer.
[7] Strona domowa projektu Odeon. www.odeon.dk.
[8] Strona domowa systemu kontroli wersji Git. http://git-scm.com.
[9] Strona domowa Unreal Engine. www.unrealengine.com/udk/.
[10] Strona internetowa CATT Acoustic. www.catt.se.
[11] K. Banas. Wprowadzenie do MES.
www.metal.agh.edu.pl/~banas/wprowadzenie_do_MES.pdf.
[12] B. Bernschütz. A spherical far field HRIR/HRTF Compilation of the Neumann KU 100.
AIA/DAGA 2013, Meran (Italy), march 2013.
[13] CIPIC Interface Laboratory. Localization of amplitude-panned virtual sources II: Two-
and Three-dimensional panning. University of California at Davis, Davis, CA 95616,
October 1998.
87
BIBLIOGRAFIA 88
[14] J. W. Cooley and J. Tukey. An algorithm for the machine calculation of complex Fourier
series. Math. Comput., 19:297–301, 1965.
[15] T. H. Cormen, H. E. Leiserson, R. L. Rivest i C. Stein. Wprowadzenie do algorytmów.
Wydawnictwo Naukowe PWN, Warszawa, 2012.
[16] F. Fahy. Foundations of Engineering Acoustics. ELSEVIER, 2005.
[17] E. Gamma, R. Delm, R. Johnson i J. Vlissides. Wzorce projektowe. Elementy oprogra-
mowania obiektowego wielokrotnego uzytku. Wydawnictwo Helion, Gliwice, 2010.
[18] B. Gardner and K. Martin. HRTF measurements of a kemar dummy-head microphone.
Technical Report 280, MIT Media Lab, May 1994.
[19] A. Gołas. Metody komputerowe w akustyce wnetrz i srodowiska. Wydawnicta AGH,
Kraków, 1995.
[20] Ł. Hacura i W. Borczyk. Projektowanie i programowanie gier video. Wydawnictwo
PJWSTK, Warszawa, 2011.
[21] D. Haliday, R. Resnick i J. Walker. Podstawy fizyki, tom II. Wydawnictwo Naukowe
PWN, Warszawa, 2006.
[22] O. A. B. Hassan. Building Acoustics and Vibration – Theory and Practis. World
Scientific Publishing Co. Pte. Ltd., 2009.
[23] L. E. Kinsler, A. R. Frey, A. B. Coppens and J. V. Sanders. Fundamentals of acoustics.
John Willey and Sons, New York, 2000.
[24] T. Komatsuzaki, Y. Iwata and S. Morishita. Modelling of incident sound wave propaga-
tion around sound barriers using cellular automata. Lecture Notes in Computer Science,
7495:385–394.
[25] K. Kowalczyk. Boundary and medium modelling using compact finite difference sche-
mes in simulations of room acoustics for audio and architectural design applications.
PhD thesis, Queen’s University Belfast, 2008.
[26] A. Kulowski. Akustyka sal. Wydawnictwo Politechniki Gdanskiej, Gdansk, 2007.
[27] H. Kuttruf. Room acoustics. Spon Press, 2009.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych
BIBLIOGRAFIA 89
[28] R. G. Lyons. Wprowadzenie do cyfrowego przetwarzania sygnałów. Wydawnictwo
Komunikacji i Łacznosci, Warszawa, 2000.
[29] R. Makarewicz. Dzwieki i fale. Wydawnictwo Naukowe UAM, Poznan, 2009.
[30] S. Meyers. Effective C++ Third Edition 55 Specific Ways to Improve Your Programs
and Designs. Addison Wesley, 2008.
[31] V. Pukki. Virtual sound source positioning using vector base amplitude panning. Jour-
nal of the Audio Engineering Society, 45:456–466, 1997.
[32] V. Pulkki and M. Karjalainen. Localization of amplitude-panned virtual sources I:
Stereophonic panning. Journal of the Audio Engineering Society, 49(9):739–752, 2001.
[33] V. Pulkki and M Karjalainen. Localization of amplitude-panned virtual sources II: Two-
and three-dimensional panning. Journal of the Audio Engineering Society, 49(9):753–
767, 2001.
[34] R. Resnick i D. Halliday. Podstawy fizyki, tom I. Panstwowe Wydawnictwo Naukowe,
Warszawa, 1966.
[35] J. B. Schneider. Understanding the Finite-Difference Time-Domain Method, 2013.
www.eecs.wsu.edu/~schneidj/ufdtd/ufdtd.pdf.
[36] B. Stroustrup. The C++ Programming Language, 4th edition. Addison-Wesley, 2013.
[37] J. Szabatin. Przetwarzanie sygnałów. 2003.
www.ise.pw.edu.pl/~szabatin/ps.pdf.
[38] K. Sztekmiler. Podstawy nagłosnienia i realizacji nagran. Wydawnictwo Komunikacji
i Łacznosci, Warszawa, 2008.
[39] N. Tsingos, T. Funkhouser, A. Ngan and I. Carlbom. Modeling acoustics in virtual
environments using the uniform theory of diffraction. Proc. SIGGRAPH 2001, pages
545–552, 2001.
[40] M. Vorländer. Auralization. Fundamental of acoustics, modelling, simulation, algori-
thms and acoustic virtual reality. Springer, 2008.
B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych