NUKEXまたはNUKE STUDIOで使用可能なFurnace Coreノードと、Furnaceのツールを基にしたノードについて、使用方法を前半、後半に分けて紹介致します。こちらの記事は、前半の記事となります。
こちらの記事では、以下のノードについて紹介致します。
- F_Align
- F_Steadiness
- F_DeFlicker2
- Denoise (F_DeGrain/F_DeNoise)
- F_ReGrain
こちらの記事で使用している素材は、Foundry社のFurnace用のチュートリアル素材です。
データはこちらのページに記載されているURLからダウンロードが可能です。
▼F_Alignノード
F_Alignノードは、Global Motion Estimation (GME)を使用して4つのCornerPinを計算することで、同じシーンを別のカメラで撮影した2つのシーケンスを並べることができます。
以下の2つのシーケンスを使用して、手順を紹介します。
- まず、上記のシーケンスの両方をReadノードで読み込みます。[R]キーを押してシーケンスを選択するか、フォルダをNUKEのウィンドウへドラッグ&ドロップして読み込みます。その後、揃える対象のシーケンスのReadノードを選択した状態で、F_Alignノードを呼び出します。
- Refインプットに、揃えるために参照するシーケンスを接続します。
Viewer上に表示されている枠、もしくはプロパティの[Analysis Region]で、計算範囲を確認してください。基本的には、デフォルト通りで問題ありませんが、前景の内容が大きく異なる場合は、2つのショットで共通の部分のみに範囲を変更することが必要になることもあります。
- [Analyse]ボタンを押すことで、計算が始まります。しばらく待つと、計算が完了します。
この計算は、NUKEXの他のTransform系のノード群と連結して計算が可能です。これを行うと、変形による画像の荒れが少なく、処理時間が短縮できます。そのため、F_AlignノードとTransform系のノードは連続してつなぐことをお勧めします。
Analysisが完了した後にF_Alignノードの[Accuracy]プロパティ等で精度を変更すると、Viewer上にエラーが表示され、キーフレームで保存された分析結果は無視されます。
こちらが、適用前のそれぞれの結果を比較した画像です。
こちらが、F_Alignノード適用後の結果です。後ろの背景のずれが改善していることが確認できます。
▼F_Steadinessノード
Global Motion Estimation(GME)を使用して4つのCornerPinを計算することで、ショットのカメラの揺れを修正します。カメラの動きを特定のフレームで止める(Lock)、または指定したフレーム間で滑らかにする(Smooth)ということができます。
こちらでは、別々の素材を使用して、LockとSmoothそれぞれの例を紹介致します。
Smoothで指定してフレーム間のカメラの動きを滑らかにする
以下の素材のカメラの動きを調整します。
- まず、対象となるシーケンスをReadノードで読み込みます。次に、そのReadノードを選択して、F_Steadinessノードを呼び出します。
- カメラの動きを滑らかにしたい場合は、[Mode]で[Smooth]が選択されていることを確認し、滑らかにしたい領域を、Viewer上のバウンディングボックス、または[Analysis Regions]で囲みます。
- [Analyse]ボタンを押します。計算が完了するまでしばらく待ちます。
計算が完了すると、プロパティの[Advance]の中にある[Auto Scale]によって自動的に黒い部分が見えないようにスケールがかかった状態で表示されます。以下の画像は、F_Steadinessノードの[Analyse]を行った後の結果画像です。適用前にみられたカメラの細かな揺れが軽減されています。
Lockで特定のフレームでカメラの動きを固定する
以下の素材のカメラの動きを調整します。
カメラの動きを固定する場合は、共通した部分を持つシーケンスである必要があります。全体を通して全く異なる部分が映る(360度回転する)ようなシーケンスを最初のフレームで固定するといったことはできません。
- まず、対象となるシーケンスをReadノードで読み込みます。次に、そのReadノードを選択して、F_Steadinessノードを呼び出します。
- カメラの動きを固定する場合は、まずモードを切り替え、固定するフレームを指定する必要があります。プロパティの[Mode]で[Incremental Lock]または[Absolute Lock]を選択したのち、[Advanced]のメニューを展開して、[Lock Frame]に固定したいカメラの位置のフレーム数を入力します。
- 固定するフレームで、Viewer上のバウンディングボックス、または[Analysis Regions]を固定したい領域に合わせます。
- [Analyse]ボタンを押します。計算が完了するまでしばらく待ちます。計算が完了すると、[Auto Scale]によってスケールがかかった状態で表示されます。1はスケール値ではなく、黒い部分を表示しないように自動的にスケールを行うようにします。
以下の画像は、[Auto Scale]を下げ、別途Transformノードでscaleを上げたあとの結果の画像です。元のシーケンスでは、カメラは横方向に移動していましたが、カメラの位置が指定したフレームで固定されました。
このノードの計算も、F_Alignノードと同様に、NUKEXの他のTransform系のノード群と連結して計算が可能です。これを行うと、変形による画像の荒れが少なく、処理時間が短縮できます。そのため、F_SteadinessノードとTransform系のノードは連続してつなぐことをお勧めします。
▼F_DeFlicker2ノード
こちらのノードを使用することで、カレントフレームとその前後のフレームのゲインを調整し、輝度のちらつき、フリッカーを除去することが可能です。特に、シーケンス内の一部の要素(例えば蛍光灯)が原因で発生している素材に適しています。
こちらの素材を使用して、F_DeFlicker2ノードによるフリッカーの除去を行います。
- まず、フリッカーが発生している素材をReadノードで読み込みます。そのReadノードを選択して、F_DeFlicker2ノードを作成します。
- こちらのノードはつないだ時点で効果が適用されます。Viewerで結果を確認してください。以下の画像は、デフォルトの設定のF_DeFlicker2ノード適用後の結果画像です。
- フリッカーがまだ残っている場合は、追加でプロパティを変更します。[DeFlicker Amount(DeFlickerでフリッカーを削減する量)]を上げ、[Analysis Range(フリッカーを計算する際に参照する前後のフレーム数)]を増やします。
以下の画像は、左がF_DeFlicker2ノードの適用前の素材で、右がF_DeFlicker2ノードを適用し、[DeFlicker Amount]を0.8に、[Analysis Range]を3に変更した後の結果です。
▼Denoiseノード
F_DeGrain/F_Denoiseが置き換えられたノードで、画像またはシーケンス内に含まれるノイズまたはグレインを除去することができます。
こちらのシーケンスに対して、Denoiseノードを使用してグレインを除去します。
- グレインの除去を行う素材を、Readノードで読み込みます。そのReadノードを選択して、Denoiseノードを作成します。もし、グレインの除去を行おうとしている素材に、色の平坦な部分がない場合は、追加で別の画像をReadノードで読み込み、Noiseインプットに接続することで、そちらのグレインの分析結果を適用することが可能です。
- Viewer上に表示されるバウンディングボックスは、ノイズやグレインを分析するための領域を指定するものです。ディテールが間違えて消されてしまうことを防ぐため、できるだけ色が平坦な部分に移動させる必要があります。また、処理を正常に行うために、このバウンディングボックスを80×80以上の範囲にする必要があります。バウンディングボックスを移動させると、Viewer上部のエラーが消え、処理が行われます。
今の場所でノイズを解析したい場合は、[Noise Analysis]を展開し、[Analyse Noise]ボタンを押すことでも、処理を行わせることができます。
- Denoiseノードにより、ノイズ、グレインとして判断された部分のみを確認するには、[Output]を[Noise]に切り替えることでViewer上で確認が可能です。
もし、画像内に含まれているものの形が見えるといった場合は、ディテールがノイズもしくはグレインとして判断され、削除されている可能性があります。必要に応じて、[Denoise Amount]、[Roll Off]、[Smoothness]や[Sharpen]を調整します。
以下は、Denoiseノードの適用前と適用後を比較した画像です。球体の反射部分など、輪郭はあまりぼやけずに、グレインのみが軽減されています。
尚、こちらのノードはGPUでの処理に対応しています。使用する場合は、[Use GPU if available]にチェックを入れます。
▼F_ReGrainノード
こちらのノードでは、サンプルとして入力したシーケンスからグレインを計算し、取得して、別の素材へ適用することができます。また、登録されているプリセットを使用して、入力した画像に対してグレインを適用することも可能です。
素材のグレインを解析して別の素材に適用する
以下の左側の画像のグレインを、F_ReGrainノードを使用して、右側の画像のColorWheelに適用します。
- まず、グレインを含む素材をReadノードで読み込みます。次に、グレインを適用したい素材(3DCGソフトウェアからレンダリングした画像等)をReadノードで読み込みます。こちらでは、ColorWheelノードを作成して使用します。
- F_ReGrainノードを作成します。Grainインプットにグレインを含む素材を、Srcインプットにグレインを適用したい素材を入力します。
- F_ReGrainノードのプロパティを表示したままで、Grainインプットに接続したノードにViewerノードを接続し、Viewerへ表示します。F_ReGrainノードのバウンディングボックスがViewer上に表示されていますので、それをできるだけ色の平坦な場所に移動させます。もしくは、プロパティの[Analysis Region]を展開し、数値入力で調整します。
- Viewer上部のエラーが消えましたら、再度F_ReGrainノードにViewerノードを接続します。選択した範囲を基に解析されたグレインが、Srcに接続した素材に適用されていることが確認できます。
プリセットのグレインを素材に適用する
こちらの場合は、Grainインプットに画像を接続する必要はありません。こちらでも、ColorWheelノードを使用して適用方法を紹介致します。
- グレインを適用したい素材をReadノードで読み込みます。こちらでは、ColorWheelノードを作成します。素材を選択して、F_ReGrainノードを作成します。
- [Grain Type]が[Preset Stock]になっていることを確認してください。すぐ下の[Preset Stock]からプリセットを選択できます。
- これにより、登録されたグレインを適用することができます。
以上で、前半部分は終了です。来週は後半部分として、以下のノードを紹介致します。
- Kronos
- MotionBlur
- VectorGenerator
- MatchGrade
- F_RigRemoval
- F_WireRemoval