three.js - 将 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()
方法,因此声音不是位置的。
非常感谢任何帮助!
解决方案
我想通了,为将来搜索的人发布自我答案。您只需将context
Tone.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 );
推荐阅读
- jquery - Ajax成功没有设置变量的值
- php - 数组按单词中的值排序
- r - PCA 后如何计算 T2 Hotelling?
- r - R 中 rfm 包中的“rfm_table_order”函数,返回一个小标题。但 tibble 输出仅在控制台中可见,无法在 R 中查看或导出
- nginx - Nginx 将所有 www 重定向到 @
- qt - 如何打开 QNetworkSession 到 WiFi AP 指定使用哪个物理接口?
- c# - C# SqlBulkcopy 插入在从 2005 年到 2014 年更新 SQL Server 时表现不同
- sql-server - 无法连接到 Azure SQL 数据库,错误 10060
- xquery - 在变量 [Xquery] 中使用标签分隔元素
- elasticsearch - 为什么频繁写入后elasticsearch索引性能下降