Zastanowiłem się nad tym. Czułem, że główną troską (pod względem realizmu / kompromisu wydajności) było to, że przestrzennie twoje uszy są gorsze od twoich oczu - i całkiem łatwo akceptuję coś, co może nie być tak realistyczne, jak twoje oczy by potrzebowały. Istnieje bardzo duża szansa, że próba idealnego modelowania dźwięku w lokalnym środowisku jest przesada - EAX jest prawdopodobnie „wystarczająco dobry”.
W zamkniętym środowisku (np. Quake) najpierw obliczyłem dwie właściwości każdego pokoju: „przeniesienie” i zanurzenie:
Przeniesienie wskazywałoby, w jaki sposób dźwięk wpływałby na poruszanie się po tym pokoju i najprawdopodobniej liczyłoby się do korektora parametrycznego (idealnie dodałbyś echo / pogłos z każdego pokoju, ale twój układ EAX może nie mieć tak dużej przepustowości). Korektor parametryczny ostatecznie symulowałby również tłumienie dźwięku.
Zanurzenie obliczono by przez podzielenie pokoju na dziewięć kostek (być może nawet jedna może być wystarczająca) i obliczenie lokalnych właściwości dźwięku z tej perspektywy. Te parametry byłyby używane w środowisku EAX.
Na koniec każdy z twoich pokoi będzie połączony grafem, gdzie każdy punkt na wykresie to portale łączące każdy pokój.
Gdy dźwięk się uruchomi, wypełniasz powódź (bez wyszukiwania A *) i śledzisz przeniesienie i przebytą odległość. Kiedy dźwięk dociera do odtwarzacza, ustawisz go w kolejce, aby zagrać w pewnym momencie w przyszłości; na podstawie przebytej odległości. Możesz śledzić liczbę przekazanych punktów wykresu i ostatecznie „wyciszyć” dźwięk (innymi słowy, ciągłe zalewanie). Może być konieczne użycie CUDA, ponieważ może to spowodować powiązanie procesora.
Podczas odtwarzania dźwięku należy użyć interfejsu API dźwięku 3D (OpenAL) i umieścić go w portalu, przez który wszedł, a następnie dowiedzieć się, w której z dziewięciu kostek aktualnie znajduje się odtwarzacz, i zastosować to środowisko EAX.
Ciekawe jest to, że jeśli twoje środowisko jest wystarczająco złożone, otrzymasz bezpłatne „globalne” echa, a gracze zauważą dźwięk dochodzący z właściwego kierunku; a jeśli poprawisz środowisko EAX, mam nadzieję, że efekt byłby na tyle przekonujący, że mózg by to zaakceptował.