私もこれにいくつかの考えを与えました。(リアリズム/パフォーマンスのトレードオフに関して)一番の懸念は、空間的には耳が目よりも劣っていることであり、目が必要とするほど現実的ではないものを非常に簡単に受け入れることだと感じました。ローカル環境でサウンドを完全にモデリングしようとするのはやり過ぎである可能性が非常に高い-EAXはおそらく「十分」です。
閉じた環境(例:地震)では、まず各部屋について2つのプロパティを計算します:「移動」と没入:
Transferranceは、この部屋を移動することで音がどのように影響を受けるかを示し、パラメトリックEQにカウントされる可能性が最も高い(理想的には各部屋からエコー/リバーブを追加しますが、EAXチップはこの帯域幅を持たない可能性があります)。また、パラメトリックEQは最終的に音の減衰をシミュレートします。
没入は、部屋を9つのキューブに分割し(1つでも十分かもしれません)、その観点からローカルサウンドプロパティを計算することで計算されます。これらのパラメーターは、EAX環境で使用されます。
最後に、各部屋はグラフで接続されます。グラフの各ポイントは、各部屋を接続するポータルです。
音が鳴ると、塗りつぶし(A *検索なし)を行い、移動量と移動距離を追跡します。サウンドがプレーヤーに届くと、将来のある時点で再生するためにキューに入れられます。走行距離に基づきます。渡されたグラフポイントの数を追跡し、最終的にサウンドを「カリング」する(つまり、連続的な塗りつぶし)ことができます。CPUがバインドされる可能性があるため、CUDAを使用してこれを行う必要がある場合があります。
サウンドが再生されるとき、3DサウンドAPI(OpenAL)を使用して、それが入ったポータルに配置し、プレーヤーが現在9つのキューブのどれにいるかを調べ、そのEAX環境を適用します。
ここでのすてきなことは、環境が十分に複雑な場合、無料の「グローバル」エコーが得られ、プレイヤーは正しい方向から来る音を知覚することです。EAX環境を正しく取得できれば、脳がそれを受け入れるほどの効果が得られることを願っています。