こちらの記事では、NUKEのViewer上で画像を表示する際に任意のLUTを適用する方法について、紹介致します。
この機能を使用することで、NUKE内で最終出力先の色空間で画像を表示することが可能になります。
前提として、NUKEでは、Viewer上で表示される際に適用するLUTを、「ViewerProcess」というプルダウンメニューで選択することができます。
デフォルトは「sRGB」となっており、こちらは通常、リニアな状態のコンポジット結果をモニターの色空間に変換するために使用されます。
上記の画像で表示されていないViewer用のLUTを適用する方法として、「Input Processを使用する方法」と「Viewer ProcessのリストにカスタムのLUTを追加し、そちらを使用する方法」があります。こちらの記事では、それぞれの設定方法について、紹介致します。
※OCIO config fileを使用して、Viewer Processを動的に変更する方法につきましては、こちらをご覧ください。
▼Input Process を使用する
Input Process 機能は、ビューアに画像を表示する前に、指定したノードの効果を適用します。こちらを使用することで、NUKEのNode Graph内にあるノードの効果を、一時的にViewerに対して適用することができます。
デフォルトの状態では、Input Processとして登録しているノードがないため、この機能はグレーアウトしています。
Input Processとして使用するノードを定義するには、以下の3つのうち、いずれかの操作を行います。
ノードの名前を登録する
- Viewer タブ上で[S]キーを押して、[Viewer Settings]を開きます。
- Input Processとして登録したいノードの名前を、[Viewer]タブの[input process]の項目に入力します。以下の画像の例では、[Grade1]と入力し、Grade1ノードをInput Processとして使用するノードとして設定しています。
ノードの名前を変更する
- Input Processとして登録するノードの上で、[N]キーを押します。
- ノードの名前を、[VIEWER_INPUT]に変更して、[Enter]キーを押してください。
ノードを選択して設定する
- Input Processとして登録するノードを選択した状態で、[Edit] > [Nodes] > [Use as Input Process]を選択します。
- 自動的に、現在選択しているノードのコピーが作成され、コピーされたノードの名前が[Viewer Settings]の[input process]に登録されます。
これにより、上記の画像の通り、プレビューしているノードの流れにInput Processとして登録したノードが含まれていなくても、Viewer上の結果には効果が適用されるようになります。
これらの操作を行い、効果を適用している間は、IPアイコンが赤くなります。
登録しているノードを削除する、名前を変更するといった操作によってInput Processの登録が解除されるまでは、このアイコンをクリックすることで、任意のタイミングで効果を適用することができます。
▼Viewer ProcessにカスタムのLUTを追加する
Viewer Processは、Input Processと同様に、画像を表示する前に効果を適用する機能です。Input Processと異なる点は、効果を適用する際に、Gizmoを使用する点です。
デフォルトでは、[None]、[sRGB]、[rec709]、[rec1886]を選択することができますが、例えば、それ以外の項目をこのリストに追加したい場合は、追加したいLUTを含むGizmoをあらかじめ作成し、Pythonコマンド[nuke.ViewerProcess.register()]を使用してinit.pyに記述する必要があります。
※Gizmoの作成方法についてはこちらを、init.pyに関してはこちらをそれぞれご覧ください。
NUKEの[Project Settings]の[Color]タブから確認可能なLUTは、NUKEのViewerProcess_1DLUTというビルトインのGizmoファイルを利用することで、簡単にViewer Processに追加することができます。
ViewerProcess_1DLUTファイルを利用して、上記画像のリストの特定のLUTを追加したい場合は、init.pyファイルに、以下のような文章を記述します。
※init.pyファイルがない場合は、.nukeフォルダ直下にファイルを新規作成してください。
nuke.ViewerProcess.register("<リストに表示する名前>", nuke.createNode, ("ViewerProcess_1DLUT", "current <LUT>"))
例えば、Cineon のLUTを追加したい場合のinit.pyの入力内容は以下の通りです。
ファイルを保存し、NUKEを起動することで、Viewer ProcessのリストにLUTを追加することができます。
また、それ以外のカスタムのLUTをリストに追加したい場合は、カスタムのLUTを含むGizmoファイルを作成して、以下のように登録することで、同様に設定することができます。
例えば、MyProcess.gizmoというファイルを使用して、My Custom ProcessというViewer Processを追加したい場合は、以下のようにinit.pyに入力します。
nuke.ViewerProcess.register("My Custom Process", nuke.Node, ("MyProcess", ""))
▼補足:Input ProcessとViewer Processを適用する順番について
Input ProcessとViewer Processを適用する順番は、デフォルトでは、Input Processの後に、Viewer Processが適用されます。この順番を入れ替えたい場合は、次の操作を行います。
- Viewer タブ上で[S]キーを押して、[Viewer Settings]を開いてください。
- プロパティ内で表示される[Viewer Settings]の[Viewer]タブ内の[input process order]を[before viewer process]から[after viewer process]に変更します。
関連ページ: