ComfyUIで置換を使ってプロンプトに変化を
全体公開
お久しぶりのComfyUIネタです。
今回は、置換を使ってプロンプトを変化させる方法についてです。
画像1のフローで説明します。
人物や服装などに変化を付けるのに、色(髪・目・服など)を変えたり、長さ(髪・スカート・袖など)を変えたい事がありますよね。
毎回手書きしているならその都度合わせて書くので問題ないですが、以前紹介した「ComfyUIでプロンプト入力を楽にする」の様に既に登録してある物を変更するのは手間です。
※CSVファイルを開いて書き直した場合、ComfyUIの再起動が必要。
そこで、置換を使って柔軟に対応できるようにフローを組みましょう。
今回使用したカスタムノード
・Comfyroll Studio
URL: https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes
CR Text Replace
このノードは複数の置換が可能です。
他にも置換できるカスタムノードは沢山ありますので、探してみて下さい。
ComfyUI replace などで探せば出てくると思います。
「置換」はComfyUI標準のノードです。
画像1の左端の「文字列(複数行)」ノードにはプロンプトが入力されています。
制服の色と袖の長さを変更したいので、置換したい部分に 'color' や 'sleeve' と入力しておきます。
※単語だけでも置換は可能ですが、置換箇所が明示的に分かる様に記号などで括っておくと良いでしょう。
置換ノードでは、置換したい文字と置換後の文字を設定しておきます。
実行結果は、画像2~画像4です。
右端の「プレビュー任意」ノードに置換結果が表示されています。
期待通りに置換されてますね。
「置換の例2改」は、CSV Loderで色や袖を登録して使う例です。
一々色を入力せずに済みますし、入力間違いも起きません(指定間違いはあるw)
使い易い様に色々工夫してみてください。
---------------------------------------------------------------------------------------------
おまけ1
「Any Switch (rgthree)」を使う際の入力の切り替えについて
「Any Switch (rgthree)」は、以前「ComfyUIで入力を切り替えるSwitch」で説明した通り、上の入力が優先されるスイッチです。
今回のフローの場合、入力を切り替える際に「Fast Groups Bypasser (rgthree)」を使うと正しく動作しません。
画像5~6
Bypass状態は、入力を未処理で出力に送るため、「Any Switch (rgthree)」の「any_01」には入力が発生します。
結果、元の文字列がそのまま結果に表示されてしまいます。
処理の途中でルートを選択したい場合は、「Fast Groups Muter (rgthree)」を使います。
Mute状態は処理をしませんので、出力もありませんので、any_02以降のデータが有効になります。
※「Fast Groups Bypasser (rgthree)」と「Fast Groups Muter (rgthree)」が同時に存在する場合、操作したノードの状態に設定されます。
「Fast Groups Bypasser (rgthree)」で操作すれば、Bypassに
「Fast Groups Muter (rgthree)」で操作すれば、Muteに
※入力を指定して切り替えるスイッチもありますが、入力に使われなかった処理も実行され、処理時間やGPUリソースが使われる事になるので、注意が必要です。
---------------------------------------------------------------------------------------------
おまけ2
ノードの入出力スロットの名称変更について
各ノードの入出力スロットにはデフォルトで名称が付いていますが、変更が可能です。
1.変更したいスロットの点の上で右クリックするとコンテキストメニューが表示されます(画像6)
2.「Rename Slot」を選択すると入力ウインドウが開きます(画像7)ので、新しい名称を入力して「OK」をクリックします。
3.新しい名称が設定されます(画像9)
4.同様に出力側スロットも設定可能です(画像10)