También he pensado en esto. Sentí que la preocupación principal (en términos de compensación de realismo / rendimiento) era que espacialmente sus oídos son inferiores a sus ojos, y aceptan con bastante facilidad algo que podría no ser tan realista como lo necesitarían sus ojos. Existe una gran posibilidad de que tratar de modelar perfectamente el sonido en el entorno local sea excesivo: EAX es probablemente "lo suficientemente bueno".
En un entorno cerrado (p. Ej., Quake), primero calcularía dos propiedades sobre cada habitación: 'transferencia' e inmersión:
Transferencia indicaría cómo se vería afectado el sonido al viajar a través de esta sala y lo más probable es que cuente para un ecualizador paramétrico (idealmente agregaría eco / reverberación de cada sala, pero su chip EAX podría no tener tanto ancho de banda). El ecualizador paramétrico también simularía finalmente la atenuación del sonido.
La inmersión se calcularía dividiendo la habitación en nueve cubos (posiblemente, incluso uno podría ser lo suficientemente bueno) y calculando las propiedades del sonido local desde esa perspectiva. Estos parámetros se usarían en el entorno EAX.
Finalmente, cada una de sus habitaciones estaría conectada por un gráfico, donde cada punto del gráfico son los portales que conectan cada habitación.
Cuando se dispara el sonido, se realiza un relleno de inundación (sin una búsqueda A *) y se realiza un seguimiento de la transferencia y la distancia recorrida. Cuando el sonido llegue al reproductor, lo pondrás en cola para reproducirlo en algún momento en el futuro; basado en la distancia recorrida. Puede realizar un seguimiento del número de puntos del gráfico pasados y, finalmente, 'eliminar' el sonido (en otras palabras, un relleno continuo de inundación). Es posible que tenga que usar CUDA para hacer esto, ya que podría limitar la CPU.
Cuando se reproduce un sonido, usaría una API de sonido 3D (OpenAL) y lo colocaría en el portal por el que ingresó, luego descubriría en cuál de los nueve cubos se encuentra actualmente el reproductor y aplicará ese entorno EAX.
Lo bueno aquí es que si su entorno es lo suficientemente complejo, obtendría ecos 'globales' gratuitos y los jugadores percibirían el sonido proveniente de la dirección correcta; y si obtienes el entorno EAX correcto, esperemos que el efecto sea lo suficientemente convincente como para que el cerebro lo acepte.