ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Blender】音に合わせてオブジェクトを動かす方法

 今日も今日とてBlenderのお話です。今回はタイトル通りに音楽ファイルの扱い方とその音に合わせてオブジェクトを動かしたりする方法の備忘録です。
 また予めお伝えしておきますがBlender上で音をつけてもレンダリング時には音が付かない」ので注意してください。音に合わせて動くようにしたとしてもレンダリングして出力した動画と音を別ソフトなどで合成する」必要があります。

・2018/07/17:追記
 実は音付きでもレンダリングできることがわかりました。以下の記事でやり方を書いています。
rikoubou.hatenablog.com


1:音楽ファイルを用意する
maoudamashii.jokersounds.com

 なんでも良いのですが今回はフリーで使える「魔王魂」さんの楽曲をお借りすることにします。
 以降の内容は「魔王魂」さんの「ジングル13」という楽曲を使用します。


2:オブジェクトの準備
 Blenderを起動させて出てくる立方体を使っていきます。

 Blenderを起動させたら「Edit Mode」に切り替えます。
f:id:rikoubou:20180502141907p:plain

「Edit Mode」に切り替えたら、立方体の上部の1点を右クリックで選択し、残りの3点を「Shift+右クリック」で選択していきます。
f:id:rikoubou:20180502143013p:plain

 その状態のまま3D View上で「Ctrl+Gキー」を押して「Assign to New Group」を選択してグループ化します。
f:id:rikoubou:20180502143440p:plain

 次に「Modifiersアイコン」を選択し「Add Modifier」を左クリックします。
f:id:rikoubou:20180502143637p:plain

 出てきたプルダウンの中から「Simple Deform」を選択します。
f:id:rikoubou:20180502142754p:plain

 タブの「Stretch」を選択します。
f:id:rikoubou:20180502143743p:plain

「Vertex Group」の左にあるマークをクリックして、先ほど作成したグループである「Group」を選択します。
f:id:rikoubou:20180502143857p:plain


3:アニメーションの設定
 2までできたら左下にあるところから「Dope Sheet」を選択します。
f:id:rikoubou:20180502144434p:plain

「Simple Deform」の「Factor」のところにマウスカーソルを合わせた状態で「iキー」を押して、キーフレームを登録します。
f:id:rikoubou:20180502144704p:plain

「Factor」のキーフレームが登録されていることを確認したら左下にあるところから「Graph Editor」を選択します。
f:id:rikoubou:20180502145022p:plain

「Graph Editor」の音に合わせて動かしたい項目のみが選択されている状態(ここでは「Factor」のみ)で、「key」→「Bake Sound to F-Curve」を選択します。
f:id:rikoubou:20180502145242p:plain

 ここで使用する音楽ファイルを選択し、「Bake Sound to F-Curves」ボタンを左クリックします。
f:id:rikoubou:20180502145526p:plain

 すると、このようにグラフが追加されます。
f:id:rikoubou:20180502145705p:plain

 ここまでできたら再生してみましょう。「Alt+Aキー」でアニメーションが開始されます。
(ちなみにもう一度「Alt+Aキー」で停止、「Shift+←キー」で最初のフレームまで移動、「Shift+→キー」で最後のフレームまで移動ができます)
f:id:rikoubou:20180502150419g:plain

 音自体は流れませんが、音に合わせて立方体上部が動いているようには見えます。
 ただしこのままだとちゃんと音に合っているかがわからないので、Blender上でも音が聞こえるようにします。


4:Blender上で音を流す
 3D Viewのプルダウンから「Video Sequence Editor」を選択します。
f:id:rikoubou:20180502151229p:plain

 以下のような画面になるので「Add」→「Sound」を選択します。
f:id:rikoubou:20180502151539p:plain

 3の手順の時と同じ音楽ファイルを選択し「Add Sound Strip」ボタンを左クリックします。
f:id:rikoubou:20180502151653p:plain

 すると音楽ファイルが取り込まれます。
f:id:rikoubou:20180502151827p:plain

 次に「Video Sequence Editor」画面の左上にある「+」のところを左ドラッグします。
f:id:rikoubou:20180502151923p:plain

 すると様々な設定項目が出てきます。
f:id:rikoubou:20180502152205p:plain

「Sound」の項目のファイル名の横にある「F」ボタンは必ず有効にしてください。(「F」ボタンを有効にしないと再びファイルを開いても音楽ファイルが読み込まれていない状態になります)
 また「Draw Wavefrom」にチェックを入れると、他の音楽編集ソフトのように波形が表示されます。
f:id:rikoubou:20180502152344p:plain

 この他にも「Volume」などの項目もあるので各自調節してください。

 ここまで出来たら再び「3D View」を選択して3D View画面に戻ります。
f:id:rikoubou:20180502152618p:plain

 その状態で「Alt+Aキー」で再生すると、ちゃんと音が流れることがわかると思います。


5:レンダリング時の注意
 冒頭でも書きましたが、ここまで出来た状態でレンダリングしても音と一緒に映像は出力してくれません。
 一度映像のみを出力したあとに、同じ音源を合成するという作業が必要になります。


 以上が音に合わせてオブジェクトを動かす方法です。今回はCubeの上面部分だけを動かしましたが、オブジェクトの移動や回転、大きさなどを選択した状態で「key」→「Bake Sound to F-Curve」を設定してあげると同じように動かすことができます。

 音楽ファイルを読み込む際に周波数の閾値も設定できるようなので、そのあたりは参考資料を参照願います。

 この技術を応用すれば3Dモデルの口パクなどにも使えるよ思います。


・参考資料