【実写合成MMD】AfterEffects CCを利用したMMDマッチムーブ

元記事:https://archive.md/LzFob

作成者:--様

ニコニコユーザーページ:https://www.nicovideo.jp/user/11195552

作成日:2014-03-16 22:18


(当記事は2014年に書いた内容を、2019~2020年に大幅改変したものになります。)


①実写映像から、そのカメラがどう動いたかを解析する(カメラトラッキング)

②そのデータをCGソフトに読み込ませ、実写映像と同じカメラの動きをしたCG映像を作る

③実写映像とCG映像を重ね合わせる

という、実写合成をするための技術をマッチムーブと呼びます。


マッチムーブ(ニコニコ大百科)


マッチムーブを使って制作された映像そのものをマッチムーブと呼ぶこともあります。

ニコ動ですとマッチムーブ=実写合成動画と思われてるような雰囲気があります。


------------------------------------------------------------------------


MMDでも、他ソフトと連携すればマッチムーブができます。


一つは、AfterEffects CC(以下AE)を用いる方法です。


もう一つは、Blenderを用いる方法です。

※ もしBlenderを使うなら、カメラトラッキングの際にK.naoki様のBlender Match move Tutorial Beginner seriesや、MODELING HAPPY 様の【blender2.8初心者用】iphoneで撮影した動画にモーショントラッキングをするチュートリアル記事も参考にされると良いと思います。


もう一つ、VoodooCameraTrackerを用いる方法もありますが、

AEやBlenderに比べて工程が分かりづらいので、現在ではオススメできません。


では、AEとBlenderのどちらを使えばいいかというと、両方使えたほうが良いです。


【AEの特徴】

・有料サブスクリプション

・解析中に別作業もできるので制作時間の短縮につながる。

・オートトラッキング方式で、設定項目が良くも悪くもシンプルすぎる。

 スキル習得は楽だけど、解析失敗のリスクも高いし、失敗したときに融通が利かない。

・解析精度はあまり高くない。

・複雑な動きや、動くものが多く写り込んでいる映像は解析に失敗する事が多い。

・座標軸の原点設定が極めて簡単にできる。

 初心者は原点設定で失敗しやすいので、ここが楽なのは大きなアドバンテージとなる。

・もともと映像編集ソフトであるため、マッチムーブ以外にも活用できる。

 マスクを切るなどの映像加工にも利用できる。

・MMDカメラデータの出力には「vmd Exporter」(制作:あかつきみさき様)を使用する。


【Blenderの特徴】

無料

・マニュアルトラッキング方式で、設定できる項目が色々ある。

 なので融通が利くし、AEで解析失敗するような複雑な映像も解析できることが多い。

 その分、作業量もやや増えてしまう。

・スキル習得はAEに比べれば多少苦労するかもしれないが、それでも簡単と言えるレベル。

・設定さえうまくできれば、解析精度は極めて高い。プロの現場でも使うレベルらしい。

・もともと3DCGソフトであるため、MMDerにも多少馴染みがあるソフトである。

・MMDカメラデータの出力には「MMDモーショントラッキングセット」(制作:かき様)を使用する。

 このセットには、カメラの動きだけでなくレンズ歪みの情報をMMDに移行させる機能もある。


