请假设:

3D体积的最小距离= 1.0;
3D体积的最大距离= 100.0;

这是函数的声明:

一个物体可以是一个靠近玩家的球。

void CalculateSoundVolume(Vec3 objectPosition,
                          Vec3 objectVelocity,
                          Vec3 userHead,
                          Vec3 userFoward,
                          float& leftEarVolume,
                          float& rightEarVolume)
{

}

最佳答案

您可能开始使用这个基本事实:

声速是声波在 flex 介质中传播时每单位时间传播的距离。在20°C(68°F)的干燥空气中,声速为343米每秒(1,125 ft / s; 1,235 km / h; 767 mph; 667 kn),或者2.91 s或1英里4.69秒

声压级(SPL)随着距离增加一倍(-)6 dB而降低。声压下降到初始值的声压的1/2倍(50%)。它以距离的1 / r下降。声音强度级别随距离增加一倍(-)6 dB而降低。

详细阐述传播的基本模型,该模型将告诉您播放器在现实生活中会听到什么。

关于c++ - 如何根据物体位置和速度,演奏者位置和前进 vector 计算左耳和右耳的音量? (3D声音),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45395996/

10-12 21:28