search
  1. ComfyUIの条件付けの組み合わせ|Combine・Concat・Average・ステップの範囲

ComfyUI

ComfyUIの条件付けの組み合わせ|Combine・Concat・Average・ステップの範囲

編集部 読了 約10分

*2026年9月29日に確認した内容です。ComfyUI の公式ドキュメントの組み込みのノードの説明(ConditioningCombine・ConditioningConcat・ConditioningAverage・ConditioningSetTimestepRange・ConditioningZeroOut・ConditioningMultiply・CreateHookLora・SetClipHooks・CreateHookKeyframe・SetHookKeyframes・ConditioningSetProperties ほか)によります。これらのページの説明は、AI で作られたものです。画面と画像は、編集部の PC(Windows 11・NVIDIA GeForce RTX 4060)のポータブル版(Python ごと1つのフォルダに入った Windows 向けの ComfyUI。ComfyUI v0.37.0・フロントエンド 1.52.7・画面の表示は日本語)で作りました。

ComfyUI では、プロンプトを CLIP Text Encode(プロンプトの文を条件付けに変えるノード)で変えた条件付け(CONDITIONING。モデルに作りたいものを伝えるデータ)を、ノードで組み合わせられます。まとめる(Combine)・つなぐ(Concat)・平均する(Average)の3つのノードがあります。ConditioningSetTimestepRange では、条件付けが効くステップ(KSampler がノイズを取り除く1回ごと)の範囲を決められます。フックのノードを使うと、LoRA や条件付けを、画像を作る途中から効かせることもできます。

複数のプロンプトの条件付けを組み合わせる

条件付けを組み合わせるノードは、ノードライブラリ(画面の左のサイドバーの「ノード」)の「モデル」→「条件付け」→「変換」の分類にあります。どのノードも、2つの条件付けを受け取り、1つの条件付けを出します。出力は、KSampler(ノイズを取り除いて画像を作るノード)の「ポジティブ」などにつなぎます。

この記事では、2つのプロンプトを組み合わせて比べました。1つは「a modern living room interior, large windows, natural light, wooden floor, sofa」(室内)、もう1つは「japanese tatami room interior, shoji screens, low table」(和室)です。モデルは SD1.5、ほかの設定はシード 42・ステップ 20・CFG 7.0・euler・normal・512×512 です。

室内だけ・和室だけ・Combine・Concat・Average 0.5で作った5枚。Combineと Concatは和室に寄り、Averageは室内と和室の中間になる
左から、室内のプロンプトだけ、和室のプロンプトだけ、室内と和室のプロンプトを Combine・Concat・Average(条件付け先の強度 0.5)で組み合わせたもの(v0.37.0)

3つのノードとも、室内のプロンプトを1つ目の入力(「条件付け_1」「条件付け先」)に、和室のプロンプトを2つ目の入力(「条件付け_2」「条件付け元」)につなぎました。編集部の試しでは、Combine と Concat は和室に寄り、Average は床と天井が室内と和室の中間のような画像になりました。

混ぜる:Conditioning (Combine)

Conditioning (Combine)(画面の名前は「条件付け(組み合わせ)」)は、「条件付け_1」と「条件付け_2」の2つの条件付けを、1つにまとめるノードです。公式ドキュメントによると、2つはリストとしてつなげて結合され、同じ重みで扱われます。

つなぐ:Conditioning (Concat)

Conditioning (Concat)(画面の名前は「条件付け(連結)」)は、「条件付け元」の条件付けを、「条件付け先」の条件付けの後ろにつなげるノードです。公式ドキュメントによると、「条件付け先」が土台になり、そこに「条件付け元」の情報を足します。

平均する:Conditioning (Average)

Conditioning (Average)(画面の名前は「条件付け平均」)は、2つの条件付けを、決めた割合で混ぜるノードです。公式ドキュメントによると、「条件付け先の強度」(0.0〜1.0・初めの値 1.0)が「条件付け先」の割合で、値を変えると2つの中間の結果になります。公式ドキュメントは、2つのプロンプトの間をなめらかに移ることと、絵柄を混ぜることを使い方に挙げています。

効くステップの範囲を決める:ConditioningSetTimestepRange

ConditioningSetTimestepRange(画面の名前は「条件付けタイムステップ範囲」)は、条件付けが効くステップの範囲を、ステップ全体に対する割合(0.000〜1.000)の「開始」と「終了」で決めるノードです。

編集部は、和室のプロンプトを 0.000〜0.500、室内のプロンプトを 0.500〜1.000 にしました。2つを Conditioning (Combine) でまとめ、KSampler の「ポジティブ」につなぎました。

和室と室内のプロンプトを、それぞれ条件付けタイムステップ範囲で前半と後半にし、条件付け(組み合わせ)でKサンプラーにつないだワークフロー。できた画像は和室
前半は和室、後半は室内のプロンプトを効かせたところ(v0.37.0・フロントエンド 1.52.7)

できた画像は、和室のプロンプトだけの画像とほとんど同じになりました。この組み合わせでは、前半に効かせたプロンプトで構図が決まり、後半の室内のプロンプトはほとんど表に出ませんでした。

条件付けを0にする・強さを変える

条件付けを加工するノードは、ほかに次の2つがあります。

