我正在做一个项目,我需要添加 3d 声音效果,就像声音在听众效果周围不断移动一样。是否有可能使用 howlerjs 来实现这一点,我看到使用 howler 我可以播放来自特定坐标/方向的声音,但是如何实现环绕声/ambisonics 声音?或者 JavaScript 中的另一个库来实现这一点?
谢谢你的帮助。
我正在做一个项目,我需要添加 3d 声音效果,就像声音在听众效果周围不断移动一样。是否有可能使用 howlerjs 来实现这一点,我看到使用 howler 我可以播放来自特定坐标/方向的声音,但是如何实现环绕声/ambisonics 声音?或者 JavaScript 中的另一个库来实现这一点?
谢谢你的帮助。
晚了半年,但是是的,这在 howler.js 中是完全可能的,我自己没有使用过,但从文档来看,你可以更新位置。我发现还有更多可以执行此操作的库,请在此处查看 3dage 如何完全满足您的要求: https ://codepen.io/naugtur/pen/QgmvOB?editors=1010
var world = IIIdage.World({
tickInterval: 200
})
var annoyingFly = IIIdage.Thing({
is: ['fly'],
sounds: {
'buzzing constantly': {
sound: 'buzz',
times: Infinity
}
},
reacts: [
{
// to: world.random.veryOften(),
to: world.time.once(),
with: 'buzzing constantly'
}
]
})
// scene should create and expose a default world or accept one
var scene = IIIdage.Scene({
title: 'Annoying fly',
library: {
sounds: {
'buzz': {
src: ['https://webaudiogaming.github.io/3dage/fly.mp3']
}
}
},
world: world,
things: [ // scene iterates all things and spawns them into the world. same can be done manually later on.
annoyingFly({
pos: [-1, -15, 0],
dir: [1, 0, 0],
v: 1
})
]
}).load().run()
setTimeout(function () {
scene.dev.trace(IIIdage.dev.preview.dom())
}, 500)
setInterval(function rotateVector() {
var angleRad = 0.15
var d=scene.things[0].attributes.dir
var x=d[0], y=d[1]
var cosAngle = Math.cos(angleRad), sinAngle = Math.sin(angleRad)
scene.things[0].attributes.dir = [x * cosAngle - y * sinAngle, y * cosAngle + x * sinAngle, 0]
}, 500)
window.scene = scene
还有一些其他人做类似的事情:
如果您仍然需要帮助,希望这能将您推向正确的方向。