使用 Tone.js 和 Three.js - 如何获得定位音频?

Using Tone.js with Three.js - how to get positional audio?

我可以轻松地让 Tone.js 在 Three.js 世界中生成音调,只需调用 oscillator = new Tone.Oscillator(440, "sine").toMaster();,但我不知道如何连接它Three.js 世界中的 AudioListener 的音调,使其成为位置声音。有人知道怎么做这个吗?

使用 Three.js 中内置的振荡器,它按照 Three.js audio-sandbox 示例完美运行,其中它使用 oscillator = listener.context.createOscillator(); 所以我假设这证明我需要将 Tone.js 输出连接到侦听器的 AudioContext,但我不知道该怎么做,也无法在网上找到任何相关信息。我能找到的任何例子都简单地使用上面的 toMaster() 方法,所以声音不是位置性的。

非常感谢任何帮助!

我想通了,为以后搜索的人发布自我解答。您只需要将 Tone.js 的 context 设置为与 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 );