3

OpenALを使用すると、距離モデルを設定できます。

alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED);

そして効果音の位置:

float globalRefDistance = 125.0f;
float globalMaxDistance = 1250.0f;
ALfloat alPos[] = {pos.x, pos.y, 0.0f}; 
alSourcefv(soundId, AL_POSITION, alPos);
alSourcef(soundId, AL_REFERENCE_DISTANCE, globalRefDistance);
alSourcef(soundId, AL_MAX_DISTANCE, globalMaxDistance);

これにより、リスナーがソースに近づき、サウンドの左右に前後に移動する場合を除いて、サウンドが適切に減衰およびパンされます。この場合、パンは左から右にすばやく移動します。中央でパンされた音を再生する場所は実際にはありません。

OpenALがパンせずに3Dサウンドを中央に配置する範囲/ウィンドウ/コーンを定義するにはどうすればよいですか?

左チャンネルから徐々にフェードインしていく音を聞きながら、左から音まで歩いて行けるようにしたいと思います。その後、しばらくの間、両方のチャネルにいます。次に、右チャネルで徐々にフェードアウトします。

サウンドを指向性に設定してみましたが、うまくいかないようです。

alPos[0] = 0.0f; alPos[1] = 0.0f; alPos[2] = 1.0f;
alSourcefv(soundId, AL_DIRECTION, alPos);
alSourcef(soundId, AL_CONE_INNER_ANGLE, 180.0f);
alSourcef(soundId, AL_CONE_OUTER_ANGLE, 240.0f);
4

1 に答える 1

2

OpenALのAL_POSITIONを使用する代わりに、リスナーの位置とすべてのサウンドの位置を手動で追跡し、手動でボリュームロールオフを適用して各ティックをパンすることになりました。

これにより、エフェクトが完全に中央にパンされる特定のウィンドウ/幅/スペースの円錐が可能になります。それははるかに良く聞こえます。

また、AL_LINEAR_DISTANCE_CLAMPEDからデフォルトの逆クランプモードに切り替えたことにも注意してください。何らかの理由で、線形クランプモードにより、参照または最大距離に関係なく、負のX値で配置されたエフェクトのパンが速すぎました。これはMacビルドでのみ発生したため、線形クランプを使用すると、OpenALMacの実装にパンのバグがあると思います。

于 2012-10-17T19:45:34.773 に答える