NUKE Smart Vector ツールセットの使用方法 パート2

こちらの記事では、前回の記事に引き続き、NUKE 10より追加されているSmart Vectorツールについて紹介致します。

※Footage courtesy of FOUNDRY(こちらの記事で使用している素材は、FOUNDRY社よりご提供いただいている素材です。)

※使用しているNUKEのバージョン:NUKEX 10.5v3

 

前回の記事では、1フレーム目のみ、ペイントを行いました。今回は、このペイント情報を他のフレームに適用します。

 

ベクトル情報を使用した変形の適用

それでは、VectorDistortノードを使用して、他のフレームにもペイント内容を適用してみましょう。

    1. カレントフレームを、ペイントしたフレームに移動させます。
       
    2. VectorDistortノードを追加します。SrcインプットにRotoPaintノードで作成したペイントを含むシーケンスを接続します。
       
    3. SmartVectorインプットを、モーションベクターデータを含む.exrファイルを参照しているSmartVectorノード、または.exrファイルを読み込んでいるReadノードのいずれかに接続します。
       

    4. VectorDistortノードのプロパティ内の[reference frame]に、ペイントを行ったフレームが入力されていることを確認してください。入力されていない場合は、ペイントしたフレームをカレントフレームにして、[set to current frame]をクリックし、VectorDistortノードが参照するフレーム数を設定します。もしくは、[reference frame]に直接フレーム数を入力します。
      この段階のビューアの結果がこちらの画像です。各フレームのマーカーを消すことはできましたが、目や口、画像の端のあたりが変形の影響を受けています。
       
    5. VectorDistortノードの下にPremultノードを追加して、ペイントした部分だけを合成できるようにします。
       

       
    6. 結果をもとのシーケンスに合成します。Mergeノードを作成し、AインプットにPremultノードを、BインプットにReadノードを接続します。
       

合成後の結果は、以下の通りです。ある1フレーム目にのみペイントした結果が、残りのフレームにも違和感なく適用されていることが確認できます。

 

 

補足:VectorDistortノードの計算範囲を指定する

今回は特に問題はありませんが、デフォルトでは、すべてのピクセルに対してVectorDistortノードの計算が適用されるため、処理が遅いことがあります。

VectorDistortノードのプロパティで[mask channel]にマスクチャンネルを指定すると、そのマスクの数値が0のピクセルには全く変形が適用されず、1のピクセルにのみ変形が適用されるようになります。これにより、処理時間を短縮することができます。

設定は、以下のように行います。

  1. Rotoノードを作成し、VectorDistortノードの上に接続します。[output]maskに指定します。
  2. ベジェツールなどで、VectorDistortの[reference frame]に入力しているフレームで、必要な範囲のみのマスクを作成します。
  3. VectorDistortノードのプロパティを開き、[channels]Allにして、[mask channel]mask.aを入力します。