Использование Tone.js с Three.js - как получить позиционное аудио? - PullRequest
0 голосов
/ 05 ноября 2019

Я легко могу заставить Tone.js генерировать тон в мире Three.js, просто позвонив, например, oscillator = new Tone.Oscillator(440, "sine").toMaster();, но я не могу понять, как подключить этот тон к AudioListener в Three. JS World, чтобы сделать его позиционным звуком. Кто-нибудь знает, как это сделать?

Используя генератор, встроенный в Three.js, он отлично работает в соответствии с примером Three.js audio-sandbox , где используется oscillator = listener.context.createOscillator();, поэтому я предполагаю, что это доказывает, что мне нужно подключитьсявывод Tone.js в AudioContext слушателя, но я просто не могу понять, как это сделать, и не могу найти в Интернете ничего об этом. Любые примеры, которые я могу найти, просто используют подход toMaster(), как указано выше, чтобы звуки не были позиционными.

Любая помощь, которая наиболее ценится!

1 Ответ

0 голосов
/ 05 ноября 2019

Я разобрался с этим, разместив самоответ для тех, кто ищет в будущем. Вам просто нужно установить context файла Tone.js таким же, как объект PositionalAudio, а затем setNodeSource этого объекта быть осциллятором Tone.js, добавить его в некоторую геометрию и, прежде всего, позиционный звук, сгенерированныйTone.js:

var mesh1 = new THREE.Mesh( geometry, material ); //geometry, material defined elsewhere
scene.add(mesh1);
listener = new THREE.AudioListener();
camera.add( listener );
var sound1 = new THREE.PositionalAudio( listener );
Tone.context = sound1.context;
var oscillator1 = new Tone.Oscillator(440, "sine");
sound1.setNodeSource (oscillator1);
mesh1.add( sound1 );
...