2024-02-17(更新)

【KJNodes #1】KJNodesでマスクを作る基礎【ComfyUI】

KJNodesはマスクをプロシージャルに作れる。今回はCreate系ノード。他機能も満載なのでシリーズで解説する。

Article Image

「連番マスクから1枚だけ取り出す」の項を追加

KJNodesとは

ComfyUIにおいて主にマスク関係を操るノードだが、ソレ以外の機能も多数収録されている。

私の独断で重要そうなものからまとめていく。

kijai/ComfyUI-KJNodes: Various custom nodes for ComfyUI

読者のレベル

少なくともマスクの意味と使い方がわかるレベルで。中級者向けかなと思う。

このノードは海外の猛者はよく使っているのだが、どうも日本での認知度があまりに少ないためこの記事を書いている。

そのためしばらくの間この記事も読まれることは少ないだろう。

そういえば、謎技研のテーマはこういうニッチなウェブサイトだった。

Create系

右クリックのadd NodeからKJNodes > masking > generateの中にマスクをプロシージャルに作るCreate系のノードがある。

今回の記事ではこちらを紹介していく。

プロシージャルって何?

CGではよく使われる用語。

なんらかの画像を読み込んでマスクとして使うのではなく、ツール内の演算で生成した模様や形状を指す。

CGではプロシージャルなノードを使うことに更にメリットがある。

例えば無限に拡大してもジャギーが出ないことや、ピクセル数をどこまで大きくすることが出来るというメリット。

CreateGradientMask

右から左へ黒のカーテンをかけていくようなアニメーションのマスクを生成する。

KJNodes for ComfyUI

検索名とノード名は基本的に同じ。

ComfyUI Essentialsという別のカスタムノードにマスクをプレビューするノードがあるので入れておくと良い(Mask Preview)

ちょっといきなりクセが強いノードなので細かく解説。

まずframesを1以上にしないとエラーが出るので注意。

frames=1

frames=1の例。このframesは生成するマスクの数で、数値をあげるとその数のマスクが作られる。

これは単に複数マスクがつくられるのではなく右から左へ黒に侵食するアニメーションのようになっている。

なので、コレを使ってComfy内で画像をスムーズに切り替えるような使い方が可能。

CreateTextMask

テキストの形状のマスクを生成。

CreateTextMask

framesを上げてstart_rotation, end_rotationをあげると回転する動きをする。

invertで白黒反転。

text_x, text_yで座標を調整。

CreateAudioMask

音声ファイルからマスクを作るノード。円形のマスクが拡縮する。

CreateAudioMask

wavのみならずmp4などもいけたのでファイル形式は色々いけそう。

波形の音量で面積の大小を取っていると思われる。

真っ白になっている場合は音量が大きすぎかも。Scale0.1とかかなり小さくしてみると良い。

CreateFadeMask

単純に画像全体を白から黒へと変化させるマスク

CreateFadeMask

上は連番画像なので、動画にすると次のようなマスクになる。

CreateFadeMaskAdvanced

FadeMaskの白黒のアニメーションをテキストでコントロールできるノード。

CreateFadeMaskAdvanced

このテキストだと「0フレで明るさ0.0」「7フレで明るさ1.0,」「15フレで明るさ0.0」を意味している。

CreateFluidMask

流体のシミュレーションマスク。

CreateFluidMask

何に使うのか全く不明だが、なんかとにかくすごい。

  • inflow_count: 流体が発生する箇所の数
  • inflow_velocity: 流体の速度
  • inflow_radius: 流体の半径。つまり大きさ。
  • inflow_padding: 上げるとより中央からスタート
  • inflow_duration: 流体を入れる時間の長さ?長くすると大量に水が入ってくるような動き。

CreateShapeMask

円形、三角形、四角形のマスクを生成するシンプルなノード。

CreateShapeMask

framesとgrowを増やすと拡大するような動きをする。

CreateVoronoiMask

細胞のような、ステンドグラスのようなマスクを作成する。

CreateVoronoiMask

このノードはCGではおなじみのノードで、様々な使用法があるので調べてみるのも良い。

framesの数値を上げるとアニメーションするが、コントロールするのは難しそう。

CreateMagicMask

説明が難しいが、恐らくBlenderのMagic Textureと同じようなアルゴリズムっぽい。

Blenderの公式解説を流用すれば「サイケデリックなマスクを生成する」という解説になりそう。

CreateMagicMask

色々数値を弄って遊ぶと良いと思う。

連番マスクから1枚だけ取り出す

例えばCreateGradientMaskノードで10枚つくって、その●番目だけ取り出したいといった場合。

MTB Nodes

これは紹介していないがMTB NodesMask To Imageで1度画像に変換し、KJNodesのGetImagesFromBatchIndexedを使う方法がある。

2,3番目を取り出し

上の例だと2,3番目のように複数マスクを取り出している。

imageデータになってしまうので、この後もう一度マスクとして利用するならConvert Image to Maskノードを使う

で、これを何に使うの?

調査中...

以上

マスクを作るノードは以上で全部。

極端な話を言えば別途ツールを使って作ることもできるがComfyUI内で生成できるのはかなり面白い。

KJNodesはまだまだノードがたくさんあるので引き続き記事を追加する。



この記事をシェア


謎の技術研究部 (謎技研)