(今回自己完結してしまいました、すいません。)
過去すれ
http://www.play21.jp/board/formz.cgi?ac ... &rln=44342
の続きになりますが、
ドップラー効果を二次元(高さを考慮しない)で考える場合の再現方法を教えてください。
アイディアでもかまいません。
・やったこと/問題点
ドップラー効果の公式は物理で勉強しましたが、あれは一直線上の場合のみでした。
三次元空間の前に、まずは二次元空間でのドップラー効果の再現方法を考えてみようと思います。
・条件
音の観察者または主人公(これから観察者と略)と、音源の移動方向ベクトルは規則性は特になく変化する。
(片方はプレイヤーによる操作で、音源は移動する物)
遮蔽物は考えない。
・思いついた方法
1次元のドップラー効果のように正確に周波数を割り出すのは無理だと思い断念、その代わりに
観察者から音源への距離の変化量(距離の微分)、をリストにして各音源に持たせる。
(リストじゃなくても、1フレーム前だけでもいいかも?)
マイフレーム距離の変化量を記録し、その変化量が負ならそれだけ周波数をあげ、正ならばそれだけ周波数を下げる。0のときは、元の音にする。
・欠点
やはりアバウトな計算になり、正確には求められません。
ほかにいい方法とかありますか?
追記:
環境は
DXライブラリ 3.00f
VC++ 2008 Express Edition
追記2:
そもそも、音が一瞬で伝わってしまうような計算になっていたので、音が伝わるまでに何フレームかかるかも計算して、その分リストを昔に戻って距離の変化量を求めてから周波数をかえる、なんてのも思いつきましたが、、、、
やりすぎでしょうかねw
3Dエフェクト:ドップラー効果の再現
Re:3Dエフェクト:ドップラー効果の再現
実際に前フレームとの距離からで計算してみたら、思ってたよりりも満足できるものになってました。
机上の空論で投稿しないよう気をつけます。お騒がせしました。
でも、もっといい方法ありましたら、アイディア等お願いします。
机上の空論で投稿しないよう気をつけます。お騒がせしました。
でも、もっといい方法ありましたら、アイディア等お願いします。