1

私が書いている 3D iPad アプリでは、単一の仮想リスナーが音源に近づいたり遠ざかったりするときに、オーディオの音量を増減させたいと考えています。リスナーは常に静止しています。リスナーは回転のみ可能です。音は常に静止しています。サウンドは、ユーザーの周りの方向の球を満たします。音はすべてリスナーから等距離にあります。

音は、3D グラフィックスの光源に似ていると考えています。各サウンドには、リスナーからその音源を指すベクトルがあります。リスナーには発信方向ベクトルがあります。リスナー ベクトルと各オーディオ ソース ベクトルの dotProduct によって、各オーディオ ソースの寄与を重み付けしたいと考えています。したがって、リスナーの「頭」が回転すると、音の寄与が方向的に変化します。

私が記述した内容のうち、OpenAL で処理できるのはどれくらいですか? また、自分で記述する必要があるのはどれくらいですか?

ありがとう、
ダグ

4

1 に答える 1

3

はい、OpenAL でこれを行うことができます。実際、あなたはもっとうまくやることができます!ドット積を使用すると、平行の場合は最大音量になり、垂直の場合はゼロになります。OpenAL を使用すると、ソースからの音の円錐を定義できます。

ソースでは、AL_CONE_INNER_ANGLE を AL_CONE_OUTER_ANGLE よりも小さく設定する必要があります。これにより、内側の円錐角度内でフル ボリュームが得られ、外側の円錐角度の外側ではゼロに減衰します。もちろん、AL_DIRECTION も設定する必要があります。

しばらく経ちましたが、リスナーのコーン/方向を設定できるかどうかはわかりませんが、すべてのオブジェクトがとにかく静的であるため、それは実際には問題ではありません。代わりにソースの方向を単に回転させることができます。それをシミュレートします:D

于 2010-10-03T02:15:12.770 に答える