動画編集ソフト VegasPro モーショントラッキングデータを「パン/クロップ」で利用する(手振れ補正)
最近のGoProやスマホカメラであっても、動画撮影時の手振れ補正機能は驚くほどの効果を発揮してくれますが、あまり効果が得られないカメラや補正機能をONにし忘れた場合など、後から動画編集ソフトの機能で手振れ補正を掛ける事があります。ただし動画編集ソフトで手振れ補正を掛けると非常に時間が掛かったり、その割にあまり期待した結果になっていない場合があります。
2023年12月追記
現在(2023年12月)のVEGAS Proは「21」ですが、以下で紹介しているスクリプトはVEGAS Pro 21でも使用可能です。ただしVEGAS Pro 21ではモーショントラッキングを行った後、これまでは「ベジェマスキングFXに転送」のみだった転送先に、「フリーズモーションFXに転送」が追加されています。
「フリーズモーションFX」に転送すると、モーショントラッキングを行った動画自体に「手振れ補正FX」が追加され、以下でスクリプトを利用した方法と同様の効果(手振れ補正)が得られます。またユーザービューやモードを選択すると、より細かな設定が可能になっています。動画の複製も必要ありません。
イベントFXには「手振れ補正(Video Stabilization)」がありますが、これを通常通りに適用した場合は「解析」を行う必要があり、この解析には時間が掛かります。「フリーズモーションFXに転送」を利用した方が短時間で、その結果も確認しやすいので、手振れ補正を行うには便利な機能です。
…しかし、いつ追加されたのだろう?VEGAS Pro 20の最終バージョンには無いので21になってからですが。従って以下のスクリプトによる方法は、まず「フリーズモーションFXに転送」を試してみてからの方が良いと思います。
モーショントラッキング
現在(2022年4月)のVegasPro19では、「モーショントラッカー」機能で動画内の任意範囲を自動追跡し、モーションデータを作成してくれます。VegasPro18からは、このモーションデータを他のビデオトラックに転送して「PinP(ピクチャー・イン・ピクチャー)」のイベントFXで利用出来ます。またテキストの場合は「位置」にも利用可能です。
上記はベースとなる動画上でモーショントラッカーによる自動追跡を行う様子です。
上記ではモーショントラッカーから別のビデオトラック(画像)にモーションデータを転送して「PinP」のFXイベントを追加した結果です。画像はモーショントラッカーによる自動追跡と同じ動きをします。
さらに上記は、ビデオトラックとしてテキストを置いた場合で、モーションデータを「位置」として転送すると、テキストの「アニメーション位置」に反映されます。文字はこの場合もモーショントラッカーによる自動追跡と同じ動きをします。
あくまで私の環境でVegasProの場合ですが、モーショントラッカーによる自動追跡(検出)は、手振れ補正ほど時間は掛かりません。ここではモーショントラッカーについての詳しい説明はしませんので、下記記事を見て下さい。
2022年12月追記
2022年12月現在、VegasPro「20」を使用していますが、モーションデータの転送時にVegasProがハングアップしてしまう現象が多い気がします。これはVegasPro「19」も同様でした。
モーショントラッカーの自動追跡でモーションデータを作成後、他のビデオトラックに「PinP」として転送する際、カーソールで上記位置(黄〇)から転送先にドラッグアンドドロップすると、VegasProがハングアップしてしまう事が多い様子です。
しかしドラッグアンドドロップではなく、その隣の▼からメニュー形式で適用先を選択する方が、ハングアップせずに安定している気がします(完全とは言えませんが)。
手振れ補正とパン/クロップ
手振れ補正は「パン/クロップ」の機能と似ていると思います。パン/クロップはビデオの表示範囲を変更し、また移動も任意に可能です。キーフレームで時間によっても変更出来るので、モーショントラッカーによる自動追跡結果をパン/クロップのキーフレーム位置データとして転送出来れば、手振れ補正機能の代用となり、時間も本来の手振れ補正機能よりは節約出来るのでは?と考えられます。しかし残念ながら、今のところモーショントラッカーの自動追跡結果をパン/クロップの位置データに転送する事は出来ません。
スクリプトを利用する
MAGIXのVEGASコミュニティで、同様に考えている方がいました。そしてその機能を実現するスクリプトを「klt」さんがGoogle Driveで公開して下さっていますが、このスクリプトを利用する事でモーショントラッカーによる自動追跡結果をパン/クロップの位置データに転送する事が出来ました。※Google Driveのアドレスはこちらの別スレッドにて。
コミュニティで記載されているGoogle Driveからダウンロードしたファイル(pancrop.zip)を解凍すると、2つのスクリプトファイルがあるので、VegasProの「Script Menu」フォルダーにコピーします。2つのファイルの違いは単に「X」と付くスクリプトは横方向(X)のみの位置データの転送の様です。
※Google Driveでのファイル公開が終了してしまった場合は、「klt」さんがスクリプト内容もスレッドに記載して下さっているので、コピーしてスクリプトファイルにして下さい。
スクリプトの利用方法
まずは元となる動画と、その動画の複製を用意します。複製した動画側は一旦ミュートにしておき、元の動画側でモーショントラッカーによる自動追跡を行います。検出範囲は出来るだけ認識しやすそうな範囲にしておきます。
自動追跡が完了したら、さらに元の動画で追跡結果を「ベジェマスク」に適用します。
次にCtrlキーを押しながら、元の動画と複製した動画をクリックして、両方を選択した状態にします。
メニューから「ツール-スクリプトの作成」と進み、コピーしたスクリプトを選択します。
成功すると、上記の様なウィンドウが出ます。
複製した動画側のミュートを解除してパン/クロップを見てみると、上記の様に位置のキーフレームに自動追跡の結果が反映されています。またモーショントラッカーとベジェマスクは複数作成出来ますが、その場合はスクリプトでも転送する位置データを選択出来る様です(未確認)。
注意点
注意点としては最終的に使用する動画は複製した動画側となり、また先に複製側で基本となるパン/クロップの位置と範囲を決めておく事(0:00の位置で)です。自動追跡の結果を転送すると、その位置と範囲を基準としてモーショントラッカーの位置データが反映されます。また先の別スレッドでも注意点が幾つか挙げられています。
まず、スクリプトファイル内の記述で40~45行目付近にある「{Svfx:com.sonycreativesoftware:bzmasking}」を「{Svfx:com.vegascreativesoftware:bzmasking}」に変更する必要があります(「Zayo21」さんによる書き込み)。これは元のスクリプトがまだSONY時代のVegasPro用に作成された為だと思われます。
次にこのスクリプトはフルHD(1920*1080)用で固定されているので、他の解像度では以下の様に「klt」さんが書き込んでいます。私はフルHDで動画を作成しているので、以下の内容は未確認です。
申し訳ありませんが、スクリプトからイベントのビデオプロパティにアクセスする方法が見つかりません。 したがって、解像度はハードコーディングされたままですが、いくつかの定数を宣言してスクリプトの先頭に移動しました。
float Horizpixels = 1920;
float Vertpixels = 1080;
bool MoveOnlyHorizontal = false;必要に応じて変更してください。
MoveOnlyHorizontalは、パンクロップはモーションの水平(X軸)の動きのみに従う必要があることを示しています。
「false」に設定されている場合、XモーションとYモーションの両方が実行されます。 「true」に設定されている場合、Xに沿ったモーションのみが追跡されます。
「klt」さんの書き込みをGoogle翻訳にて翻訳語、引用
これで手振れ補正機能の代用として「パン/クロップ」が利用出来る他に、人物の顔に中心を置いたままにするなどの応用が可能ですが、モーショントラッカーによる自動追跡時の検出範囲の指定が、いかに認識しやすい範囲に出来るかがポイントです。また自動追跡後の「ベジェマスク」への適用を忘れずに。
VEGASコミュニティの方には書き込んでいませんが、この場にて「klt」さんを初めとする方々に御礼を申し上げます。
注記(スクリーンショットについて)
掲載しているVEGAS Proの製品画面:©2003-2024 MAGIX Software GmbH.
その他の各ブランドやロゴ・製品名等は各製造者の登録商標です。