今まで何回か、物理法則に基づいた物体の動きを計算しながら、レイトレーシングするというテーマを実施してきました(例えば、以下の記事)。
今回も、その点では新しいことは無く、自由落下するビー玉が、床面で跳ね返りながら、徐々にエネルギを失って、転がる様子をレイトレーシングします。
新しい試みとしては、レイトレーシングしたアニメーションに、「効果音を追加すること」です。
跳ねるビー玉の座標計算自体は、「ビー玉がスロープを跳ね落ちる」と同じです。レイトレーシング開始時に全ての時間(フレーム)におけるビー玉座標を計算して座標ファイルに出力しておき、その座標を読み込みながらアニメーションデータをレイトレーシングしています。
今回、音声データとの連携を取るため追加したのは、「跳ね返った」フレームがわかる様なデータの追加出力です(以下、座標ファイル構造)。
// ファイル構造
// 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ミキシング」を実行すると、以下の様なウインドウが開きます。
※ダウンロードコーナ、もしくはベクターのソフトウェアライブラリからダウンロード、インストールしてお使いください。
先ほど示した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) | A | (B) |
入力音声データ(WAV) | − | C |
↓ 統合 ↓ | ||
出力動画データ(AVI) | A | C |
※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に切り替えろ」とうるさいので、最近は違う検索サイトを使ってる。