BlenderとMMDでマッチムーブ(実写合成)動画を作ろう
まずは完成したものをどうぞ
(できればサイト側で1080p60fpsで見てほしい…)
きっかけ
以前、マッチムーブの記事を書いたのですが、カメラがほぼ固定でカメラの回り込みに対応してなかったんですね。
そんなある日、こちらの動画を発見。
かわいい、すごい!
今回つかったもの
- Blender v2.83.4
- mmd_tools
https://github.com/powroupi/blender_mmd_tools - ニコニ立体ちゃんことアリシアちゃん
ニコニ立体ちゃん特設サイト - ニコニ立体
なかでもMMDモデル(pmd)とモーションデータ(vmd)を使います
背景動画の各種設定
マッチムーブ合成をするには、動画のカメラの動きとBlender上のカメラの動きを同期させる必要があります。
そのために動画上の特徴点をマーキングして、それをトラッキングさせてあげる必要があります。
動画の読み込み
Blenderを起動してVFXを選択してファイルを新規作成します。
中央のOpenボタンから背景に設定したい動画を読み込みます。
今回はiPhoneで撮影した動画を使います。
マーカーの設定とトラッキング
- 下のMovie Clip EditorのCurrent Frameを0にする
青いバーを左にドラッグまたは、右下の1のところを0に変えるでもOK。 - 左のTrackタブからSet Scene Framesを押してPrefetchボタンを押す
処理が始まるので終わるまで待ちます。 - Detect Featuresを押す
自動で特徴点が設定されます。
後ほど、これをもとに調整をしていきます。
ここまでで、こんな画面になっていると思います。
黄色いマーカーが選択状態になっていない場合は、Aキーで選択しておいてください。
動画下のTrack Markersボタンを押してトラッキングを開始します。
すると動画が再生されると同時にマーカーの軌跡が表示されると思います。
トラッキング終了時点。
下のMovie Clip Editorに何やら赤と緑の波形が出ましたね。
これが、トラッキングの結果です。
といわれても訳が分かりませんね、結果が良いのか悪いのか確認しましょう。
トラッキング精度を確認する
左側のSolveタブから、Solve Camera Motionボタンを押します。
処理が終わると動画部分の右上にSolve errorが表示されます。
これがおおむね2以下なら、カメラの位置がおおよそ同期されているように見えるらしい。
それで今回は…
驚異の72.935。
かなり結果は悪いようです。
トラッキング精度を上げる
Solve errorを少なくするには、変なトラッキングの仕方をしているマーカーを削除していく必要があります。
Movie Clip Editorに何やら赤と緑の波形を参考に削除していきます。
丸で囲ったあたりがメインの波形と大きくずれてスパイクになっています。
これがあるとよろしくないので、ひとつひとつ丁寧に削除していきます。
波形を選択 -> Deleteキーで削除できます。
(青い線は今は気にしなくてOK)
削除後の波形がこんな感じ。
改めてもう一度、Solve Camera Motionボタンを押して、Solve errorを確認します。
0.7496。2以下になったので、カメラ位置のトラッキングは、これでよさそうです。
マーカーの数を8個以上にする
ここまでで、最後のフレーム時点で黄色で残っているマーカー数が8個以上あるか確認しましょう。
今回はギリギリ8個残っています。
もし、これが7個以下だった場合は手動でマーカーを追加して最後のフレームに残るようにします。
マーカーを付けるにもコツがあるらしいのですが、よくわからんのでトライアンドエラーになると思います。
(動画の最初から最後まで映っていて、周りと色が違うところにつけるといいのかな…)
マーカーは、動画上でCtrl+左クリックで付けられます。
マーカー足した後は、またマーカーを全選択してTrack Markersボタンを押してトラッキングします。
シーンへの追加と床、原点の追加
左のSolveタブからSet as BackgroudとSetup Tracking Sceneボタンを押します。
右上の3D view portに動画とPanelとCubeが追加されたと思います。
ですが、まだ動画と各種オブジェクトの位置があっていません。
これに地面と基準点を設定して位置を合わせていきます。
地面の位置についているトラッカーを3つ選択して、左のSolveタグのFloorボタンを押します。
同じように中心付近のマーカーを選択して、左のSolveタグのSet Originボタンを押します。
アニメーションを再生してみて、動きを確認してみましょう。
すると、右上の3D view portのオブジェクトが動画となじんだと思います。
ここまでで、背景動画の設定は終了です。
MMDモデルとモーションのインポート
ここからは、MMDモデルの合成作業に入っていきます。
MMDアドオンの設定
今回はBlender内でMMDモデルとモーションを扱うので、アドオンをあらかじめ設定しておきます。
手順はこちらを参照してください。
(丸投げ)
MMDモデルのインポート
今回はアリシアちゃんを使います。
pmxとvmdファイルがセットで入っているので、お試しにはめちゃくちゃ便利。
しかもかわいい。
モデルのインポート
ツールバーのFile -> Import ->MikuMikuDance Model
背景との合成
右側のカメラアイコン(Render Property)タブを選択して、Render EngineをCyclesを設定。
Film -> Transparent のチェックを付けます。
これで背景が透過されて表示されます。
F12を押してレンダリングしてみましょう。
モデルを置いただけなので、背景から浮いていますが無事合成できていることが確認できました。
モーションのインポート
MMDのモーションをインポートします。
ツールバーのFile -> Import ->MikuMikuDance Motion
フレームレートの調整
背景動画はフレームレート60fpsで撮影、MMDのモーションは30fpsで作られているため、ミスマッチが起きています。
このフレームレートを60fpsで統一していきます。
まず、プリンターのアイコンの(Output Properties)タブから、Frame Rateを60fpsに変更します。
これでMMDのモーションも60fpsで動くようになります。
なのでこのまま、レンダリングすると2倍速ダンスになります。
なので、MMDのモーションは0.5倍速で動いてもらうようにしましょう。
右上のウィンドウのEditor Typeを変更して、Dope Sheetを開きます。
MMDのモーションのタイムラインが表示されると思います。
このタイムラインを2倍に引き伸ばすことで、モーションを0.5倍速にします。
タイムライン上で、aキーを押してすべてを選択。
sキーを押して右方向にマウスカーソル移動させます。
今回のモーションはフレーム数3622なので、7244が二倍なのですが、厳密にやらないで大体で大丈夫です。
配置の変更
自分が意図する場所にモデルを移動させたり、背景のスケールに合うように拡大縮小をしましょう。
いやぁ、かわいい…
ライトの設定
ライトの設定が出来栄えに影響する一番大事なところなのですが、私自身まだよくわかってなくて雰囲気でやってるので解説はほかの詳しい方に譲ります。
ここでは、私は今回こう設定しましたという内容です。
まず現状確認。
今回は夏場の屋外しかも真昼間に動画を撮影したので、照明の強さがちょっと足りてません。
LightをSunにしてStrengthを2にします。
もう一度、F12でレンダリング。
モデル自身はあまり浮かなくなりましたが、影がちょっと後ろの木と比べると濃いですね。
ノードをちょっといじって色を薄くしましょう。
上のCompositingタブからノードを表示します。
Alpha OverでBackgroundのビューレイヤー内のGroundにある影をFacの値を0.6にすることで薄く描画します。
また、動画の前にその絵を作っておきたいので若干つなぎ方を変えます。
(見ずらいと思うので拡大してみてください)
変更後
F12でレンダリングして、変化を見てみましょう。
まだ違和感があるものの、だいぶ背景となじみました。
動画に出力する
最後に動画として出力します。
プリンターのアイコンの(Output Properties)タブのFrame Endを動画の尺に合わせます。
(多分MMDのモーションの尺になってると思いますので…)
また、今回は動画で出力したいので、Output -> File Format で、FFmpeg videoを選択しておきます。
最低限の設定はこれくらいで、後は解像度や細かいエンコードの設定はお好みでどうぞ。
ツールバーからRender -> Render Animationでレンダリングが始まります。
レンダリングには時間がかかるので、事前に60フレーム分ぐらいあらかじめテスト出力してみるのも良いかもしれません。
レンダリングの高速化は、この辺をみつつやってみるのがいいかもしれません。
私もGPU動員してみましたが、あんまり早くはならなかったです。
(CIみたいに別マシンコンテナで立ち上げてブン回したほうがよさそう)
さらに夢広がる展開
この記事によると、ばもきゃは無料ことVMCとEVMC4U+UnityVMDRecorderでモーションキャプチャしてvmd形式のモーションを作成できる。
ということは、blenderにインポートして、マッチムーブ合成ということができちゃいますね。