请假设:
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。
详细阐述一个基本的传播模型,告诉您您的玩家在现实生活中会听到什么。
关于c++ - 如何根据物体位置和速度、玩家位置和前向 vector 计算左耳和右耳的音量? (3D 声音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395996/