今回はBlenderのモーショントラッキング機能を使って簡単な合成映像を作る方法をご紹介します。
まずは今回作成したものをご覧ください。
こんな感じでPCの上に島根県のホログラム?を表示させることができます!
元の動画はこんな感じです。
机の上が汚くて申し訳ないです、、、
今回はマテリアルなどの設定は話がずれるので割愛させていただきます。
合成ができるようになる
を目標に話を進めていきます。
モーショントラッキングとは?
モーショントラッキングとは動画内の被写体の動きを分析し、追跡することができる機能です。
実際には被写体の動きを分析するために動画内の特徴的な部分をいくつかマークしてそれぞれを追っています。
モーショントラッキングを行うには専用の高額なソフトなども多数ありますが、Blenderにもその機能がついているのでそちらを使ってみます。
あまりネット上にもモーショントラッキングを解説しているページが少なくBlenderの標準機能でも気がついていないという方も多い機能では無いでしょうか…?
モーショントラッキングを行うために
まずモーショントラッキングを行うために必要なのは
・合成したい動画データ
・合成する3Dモデル(平面でも構いません)
この二つです。
・合成したい動画データ
Blenderが読み込める拡張子ならなんでも大丈夫です(mp4などの一般的なものなら読み込めるはずです。私はiPhoneSEで撮影したのでm4vでした。)
動画の内容ですが、なるべく動きが早すぎないものが良いと思います。
今回は自動でモーショントラッキングを行うので、あまり早いとマーカーが外れてしまいます。手動で直すこともできますがかなり面倒です。
・合成する3Dモデル
これはどんなものでも良いです。
マテリアル等などを設定しておくと、合成した時に違和感が少なくなります。
今回使用したモデルはcycleレンダーでノードをいじってそれっぽい感じになっています。
作業の流れ
それでは早速作っていきましょう。
作業の大まかな流れとしては
動画データの取り込み
↓
データの解析
↓
3Dオブジェクトの配置
↓
書き出し
という感じです。
まずBlenderを起動します。
今回はとりあえず最初からある立方体を合成していきたいと思います。
次に動画を読み込むために左下のモードの切り替えから動画クリップエディターを選択します。
作業がしやすいように画面を分けておくと良いです。
次に動画クリップエディター画面の真ん中の下にある開くをクリックして開きたい動画データを選択します。
うまく開けるとこのような画面になると思います。
次に左側のメニューのマーカーの欄から特徴を検出をクリックします。
もし写真のメニューが出ていなければTキーを押すと出てきます。
すると自動的に特徴的な部分にマーカーが設置されます。
ここでマーカーの数が10個以下だと特徴が少なすぎるので他の動画か、以下の「使用する部分の選択」でやり直しましょう。
次に使用するフレームを選択します。
動画を読み込んだ状態でタイムラインを表示させ、再生すると動画も再生されます。
ここで開始と終了のフレームを調整しておきましょう。
今回は0~120フレーム(約4秒間)を使用します。
設定できたら開始フレーム数と現在のフレーム数を合わせて、トラックの再生ボタンを押します。
マーカーの自動トラックが開始されますので終わるまで待ちましょう…
ちなみにロスト(見失った)したマーカーはピンク色で表示されます。
実際に画面から消えているのなら良いですがもしマーカーが外れただけならば、マーカーが黄色の状態でドラッグして補正することができます。
トラッキングが終了しました。
この時黄色のマーカーが8つ以上ないとこの後の作業に影響が出るので、もしなかったら動画のデータを変更するか、使用するフレーム数を減らす、または手動でマーカーをつけて8つ以上にしてください。
次はカメラモーションのソルブを行います。
もし使用しているカメラ、レンズのオプションに自分の使用しているものがあれば設定しておきましょう。
(iphoneは古くて5までしかなかったですが…)
もし選択肢になければ左の焦点距離、光学中心、K1,k2を選択しておきましょう。
(この辺の設定がどのように影響を及ぼすのかはわかりません…)
カメラモーションの解決をクリックすると解析してくれます。
ぱっと見わかりにくいですが、処理が完了すると右下にSolve error:数値の表示が現れます。
この数値が4程度なら大丈夫なようです。(小さければより良いです)
次に地面の設定をします。
最終フレームで黄色のマーカーを三つ選択して、自動接地をクリックします。
次にシーン設定から「背景として設定」「トラッキングシーン設定」の二つを選択します。
うまくいけば、3Dビュー上に背景と「ground」というオブジェクトが表示されます。
(背景はカメラ画面でないと表示されません。)
ここまでできたらあとは3Dビュー上で表示させたいモデルを移動してあとは書き出せば完了です!
(書き出しの詳細設定などは今回は割愛させていただきます)
この時に別のオブジェクトを使ってオブジェクトを隠したり、アニメーションをつけることもできます!
最後に
以上が簡単なトラッキングの方法です。
かなりざっくりと説明したので、もっと精度は上げることができます。
自分なりにやり方を探してみましょう!
2018/5/12追記
島根県のモデルが欲しいとのコメントがございましたので配布いたします。
といってもsvgファイルを読み込んだだけのものなので少し扱いにくいかもしれません…ご了承ください
こちらのリンクよりダウンロードできます
すみません、丁寧にありがとうございます。
僕もやってみたんですが、シーン設定のトラッキングシーン設定を押すと、エラーになってセンサーの幅がおかしいと言ってきます。
どうすれば解決できますか?
aki様
返信が遅くなり申し訳ございません。
トラッキングした時のマーカの数は十分でしょうか?
・動画の最後まで最低でも8つの黄色いマーカーが残っているか
・カメラモーションの解決を選択した際にでる「solve error」の値が4よりも小さいか
この二つを確認してみてください。
とても分かりやすく参考になりました
ちなみに実写の映像をもとにCyclesレンダーの光沢シェーダーなどで映り込ませることはできますか?
syunpon様
コメントありがとうございます。
Cycleレンダーでも同様のことをすると合成が可能です。
映り込みにつきまして、静止画は可能なことを確認しています。動画のほうはやったことがありませんが、可能だと思います。
やり方としてはマテリアルのテクスチャの方に背景の画像と同じ動画データを設定して動画の時間を同期させるとできるような気がします…(確実な情報でなくて申し訳ございません。)
また時間があれば記事にして掲載させていただきます。
冒頭で出てきた島根県のホログラムはどこからかもってきたものですか?
もしよろしければそのサイト等を教えていただけないでしょうか?
かっこいいと思って自分もしてみたいと思ったので、、
やのっち様
コメントありがとうございます。
島根県のモデルは.svgファイルをBlenderで読み込ませて作った物を使用しております。
なのであまりきれいなモデルではありませんが島根県を出して頂けるのなら私としてもうれしい限りなのでモデルをダウンロード可能な状態にしておきました。
記事の最後の部分にURLを追記しておきましたのでそちらからダウンロードして下さい。
このモデルをノードを使っていい感じにホログラムっぽくしてみてください!
ありがとうございます!
早速DLさせていただきました。
ホログラムっぽくできるよう頑張ってみます!
シーン設定の写真が自動接地の写真と全く同じになっていますよ。
脱無償化様
ご指摘ありがとうございます。
正しい画像に差し替えておきました。
blenderでのモーショントラッキングやってみたかったので、参考になってます!
ところで、自動接地の時、マークをshift+クリックで選択しても複数選択ができません。もし、この原因がお分かりになるならご教授ください
カイロス様
コメントありがとうございます。
最終フレームに設定したときに出ているマーカの色で現在の選択状況がわかります。
赤色のマーカ:トラッキングに失敗しているor画面から外れている
四角で黄色:未選択
四角で黄色で真ん中から右にハンドルが出ている:選択には入っているがフォーカスされていない
四角で白色で真ん中から右にハンドルが出ている:選択中
複数選択ができない可能性といたしましては現在全選択になっていませんでしょうか?
一度画面内でAキーを押すと全選択になり再度Aキーを押すと全選択解除になるので現在の状況がわかりやすくなるかと思います。
ご確認ください。
レイアウトタブのカメラビューからはうまく動画と3Dデータが合成できているのですが、
レンダリングすると、3Dデータだけになり、動画が張り付けられていませんでした。
ノードの設定の問題だとおもっているのですが、
どのように設定すればいいのか、おしえていただけないでしょうか。
ryota様
コメントありがとうございます。
ノードにつきまして説明します
以下の画像のように
レンダリング結果のアルファ部分を動画や画像などでアルファオーバーすることによってレンダリング結果を重ねて表示できます
BlenderレンダーCycleレンダー共通です。
(ノードは最低限の構成なので必要に応じて調整して下さい)
レンダリング結果が透過されない場合には
レンダーの設定部分からアルファ:透過を選択してください