ConditioningSetArea

(comfyanonymous/ComfyUI)
conditioning/Conditioning (Set Area)
サンプリング範囲を限定する

入力された conditioning でノイズ推定 (画像生成) を行う範囲を、指定したサイズ・位置の矩形に限定します。 また、効果の強さを変更できます。 誤解されやすいですが、『conditioning の効果範囲を、指定したサイズ・位置の矩形内に限定するもの』ではありせん (→詳細)。 そういう動作が欲しい場合は、ConditioningSetMask を使ってください。

ConditioningCombine と組み合わせることで、場所により異なる conditioning を適用できるようになります。

似たような名前の、そして効果もなんとなく似ている ConditioningSetMask とは、用途や動作が違います:

  • ConditioningSetArea はサンプリング範囲を限定するためのノード。
    ConditioningSetMask は conditioning の効果範囲を限定するためのノード。 サンプリング範囲を限定することもできるが、それは副。 (とは言え、latent 画像に合わせたリサイズ後に範囲が決まるので、範囲設定の手段として ConditioningSetArea より使いやすい場面もあります。)
  • ConditioningSetArea は効果範囲 = サンプリング範囲になる。
    ConditioningSetMask では効果範囲はマスクで指定する。
  • ConditioningSetArea はサンプリング範囲を限定するのでコンテキストが失われ、生成された画像の中でその範囲だけはっきりと違うものになる反面、浮きがちになる (コマ割りされたマンガみたいになりやすい)。
    ConditioningSetMask ではサンプリング範囲を限定しなければ、マスクの内外がうまく馴染みやすい。

このノードが行うのは、処理範囲を指示する付加データを conditioning に記録するところまでです。 実際に効果を発揮するのは、KSampler などによるサンプリング時です。

入力の conditioning にすでに範囲、強さが設定されている場合は、新しい範囲、強さで置き換えられます。

サイズや位置の指定は、対応する pixel 画像でのサイズ・位置で行うので注意が必要です。 サイズ、位置ともに 8 ピクセル単位です。 位置は、(0, 0) の場合は左上に寄せた矩形を指定することになります。

領域指定した conditioning だけで画像生成する場合は、他にも注意点があります。

  • 担当する conditioning が全く無い領域がわずかでもあると、計算が破綻する。
  • 隣接する領域がオーバーラップしていない場合、単純に画像生成すると、境界にアーティファクトが盛大に乗る。
    修復用の KSampler を後付けするにしても、0.7 などかなり高い denoise が必要になります。 であれば、KSamplerAdvanced を使った "noisy latent composition" (公式サンプル) の方が良いでしょう。

関連

使用例

area 無しの negative 1つ (で全体を覆う) と、area 付きの positive 4つ (合わせて全体を覆う) で、noisy latent (area) composition: