如何根据物体位置和速度,玩家位置和向前矢量计算左耳和右耳的音量?(3D声音)



请假设:

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

这是函数的声明:

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

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

你可以开始使用这个基本事实:

声速是声波在弹性介质中传播时每单位时间传播的距离。在20°C(68°F(的干燥空气中,声速为每秒343米(1,125英尺/秒;1,235公里/小时;767英里/小时;667节(,或2.91秒内一公里或4.69秒内一英里。

声压级 (SPL( 随着距离加倍 (−(6 dB 而降低。声压下降是初始值声压的1/2倍(50%(。它随着距离的比率 1/r 而下降。声强级随着距离加倍(−(6 dB而降低。

详细阐述一个基本的传播模型,告诉你你的玩家在现实生活中会听到什么。