c++ - 获取3d空间中声音的 "pan"

标签 c++ audio 3d

我目前正在编写一个简单的 3d 声音系统,但我遇到了困难。

问题是: 我在空间中有一个点,声音来自那里,当然我还有听者,他的点和方向。

距离不是问题,它工作得很好,但是当我想计算声音的声像(左/右多少)时,这完全是一场灾难。

我已经在网上搜索过了,但找不到任何可用的解决方案,然后我尝试自己用三角形和东西计算它,但你不想知道结果是什么。

我就不展示代码了,因为我写了三遍,每一个版本都不能用。

我不希望你一定要给我代码,如果我能得到一个数学解决方案,我会很高兴。我想知道声音是从相机向左还是向右发出的。

我在 C++ 11 中工作,声音库是 Audiere。

编辑: 感谢willywonkadailyblah我想出了一些解决办法。你可以在这里观看: Get x position of sound from camera

通过点积,我可以获得三角形的 cos alpha,然后通过简单的皮塔哥拉斯定理,我可以获得距离 (A)。

最后,我将全距除以心距,然后乘以声距。

最佳答案

您可以计算相机方向与连接相机和声源的 vector 的积。这给出了 vector 之间角度的余弦值。如果点积比一更接近零,则声源更“靠边”而不是“靠前”。

关于c++ - 获取3d空间中声音的 "pan",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38705361/

相关文章:

c++ - 显式构造函数及其具有(默认?)值的定义

c++ - 模板重载在模板类中的行为不同

javascript - 来自缓存的 HTML 音频元素源

winapi - Discord如何挂接到特定进程的音频中?

javascript - 如何在没有 css3 和 webGL 的情况下将 3d 透视添加到 html5 Canvas

c++:检查对象数组中类的对象

java - 在java中读取wav文件

math - 从给定点垂直于线段

android - 3D libgdx 旋转

c++ - ITK setPixel 遇到堆损坏