このシリーズはComfyUIでノードを自作するシリーズ。
詳しく解説するのが目的ではなく、とにかく早く、簡単に作ることを目的とする。
まずは次のディレクトリに好きな名前のディレクトリを作る。
\ComfyUI_windows_portable\ComfyUI\custom_nodes\
今回は適当にComfyUI-noob-nodes
にした。
ここにファイルを作っていく。
__init__.py
次のコードを記述した__init__.py
ファイルを作成する
from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
.nodes
の箇所は次のファイル名。自由に名前を変更して良い。
基本は変えなくてOK。
ここにインストールされているライブラリを管理するコードを入れているノードを見かけるが、ひとまずここはテンプレ的に覚えておけば良いと思う。
サンプルとして次のコードを作成した。
まずはコピペして使ってみてほしい。
class aaaaa:
@classmethod
def INPUT_TYPES(s):
return {"required": {"myINT": ("INT",{"forceInput": True})}}
RETURN_TYPES = ("INT",)
FUNCTION = "go"
CATEGORY = "test"
def go(self, myINT):
return (myINT,)
NODE_CLASS_MAPPINGS = {
"bbbbb": aaaaa,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"bbbbb": "ccccc",
}
これをコピペでComfyUIを実行(既に起動している場合は再起動)すればひとまずノードが読み込まれる。
この記事ではちょっと混乱しやすいノード名がどうなっているのかを先に解説してしまう。
どうせ後で苦労する箇所。
今回は解説しないがaaaaa
になっているところにノードが行なう処理を実際に書いていく。
とにかくここではクラス名をaaaaa
と定義したことだけ理解できればOK。
この下からノードに名前をつけていく。
ここのキー名はノードにつけたい名前、値にノードの中身を記述するクラス名を記述
つまりキー名:bbbbb
は自由に設定してよく、値:aaaaa
は上のクラス名と一致させなければならない。
キー名は上で設定したものと同じもので合わせる。
つまりbbbbb
以外にしてしまうと意味がない。
値ccccc
になっている箇所には表示用に自由な名前を設定してよい。なんなら日本語でも使用できることを確認。
つまるところ実際にComfyUIをユーザーが使う上ではノードに名前が2個ついているようなイメージになるはず。
私も使用する側で少し混乱していた。
で、これがどういう意味があるかまだ混乱していると思うので実際にComfyUI上で出したノードを確認する。
まず、右クリックでノードを出そうとした場合
classの中で定義したCATEGORY = “test”
の中に自作のノードが入っている。
更にその中に③で指定したccccc
が入る。
つまりここはノードのクラス名に関係なく自由に設定できるということになる。
ノードを検索で出す場合は
キー名のbbbbb
でも、表示名のccccc
でもどちらでもヒットするようになっている。
たしかこれはいつぞやのComfyのアップデートで入った調整で、以前はキー名でしか反応しなかった。
実際ノードを出した時、名前はccccc
になる。
しかしながら右クリックメニューのトップはbbbbb
になる。
今回はclassの中身(ノードの中身)は一切考えないところで解説した。
まず覚えてほしいのは
ということを覚えてもらえればと思う。
ちょっとここが複雑で絶対にすぐ忘れるので暗記するのではなくこの記事をメモ書き代わりに再度開いてもらえればと思う。
まだこれだけではまるで使い物にならないので、シリーズとして続く。