首页 > 解决方案 > 将 Tone.js 与 Three.js 一起使用 - 如何获得位置音频?

问题描述

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

使用 Three.js 内置的振荡器,它可以按照 Three.js音频沙盒示例完美运行,它使用的地方oscillator = listener.context.createOscillator();所以我假设这证明我需要将 Tone.js 输出连接到听者的 AudioContext,但我只是无法弄清楚如何做到这一点,我也无法在网上找到任何关于它的信息。我能找到的任何示例都只需使用上述toMaster()方法,因此声音不是位置的。

非常感谢任何帮助!

标签: three.jsweb-audio-apitone.js

解决方案


我想通了,为将来搜索的人发布自我答案。您只需将contextTone.js 的 设置为与 PositionalAudio 对象相同,然后setNodeSource将该对象设置为 Tone.js 振荡器,将其添加到一些几何图形中,嘿,presto,由 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 );

推荐阅读