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);