Match Move

はじめに

マッチムーブとは
個別に作成または撮影した素材を組み合わせる(マッチさせる)処理のこと.
実写の風景に3DCGでつくったキャラクターを合成したり、3DCGでつくった風景の中にグリーンバックで撮った物を合わせたりといった、映画やCMで使用されている合成技術です.
引用:Wikipedia

ということで、撮影した素材に何かを合成する手法のことです.
今までは撮影素材にトラッキング作業を行う必要がありましたがHLAEを使えば、CS:GOから直接bvh形式で3Dデータが出力できるので、自動でマッチムーブを行うことができます.

今回はAdobe AfterEffectsでマッチムーブ作業を行います.

準備するもの

  • HLAE
  • CS:GO
  • Adobe AfterEffects
  • AfterEffects用の読み込みスクリプト

スクリプトファイルをダウンロード

advancedfx.org にアクセスして、上のタブのDownloadをクリック.

matchmove_01

下にスクロールすると各種スクリプトがダウンロードできます.
今回はAfterEffectsに読み込むので、Importプラグインをダウンロード.
ダウンロードしたスクリプトファイルはお好きなところに解凍しておきます.

CS:GOでカメラデータの出力する

HLAE経由でCS:GOを起動します.
起動したらデモを開きましょう.

カメラデータ出力のコマンド

HLAEにはカメラデータの出力コマンドが搭載されています.

mirv_camexport
その名の通りカメラエクスポートです.

基本的には動画を撮影するのと同じでスタート設定とストップ設定、fpsの設定しかありません.
ただし、録画と同時にカメラの撮影の行う必要があるので場合によってはbind設定が必要となります.
この記事ではbindを組んだほうが圧倒的に説明しやすいので、bind設定を説明します.
デモエディターというツールを使う方法もあります.

mirv_camexport start 出力データ.bvh 撮影fps
これが撮影テンプレです.
もし動画撮影fpsが120で、データ名がcameraだとしたら…
mirv_camexport start camera.bvh 120
このようになります.

撮影ストップのコマンド
mirv_camexport stop
こちらにはfps表記等は必要ありません.

カメラ出力設定をbindする

今回の撮影手法はStreamsを使った撮影です.
startmovieでは別の設定になるので、ご注意下さい.

まずは撮影の設定です.
bindってなんぞ?って人はWikiを見てください.

bind "任意キー" "mirv_streams record name フォルダ名; host_framerate フレームレート; host_timescale 0;
mirv_snd_timescale 1; mirv_streams record start"

最速で長い.
2行になってますが、1行にまとめてください.

これだけで 録画スタートのbind になります.
ここに先ほどのカメラ出力をくっつける形になります.
長過ぎるので上記コマンドは以後 record_bind と表記します.

bind "任意キー" "record_bind; camexport start ファイル名.bvh フレームレート"
こんな具合でくっつけます.

フレームレートは必ず動画撮影のフレームレートと同じ値にしてください.

具体例としてはコンフィグの記事にアップしてあるので、ご確認いただければと思います.
F2からF6までがこの設定になります.

撮影終了設定

撮影開始同様、終了コマンドも設定しなくてはいけません.

bind "任意キー" "mirv_streams record end; mirv_camexport stop"
これで撮影ストップです.

撮影する

デモを見て、任意の場所で撮影しましょう.
Streams設定での撮影ですので必ずStreamsも設定しておきます.

撮影データの確認

matchmove_02
Counter-Strikeフォルダに.bvhファイルができていると思います.
もし生成されていない場合は、撮影開始か、終了の方で設定が間違っている可能性があります.

AfterEffectsでマッチムーブを行う

ではここからはAfterEffectsでの作業となります.

AfterEffetsはAdobeから発売されている有償ソフトウェアです.
1ヶ月体験版が使えるので興味がある人はダウンロードしてみましょう.

AfterEffectsに素材読み込みして、コンポジション作成

VirtualDubを通して動画化したファイルを、AfterEffectsに読み込んで、コンポジションを作ります.
matchmove_03
この際コンポジションのフレームレートが読み込んだファイルと同じことを確認してください.
AfterEffectsでは新規コンポジションを作る場合、99フレームまでにしかなりません.
素材からコンポジションを作りましょう.

カメラデータを読み込む

タイムラインパネルを選択した状態で、先ほどダウンロードしたスクリプトを実行します.
スクリプトは ファイル -> スクリプト -> スクリプトファイルを実行 から実行できます.

実行したら Import HLAE Cam (*.bvh) というボタンが表示されていると思います.
そのボタンをクリックし、先ほど出力した.bvhファイルを選択しましょう.

するとヌルが2つと、カメラレイヤーが出現したと思います.
この時点ですでにCS:GOで撮影した視点のカメラデータがAfterEffects上で再現されています.

カメラ設定を変更する

このままでもいいのですが、撮影した画角に合わせてカメラデータを変更します.
カメラレイヤーをダブルクリックして、カメラ設定ウィンドウを表示しましょう.

撮影した素材のアスペクト比によって変わります.

  • 撮影素材が4:3の場合 – 90
  • 撮影素材が16:10の場合 – 100
  • 撮影素材が16:9の場合 – 106

という具合です.
1920x1080というフルHDサイズで録画している場合は、16:9ですので106となります.
この値をカメラ設定に反映しましょう.

3Dオブジェクトを配置する

ここまでくればあとは簡単、3Dオブジェクトを配置しましょう.
適当なテキストを用意して3Dレイヤー化します.

位置がすごいことになるので、視点を変えたりして上手く合わせましょう.

お疲れ様でした.