90
A KADEMIA G ÓRNICZO -H UTNICZA IM .S TANISLAWA S TASZICA W K RAKOWIE Wydzial In˙ zynierii Mechanicznej i Robotyki M AGISTERSKA PRACA DYPLOMOWA BARTLOMIEJ MAREK MIGA MODELOWANIE ZJAWISK AKUSTYCZNYCH W SILNIKU AUDIO GIER KOMPUTEROWYCH dr in˙ z. Bartosz Ziólko Promotor pracy ...................... Ocena, data, podpis promotora Kraków, rok 2012 / 2013

AKADEMIA GÓRNICZO-HUTNICZA - dsp.agh.edu.pldydaktyka:bmiga_mgr.pdf · niezbedne˛ pojecia˛ dotyczace˛ dziedziny akustyki, przetwarzania sygnałów oraz podstawowe aspekty programowania

  • Upload
    buicong

  • View
    225

  • Download
    1

Embed Size (px)

Citation preview

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.

Kochanym Rodzicom

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

BIBLIOGRAFIA 90

[41] T. P. Zielinski. Cyfrowe przetwarzanie sygnałów. Wydawnictwo Komunikacji i Łacz-

nosci, 2009.

[42] B. Ziółko i M. Ziółko. Przetwarzanie mowy. Wydawnictwa AGH, Kraków, 2011.

B. Miga Modelowanie zjawisk akustycznych w silniku audio gier komputerowych