Ich habe auch darüber nachgedacht. Ich war der Ansicht, dass das Hauptanliegen (in Bezug auf Realismus / Leistungskompromiss) darin bestand, dass Ihre Ohren räumlich schlechter sind als Ihre Augen - und dass Sie leicht etwas akzeptieren, das möglicherweise nicht so realistisch ist, wie es Ihre Augen benötigen würden. Es ist sehr wahrscheinlich, dass der Versuch, den Sound in der lokalen Umgebung perfekt zu modellieren, übertrieben ist - EAX ist wahrscheinlich 'gut genug'.
In einer geschlossenen Umgebung (zB Quake) würde ich zunächst zwei Eigenschaften für jeden Raum berechnen: 'Transferrance' und Immersion:
Die Übertragungsrate gibt an, wie sich der Klang auf das Durchlaufen dieses Raums auswirkt, und wird höchstwahrscheinlich auf einen parametrischen EQ angerechnet (idealerweise würden Sie Echo / Hall aus jedem Raum hinzufügen, aber Ihr EAX-Chip verfügt möglicherweise nicht über so viel Bandbreite). Der parametrische EQ würde letztendlich auch die Schalldämpfung simulieren.
Das Eintauchen wird berechnet, indem der Raum in neun Würfel aufgeteilt wird (möglicherweise ist auch nur einer gut genug) und die lokalen Klangeigenschaften aus dieser Perspektive berechnet werden. Diese Parameter würden in der EAX-Umgebung verwendet.
Schließlich würde jeder Ihrer Räume durch eine Grafik verbunden, wobei jeder Punkt in der Grafik die Portale sind, die jeden Raum verbinden.
Wenn der Ton auslöst, würden Sie eine Überflutung durchführen (keine A * -Suche) und den Transfer und die zurückgelegte Strecke verfolgen. Wenn der Ton den Player erreicht, stellen Sie ihn in eine Warteschlange, um ihn zu einem späteren Zeitpunkt wiederzugeben. basierend auf der zurückgelegten Strecke. Sie können die Anzahl der übergebenen Graphenpunkte verfolgen und den Sound schließlich "ausmerzen" (mit anderen Worten, eine kontinuierliche Überflutung). Möglicherweise müssen Sie hierfür CUDA verwenden, da dies zu einer CPU-Bindung führen kann.
Wenn ein Sound abgespielt wird, verwenden Sie eine 3D-Sound-API (OpenAL), um ihn auf dem Portal zu platzieren, über das er eingegeben wurde. Dann ermitteln Sie, in welchem der neun Cubes sich der Player derzeit befindet, und wenden diese EAX-Umgebung an.
Das Schöne dabei ist, dass wenn Ihre Umgebung ausreichend komplex ist, Sie kostenlose "globale" Echos erhalten und die Spieler Geräusche wahrnehmen, die aus der richtigen Richtung kommen. und wenn Sie die EAX-Umgebung richtig einstellen, ist der Effekt hoffentlich überzeugend genug, dass das Gehirn ihn akzeptiert.