ノード | 改善点と機能 | リンクフィクサー
ComfyUI をいじっている間に作成されたノードと改善のコレクション。これらは、ワークフローをよりクリーンに、より簡単に、より速くするために自分用に作成したものです。ぜひ試してみてください。ただし、これらは私自身のユースケースのために作成したものであることを忘れないでください:)
custom_modules
に作成します。 cd ComfyUI/custom_nodes
git clone https://github.com/rgthree/rgthree-comfy.git
rgthree-comfy の特定の側面を構成できます。たとえば、おそらく将来の ComfyUI の変更によって rgthree-comfy が壊れるか、同様のことを行う別の拡張機能がすでにあり、それを rgthree-comfy に対してオフにしたいと考えているとします。
rgthree-settings にアクセスするには、グラフの空の部分を右クリックしてrgthree-comfy > Settings (rgthree-comfy)
を選択するか、ComfyUI 設定ダイアログでrgthree-comfy settings
をクリックします。
(設定はrgthree-comfy
ディレクトリのrgthree_config.json
に保存されていることに注意してください。そこでのみ構成できる詳細な設定は他にもあります。変更する前に、 rgthree_config.json
の前にrgthree_config.json.default
からデフォルト設定をコピーできます) 。
rgthree-comfy ノードの束を右クリックして、 ? Node Help
選択できることに注意してください。利用可能な場合、アプリ内ヘルプの? Node Help
メニュー項目。
Automatic1111 のシード コントロールと非常によく似た動作をする ComfyUI の直感的なシード コントロール ノード。
さらに詳しい情報を見る
- 毎回ランダムなシードを使用するには、シード値を「-1」に設定します。
- 静的/固定シードとして使用するには、そこに他の数値を設定します。
- ランダム化する、または最後にキューに入れられたシードを (再) 使用するためのクイック アクション。
- 画像のメタデータにはシード値が格納されます(つまり、画像をドラッグすると、シード フィールドがすでにそのシードに固定されています) 。
- 秘密の機能: シード値を手動で「-2」または「-3」に設定して、最後のシード値を増減させることができます。最後のシード値がなかった場合は、最初にランダムに使用されます。
複数の方向とサイズで実際の再ルーティングを行うなど、大幅に改善された Reroute ノードを使用して、ワークフローをきちんと保ちます。
詳細情報
- 右クリックのコンテキスト メニューを使用して、幅、高さ、接続レイアウトを変更します。
- サイズ変更機能 (ただし、サイズ変更する場合の最小サイズは 40x43) とタイトル/タイプ表示も切り替えます。
画面上の任意の場所にブックマーク ノードを配置すると、ショートカット キーでそのノードにすばやく移動できます。
さらに詳しい情報を見る
- 左上にアンカーされているブックマーク ノードに右に移動するために押す
shortcut_key
を定義します。- ズームレベルも定義できます。
- プロのヒント:
shortcut_key
複数のキーにすることができます。たとえば、「alt + shift + !」 Alt キー、Shift キー、および「!」を押す必要があります。 (「1」キーと同様ですが、Shift キーを押した状態で) トリガーします。
一般的なフロー プロパティを渡し、新しいデータをマージします。他のノード スイートの「パイプ」と似ていますが、結合がより簡単で、すべてを 1 つのノード内で結合および展開することにより、標準ノードとより簡単に相互運用できます。
詳細情報
- Context と Context Big には下位互換性があります。つまり、Context Big に接続された入力は、通常の Context ノードを介して CONTEXT 出力に渡され、いずれかの出力として利用可能になります (または、「ステップ」など、出力がそのノード上にのみある場合は Context Big)。
- プロのヒント: コンテキスト出力を別のノード上にドラッグする場合、「ctrl」を押したまま放すと、他のコンテキスト出力がホバーされたノードに自動的に接続されます。
- プロのヒント: メニューから Context ノードと Context Big ノードを切り替えることができます。
Image Comparer ノードは、2 つのイメージを重ねて比較します。
詳細情報
- 注:右クリック メニューには、ノードの左半分をクリックした場合は最初の画像 (image_a)、右側をクリックした場合は 2 番目の画像に対応する画像オプション ([画像を開く]、[画像を保存] など) が表示される場合があります。ノードの半分。
- 入力:
image_a
必須。比較に使用する最初の画像。 image_b が指定されておらず、image_a がバッチである場合、比較関数は image_a の最初の 2 つのイメージを使用します。image_b
オプション。比較に使用する 2 番目の画像。 image_a が 2 つのイメージを含むバッチの場合のみオプションです。- プロパティ:次のプロパティを変更できます (ノードを右クリックし、メニューから [プロパティ] または [プロパティ パネル] を選択します)。
comparer_mode
- 「スライド」と「クリック」のどちらかを選択します。デフォルトは「スライド」です。
入力イメージをピクセル値またはパーセンテージ値でトリミングできるノード。
実行後にバックエンドからのほとんどのテキスト データを表示します。
非常にシンプルな Lora Loader ノード。複数の Lora を一度にロードし、それぞれをすばやく切り替えることができ、すべてが超凝縮されたノード内で行われます。
詳細情報
- 「+ Lora を追加」ボタンをクリックして、必要なだけ Lora を追加します。本当の制限はありません!
- Lora ウィジェットを右クリックすると、特別なオプションが表示され、Lora を上下に移動したり(画像には影響せず、表示のみ) 、オン/オフを切り替えたり、行をまとめて削除したりできます。
- プロパティから
Show Strengths
を変更して、単一の単純な強度値 (モデルとクリップの両方に使用されます) を表示するか、モデルとクリップの両方の強度が変更可能なより高度なビューを表示するかを選択します。
廃止されました。代わりに
Power Lora Loader
使用しました。簡素化された Lora Loader スタック。他のスイートとほぼ同様ですが、標準の入出力との相互運用性がより高くなります。
プロンプトを起動すると、埋め込みや lora を追加するためのドロップダウンが表示され、プロンプト スニペットも保存されます。
詳細情報
- コアとしては、パワー プロンプトをほぼ文字列プリミティブ ノードとして使用でき、埋め込みや lora を選択するためのドロップダウンの追加機能を追加の処理なしで使用できます。これにより、lora 処理や CLIP エンコーディングなどのために、生の
TEXT
だけが別のノードに出力されます。CLIP
入力に接続してテキストをエンコードし、CLIP
とCONDITIONING
両方の出力をノードから直接出力します。MODEL
入力に接続して、テキスト内の<lora:...>
タグを自動的に解析してロードします。別個の Lora Loader は必要ありません。
上記の電源プロンプトと同じですが、LORA サポートはありません。ネガティブプロンプトが少しきれいになるように作成されました(ネガティブプロンプトは loras をサポートしていないため) 。
SDXL は上記の電源プロンプトの兄弟です。これには、個別のテキスト入力として text_g と text_l が含まれているほか、適切なクリップ エンコーディングを保証するために必要なさらにいくつかの入力スロットが含まれています。と組み合わせる
非 SDXL
Power Prompt - Simple
ノードと同様、これは SDXL パワー プロンプトと基本的に同じですが、非 lora ポジティブ プロンプトまたは SDXL ネガティブ プロンプトの lora サポートがありません(ネガティブ プロンプトは lora をサポートしないため) 。
SDXL プロンプトのいくつかの構成フィールドのみ。正直なところ、SDXL以外にも使用できます。
ワークフローを分岐させるための強力なノード。 null/空ではない最初のコンテキスト入力を選択することで機能します。
詳細情報
- いくつかのコンテキスト ノードを渡すと、コンテキスト スイッチは、続行する最初の非 null コンテキストを自動的に選択します。
- コンテキストを null に切り替える方法を知りたいですか? Fast MuterまたはFast Groups Muterと組み合わせて使用します
上記のコンテキスト スイッチに似た強力なノードで、null/空ではない最初の入力を選択します。
詳細情報
- 同じタイプの複数の入力を渡すと、Any Switch は最初の非 null 値を自動的に選択して続行します。
- コンテキストを null に切り替える方法を知りたいですか? Fast MuterまたはFast Groups Muterと組み合わせて使用します
Fast Groups Muter は、現在のワークフロー内のすべてのグループを自動的に収集し、グループ内のすべてのノードをすばやくミュートおよびミュート解除できる入力不要のノードです。
詳細情報
グループは自動的に表示されますが、ノードのプロパティ(ノードを右クリックし、メニューから [プロパティ] または [プロパティ パネル] を選択します)からフィルタリング、並べ替えなどを行うことができます。プロパティには次のものが含まれます。
matchColors
- 指定された色に一致するグループのみを追加します。 ComfyUI カラー (赤、淡い青) または 16 進数コード (#a4d399) を使用できます。カンマ区切りで複数追加できます。
matchTitle
- タイトル一致 (文字列一致、または正規表現) によってトグルのリストをフィルタリングします。
showNav
- グループに移動するためのクイック ナビゲーション矢印を追加または削除します。 (デフォルト: true)
sort
- トグルの順序を「英数字」、グラフの「位置」、または「カスタムアルファベット」で並べ替えます。 (デフォルト:「位置」)
customSortAlphabet
- 並べ替えプロパティが「カスタム アルファベット」の場合、ここで使用するアルファベットを定義できます。これは、各グループ名の先頭と一致し、それに基づいて並べ替えられます。グループ タイトルがカスタム アルファベット エントリと一致しない場合は、一致するグループの後に英数字順に配置されます。これは、「zyxw...」のような単一文字のリスト、または「sdxl,pro,sd,n,p」のようなより詳細な制御のためのカンマ区切りの文字列にすることができます。
2 つのグループ タイトルが同じカスタム アルファベット エントリに一致する場合、通常の英数字アルファベットがその関係を破ることに注意してください。たとえば、カスタム アルファベットの「e、s、d」では、「d」の前に「e」が付いている場合でも、「SDXL、SEGS、Detailer」のようなグループ名が並べられます(「SE」が前にあると予想される場合があります)。 「SD」)。
「SDXL」の前に「SEGS」を表示するには、より長い文字列を使用できます。たとえば、ここではカスタム アルファベット値「se,s,f」が機能します。
toggleRestriction
- オプションで、有効にできるウィジェットの数を最大 1 つ、または常に 1 つに制限します。注: 「最大 1 つ」または「常に 1 つ」を使用する場合、これはこのノードのトグルをクリックしたときにのみ適用されます。最初のトグル クリック以外でグループ内のノードが変更された場合、これらの制限は強制されず、複数のトグルが有効な状態になる可能性があります。これは、ノードが複数のグループと重複している場合にも発生する可能性があります。
上記のFast Groups Muterと同じですが、接続されたノードを「ミュート」ではなく「バイパス」に設定します。
強力な「コントロール パネル」ノードにより、接続されたノードをすばやく切り替えて、ノードをすぐにミュートまたは有効にすることができます。
詳細情報
- 接続されているすべてのノードのコレクションを追加すると、単一スポットを「ダッシュボード」として使用して、ノードをすばやく有効または無効にすることができます。 2 つの異なるノード。 1 つは接続されたノードの「ミュート」用、もう 1 つは接続されたノードの「バイパス」用です。
Fast Muter と同じですが、接続されたノードを「バイパス」に設定します。
なんと、このノードを使用すると、接続されたノードや ConfyUI を半自動化できます。
詳細情報
- ノードを接続し、少なくともボタンを押したときにノードをミュート、バイパス、または有効にします。
- 特定のノードは追加のアクションを公開します。たとえば、
Seed
ノードでは、ボタンが押されたときにRandomize Each Time
するか、Use Last Queued Seed
設定できます。- また、ノードのプロパティからショートカット キーを設定すると、クリックせずにボタンのアクションを切り替えることができます。
ヌードルをクリーンアップするために使用され、これは任意の数の入力ノードを受け入れ、それを別のノードに渡します。
️ 現在、これは実際にはFast Muter 、 Fast Bypasser 、またはMute / Bypass Relayにのみ接続する必要があります。
強力なノードは、ミュート/バイパス/アクティブ モードを接続されているすべての入力ノードにディスパッチするか、グループ内に入力が接続されていない場合は、そのグループ内のすべてのノードにミュート/バイパス/アクティブ モードをディスパッチします。
詳細情報
プロのヒント #1: このノードの出力をFast MuterまたはFast Bypasserに接続すると、そこに 1 つの切り替えがあり、ワンクリックで多くのノードをミュート/バイパス/有効にすることができます。
プロのヒント #2:ミュート/バイパス リレーノードをこのノードの入力に接続すると、リレーが自動的にミュート/バイパス/有効化の変更をリピーターにディスパッチします。
ミュート / バイパス リピーターと連携するときに、その入力ノードのモード (ミュート、バイパス、またはアクティブ) を接続されたリピーターに中継する高度なノード (その後、すべての入力に対してそのモード変更が繰り返されます)。
詳細情報
- 接続されているすべての入力ノードがミュートされている場合、リレーは接続されているリピーターをミュートに設定します (デフォルト)。
- 接続されているすべての入力ノードがバイパスされると、リレーは接続されたリピーターをバイパスするように設定します (デフォルト)。
- 接続された入力ノードのいずれかがアクティブになると、リレーは接続されたリピーターをアクティブに設定します (デフォルト)。
- 注:入力が接続されていない場合、リレー自体のモードが変更されると、リレーは接続されているリピーターをそのモードに設定します。入力が接続されている場合、上記の黒点が発生し、リレーのモードは関係ないことに注意してください。
- プロのヒント:上記で送信される信号を
Properties
で変更できます。たとえば、いずれかの入力がアクティブなときに (ACTIVE 信号を送信する代わりに) MUTE を送信し、すべての入力がミュートされているときに (MUTE 信号を送信する代わりに) ACTIVE 信号を送信する逆リレーを構成できます。 、など。
高度なノードは、グラフがキューに入れられたときに入力の 1 つのミュートをランダムに解除していました (そして、すぐにミュートに戻しました)。
詳細情報
- 注:開始するにはすべての入力ノードをミュートする必要があります。そうでない場合、このノードは別のノードのミュートをランダムに解除しません。 (生成された画像をドラッグすると、選択した入力が既にミュート解除されており、それ以上の操作を行わなくても機能するため、これは強力です。)
- ヒント:リピーターの出力をこのノードの入力に接続し、そのリピーターを他の入力のないグループに配置すると、グループ全体がミュート/ミュート解除されます。
純粋に視覚的なノードであり、フローティング ラベルをワークフローに追加できます。
詳細情報
- 表示されるテキストはノードの「タイトル」で、ノードのプロパティからフォント サイズ、フォント ファミリ、フォントの色、テキストの配置、背景色、パディング、背景の境界線の半径を調整できます。ノードをダブルクリックしてプロパティ パネルを開くことができます。
- プロのヒント #1:プロパティ パネルから複数行のテキストを追加できます(ComfyUI ではそこでのみ Shift + Enter ができるため)。
- プロのヒント #2:右クリック メニューで ComfyUI のネイティブの「ピン」オプションを使用すると、ラベルをワークフローに貼り付け、クリックして「通過」させることができます。いつでも右クリックして固定を解除できます。
- プロのヒント #3:色の値は、白の場合は「#FFFFFF」、濃い赤の場合は「#660000」などの 16 進数の文字列です。 7 番目と 8 番目の値 (短縮表現を使用する場合は 5 番目) を指定して、半透明の色を作成できます。たとえば、「#FFFFFF88」は半透明の白です。
これらのノードのパワーの多くはミューティングから得られます。ミュートは、コンテキスト スイッチ ノードを利用してワークフローの複数のパスを正しく実装するための基礎です。
他の拡張機能にはスイッチが用意されている場合もありますが、多くの場合、誤ってワークフローに必要以上の作業を実行させます。他のスイッチには、どの入力を渡すかを選択するセレクターがある場合がありますが、他の入力の実行は停止されないため、無駄な作業が発生します。代わりに、コンテキスト スイッチは、渡す最初の空でないコンテキストを選択することによって機能し、正しくミュートすることは前のノードを空にする 1 つの方法であり、正しく設定されていれば追加の作業は行われません。
ミュート、つまりスイッチの使用は、ノードをミュートするかスイッチを使用することでグラフの順方向の流れを止めたり指示したりできるはずだと思われるため、最初は人々を混乱させることがあります。しかし、これは事実ではなく、実際にはグラフは逆方向に動き始めます。
... > Context > KSampler > VAE Decode > Save Image
ようなパスを持つワークフローがある場合、最初は最初の Context ノードをミュートできるはずだと感じるかもしれません。そうすれば、グラフは先に進むときにそこで停止し、次の部分をスキップします。ワークフローの残りの部分。
ただし、実際にはグラフが先に進まないため、エラーが発生することがすぐにわかります。ワークフローが処理されると、まず各「出力ノード」(画像のプレビュー、画像の保存、「表示文字列」など) から開始して逆方向に移動し、そこに到達するために考えられるすべてのパスを逆方向に歩きます。
したがって、上記の... > Context > KSampler > VAE Decode > Save Image
例では、実際にSave Image
ノードをミュートしてこのパスを停止したいと考えています。これを実行すると、出力ノードがなくなるため、これらのノードはいずれも実行されなくなります。
例を見てみましょう。
コンテキスト スイッチ(スクリーンショットでは水色) を使用すると、コンテキスト入力が優先順位に従って入力されます。上記のワークフローでは、 Upscale Out
コンテキストが最初にあるため、それが有効になっている場合は、それが出力に選択されます。そうでない場合は、上 (アップスケーラー ブースの前) から再ルーティングされたコンテキストからの 2 番目の入力スロットが選択されます。
Upscale Preview
Upscale Out
コンテキスト ノードの後にあり、アップスケールVAE Decoder
からのイメージの代わりにアップスケール アウト コンテキスト ノードからのイメージを使用していることに注意してください。これは意図的なものであるため、 Upscale Out
コンテキストを無効にすると、Upscaler ノードはいずれも実行されなくなり、貴重な GPU サイクルが節約されます。プレビューをVAE Decoder
に直接接続している場合は、たとえUpscale Out
コンテキスト ノードが無効になっていたとしても、アップスケーラーは常に実行されてプレビューを生成します。 Upscale Out
コンテキスト ノードをミュートすることで無効にできるようになりました。それを強調表示してctrl + m
押すと機能します。そうすることで、出力は None になり、それ以降のノードには何も渡されません。図では、 Upscale Preview
が赤になっていることがわかりますが、これは問題ありません。実行を停止する実際のエラーはありません。
次に、これをFast Muter
ノードに接続しましょう。 The Fast Muter
ノードは、接続されているノードにクイック切り替えを追加することで (再ルーティングを無視して) ダッシュボードとして機能します。この図では、 Upscaler Out
コンテキスト ノードとSave File
コンテキスト ノードの両方が接続されています。したがって、それらをすぐに有効または無効にすることができます。
最後に、オプションで、 Node Collector
表示されます。必要に応じて麺をきれいにするために使用し、ミューターに接続します。何でも接続できますが、接続するとワークフローの実行が中断される可能性があります。
rgthree-comfy は、ノードに直接関連付けられていないいくつかの改善、機能、最適化を ComfyUI に追加します。
アプリ ウィンドウの上部に沿って実行される最小限の進行状況バー。キュー サイズ、プロンプト実行の現在の進行状況 (同じウィンドウ内)、およびマルチステップ ノードの進行状況も表示されます。
rgthree-comfy 設定から削除/有効にしたり、高さ/サイズを構成したりできます。
? ComfyUI の最新バージョンでは、実行再帰の問題が解消されました。この機能は rgthree-comfy から削除されました。
ワークフロー全体を実行せずに、特定の出力ノードへの 1 つまたは 2 つのパスだけをキューに入れたい場合があります。出力ノードを右クリックし、
Queue Selected Output Nodes (rgthree)
を選択することで、これを行うことができます。詳細情報
実行する出力ノードを選択します。
注: 選択されたすべてのノードではなく、出力ノードのみがキャプチャおよびトラバースされます。したがって、出力と別のパスのノードを選択した場合、出力に接続されているパスのみが実行され、出力以外のノードは選択されていても実行されません。
注: ワークフロー全体がシリアル化されてから、バックエンドに不要なものをトリミングします。したがって、すべてのシードのランダム/インクリメント/デクリメントなどは、そのノードが最終的に送信されない場合でも実行されます。
(実験中はデフォルトでオフになっていますが、rgthree-comfy 設定でオンになります) 。
長いコンボ リスト (ロード チェックポイントなど) 内のトップレベルのサブディレクトリを自動的に検出し、サブディレクトリに分割します。
(実験中はデフォルトでオフになっていますが、rgthree-comfy 設定でオンになります) 。
グループ ヘッダーの右上にミュートおよび/またはバイパスの切り替えアイコンを追加し、現在表示しているグループをワンクリックで切り替えることができます。
(実験中はデフォルトでオフになっていますが、rgthree-comfy 設定でオンになります) 。
前世代からの画像/JSON ワークフローをドラッグ アンド ドロップし、同じノードのウィジェット (同じ ID とタイプに一致する) をオーバーライドできるようにします。これは、同じ一般的なワークフローを使用する複数の世代があり、前の世代のシードやプロンプトなどの一部のデータだけをインポートしたい場合に便利です。
画像のあるノードを右クリックすると、「画像のコピー」というコンテキスト メニュー項目が表示され、画像をクリップボードに直接コピーできます。
?最近 ComfyUI でこの設定も追加されたので、これは卒業したと思います。メニュー項目が 2 つあるわけではありません。私のコードは、追加する前に「画像のコピー」項目がまだ存在しないことを確認します。
ワークフローで接続が欠落している場合や、読み込み時にエラーが発生する場合があります。ComfyUI を起動して http://127.0.0.1:8188/rgthree/link_fixer にアクセスすると、画像またはワークフローの JSON ファイルをドロップインして、悪いリンクを修正します。
また、rgthree-comfy 設定でリンク修正チェックを有効にして、不正なリンク データを含むワークフローをロードして開始した場合にアラートを表示することもできます。