2017-07-30 4 views
0

と仮定してください:オブジェクトの位置と速度、選手の位置と前方ベクトルに基づいて左耳と右耳の音量を計算する方法は? (3Dサウンド)

3Dボリュームの最小距離= 1.0;
3Dボリュームの最大距離= 100.0;

これは、関数の宣言です:

オブジェクトがプレイヤーに近いボール移動することができます。それは弾性体を介して伝播する

音の速度は音波によって単位時間当たりの移動距離である。

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

} 
+1

既によく機能している可能性の高い組み込み機能を使用するか、基本的な物理知識を使用して自分で計算してください。最初の方法は、ほとんど常により良い方法です。 – SkryptX

+0

私はステレオエフェクトにボリュームを使用するのではなく、少し遅れを加えるためにUnityに規定があるかどうか不思議です。ボリュームを単独で使用してステレオを達成するのは問題があります。特に反対側の耳に非常に小さな音量(他の表情では静かな音を聞かせてマスクする必要があります)が残っています。私はUnityをまだ使用していない。 –

答えて

2

この基本的な事実を使用することを開始することができます。 20°C(68°F)の乾燥空気では、音速は343メートル/秒(1,125フィート/秒、1,235 km/h、767 mph、667 kn)、またはキロメートルで2.91秒、 4.69秒。

音圧レベル(SPL)は、距離が2倍になると( - )6dB減少します。音圧は、初期値の音圧の1/2(50%)低下します。それは距離の1/rの比で落ちる。音の強さのレベルは、距離が2倍になると( - )6 dB減少します。

あなたのプレーヤーが実際に何を聞くかを伝える伝播の基本モデルを詳しく説明します。

関連する問題