OpenAL 3d Центр позиционирования и панорамирования
Используя 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 помещает трехмерный звук прямо в центр, без панорамирования?
Я хочу быть в состоянии приблизиться к звуку слева, услышав, как он постепенно исчезает из левого канала. Тогда будьте в обоих каналах на некоторое время. Затем постепенно исчезайте в правом канале.
Я попытался возиться с настройкой звука, чтобы он был направленным, но, похоже, это не сработало:
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);
1 ответ
Вместо того, чтобы использовать ALAL_POSITION в OpenAL, я в итоге отслеживал положение слушателя и все позиции звука вручную, а затем вручную применял снижение громкости и панорамирование каждого тика.
Это позволяет определенное окно / ширину / конус пространства, где эффект панорамируется полностью по центру. Звучит намного лучше.
Также обратите внимание, что я переключился с AL_LINEAR_DISTANCE_CLAMPED обратно в режим обратного ограничения по умолчанию. По какой-то причине линейный фиксированный режим вызывал слишком быстрое панорамирование любого эффекта с отрицательным значением X независимо от задания или максимального расстояния. Это происходило только в сборках Mac, поэтому я думаю, что реализация OpenAL Mac имеет ошибку панорамирования при использовании линейного фиксирования.