foundryblogこちらの記事では、NUKEのGUIモードで作業している際に、処理が重いノードに対して、GUIモードでは処理を行わせず、レンダリング時のみノードの効果を適用する方法について紹介致します。▼概要NUKEのスクリプト(.nkファイル)が大きくなり、かなりの数のノードが含まれてくると、スクリプトの処理が反映されるまでに時間がかかるようになります。これは特に、計算に多くの処理能力を必要とするノードで、スクリプトでの作業時に遅れが生じる可能性があります。遅れが生じ、作業が困難になるようなスクリプトの場合、GUIの処理を無効にするのに便利なエクスプレッションの演算子があります。「$gui」といい、こちらの記事では、パフォーマンスを向上させるために使用できるノードのエクスプレッションの方法と、それがどのように動作するかについて紹介致します。「$gui」演算子は結果として1または0を返します。GUIを通してノードが計算される時は、「1」が返されます。これは非常に便利です。NukeのGUI環境を使用せずにレンダリングする方法があるため、レンダリングには便利です。ノードに追加する基本的な方法は、エクスプレッションを使用することです。機能的にはSwitchノードと同じように動作しますが、この方法はGUIが使用されているかどうかによって自律的に判断し、動作します。NUKEのGUIモードを使用している際に、遅くなる可能性のある処理の重いノードの例をいくつか紹介致します。「$gui」演算子は必要でない可能性があります。遅延が発生している場合は、GPUアクセラレーションと組み合わせてエクスプレッションで「$gui」を使用すると役立ちます。「$gui」演算子は、いくつかの方法でスクリプト(.nkファイル)内で使用できます。一般的に使用される方法は次のとおりです。ご注意:これらの3つの方法を、ご自身の.nkファイルでこちらの方法を検証および適用できるように、こちらの記事には.nkファイルも添付しております。この.nkファイルは当記事の最後よりダウンロードいただけます。「$gui」演算子を使用する最も一般的な方法です。他の方法とは異なり、不要になったときはSwitchノードを無効にして、エクスプレッションを無効化することができます。これは、以下の手順で設定できます。処理の重いノードの下流にSwitchノードを作成します。...]を選択します。[expression]ボックスに$guiと入力します。GUI内で処理されるため、[result]には1と表示されます。Samples]が20のMotionBlurノード)に接続します。処理の重いノードの前のノードツリー(この例ではTransformノード)に1インプットを接続してください。GUIを使用してViewerを再生すると、MotionBlurノードをバイパスし、最終画像に適用されたブラーの結果を表示しないため、処理が高速に実行されます。Server]を使用することで、MotionBlurノードを処理し、最終結果をディスクに書き出すことができます。その間スクリプトの操作は遅くなりません。GUIと同じプロセスを使用し、期待どおりに動作しません。レンダリングが完了すると、モーションブラーが適用された結果が処理され、次のように表示されます。[disable]オプションを使用します。これはノードが少なく少し洗練されていますが、エクスプレッションを無効化するのは難しいです(エフェクト内容を確認するためにはエクスプレッションを削除する必要があります)。expression...]を選択してエクスプレッションを追加します。「$gui」と入力します。GUI上でこちらを再生すると、MotionBlurノード処理をバイパスし、ブラーの効果は表示されません。Switchノードを使用する方法と同じですが、ブラーの効果を再び有効にするには、エクスプレッションを完全に削除する必要があります。「$gui」演算子のエクスプレッションを2つの他の値と組み合わせて使用します。有効または無効の値の結果のみを並べるようにして、NUKEがどちらのモードか(GUIまたはGUIでない状態でのレンダリングのいずれか)に応じて、パラメータに適用できる2つの独立した数値を設定することが可能です。エクスプレッション内容は次のようになります。$gui?0:20「0」はNUKEのGUIモードで使用する値であり、「20」はレンダリング中にGUIモード外で使用する値です。Samples]に割り当てます。「20」サンプルの結果を返します。Background」によってレンダリングされ、20のサンプルを使用する時まで、値は0のままです。Switchノードを使用する方法と同じになります。▼制限このテクニックにはいくつかの制限があります。GUIを使用せずにレンダリングする必要があります。Server」を介してレンダリングする必要があります。無効化する方法および選択的に変異させる方法を使用すると、GUIでノード処理結果を表示するためには、エクスプレッションを削除する必要があります。これらの方法はノードの効果を完全にバイパスします。サンプルファイルは、こちらのページの最下部よりダウンロード頂けます。