ノード(画面の名前)説明
ConditioningZeroOut(条件付けゼロアウト)公式ドキュメントでは、条件付けの中の pooled_output(条件付けの一部の値)を0にして影響をなくすとしている。ComfyUI のプログラム(nodes.py)では、条件付けの本体も、pooled_output なども0にする
ConditioningMultiply(コンディショニング(乗算))公式ドキュメントでは、条件付けの値に、決めた係数(multiplier・初めの値 1.0・-100.0〜100.0)をかけて、影響を大きくしたり小さくしたりする

画像の決まった範囲やマスク(白黒で範囲を示す画像)の中だけに条件付けを効かせるノード(ConditioningSetArea・ConditioningSetMask など)もあります。使い方は、「ComfyUIの範囲を指定した構図|Area Composition・GLIGEN」の記事で解説します。

フックでLoRAと条件付けを切り替える

フックは、LoRA(モデルに絵柄などを足す軽いファイル)や条件付けの設定を、画像を作る途中の決まった時点から効かせたり、強さを変えたりするための仕組みです。フックのノードは、ノードライブラリの「高度な機能」→「フック」の分類にあり、画面では [BETA] の札が付いていました。

編集部は、LoRA を、ステップの後半だけ効かせるワークフローを組みました。

  1. 「フックLoRAを作成」(CreateHookLora)を置き、LoRA のファイルと強さ(strength_model 1.00・strength_clip 1.00)を決める
  2. 「フックキーフレームを作成」(CreateHookKeyframe)を2つ置き、1つめの「フックKF」を2つめの「前のフックキーフレーム」につなぐ。1つめは強度倍数 0.00・開始パーセント 0.000、2つめは強度倍数 1.00・開始パーセント 0.500 にする
  3. 「フックキーフレームを設定」(SetHookKeyframes)を置き、「フック」に手順1の「フック」を、「フック_kf」に手順2の2つめの「フックKF」をつなぐ
  4. 「CLIPフックを設定」(SetClipHooks)を置き、「クリップ」に「チェックポイントを読み込む」の「CLIP」を、「フック」に手順3の「フック」をつなぐ
  5. 「CLIPフックを設定」の「CLIP」を、ポジティブとネガティブの両方の「CLIPテキストエンコード(プロンプト)」の「クリップ」につなぐ
  6. 画面の右上の「実行する」を押す
フックLoRAを作成・2つのフックキーフレームを作成・フックキーフレームを設定・CLIPフックを設定をつなぎ、2つのCLIPテキストエンコードからKサンプラーにつないだワークフロー
フックのノードには [BETA] の札が付く。LoRA は編集部が作った dreamshaper8_extracted(v0.37.0・フロントエンド 1.52.7)

同じシードで、LoRA を付けない画像・後半だけ効かせた画像・はじめから効かせた画像を比べました。

LoRAなし・後半だけLoRA・はじめからLoRAの3枚。後半だけLoRAはLoRAなしとほぼ同じで、はじめからLoRAは窓の割付けや家具が変わる
LoRA を付けない画像と、フックで後半だけ・はじめから LoRA を効かせた画像(v0.37.0)

後半だけ効かせた画像は、LoRA を付けない画像とほとんど同じでした。はじめから効かせた画像は、窓の割付けが変わり、手前に家具が増えました。

編集部の試しでは、ポジティブだけにフックを付けた CLIP を使い、ネガティブには付けなかったとき、画像が色の粒だらけに崩れました。ポジティブとネガティブの両方に、フックを付けた同じ CLIP を使うと、崩れませんでした。

フックのノードには、次のものがあります。

分類ノード(画面の名前)公式ドキュメントの説明
作るCreateHookLora(フックLoRAを作成)LoRA のファイルと、モデル・CLIP の強さ(-20.0〜20.0)からフックを作る。2つの強さが0なら作らない
作るCreateHookLoraModelOnly(フックLoRA(モデルのみ))モデルだけに効く LoRA のフックを作る
作るCreateHookModelAsLora(フックモデルをLoRAとして作成)・モデルのみの版チェックポイントの重みを LoRA として使うフックを作る
付けるSetClipHooks(CLIPフックを設定)CLIP にフックを付ける。apply_to_conds(初めは true)で、できる条件付けにもフックを付ける
付けるConditioningSetProperties(条件付けプロパティ設定)・ConditioningSetPropertiesAndCombine・PairConditioning 系条件付けに、強さ・範囲・マスク・フック・タイムステップの範囲を付ける。Pair 系はポジティブとネガティブを一緒に扱う
時間CreateHookKeyframe(フックキーフレームを作成)決めた割合の時点からの、フックの強さの倍数を決める
時間CreateHookKeyframesFromFloats・CreateHookKeyframesInterpolated数のリストから、または開始と終了の強さの間を補って、キーフレームを並べて作る
時間SetHookKeyframes(フックキーフレームを設定)フックにキーフレームを付ける
時間ConditioningTimestepsRange(タイムステップ範囲)開始と終了の割合から、その範囲と前後の範囲の3つを作る
まとめるCombineHooks(フックを組み合わせる [2]・[4]・[8])複数のフックを1つにまとめる

プロンプトの書き方は、「ComfyUIのプロンプトと重み|CLIP Text Encode・語の強さ」の記事で解説しています。LoRA を普通に読み込む方法は、「ComfyUIのLoRAの読み込み|Load LoRA・強さ」の記事で解説しています。

会員登録(無料)

記事やテーマのお気に入り・学習履歴・フォローが使えます。

この記事について

PERSC編集部が、建築の制作に関わる知識を実務目線で整理しています。内容は公開・更新日時点の情報にもとづきます。誤りや古い情報にお気づきの場合はお問い合わせよりご連絡ください。

あわせて読みたい