【Nuke】StickyNoteの見た目をカッコよくしたい!【Python】

Nuke

プロローグ(という名の茶番)

山口
山口

デフォルトのStickyNoteってなんかダサいよね…

人の皮を被った化物
人の皮を被った化物

StickyNoteの見た目なんてどうでもよくないですか?w

山口
山口

よくない!ノードグラフの見た目がかっこいいとモチベが上がる!

人の皮を被った化物
人の皮を被った化物

然様ですか…

山口
山口

よし!カッコいい見た目にカスタムできた!

でも既に作っちゃった他のStickyNoteも一個一個変更していくのはダルい…

ドウスレバイインダー、ダレカタスケテー(棒読み)

というわけで、当記事ではPythonを使って複数のStickyNoteノードを一括で編集する方法を解説します。

序章

Nukeのノードグラフを見やすくするツールとしてStickyNoteノードがあります。
ノードグラフ用ノードとしてはBackdropを使用することの方が多いと思いますが、Backdropがノード群のまとめに役立つのに対し、StickyNoteは各所の見出しやメモを表示するのに役立ちます。

特に、他の作業者さんにスクリプトを渡すことがAeなどと比べて簡単でその機会も多いNukeですから、その分ノードグラフは一目見てわかりやすい構成にしたいですよね。
自分で作業するときもメモが一言書いてあるだけで「ここのノードはどんなだったっけな…」とならずに済みます。そんな時こそStickyNoteの出番です。

StickyNoteはBackdropノードと違ってサイズの変更ができなかったりスタイルの種類(BackdropだとFillとBorder)も一種類だったりとカスタム要素が少ないのですが、ちょっとした工夫でかっこいい見た目にすることができます。

しかしStickyNoteを一個一個手作業で編集するのはめんどくさいですよね。

そんな時はPythonで一気に見た目を変更しちゃいましょう。

とりあえずやってみる

習うより慣れろ、ということでまずは実際のコードを見てみましょう。

for stickyNoteCustom in nuke.allNodes('StickyNote') :
    stickyNoteCustom.knob('tile_color').setValue(0x1f1f1fff)
    stickyNoteCustom.knob('note_font_size').setValue(30)
    stickyNoteCustom.knob('note_font_color').setValue(0x86653dff)

プログラミングのコードを見たことのない人にはわけわかんないですよね。

とりあえずNukeのノードグラフでStickyNoteを出しましょう。

デフォルトだと絶妙にダサい背景色で小さい文字ですね。(現実の付箋の色を再現しているのだと思いますが…)

次にScriptEditorタブを開き、コードを入力します。

Ctrl+Aを押してコードを全選択したら、Ctrl+Enterでコードを実行します。すると、

↑こうなりました。配色は私の趣味です。

コードの解説に入る前に、文章の左右が飛び出しているのがダサいので一工夫。

文章の前後にスペースを四つほど(スペースの数はお好みで)入れました。そうすることで、

綺麗にノード内に文章が収まりました。

コードの解説

StickyNoteは、

  • 文章
  • 文字のフォント
  • 文字のボールド化
  • 文字のイタリック化
  • 文字のサイズ
  • 文字の色

上記が変更可能な項目ですが、上記に加え、全ノード共通で変更できるノード色を変更することで文字の背景色を変えることができます。

今回Pythonでいじってみるのはノード背景色とフォントのサイズ、フォントの色です。

実際にコードで変更したStickyNote

今回のコードではノード色がダークグレー、フォントサイズが30、文字色がアンティークゴールドになります。

フォントの種類は使用しているパソコンによって変わるのでご自分のお好みのフォントを使用しましょう。デフォルトでもOK。

解説

for stickyNoteCustom in nuke.allNodes('StickyNote'):

一行目はまずfor文を記述します。

for文とは、コードを繰り返す関数です。

forの後の「stickyNoteCustom」の部分は変数で、ある程度自由に命名できます。DoraemonとかUnchiとかでもよいです。

inの後ろは繰り返すコードを適用するノードを指定します。
今回はスクリプトにあるすべてのStickyNoteを指定します。

この’StickyNote’という部分にはノードの種類である「クラス」を入れることができます。
全ノードは表向きの名前とは別に真の名前を持っています。それがクラスです。
例えばMergeノードのクラスは「Merge2」。Trackerノードは「Tracker4」。
クラスの調べ方は、調べたいノードを選択してIキーを押せば詳細が出てくるのでそこにクラスが表示されます。

stickyNoteCustom.knob('tile_color').setValue(0x1f1f1fff)

二行目ではノード色を変更します。

一行目で作った変数「stickyNoteColor」に、
「tile_colorというノブ(項目)を0x1f1f1fffという値にするよ」
というコードを入れています。

ノブ=knobの調べ方は簡単で、Propertiesタブの変更したい項目にマウスのカーソルを重ねてちょっと待つと、

上の画像右下のようにknobの真の名前が出現します。

肝心の色の情報ですが、ちょっと調べるのがめんどいです。

まず、一つのStickyNoteで手動で任意の色に変更したら、そのStickyNoteだけ選択しテキストエディターにコピペします。すると、

このようにノードの情報がずらっと見れます。
ここの「tile_color」というのが設定したノードの色なので「0x1f1f1fff」が色の真の名前と言うことが分かりました。

stickyNoteCustom.knob('note_font_size').setValue(30)

三行目もやっていることは二行目と同じです。
「note_font_sizeという項目を30という値にするよ」

というコードを「stickyNoteCustom」という変数に入れています。

中卒以上の方ならなんとなく読めると思いますが、「note_font_size」がフォントのサイズを表します。

四行目も同じなので解説は割愛します。

アレンジ

今回のコードではスクリプト内のすべてのStickyNoteを一括で変更しました。
選択したStickyNoteだけを変更したい場合は

nuke.allNodes

の部分を

nuke.selectedNodes

に変えれば選択したStickyNoteだけ変更できます。

終幕

これで複数のStickyNoteを一括で編集することができるようになりましたね。

お気づきの方も多いと思いますが、この方法はStickyNote以外でも使えます。
クラスとknob名が分かればどんなノードも一括で変更できるようになるでしょう!

また、StickyNoteは配色とフォント次第で様々なスタイルにできます。

皆さんもいろんな組み合わせを試して、わかりやすくて美しい、そしてモチベが上がるノードグラフを作りましょう!


ここまで読んで頂きありがとうございました!
本記事や当サイトに関するご意見ご要望を絶賛募集中です!
コメント欄やお問い合わせフォームでお気軽にお寄せ下さい!

コメント

タイトルとURLをコピーしました