bee_bound.jpg


跳ねるビー玉+効果音

 今まで何回か、物理法則に基づいた物体の動きを計算しながら、レイトレーシングするというテーマを実施してきました(例えば、以下の記事)。

 今回も、その点では新しいことは無く、自由落下するビー玉が、床面で跳ね返りながら、徐々にエネルギを失って、転がる様子をレイトレーシングします。
 新しい試みとしては、レイトレーシングしたアニメーションに、「効果音を追加すること」です。

跳ねるビー玉の座標計算

 跳ねるビー玉の座標計算自体は、「ビー玉がスロープを跳ね落ちる」と同じです。レイトレーシング開始時に全ての時間(フレーム)におけるビー玉座標を計算して座標ファイルに出力しておき、その座標を読み込みながらアニメーションデータをレイトレーシングしています。

 今回、音声データとの連携を取るため追加したのは、「跳ね返った」フレームがわかる様なデータの追加出力です(以下、座標ファイル構造)。

  // ファイル構造
  //  MODELA_FID
  //  bn  nn  px  py  pz  pr  bv
  //  :
  // bn=ボール番号、nn=フレーム番号、(px,py,pz)=座標、pr=回転角度
  // bv=跳ね返り時スピード


 bn〜prまでは、「ビー玉がスロープを跳ね落ちる」でも出力していました。bvが追加したデータで、「跳ね返り」が起きなかったフレームでは、bv=0が出力されています。「跳ね返った」フレームでは、bv>0のデータが出力され、その値は、跳ね返った瞬間のビー玉の速さ(スピード)となっています。

 高い位置から落下したビー玉は速いスピードで地面と衝突して跳ね返るし、低い位置から落下したビー玉は遅いスピードで地面と衝突して跳ね返ります。この時、スピードが速い方が大きな音が出て、スピードが遅ければ小さな音しか出ないはずです。
 後で音声データを生成する時の、跳ね返り音の音量とタイミングを知るための追加データとなります。

音声データの準備

 今回当てる効果音は、「ビー玉が床で跳ねる音」です。
 ビー玉が手元にあれば、それを適切な高さから落とし、跳ね返る音をスマホなどで録音して、WAVファイルを生成するのが簡単でしょう。レイトレーシングする動画は、ビー玉が何回か跳ね返るのですが、それに合わせて効果音を録音するのは困難なので、1回分の跳ね返り音を録音していただいたらOKです。
 1回分の跳ね返り音を、跳ね返るタイミングに合わせてn倍化して、ミキシングする手法を取ります。

 作者手元には肝心なビー玉が有りませんでしたが、プラスティック製の櫛(15cm程)が有りましたので、これを木製の机に打ちつけた時の音を録音しました。

   :bee_bound.wav

 全然、ビー玉とは関係のない音ですが……。TVや映画などの効果音も、撮影時に録音した実際の(リアルな)音ではないことが多い様です。

 別な何かで作り出した音をそれらしく当てているようです。リアルより、印象の方が重要みたい。小豆を入れた竹かごを傾けて、中の小豆を転がす音で海の波の音を表現するのとか、有名ですよね。なので、リアルにビー玉を落下させたときの音でなくても、「それらしく」聞こえる音を録音出来たらOK、ってことです。

 それどころか逆に、全くイメージと異なる意外な音を当てて、コミカルな動画にするのも一つの表現方法ですよね?

映像と音声のタイミングを合わせる

 最後に、レイトレーシングした動画のビー玉が跳ねるタイミングでに合わせて、前節で準備した効果音を鳴らすという作業が必要です。この時、調整すべきパラメータは以下の3点です。

 タイミング、音量、パンのパラメータを算出できさえすれば、後は、拙作sPeachの「ミキシング機能」を使うと、実現することができます。sPeachを起動して、「ファイルメニュー ⇒ WAVミキシング」を実行すると、以下の様なウインドウが開きます。

mixing.png

ダウンロードコーナ、もしくはベクターのソフトウェアライブラリからダウンロード、インストールしてお使いください。

 先ほど示した3つのパラメータが、各々、start(挿入タイミング、開始時間)、level(音量)、pan(パン)のパラメータに相当します。

 これらの情報を、本来であれば、手動で設定するのですが、sPeachのミキシングウインドウにはメニューが付いていて、「ファイルメニュー ⇒ インポート」を実行するとCSV形式のデータを取り込むことができるようになっています。
 Xi-TRACEでレイトレーシングを実行した時に、「bee_bound_out.csv」というファイルが出力されるのですが、これが、sPeachでインポート可能なCSV形式ファイルとなっています。sPeachのミキシング機能からインポートして、OKボタンを押してください。出力先のファイル名を問い合わせてくるので、適切なファイルを指定すると、ミキシングを実行してくれます。

映像と音声の統合

 Xi-TRACEでレイトレーシングした動画データ(AVIファイル)と、sPeachでミキシングした効果音データ(WAVファイル)が完成しました。この2つを統合して、効果音付きの動画データ(AVIファイル)を生成します。

 これも、sPeachで実行することが可能です。「ファイルメニュー ⇒ AVI+WAV統合」を実行すると、動画データ(AVI)と、音声データ(WAV)を問い合わせてきます。各々指定してOKボタンを押すと、出力ファイル名を問い合わせてきます。適切なファイルを指定してください。

ファイル 映像 音声
入力動画データ(AVI) (B)
入力音声データ(WAV)
↓ 統合 ↓
出力動画データ(AVI)

※Bは、有っても無くても、結局Cで置き換えられます。

 これで完成。


完成データ

 完成したデータをリンクしておきます。

1) Xi-TRACEデータ bee_bound.xitr
2) 跳ね返り効果音 bee_bound.wav
3) 計算した座標データ bee_bound_out.txt
4) ミキシングファイル bee_bound_out.csv

 1)でレイトレーシングを実行して、アニメーションデータを生成します。この時、3)と4)が生成されます(よって、データはリンクしていません)。
 4)をsPeachの「ファイルメニュー ⇒ WAVミキシング」を実行した時に表示されるウインドウから、「ファイルメニュー ⇒ インポート」で取り込み、ミキシングを実行すると、1)で生成したアニメーションデータと対応する音声データが出力されます。
 続いて、sPeachで「ファイルメニュー ⇒ AVI+WAV統合」を実行し、1)で生成したアニメーションデータ(AVI)と、4)で生成した音声データ(WAV)を統合すると、効果音付きアニメーションデータを生成することができます。




 しかし、YouTubeの嫌がらせがひどい。IEだと、トップページの動画のサムネイルが表示されたりされなかったり、虫食い状態。以下の警告がずっと表示されている(2020/03/26現在)。

   △このブラウザのサポートはまもなく終了します。快適な視聴をお楽しみいただくためには、ブラウザをアップデートしてください。   

 まあ、そりゃ良いよ、時の流れってもの。古くなったブラウザがサポート終了?仕方ない。でもね、「まもなく終了します」 ⇒ 「まだ、今は、サポート中」でしょ?な・の・に、この嫌がらせは何?!
 はぁ。ブラウザくらい、好きな物使わせてよ……。例えブラウザを新しいのに乗り換えるにしても、絶対に「Chrome」だけは使ってやるものか、と、思った作者なのでした〜(💩が💢)。

その後

 その後、YouTubeを使う時だけはサポートされている他のブラウザ(当然、Chromeではない)に切り替えたのだけど、酷い。何かする度に遅いは、何もしてないのにハングするは、使い難いったらありゃしない。
 そこまでして「Chrome」使わせたいのか、「Chrome」ですら同じ状況なのか、わからないけど無能の集団。

 ちなみに、Googleも「Chromeに切り替えろ」とうるさいので、最近は違う検索サイトを使ってる。



home

download

gallery