J'ai également réfléchi à cela. Je pensais que la principale préoccupation (en termes de compromis réalisme / performance) était que spatialement vos oreilles soient inférieures à vos yeux - et acceptent assez facilement quelque chose qui pourrait ne pas être aussi réaliste que vos yeux auraient besoin. Il y a de très bonnes chances que tenter de modéliser parfaitement le son dans l'environnement local soit exagéré - EAX est probablement «assez bon».
Dans un environnement fermé (par exemple Quake), je calculerais tout d'abord deux propriétés de chaque pièce: la «transferrance» et l'immersion:
La transferrance indiquerait comment le son serait affecté par le déplacement dans cette pièce et compterait très probablement pour un égaliseur paramétrique (idéalement, vous ajouteriez un écho / réverbération de chaque pièce, mais votre puce EAX pourrait ne pas avoir autant de bande passante). L'égaliseur paramétrique simulerait également en fin de compte l'atténuation du son.
L'immersion serait calculée en divisant la pièce en neuf cubes (éventuellement, même un seul pourrait suffire) et en calculant les propriétés sonores locales dans cette perspective. Ces paramètres seraient utilisés dans l'environnement EAX.
Enfin, chacune de vos chambres serait connectée par un graphique, où chaque point du graphique représente les portails reliant chaque chambre.
Lorsque le son se déclenche, vous effectuez un remplissage (pas de recherche A *) et gardez une trace du transfert et de la distance parcourue. Lorsque le son atteint le lecteur, vous devez le mettre en file d'attente pour jouer à un moment donné dans le futur; en fonction de la distance parcourue. Vous pouvez garder une trace du nombre de points du graphique passés et éventuellement «éliminer» le son (en d'autres termes, un remplissage continu de l'inondation). Vous devrez peut-être utiliser CUDA pour ce faire car il pourrait être lié au processeur.
Lorsqu'un son est joué, vous utilisez une API de son 3D (OpenAL) et le placez sur le portail par lequel il est entré, vous découvrirez alors dans lequel des neuf cubes le joueur se trouve actuellement et appliquerez cet environnement EAX.
La chose intéressante ici est que si votre environnement est suffisamment complexe, vous obtiendrez des échos «globaux» gratuits et les joueurs percevront le son venant de la bonne direction; et si vous obtenez l'environnement EAX correct, j'espère que l'effet sera suffisamment convaincant pour que le cerveau l'accepte.