(参考:kurono73様寄稿のCG WORLD記事 Blenderによるマッチムーブのススメ、及び同氏のブログ記事 どれがいい?トラッキング・ロトソフト比較


以上を踏まえて、初心者の方には、AEで解析失敗したらBlenderを使う、またはAEで失敗しそうな時だけBlenderを使うのをオススメします。


ただ、効率だけを重視するのであれば、AEで解析失敗しそうな複雑な動きの映像をそもそも撮らないようにし、Blenderの出番が極力ないようにするというのが個人的にはベストであるように思います。


もちろん、Blenderには無料という最大のアドバンテージがあります。マッチムーブ絡みの機能は充実しており、将来性もあります。AEと比べて工数が多いのは確かですが、難易度が高いというわけでもありません。


どちらを使うかは、最終的には好みの問題です。


いずれにせよ、初心者の方に先に手をつけてほしいのはBlenderよりもAEだと思っています。

当記事ではAEを用いたMMDマッチムーブの手法を紹介しています。


------------------------------------------------------------------------



【1.実写映像を撮影】


カメラはスマホでも十分です。


AEでは、カメラの解析方法が3つあります。

実写映像をどういう感じで撮ったかを指定するというもので、「標準」「ほぼフラットなシーン」「三脚パン」と呼ばれます。


「標準」は、カメラが前後左右に自由に移動するものを想定しています。

「ほぼフラットなシーン」は、カメラ移動・回転をほとんど行わないで、手持ちでただ撮っただけの状況を想定します。

「三脚パン」は、三脚に載せたときのように、カメラ移動を一切行わず、回転のみするものを想定しています。


「ほぼフラットなシーン」「三脚パン」で解析されたデータは3Dとしての情報が不足し、少々扱いづらいです。MMDと連携する前提であれば、できるだけ「標準」となるように撮ってください。


つまり、撮影時には多少でもいいのでカメラ移動を伴うようにしてください。

机の上を撮影する場合は、10cmくらいカメラを動かすのがオススメです。

歩き撮りの場合、2~3歩以上は歩いて撮るのがオススメです。


初心者の方には勘違いされがちですが、行ってほしいのはカメラ移動であって、カメラ回転ではありません。位置的な意味で、動いてほしいのです。

例えば「その場に立って、カメラを左右に振り回すだけ」というカットでは、カメラ移動が足りず、解析に失敗したり、「三脚パン」と誤認識されたりすることがあります。


仮に、「移動するようなシーンはいらない。ほぼ動かない状態で8秒間のカットがほしい。」という状況であれば、単に「8秒ほぼ動かない」ではなく、「2秒移動したあとに8秒ほぼ動かない」という感じで撮影して、最終的な動画編集時に最初の2秒を削るのが望ましいと思います。


また、初めて実写合成向けに実写映像を撮影する際は、カメラ移動をさせる以外にも、以下のことに気をつけてください。


【極力守ってほしいこと】

・あまりカメラを回転させすぎない

・できるだけ広角で撮る

・途中でズームをいじらない


【できれば守ってほしいが、守らなくてもなんとかなること】

・過度な手ブレを避ける

・地面が写るように撮る

・暗すぎる場所は避ける

・(設定できるのであれば)シャッタースピードは短くする

・(設定できるのであれば)絞りを開放しすぎない

・GoProのような魚眼レンズのカメラは避ける

・1カット10秒の動画にする

・29.97fpsで撮る

・動くもの(人)を映り込ませすぎない


…と色々書きましたが、適当に撮っても、割と解析成功することが多いです。


ですが、例えば旅先で撮った映像ですと、解析が難しい映像があったとしても

気軽にロケのやり直しができるわけではありません。

なので、慣れないうちは安定を取って、上記のことを全て守りつつ、

極力無難で直線的な、シンプルなカメラワークを心がけることをオススメします。



また、上記のうち、「過度な手ブレを避ける」のは、

作品としてのクオリティー向上のためにも重要です。

そこで、もし予算があるのなら、オススメしたい機材がジンバルです。

素人でも手ブレを強力に防ぐことが可能になります。


Amazonで「ジンバル」で検索すると色々出てくると思います。

スマホ向けのジンバルは2020年時点で1万円前後で入手できます。

スマホの動画機能も全般的に進化してますし、手軽にプロっぽい映像が撮れます。


もうちょっとお金が出せる人は、OSMO pocketも良いと思います。

気軽に持ち歩けるのはとても捗ります。


(※ 2015年くらいまでならステディカムなど、振り子式のスタビライザーでも良かったのですが、価格や取り回しの悪さからして、現在ではあまりオススメできません。2018年くらいまでなら初期型OSMOやOSMO+も良かったと思いますが、現在では生産終了しており、中古市場でしか入手が困難かもしれません。)


ただ、近年のジンバルの開発速度をみるに、1年後にはもっと安くて質の良いジンバルが発売していると思います。


もちろん、ジンバルがなくても、手ブレをしないよう気をつけて撮れば問題ないです。

予算、ロケ地での扱いやすさ、持ち運びやすさなどを考えて機材を準備してください。


------------------------------------------------------------------------


【2.カメラトラッキング】


まずは、撮影した映像の前後の無駄な部分を切り取り、8~15秒程度にします。

さらに、動画を29.97fpsから30fpsへ変換します。

私は4K画質で動画撮影する事が多いのですが、1920×1080へリサイズします。


この動画を中間ファイルとして、いったんAVI形式で出力します。

コーデックを使わず無圧縮AVIにしたほうが、後々のMMD上での動作が少し軽いように感じます。

もしコーデックを使うならUt Video Codec SuiteなどMMDで扱えるものを選択してください。


ただし、MMDは2GB以上のAVI動画を正常に読み込むことができません。

例えば1920×1080、30fps、アルファなし、音声なしのAVIは、コーデックを使わない場合では11秒以上になると、UtVideoを使った場合では約30秒以上になると2GBを超えてしまいます。

上記よりも長い尺の動画や、4K画質の動画を作りたい場合は「mp4をMikuMikuDanceの背景aviにそのまま使うためのバッチ」(こ~りん様)を使ってみてください。容量や動画形式を問わずに読み込みが可能となります。

(※ 4K画質で制作したい場合でもフルHD画質の中間ファイルは作ったほうが良いです。AE及びMMD上での動作が軽くなり、結果的に時短となります。最終出力の前に4K画質のファイルに差し替えてください。)



出力した中間ファイルをAEにドラック&ドロップで読み込みます。


新規コンポジットを作成します。


動画を右クリックし、「トラックとスタビライズ」→「カメラをトラック」を選択します。

(※「エフェクト」→「遠近」→「3Dカメラトラッカー」でも同じ機能となります。)


このまま数分待てば、カメラの動きが自動で解析されます。



解析はバックグラウンドで行われます。

待っている間に他の作業をしたり、同時進行で複数の動画の解析を行うことも可能です。


------------------------------------------------------------------------


なお、必須ではありませんが、解析の設定をいくつか変更することができます。

設定変更しても、しなくても、解析は進行します。わからなければスキップしてください。


①ショットのタイプ

ズームを使わずに固定画角で撮ったか、途中でズームをいじったか(可変ズーム)を設定できます。


ただし、途中でズームをいじった映像は解析失敗しやすいですし、解析成功しても精度が悪くなることが多いので、ズームはいじらないことを推奨します。


カメラ知識がある方でしたら、「画角を指定」にし、水平画角を入力すると、解析結果がより正確になります。わからない場合はAEが勝手に推測してくれるので、「固定画角」のままでOKです。


もし水平画角を調べるなら…

カメラのカタログに35mm版換算焦点距離というのが書かれていると思います。

その数値を焦点距離等計算器(おかやん様)の、「焦点距離」のところに入力します。

その後、「長辺画角」に表示されている数字が、水平画角になります。

(※ デジタル一眼カメラを使う場合は、①「長辺」及び「短辺」にそのカメラのセンサーサイズを入力するか、または「フォーマット」から該当する形式を選択、②「焦点距離」に使用しているレンズの焦点距離を入力します。デジタル一眼カメラを使っている方ならおそらくこの辺りの基礎知識があると思うので、詳細は割愛します。)

(※ カメラによっては動画撮影時と写真撮影時の焦点距離が異なります。また、特記されていない場合、カタログ等で表記されている35mm版換算焦点距離は写真撮影時のものであることが多いです。

例えば、iPhone6sでは、写真撮影時の35mm版換算焦点距離は29mmですが、動画撮影時には35mmとなるようです。これは動画撮影時のクロップ倍率の違いであり、Route 207 Revisited様の記事「デジカメ・ビデオカメラの4K動画時の焦点距離をまとめてみる」が参考になると思います。

クロップ倍率はカメラによって違うため、上記の通り水平画角を算出したとしても誤った数値になる可能性があります。要するに、よくわからない場合は入力しないほうがいい、ということです。)



②解析方法

前項で紹介した「標準」「ほぼフラットなシーン」「三脚パン」を選択できます。

デフォルトでは「自動検出」となっており、AEが最適な解析方法を勝手に選んでくれます。

ただし、たまにですが、カメラ移動をして「標準」となるように撮ったにも関わらず「ほぼフラットなシーン」「三脚パン」と誤認識することがあります。その場合は上記画像の解析方法のところを「自動検出」から「標準」に切り替えてください。


③詳細分析

詳細分析にチェックを入れると、AEの解析能力が倍になります。

一見とてもよい機能に見えますが、解析能力が倍になったからと言って、解析精度が倍になるわけではありません。映像中のノイズを誤検知してしまうことが増えてしまったりして、解析に失敗する要因となることもあります。解析にかかる時間も倍に増えます。

もちろん、使用したほうが解析精度はおおむね向上しますし、原点座標の設定がやりやすくなることもあります。「メリットもデメリットもある機能」とお考えください。


------------------------------------------------------------------------


解析が終わったら、このように、映像中にカラフルなポイントが表示されます。



これはトラックポイントといって、映像中の特徴的な部分を抽出したものです。

これらのうち、地面のあたりにあるポイントをドラックして、最低でも3つ以上選択します。

(※マウスポインタを乗せるだけでも、勝手に3つ選択してくれます。Ctrlキーを押しながらポチポチクリックして選択することもできます。)


なお、トラックポイントの選択は動画の最初(1フレーム目)でなくてもよいので、もし動画の冒頭には地面がうまく映ってないということであれば、地面の映っているフレームで実施してください。


トラックポイントを選択すると、赤い的みたいなものが表示されます。
さらに、この的は、ドラックすると動かすことができます。

この的の位置が、MMDでの原点座標になりますので、モデルを立たせたい場所に配置します。

そして的を右クリックし、「グリッドと原点を設定」をクリック。(←これ忘れないよう注意!)
その後、「カメラを作成」をクリックすると、カメラデータが生成されます。


生成したカメラデータを、MMDで読み込める形式に変換します。
変換には、あかつきみさき様制作のスクリプト「vmd Exporter」を使用します。

AfterEffectsで「ファイル」→「スクリプト」→「スクリプトファイルを実行」→「vmd Exporter.jsx」を選択。



出力スケールには0.1~5位を入力して下さい。
この数値が小さいほど、MMDモデルの表示が大きくなります。

位置には、0, 0, 0 と入力します。
そして「Export」を押し、名前をつけて保存します。

これでMMD用のカメラデータ(.vmd)が生成されました。


ここで、AfterEffectsは起動させたままでいいので、MMDを起動します。
中間ファイルであるAVI動画と、MMD用のカメラデータ、使用したいMMDモデルを読み込ませます。













再生を押してみて、背景の実写映像と座標軸がうまく連動していたら成功です!
モデルサイズが大きすぎる・小さすぎるなどあれば、vmd Exporterの出力スケールの値を変更して、カメラデータを再出力しましょう。

出力スケールを厳密に設定したいと思う方は、赤い的がどれくらいのサイズで表示されていたか、というのが目安になります。
出力スケールを1にしたとき、赤い的のサイズは半径約43cm、
出力スケールを2にしたとき、赤い的のサイズは半径約86cm、
出力スケールを0.1にしたとき、赤い的のサイズは半径約4.3cm、と思ってください。
(※ AEの3Dカメラトラッカーのターゲットサイズが100%で、MMDでの1単位距離が約8cm(7.939cm)、座標軸のマス目が約40cm×約40cm(39.698cm)と定義した場合の概算値です。(参考:Eiji様のブログ記事))


なお、MMDの仕様上、プレビューでは問題なく合成されていても、いざ出力すると、背景映像とカメラが1フレームずれるようになっています。
(※ 背景AVIはプレビュー再生時は0フレーム目から再生が開始されるのですが、動画出力の際には0フレーム目と1フレーム目で同じ画像が表示され、実際に再生が開始するのは1フレーム目からになっています。)

なので、カメラデータを0フレームからではなく1フレーム目から再度読み込ませます。
面倒な方は、0フレームのところでキーボードの「I」を押すだけでカメラを1フレームずらせます。
(※ 1フレームずらしたら1フレーム目が空白になるので、0フレームのカメラをコピーして1フレームに貼り付けるのがより望ましいです。)
(※ または、一旦背景AVIを非表示にして、ブルーバックや背景透過で動画出力し、AfterEffects上で1フレームずらして実写映像と合成してもOKです。なお、必須ではありませんが、背景透過(α出力)で出力する際にはo_postKeying(おたもん様)やMuriyariAlpha(ビームマンP様)が役立つことがあります。)



※なお、カメラトラッキングに失敗した場合、3つの選択肢があります。

1つ目は、AEではなくBlenderで解析することです。
映像中に動いているものが多いときなどは、AEよりもBlenderのほうがオススメです。
(※ 動いているものが多い映像をAEで解析する場合には「マスクをかけてプリコンポーズしてからトラッキングする」という手段もあるのですが、そこまでするくらいならBlenderを使ったほうが楽だと思います。)

2つ目は、AEの「ワープスタビライザー」機能を使って手ブレ補正してから中間ファイルのAVIを出力することです。
これは原理上あまり望ましくない手法なのですが、場合によっては有効です。

特に、カメラ移動が少なすぎる上に手ブレが多すぎるカットは、全力でワープスタビライザーをかけ、見かけ上の手ブレをほぼゼロにすると、解析しやすくなる事があります。
ただしその場合、カメラトラッキングは「標準」ではなく「ほぼフラットなシーン」として扱われることになります。

3つ目は、そのカットを潔く諦めることです。
どうやったらそのカットを使わずに動画を完成させることができるか考えましょう。
逆に言えば、必須だと思うカットは複数回撮っておいたほうがいいです。


これで、ひとまず動画が完成となります。お疲れさまでした!

------------------------------------------------------------------------


【3.コンポジット】

映像のクオリティを上げるため、CGの色味や影を実写の映像と合わせる作業を行います。
コンポジットと呼ばれる作業です。

一般的には、モデル・陰影・地面影などを別々に背景透過で出力して、それらをAEなどの別ソフトで調整しながら合成します。

ですが、クオリティにこだわらない方でしたら、透過出力をすることなく、MMD上でコンポジットして映像を完成させたほうが時間の節約につながり、直感的に作業ができます。
本記事では、MMD上でコンポジットを完成させる方法を紹介します。


まず初めに、MMDの照明を調整します。
晴天での撮影なら、影の色と向きを、実写映像に写っているものとだいたい同じ感じにします。曇天であれば、ざっくり少し暗めにします。
これだけで、モデルの色合いはだいたい実写に馴染みます。

※ この例では赤80、緑84、青89にしました。使っている実写カメラにもよりますし、モデルの材質設定も考慮しなければなりませんので、一概にこういう数値にすればよいということはありません。

次にモデルのエッジを調整します。基本的にはゼロにしますが、私はうっすら残してもいいと思いますし、好みの問題だと思います。

あとは、MMD向けのエフェクト(MME)をいくつか読み込ませて完成です。

ここから18種類の実用的なエフェクトを紹介しますが、初心者の方はまずは
LinearColorAdjustとPostPlanarShadowだけ入れるのが良いと思います。

------------------------------------------------------------------------

まず、私がよく使っていたのは下記の8種類です。

LinearColorAdjust(かき様、MMDモーショントラッキングセットに同梱されてます)
PostPlanarShadow(かき様、MMDモーショントラッキングセットに同梱されてます)
・G_SkyShader(下っ腹P様)などのシェーダーエフェクト
※ G_SkyShaderを始めとした、下っ腹P様配布のエフェクトは現在では配布終了とのこと。大変お世話になりました。
SvSSAO(そぼろ様)
WorkingFloorALまたはMirrorWF(針金P様)
o_OpticalBlur(おたもん様)
Adjuster(データP様)
RxWaterLight(Caeru様)


LinearColorAdjustは、実写映像と3DCGの色やボケを個別に調整できるエフェクトです。
色の微調整に使用します。
※ この例ではモデル側のコントラストを0.490、ガンマを0.490に設定することで、少し淡い色合いに変えています。


PostPlanarShadowは、地面影の色とボケを調整できるエフェクトです。
影がボケるだけで、とても実在感が出ます。
※ 半透明0.220、ぼかし強度0.130にした例。色ごとに数値を詳細にいじることもできます。

また、PostPlanarShadowには影の位置や向きを調整する機能もあります。
「ほぼフラットなシーン」「三脚パン」で解析したカメラデータを使う場合、影の位置がおかしくなってしまうことがありますが、このエフェクトで修正をかけることができます。
なお、使用モデルによっては、PostPlanarShadowの地面影がうまく表示されない(チラツキが出る、エッジ部分に影が表示されない等)ことがあります。その場合はWorkingShadow(P.I.P様)やSoftShadow(針金P様)で代用することもご検討ください。


メカ系のモデルには、G_SkyShaderやSvSSAOを使って、リアル調の描写をします。
個人的には、MMDの魅力はデフォルトのシェーディングがアニメっぽいことだと思っていますので、人物モデルはシェーダーエフェクトなしでもいいと思います。
※ SvSSAOをSi:0.2で適応した例。陰影がつくと暗い印象となるため、必要に応じてMMD照明やLinearColorAdjustの数値を調整し直すといいと思います。
※ 数あるSSAO系のエフェクトのうちSvSSAOを選んでいるのは、陰影の境界がくっきりしすぎず、モデル周辺への影響が少ないように思うからです。比較情報としてはましまし様の記事が参考になると思います。


シェーダーに関しては、
HgOreShaderHgToonShader(針金P)で色々調整しながら質感をつける(→編集例)
ExcellentShadow2+ExcellentShadowSSAO(そぼろ様)できれいな影をつける
ikPolishshader(ikeno様)やNCHLShader2(nil様)で、リアルな質感にしてみる
PAToon(P.I.P様)でトゥーンにしてみる
というのもオススメです。

こだわりたい方は材質・パーツごとにシェーダーを変えてみてもいいかもしれません。使用モデルによると思いますし、そのモデルに似合うようにお化粧してあげてください。


WorkingFloorALやMirrorWFは、ガラスや、つやつやな床に映り込む鏡面描写に使います。
o_OpticalBlurAdjusterと組み合わせて使ってください。
使い方がちょっと特殊なので、別記事にまとめています。


RxWaterLightは、テクスチャに基づく光を、ゆらゆらさせつつモデルに投影します。
例えばPutWaterLight-Amberを使うと、水面から光を浴びたような描写ができます。水族館の大水槽前などで効果を発揮します。
また、PutWaterLight-Stuccoは、木漏れ日っぽい表現に使用することができます。














※ RxWaterLight.pmxを加算モードにし、パラメータ>スケールをX位置:60~120くらいに、透:0~0.6、速さ:0.01~0.05くらいにするとだいたい良い感じになります。コントローラーで数値をいじっているときと、「カメラ・照明・アクセサリ」操作時(=実際の出力時)とで光り方が異なるので、注意しながら調整するといいと思います。

WorkingFloorALやRxWaterLightのように「CGが実写側に影響しているように見える」「実写がCG側に影響しているように見える」ようになるエフェクトは、視聴者の方に極めて大きなインパクトを与えます。決して使用機会が多いエフェクトではないかもしれませんが、使えるチャンスがあればぜひ使ってください。


------------------------------------------------------------------------

その他でおすすめしたいエフェクトは下記の10種類です。

MotionBlur3L(ikeno様)
msEdgeBlending(ましまし様)
ikLensGhost(ikeno様)
msVignette(ましまし様)
msGradation(ましまし様)
PostMovie(ビームマンP様)
AutoLuminous4(そぼろ様)
PostExcellentShadow2(かき様、MMDモーショントラッキングセットに同梱されてます)
Z_Particle(ビームマンP様)等の、パーティクル系エフェクト
AutoAmbient(サンフラワーふじ様)


モデルに激しい動きをさせる場合にはMotionBlur3Lの導入を検討するといいと思います。
動きに応じてボケがかかります。

※左:MotionBlur3L使用。右:モーションブラーなし。おかっち様の「超高速バク宙」モーション使用



実写合成においては、背景と人物の境界のみをぼかすことで馴染ませやすくする「エッジブレンディング」という手法が使われることがあります。興味のある方はmsEdgeBlendingを使ってみてください。適応すれば必ずしも馴染みやすくなるというわけではありませんが、強力な効果が得られます。

なお、エッジブレンディングは、あくまで背景とキャラとの境界のみにボカシをかける手法であり、CGキャラのジャギーを全体的に取り除いているわけではなく、境界以外はくっきりしたままである、という点にご留意ください。


最終的な画作りのため、特にPV系の作品ではikLensGhostによるレンズフレアや、msVignetteによる周辺減光や色ズレを入れてみたり、msGradationのような固定グラデーションを入れると、描写が格好良くなることがあります。また、全体の色調を変更するエフェクトを導入するのも一考の価値があり、例えばPostMovieなどが面白いと思います。
ただ、この手のエフェクトは過度に適応させた場合にはかえって描写がチープになる恐れがありますので注意が必要です。


AutoLuminous4は、モデルを発光させるエフェクトです。
単純に作品中の演出として活用できるだけでなく、グレア効果がCG側から実写側に「はみ出す」ため、結果的に実写とCGの境界を曖昧にさせるような効果が得られます。
なお、描画順を誤ると正確に描写されなくなるのでご注意ください。


PostExcellentShadow2は、遮蔽物に影を落とす際に活用できるエフェクトです。
使用法が複雑なので、ここぞという時以外は使用しないほうが良いかもしれません。


パーティクル系のエフェクトは実写合成と意外と相性が良いです。
PV系の作品であれば使用を検討してみてください。



AutoAmbientを使うと、周りの色に合わせてモデルの色を変えることができます
背景AVIの色をモデルに反映させる場合にはLinearColorAdjustを併用します。

なお、AutoAmbientは、色が反映されるまでにタイムラグが生じたり、それを防ごうとパラメータを変更するとチラ付きがでてしまうという弱点もあります。
なので、使用できる機会は非常に限定的であり、単純にMMD照明やLinearColorAdjust、AE等の別ソフトで色調補正を行ったほうが望ましいように思います。

ですが、私としてはMMEで自動で色が変わるということになんとなくロマンを感じます。
使うのが楽しいエフェクトですので、興味のある方は試してみてください。
実写合成で使う場合の方法は以下のとおりです。

① AutoAmbient同梱のファイル(Movie.xなど)を読み込んで、アクセサリ設定でLinearColorAdjust.xより描写順を上にする。











② LinearColorAdj調整(LinearColorAdjust_controller.pmd)のPOST背景AVIをオン

③ 背景AVI表示(A)をオフにし、ON・モード3(背景AVI)(B)にチェックを入れる

④ エフェクト割当のLightWorldタブでLinearColorAdjust.xのみにチェックを入れる



------------------------------------------------------------------------


一方で、個人的に使用しづらいと思うエフェクトがいくつかあります。

1つ目は、DOF系のエフェクトです。
カメラのフォーカスが当たる部位を指定でき、レンズ絞りによるボケを表現できます。
本来なら実写合成では必須のエフェクトだと思うのですが、MMDでキレイに出力させる術が見い出せませんでした。
(※ HgDOF(針金P様)などでは背景AVIまでもボケの対象にしてしまうのでうまく活用できなかったです。XDOF(そぼろ様)のようにα出力できるDOFエフェクトでも、CGモデルの周りに適切ではない黒いモヤが生じてしまいます。これは私の設定やPC環境のせいな気もするので、検証できる方がいたらよろしくおねがいします。)
もしDOFの表現を行いたいのであれば、CGのみをα出力した上でAE等で加工するか、LinearColorAdjustのぼかし調整機能をDOFのボケ代わりに使うのがお手軽だと思います。
AEで行う場合はSS_DepthOut(ビームマンP様)で深度マップを作成して活用するのがオススメです。


2つ目は、点光源・面光源などの光源系のエフェクトです。
屋内かつ特徴的な照明が置かれている場所での撮影時に効果を発揮すると思うのですが、そういう場所ではカメラトラッキングが困難な事が多いので、そもそも出番が少ないと思います。


3つ目は、ディフュージョン系のエフェクトです。
ディフュージョンは、映像中の明るいところ(暗いところ)を拡散させるような効果をもたらします。手軽に導入できるにもかかわらず、画の印象を非常に強力に変える効果があり、それ故に多くのMMDerに好まれるエフェクトです。

ディフュージョンを実写合成の際に使用すると、実写とCGの境界を馴染ませる副次的な効果があります。ただ、実写側のディテールを潰してしまうデメリットも大きいため、ソフトフォーカス的な画を意図的に作りたい場合でなければ、使用を避けるべきではないかと思います。
単純に境界を馴染ませたいだけであれば、ディフュージョンを使うのではなく、前述のmsEdgeBlendingやLinearColorAdjustのぼかし調整を使用することも検討すべきです。

…と言いつつも、私自身はディフュージョンを実写合成に多用していました。うまく使えば非常に良いエフェクトだと思うので、注意しつつ使ってみてください。


上記に限らず、MMDには多くの方々が作られた多彩なエフェクトが存在しています。
ぜひ色々試して、自分の理想の画作りを目指してみてください!


(※ なお、MMD上でのコンポジットを終えて、次のカットをつくろうとしたとき、モデルやエフェクトの設定を次のカットでも流用したいと思うはずです。
ただ、「完成したカットのMMD編集画面で、次のカットのカメラモーションを上書き」、あるいは「完成したカットのMMD編集画面で、カメラモーションをいったん全消去してから、別のカットのカメラモーションを読み込み」という動作を行うと、MMDがフリーズしてしまうことが多いです。
これを避けるため「MMDにカメラモーションは読み込まずに、使うモデル、エフェクトだけを一旦全部読み込んで、エフェクト設定値をいじった状態」でpmmファイルを保存しておくと、設定が流用できて便利です。)


------------------------------------------------------------------------


【4.制作のヒント】

ここからは制作のヒントになりそうなことを書いておきます。

・単純にマッチムーブをしただけという動画は、ニコ動だとぶっちゃけそこまで伸びないと思います。そういうのはどちらかというとTwitter向けです。

・ニコ動で使いみちがあるとしたら、ボカロPVとか、旅行系動画、聖地探訪動画みたいなものや、VTuberさんが現実に現れるみたいなことでしょうか。

・初めて実写合成動画を作る際は、近所の公園等で地面がタイル張りになってる場所などがロケ地としてオススメです。施設探訪系の動画をつくる際には、平日とか開館直後とか、他のお客さんに迷惑にならないように撮影しましょう。

・初心者の方はできるだけ広角で実写撮影するのがオススメです。これは「地面が映るように撮ったほうがカメラトラッキングがしやすいが、画角が狭いカメラで地面が映るように撮ると、カメラのアングルが下向き(俯瞰構図)になってしまう」というのを考慮してのことです。


一般論として、カメラを下向きにして俯瞰構図で撮影すると、その撮影対象となるキャラは弱々しい印象となり、対等な感じではなくなってしまいます。
なので、たいていの場合、水平、目高(めだか)で撮影するのが無難であり、目高で地面が映るように撮るには広角なカメラを使用する必要がある、というわけです。

・では、具体的にはどれくらい広角で撮ればよいかというと…
カメラトラッキングをする際には、撮影者の立ち位置から2~3m先あたりの地面が映っていると解析しやすいと思います。
158cmの女の子キャラ(あにまさ式初音ミク)は首元が約128cm、胸が約118cmの位置にあります。
もうちょっと幼いキャラ(ふらすこ式風きりたん、Cham式サーバル)ですと、首元が地面から約116cm、胸が約104cmの位置にあります。
バランス良く撮るとしたら、被写体の首元~胸下あたりの高さにカメラを構えることになると思います。
すると、撮影者はカメラを高さ90~130cmくらいに構えるべきということになります。
その上で、脇を締めつつ安定した撮影をするとしたら、高さ110~120cmにカメラを構えるとよいのではないか、と想定します。
高さ110cmで水平にカメラを構えた際、3m先の地面を映るようにするには、
カメラは35mm版換算焦点距離で30mmよりも広角なものを使用するとよい、という計算となります。実際の使用感としては、20~26mmが扱いやすいと感じます。
(※ 例えばOSMO Pocketが26mmです。スマホはだいたい26~28mmとなっていますので条件を満たします。また、最近のスマホでは、メインのカメラとは別にもう一つ広角カメラが付いているような機種もあります。)

・もちろん、俯瞰構図は避けるべき、というわけではなく、シーンによってうまく使い分けるのが良いです。例えば、俯瞰構図でキャラに上目遣いでカメラ目線をさせる、というのはとても効果的な演出になります。状況説明をおこなうようなカットでも、俯瞰構図は役立ちます。
また、上向でも下向きでも、だいたい±5°くらいまでは「ほぼ水平」と感じられると思います。無理して水平を保つ必要もないです。私はしっかり地面が映るように下向き4°くらいで撮影することが多かったです。

・カメラを上向き(あおり構図)にしたい場合や、画角を狭くして撮影したい場合は、カメラトラッキングは少し難しくなります。そういう場合、三脚を使って固定カメラ(フィックス)で撮影することも検討すべきです。そもそも全てのカットをマッチムーブするのは大変なので、フィックスや静止画も交えていくのが良いと思います。

・フィックスで撮影した場合、撮影時の画角、三脚高さ、角度などを記録しておき、それらの数値を元に、手動でMMDのカメラを調整することになります。ただし、キャラの足元を映さないカットでは、適当に勘でカメラ調整しても大丈夫な気がします。
ちなみに、MMDの視野角は、実写撮影時の短辺画角(の近似値)です。焦点距離等計算器を使って算出することが可能です。
(参考:ザ・蝦入。様のブログ記事 フォトジェミック基礎と若干の応用。)
(※ 静止画やフィックス動画では、映っているもののパースを参考にして位置合わせを行う事もできます。Blender派の方であればfSpyを利用するのもよいと思います。)

・慣れてきたら、画角を狭くして撮影しても良いと思います。映像中にトラックポイントとなりうるものを写せてさえいれば、問題なくカメラトラッキングができます。
また、地面を常に写し続ける必要もありません。カメラトラッキングの際、赤い的を出す作業はどのフレームで行ってもよいので、動画の途中で1秒でも地面が写っていればOKです。
ただ、画角が狭いほど、解析精度が悪いときに目立ちやすくなりますし、解析失敗のリスクも上がるので、あまり推奨はしません。

・少々強引なやり方ですが、広角での撮影なら、合成後にトリミングすることで構図を整える事ができます。広角なカットばかりだと緩慢な印象を与えかねないので、ある程度はトリミングしていくのが望ましいと思います。ニコ動やTwitterであれば、1280×720くらい

※「トリミングがしたいが、画質を下げたくない」という方は、4K動画で合成まで行って、それをトリミングすれば、フルHD画質は確保できると思います。なおMMDの仕様上、解像度を変えると相対的にエッジの太さも変わるので注意が必要です。

・1カット10秒程度をオススメするのは「尺が長ければ長いほど解析に失敗しやすい」というだけでなく「10秒以上のカットは、視聴者さんも観ていて疲れやすいしダレやすい」ということを考慮してのことです。10秒以上のCGモーションを組むのも大変ですし、ネタを仕込むのも大変だと思います。映像の粗も見えやすくなってしまいます。
CGキャラが見ている風景・物のカットを挟み込んだり、フィックスのカットを挟み込んだりするなど、観る側を休ませる構成上の配慮も必要だと思います。この辺りは、テレビのロケ番組、旅番組の構成を参考にするとわかりやすいかもしれません。

・実写映像に暗所ノイズが多すぎると解析の邪魔になるのですが、暗所ノイズを防ぐためにシャッタースピードを長くすると、被写体ブレが多くなるため尚更解析しづらくなります。
水族館のような暗所でマッチムーブをするのはあまりおすすめしませんが、もし行いたいなら「NeatVideo」などのノイズ除去ソフトを使用して中間ファイルを生成すると少し解析しやすくなることがあります。

・屋内で撮影した映像のカメラトラッキングを行う際、床面にトラックポイントが出ず、壁面にのみ出てしまうことがあります。その場合は、あえて壁面に原点設定を行い、MMDモデルの「全ての親」ボーンを使って立ち位置を無理やり床面まで持ってくる、というのも一つの手です。
ただし、その場合は物理演算が壁面方面に向かってしまうので、物理演算を切るか、MikuMikuMoving(Mogg様)で物理焼き込みを行ったモーションを使用するとよいです。

・MMD上でコンポジットするべきか別ソフトでコンポジットするべきかは、製作者によって意見が分かれるところかと思います。これまで投稿されている実写合成MMD作品をみるに、別ソフトでコンポジットしている方のほうが若干多いように思います。
私個人の意見としては、MMD上でコンポジットしたほうが単純に楽だと思います。AEでコンポジットをした経験もありますが、その分、工数が増えてしまい、結局クオリティを高めるために使う時間がなくなってしまいがちでした。
また、いくつかのMMEは透過出力に対応しないので、MMEを最大限活用したいならMMD上でコンポジットしたほうがいいと思います。o_postKeyingを使ってキーイングすることで対処できることも多いですが、困難なケースも多いです。
一方で、AEやaviutlの扱いに慣れている方であれば別ソフトを使ったほうが楽かもしれません。結局は、製作者がどんなスキルを持っているか、今後どんなスキルを身につけたいかによります。

・コンポジットにこだわる時間があれば、モーションを頑張ったほうがメリットが大きいと思います。どこに時間を費やすかはしっかり考えましょう。

・モーションを作る際は「実際の人間は、ただ立っているだけだとしても、CGと違ってピタッと静止することがない」というのを意識してください。適度に体幹をゆらゆらさせ、緩やかに保管曲線でつなぐことをおすすめします。
フルオートブレスボーン(睡犬様、導入プラグイン:マスク・ザ・春原様)を使うと自動的に呼吸モーションをつけられるのでオススメです。

手の握りはm6様のポーズ集をお借りすると良いと思います。


・歩きモーションなど、お借りできる日常モーションは極力お借りさせていただきます。

中でもPAC室長制作の汎用モーション集は、立ち止まり、振り返りなどを考慮したモーションであり、実写合成でとても扱いやすいと思います。

・実写合成の場合、モデルがどこを向いているかがとても重要になります。
例えば「歩きながら風景を楽しむミクさん」を表現しようとしても、配布されているモーションをそのまま読み込むだけでは、「風景を無視して正面だけを見るミクさん」を生み出してしまうことになります。
そこで6666AAP様が解説している「モーションレイヤー」の概念を理解しておくと制作が楽になります。「センター」「上半身」「上半身2」「下半身」「首」「頭」ボーンなどは多段化しておくとよいでしょう。また、「全ての親」ボーンは立ち位置の微調整に使えるので、これも多段化しておくと便利です。
上記のボーンを多段化する際には会話仕様プラグインNEO(キングM様)を使うのが楽ですが、前述のフルオートブレスボーンとの共存が難しいようです。「フルオートブレスが入ったモデル」「会話仕様が入ったモデル」をそれぞれ作成し、シーンによって使い分けると良いと思います。

・壁やガラス面、手すりなどに手をつけるシーンには「腕IK」構造を使用すると良いです。
完全にピッタリと壁に手を固定させるとしたら「腕切り腕IK」「手切IK」などの構造も良いと思います。「腕IK」や「手切IK」は会話仕様プラグインNEOで導入可能です。
ただ、個人的には「例えばガラス面に手を当てながら水槽の中を覗き込むシーンがあったとして、手切IKを使うと手が固定されすぎて逆に不気味」という理由から、手切IKよりも腕IKのほうが使いやすいのではないかと思います。

・実写合成の際、CGキャラをリアル質感にした場合に「不気味の谷現象」を起こし、描写的に望ましくない状況に陥ることがあります。そうならないよう、シェーダーの選択には注意が必要です。
リアル質感ではなくトゥーン調・アニメ調にして「アニメキャラが現実世界にやってきた」的な表現にするのも、不気味の谷の回避法のひとつです。

・60fpsで制作することはあまりオススメしません。理由は3つあります。
1つ目は、60fpsで撮影した動画は、カメラトラッキングが精密でない場合、映像の粗が見えやすくなってしまうからです。
2つ目は、60fpsは悪い意味でホームビデオっぽい安っぽさが出てしまう事があるからです。
3つ目は、MMDの仕様上の問題です。
MMDでは背景AVIが30fpsとして表示されます。例えば60fpsで5秒(総フレーム数300)の実写映像をMMDに背景AVIとして読み込んでも、MMD上では半分のフレームが間引かれて総フレーム数150として表示されてしまいます。
なお、この問題は、
①コンポジットをMMDではなく別ソフトで行う(MMDではCGの出力のみ行う)
②または、60fpsの実写動画を1/2倍速にし30fpsに変換してから背景AVIとして使って、後加工で等速に戻す
という方法で回避できますので、60fpsで作りたい場合はいずれかで対応してください。

・AfterEffectsでカメラトラッキングをしたあと、MMDに持っていかなくても、イラストの立ち絵やBB素材などをAfterEffectsに読み込ませて、その場に立たせる事もできます。
旅行系投稿者のほへ井様が実践&解説されています。

その手法の応用で、固定カメラで出力した3DCG動画をAEに読み込ませて、それを置くという手段もあります。この手法ならMMDである必要すらないので、例えばUnityを使っているVTuberさんにもお使いいただけると思います。
作業自体は非常に簡易なのですが、回り込むようなカメラワークやキャラの移動を伴うようなカットだと違和感が出てしまうので、あまり万能な手法ではないと考えています。
(参考:luna様のブログ記事および講演。NukeXを使用されていますが、AEでも似たようなことができます。)


・MMDでマッチムーブをすることのメリットは、動画の知識に乏しい素人でも、短時間で及第点レベルの実写合成動画が作れることです。
本来実写合成・VFXに求められるイメージベースドライティング(IBL)やグローバルイルミネーションの描写まで行うのは、MMDでは少々難しいです。

少々難しいというだけで、絶対に無理というわけではないです。
例えばRay-MMD(Rui様)のような物理ベース系シェーダーを使用し、THETAなどの360度カメラで作ったHDRIを活用(Ray-MMDであればSkyboxとしてHDRIを取り込む)し、MuriyariAlpha(ビームマンP様)を使いつつα出力し、AEで調整しながら合成、というような工程であれば、可能といえば可能です。
Ray-MMDはリアル調だけでなくトゥーン調にすることもできるので、IBLとトゥーンを混ぜたような表現など、色々面白いことができると思います。

ただ、そこまで力を入れて動画を作りたいのであれば、MMD以外のソフトのほうが自由度が高くてよい気がします。C4D、Blender、mayaが候補となりますが、私には実際のところはよくわかりません。
今までに様々な方がMMDマッチムーブ動画を投稿されていますが、そのいくつかは直接MMDを使ったものではなく、Blenderにてmmd_toolsというアドオンを使用して作成されたものであるようです。

(参考:takeda_san様の動画。解説記事も掲載されています。)

また、MMD BridgeとElement 3Dを組み合わせて使用するのも一考の価値がありそうです。REPLY様が下記動画にて解説されています。

いずれにせよ、他ソフトでMMDモデルを扱う場合は、規約に違反しないようご注意ください。

・なお、今後もMMD関連の技術やカメラトラッキングの技術は色々開発されることでしょうから、将来的にできるようになることも多いと思います。
私は最近のMMD技術には詳しくないですが、sdPBR(サンドマン様)というシェーダーエフェクトが色々と興味深い機能を持っているようで、実写合成でも役立ちそうな気がします。
動画撮影と同時にカメラトラッキングを行うようなiPhone向けアプリも開発されているそうで、うまく使いこなせれば時間の節約につながるかもしれません。


------------------------------------------------------------------------


【5. あとがき、参考資料】

本記事は、これまで実写合成やMMDに関わられた多くの方が積み上げられたノウハウをまとめたものです。先人の皆様に心よりお礼申し上げます。

本記事に記載した内容はご自由に転載して頂いて構いません。wikiに転載したいという方や、解説動画にしたいという奇特な方がいれば、ぜひお願いします。
その際、本記事を引用元・転載元として記載して頂く必要はありませんが、本記事中にて参考資料として記載したサイトへのリンクは、削らないようにご配慮お願いします。
(※ 本記事はいわゆるまとめ記事のようなもので、記事中には様々なサイトから引用した記述があります。転載される際に参考資料へのリンクを削ってしまうと、元情報の出どころがわかりづらくなってしまいます。それを防ぐため、何卒宜しくお願いします。)

2011年、アイマスカテゴリで活動されていたらくさんP様は、MMDでマッチムーブを行う手法を確立し、そのためのスクリプトや、対応した動画加工ソフト「Javie」を配布されました。
当記事中で使用したあかつきみさき様制作の「vmd Exporter」は、らくさんP様が制作されたスクリプトを元に制作されたものです。
(※ 10年前のニコ動ではアイマスのゲーム画面を編集してMV風にする動画、いわゆるニコマスが大きな人気を博していました。らくさんP様はマッチムーブを実写合成に使うためだけでなく、アイマスのゲーム画面をカメラトラッキングすることで、ゲーム画面の雪歩をMMDのステージで踊らせたりすることを目的とされていたようです。)

本記事の初稿は、2014年にaisot様より教えていただいた内容を文章化したものです。
aisot様ご自身も下記動画にて、AEによるマッチムーブの解説をされております。

また、本記事は2019~2020年に大幅な加筆修正を行いました。
これは、2016年にかき様が制作されたエフェクトによりコンポジットが容易になったことに加え、ジンバルなどの撮影機材の流通や、多くの投稿者の制作環境の変化が生じたため、現状に即した形で加筆修正したものです。

コンポジットに関しては、主に下記サイトを参考にさせていただきました。
実写合成をしてみたい方にとって、多くの有益な情報が得られます。
コンポジゴク(ComperK様)
CGcompo(kurono73様)

上記サイトには制作の役に立つサイトのリンクがまとめられていますので、
併せて参考にされると良いかと思います。




コメント