Ручное панорамирование аудио в three.js

Я просматриваю Аудио и PositionalAudio, и я не могу найти способ вручную панорамировать звук влево или вправо. Назначение звука объекту PositionalAudio дает мне объект панорамирования внутри, но я не могу найти какие-либо пользовательские настройки, которые я могу сделать, чтобы изменить панорамирование.

введите здесь описание изображения

Я могу вручную установить громкость в зависимости от расстояния в моем цикле анимации с setVolume для звука, который я хочу настроить, но я не могу найти ничего для панорамирования.

Обратите внимание: вы можете видеть, что я пытался изменить свойство position.x, но это не дало никакого эффекта.


person Chewie The Chorkie    schedule 12.06.2020    source источник


Ответы (1)


Особенность PositionalAudio заключается в том, что он автоматически перемещается влево/вправо в зависимости от своего положения до AudioListener. AudioListener обычно прикрепляется к камере, поэтому зритель получает эффект трехмерного позиционного звука:

  • Если источник звука находится слева от слушателя, он будет исходить из левых динамиков.
  • Центр: оба динамика
  • Справа: правый динамик

Вы можете увидеть это автоматическое панорамирование в действии в этой демонстрации. (Я не уверен, почему эта демонстрация заглушает вас одновременно с 4 источниками звука. Я рекомендую отключить все источники звука, кроме второй сферы, а затем перемещаться вокруг нее, чтобы увидеть, как происходит автоматическое панорамирование)

Разрешение управления панорамированием нанесло бы ущерб цели позиционного 3D-аудио. Если вы хотите переопределить панорамирование, я думаю, вы можете применить фильтр с AudioListener.setFilter() и передать StereoPannerNode, но, как я уже сказал, это противоречит цели 3D-аудио.

person Marquizzo    schedule 12.06.2020
comment
К сожалению, их 3D-панорамирование недостаточно сложно для моих нужд. Я посмотрю, сможет ли StereoPannerNode работать. Я не знал, что setFilter() может это сделать. Спасибо! - person Chewie The Chorkie; 12.06.2020
comment
Прохладный. Убедитесь, что вы используете AudioListener.context для получения аудиоконтекста. повторно уже используется, вместо того, чтобы создать новый. - person Marquizzo; 12.06.2020
comment
К сожалению, Safari не поддерживает StereoPannerNode. Я, вероятно, продолжу работу над звуком с p5.js, так как он поддерживает почти все браузеры и имеет другие полезные функции, такие как сверточная реверберация. - person Chewie The Chorkie; 12.06.2020
comment
Да, в Safari плохая поддержка WebAudio. Это очень расстраивает. Вы уверены, что функции p5.js будут работать в Safari? - person Marquizzo; 12.06.2020
comment
Примеры работают в Safari, но я не могу заставить их работать с самой библиотекой. Пишет, что веб-аудио не поддерживается этим браузером. Я в замешательстве, так как примеры работают сами по себе. - person Chewie The Chorkie; 12.06.2020