Changer le thème

Prompts régionaux dans ComfyUI : séparer plusieurs sujets avec Set Area, RegionalPrompt et Cutoff

Easton editorial illustration: one large rounded ComfyUI-style node canvas with a coordinate grid, two simplified 2.5D character silhouettes isolated in red-left and blue-right regions

"Le code source principal de ComfyUI définit les paramètres et la conversion en zone latente de ConditioningSetArea, ConditioningSetAreaPercentage et ConditioningCombine."

Vous préparez une image 1024x768 avec une femme aux cheveux courts et vêtue de rouge à gauche, et un homme en veste bleue à droite. Le résultat place du rouge sur la veste droite et du bleu dans les cheveux à gauche : vêtements et couleurs se contaminent. Ce n’est ni un problème de seed ni un modèle trop faible. L’encodeur texte CLIP lit toute la phrase comme contexte : dans « red hair, blue jacket », red peut glisser vers jacket et blue vers hair. Les nodes de conditioning régional limitent le prompt dans l’espace latent, mais l’embedding conserve le contexte global. Trois voies sont utiles : régions coordonnées natives avec ConditioningSetArea + Combine, liaison d’attributs avec Cutoff et sampling régional par masque avec Impact Pack Regional. Chacune répond à un problème différent et possède ses limites.

Pourquoi les prompts de plusieurs sujets se mélangent

CLIP encode le contexte global

L’encodeur texte CLIP de Stable Diffusion n’encode pas chaque mot indépendamment : il traite toute la phrase. Dans « blue hair, yellow eyes », blue peut influencer eyes, car les tokens interagissent pendant la création de l’embedding. ConditioningSetArea limite le conditioning à une région latente, mais l’embedding vient toujours du contexte global ; le bleu peut donc atteindre les yeux. Les prompts régionaux réduisent le mélange spatial, par exemple le rouge gauche qui influence la droite, mais n’empêchent pas le mélange d’attributs au niveau des tokens.

Trois types de mélange

TypeSymptôme typiqueSolution
Mélange spatialLe vêtement rouge à gauche influence la droite ; le bleu du premier plan influence le fondConditioning régional (Set Area / RegionalPrompt)
Mélange d’attributsDans « blue hair, yellow eyes », blue influence les yeuxLiaison d’attributs (Cutoff)
Identité incohérenteLe même personnage change de visage avec un autre seedFaceID / LoRA (hors sujet ici)

Tableau de choix : problème → approche → outil → mauvais usage

ProblèmeApproche recommandéeNodesMauvais usage
Personnages gauche et droitRégions coordonnées nativesConditioningSetArea + ConditioningCombineMasques complexes, car les coordonnées doivent être calculées
Mélange de couleurs ou vêtementsLiaison d’attributsCutoff BasePrompt + Set Region + Regions To ConditioningRégions coordonnées ; SDXL doit être testé, le README signalant de faibles résultats avec SDXL 0.9
Régions de masque complexesSampling régional par masqueImpact Pack: RegionalPrompt + CombineRegionalPrompts + RegionalSamplerNécessite Impact Pack et peut provoquer des nodes absents
Masques simples par aplatsNodes régionaux simplifiésInspire Pack: Regional Conditioning By Color MaskDépend d’Impact Pack ou d’IPAdapter Plus
Pose incorrecteContrôle de poseControlNet (OpenPose / Canny / Depth)Ne corrige pas le mélange d’attributs
Identité incohérenteFixation de l’identitéFaceID / ReActor / LoRANe corrige pas les prompts régionaux

Une combinaison pratique suit cet ordre : prompts régionaux pour la position → OpenPose pour la pose → conditioning global de faible strength (0.3-0.5) pour unifier l’ambiance. Les positions d’OpenPose, ControlNet ou IPAdapter doivent être alignées manuellement sur les régions. Les nodes ne savent pas que la personne OpenPose de gauche appartient au prompt gauche.

Voie native : ConditioningSetArea + Combine

Paramètres de coordonnées

ParamètreSignificationUnitéPlageRemarque
x / yCoordonnée supérieure gauchePixels0 - MAX_RESOLUTIONL’origine se trouve en haut à gauche
width / heightLargeur et hauteur de la régionPixels64 - MAX_RESOLUTION, pas de 8Le pas UI vaut 8 car le code divise par 8 pour le latent
strengthPoids du conditioning régionalFlottant0 - 10, valeur 1.0Les poids des régions superposées sont normalisés au sampling

Le pas vaut 8 parce que ConditioningSetArea.append() écrit la zone latente sous la forme (height // 8, width // 8, y // 8, x // 8). Une image 512x512 devient 64x64 dans le latent ; les coordonnées doivent donc s’aligner sur des multiples de 8. ConditioningSetAreaPercentage accepte des valeurs de 0 à 1 si vous préférez les proportions aux pixels.

Connexion du prompt au sampler

Cet exemple partage un canevas 1024x768 entre deux sujets :

Étape 1 : région du prompt gauche

  • Prompt du sujet gauche → CLIP Text Encode (sortie conditioning)
  • Conditioning → ConditioningSetArea (x=0, y=0, width=512, height=768, strength=1.0)
  • Sortie du conditioning marqué par la région

Étape 2 : région du prompt droit

  • Prompt du sujet droit → CLIP Text Encode (sortie conditioning)
  • Conditioning → ConditioningSetArea (x=512, y=0, width=512, height=768, strength=1.0)
  • Sortie du conditioning marqué par la région

Étape 3 : combiner les conditionings

  • Sortie Set Area gauche → ConditioningCombine (entrée 1)
  • Sortie Set Area droite → ConditioningCombine (entrée 2)
  • Sortie Combine → conditioning positive du KSampler

Étape facultative : conditioning global du fond

  • Prompt de fond → CLIP Text Encode
  • Conditioning → ConditioningSetArea (x=0, y=0, width=1024, height=768, strength=0.3-0.5)
  • Combinaison avec les conditionings régionaux à faible strength pour harmoniser l’ambiance

Point essentiel : strength n’est pas une « opacité », mais le poids de la prédiction de bruit. Lorsque les régions se chevauchent, les poids des conditionings sont normalisés avant le sampling ; aucun total manuel n’est nécessaire.

Régions superposées et réglage de strength

Lorsque les régions se chevauchent, strength règle le mélange de leurs conditionings. Le sampling normalise automatiquement les poids. Commencez à strength=1.0 pour les sujets du premier plan et strength=0.3-0.5 pour le fond global. Réduire le fond limite son interférence, sans la supprimer complètement : des couleurs contradictoires dans les deux prompts peuvent encore interagir via le contexte global de CLIP.

Liaison d’attributs : Cutoff

Cas d’usage et fonctionnement

Le cas classique est blue qui influence eyes dans « blue hair, yellow eyes », car CLIP encode la phrase entière. Cutoff cherche à limiter un attribut à une partie désignée du prompt. Il masque les target tokens, régénère l’embedding puis utilise la direction obtenue pour mieux isoler les relations d’attributs.

Cutoff n’est pas un prompt régional par coordonnées. Il traite les relations entre tokens, pas les positions. Ses nodes sont Cutoff BasePrompt, Cutoff Set Region, Cutoff Regions To Conditioning et Cutoff Regions To Conditioning (ADV), sous conditioning > cutoff.

Avertissement SDXL : le README signale de mauvais résultats avec SDXL 0.9. Les versions actuelles de SDXL ou FLUX doivent être testées ; Cutoff n’est pas une solution universelle stable.

Installation et utilisation

Installation :

  • Recherchez ComfyUI_Cutoff dans ComfyUI-Manager
  • Ou clonez git clone https://github.com/BlenderNeko/ComfyUI_Cutoff dans custom_nodes
  • Redémarrez ComfyUI après l’installation

Flux de base :

  • Saisissez le prompt complet dans BasePrompt, par exemple « blue hair, yellow eyes »
  • Définissez la liaison dans Set Region, par exemple « blue » vers « hair »
  • Produisez le conditioning avec Regions To Conditioning
  • Passez éventuellement ce conditioning dans Set Area pour limiter sa position

Limites et précautions

Cutoff ne convient pas aux découpages par coordonnées. Il lie les attributs des tokens mais ne place pas « vêtement rouge à gauche, vêtement bleu à droite ». Pour traiter les deux problèmes, liez d’abord les attributs avec Cutoff, puis limitez le résultat avec Set Area.

L’efficacité avec SDXL reste incertaine. Le README mentionne de faibles résultats avec SDXL 0.9 et les versions actuelles demandent des essais. Si vous utilisez surtout SDXL, testez d’abord Cutoff sur un exemple de couleurs simple.

Sampling régional par masque : Impact Pack Regional

Nodes RegionalPrompt et RegionalSampler

NodeEntréeSortieRôle
RegionalPromptmask + advanced_sampler + variation_seed/strength/methodREGIONAL_PROMPTSLie un masque à un sampler pour créer un prompt régional
CombineRegionalPromptsPlusieurs REGIONAL_PROMPTSREGIONAL_PROMPTSCombine plusieurs prompts régionaux
RegionalSamplerbase_sampler + REGIONAL_PROMPTS + overlap_factor + restore_latentlatentApplique le sampling aux régions à chaque étape
RegionalSamplerAdvancedEntrées RegionalSampler + contrôle des stepslatentContrôle par steps plutôt que par denoise

Paramètres :

  • overlap_factor : contrôle l’étendue de transition hors de la région
  • restore_latent : restaure le base latent hors du masque pendant le sampling régional pour limiter le bruit supplémentaire

RegionalSampler applique le sampling régional à chaque étape. À l’inverse, TwoSamplersForMask effectue un sampling global avant la combinaison par masque. Le premier offre un contrôle plus fin du processus de chaque région.

Installation et dépannage

Installation :

  • Recherchez ComfyUI Impact Pack dans ComfyUI-Manager
  • Redémarrez ComfyUI et actualisez le navigateur après l’installation

Problèmes courants :

Voie simplifiée : Inspire Pack Regional Conditioning (facultatif)

Si vous ne voulez pas calculer les coordonnées Set Area, un masque par aplats simplifie le flux. Inspire Pack fournit :

NodeRôle
Regional Prompt Simple (Inspire)Entrée de prompt régional simplifiée
Regional Prompt By Color Mask (Inspire)Définit les régions par un masque d’aplats
Regional Conditioning Simple (Inspire)Conditioning régional simplifié
Regional Conditioning By Color Mask (Inspire)Définit les régions de conditioning par un masque d’aplats
Regional IPAdapter Mask / By Color Mask / Encoded MaskNodes régionaux liés à IPAdapter

Certains nodes dépendent d’Impact Pack ou d’IPAdapter Plus. Vérifiez les dépendances du README avant utilisation.

Cette voie convient si vous avez déjà un masque par aplats, par exemple rouge à gauche et bleu à droite, et souhaitez éviter les calculs manuels de pixels.

Limites des combinaisons et risques au second pass

Combinaison avec ControlNet, IPAdapter et LoRA

OutilCe qu’il contrôleCe qu’il ne résout pas
Prompt régional (Set Area / Regional)Position et attribution du promptCohérence d’identité ; mélange d’attributs, non résolu par Set Area
ControlNet (OpenPose / Canny / Depth)Pose et structureMélange d’attributs ; attribution de position
IPAdapterInfluence d’une image de référence sur le style ou la compositionIsolation régionale ; identité fixe, car IPAdapter influence le style global
FaceID / LoRACohérence de l’identité ou du stylePrompts régionaux ; mélange d’attributs

L’ordre pratique est : prompts régionaux pour la position → OpenPose pour la pose → conditioning global faible pour une ambiance commune. Les positions d’OpenPose, ControlNet ou IPAdapter doivent être alignées manuellement avec les régions ; « la personne de gauche » n’est pas liée automatiquement.

Mélange de couleurs au second pass, à l’upscale ou à l’inpaint

Sans conditioning régional au second pass, à l’upscale ou pendant la réparation du visage, le modèle peut rechercher à nouveau une cohérence globale et mélanger les couleurs de cheveux ou de vêtements séparées au premier pass. L’exemple Area Composition avertit que les cheveux peuvent fusionner sans prompt régional au second pass.

Décidez si les passes ultérieurs doivent conserver le conditioning régional ou si un Inpaint local convient mieux. Après une séparation avec Set Area, vous pouvez redéfinir les régions à l’upscale afin que la cohérence globale ne dégrade pas la séparation des sujets.

Étapes suivantes et lectures associées

Le prompt régional n’est qu’une partie d’une composition multi-sujets. Le contrôle de pose, la cohérence d’identité, les images de référence et la réparation haute résolution demandent d’autres outils.

Déjà publiés :

Des articles séparés traiteront IPAdapter, FaceID et la cohérence du visage, l’entraînement LoRA, la réparation haute résolution et Inpainting. Combinés aux prompts régionaux, ces outils réduisent encore l’incertitude des scènes multi-sujets.

Créer des régions gauche et droite avec Set Area

Sur un canevas de 1024×768, attribuez le positive conditioning de chaque sujet à une moitié, puis unifiez l’ambiance avec un conditioning global de faible strength.

⏱️ Estimated time: 20 min

  1. 1

    Step 1: Définir le canevas final

    Réglez le latent ou Empty Latent Image sur 1024×768 et calculez toutes les coordonnées à partir de cette taille finale.
  2. 2

    Step 2: Écrire le prompt du sujet gauche

    Utilisez un CLIP Text Encode séparé pour le sujet gauche. Gardez sa couleur, ses vêtements et sa coiffure uniquement dans cette branche locale.
  3. 3

    Step 3: Définir la région gauche

    Reliez le conditioning gauche à ConditioningSetArea avec x=0, y=0, width=512, height=768 et strength=1.0.
  4. 4

    Step 4: Définir la région droite

    Créez un second CLIP Text Encode et ConditioningSetArea pour le sujet droit avec x=512, y=0, width=512, height=768 et strength=1.0.
  5. 5

    Step 5: Combiner les conditionings locaux

    Fusionnez les deux branches marquées par une région avec ConditioningCombine, puis reliez la sortie au positive du KSampler.
  6. 6

    Step 6: Ajouter un conditioning global faible

    Pour harmoniser l’éclairage ou le fond, ajoutez un conditioning plein cadre avec strength 0.3-0.5 afin de ne pas écraser les branches locales.
  7. 7

    Step 7: Aligner le contrôle de pose

    Pour les positions ou gestes de deux personnes, ajoutez OpenPose, Depth ou Canny et alignez manuellement la pose sur les régions.
  8. 8

    Step 8: Vérifier les passes suivants

    Avant un upscale, un second pass ou un inpaint, décidez de conserver le conditioning régional pour éviter que couleurs et attributs se mélangent à nouveau.

FAQ

x, y, width et height sont-ils des pixels ou des pourcentages ?
Le node natif ConditioningSetArea utilise les coordonnées en pixels du canevas final. ConditioningSetAreaPercentage utilise des valeurs de 0 à 1.
Pourquoi utiliser des coordonnées Set Area multiples de 8 ?
ComfyUI écrit height, width, y et x dans la zone latente après division par 8. Les multiples de 8 alignent les limites sur la grille latente.
Cutoff est-il un outil de prompt régional ?
Non. Cutoff isole surtout les relations entre attributs de tokens comme les couleurs et les vêtements, pas les coordonnées spatiales. Utilisez Set Area ou RegionalPrompt pour des régions gauche-droite.
Quand choisir RegionalPrompt plutôt que Set Area ?
Utilisez Set Area pour des découpages rectangulaires simples. RegionalPrompt et RegionalSampler d’Impact Pack conviennent aux formes complexes, aux masques existants et au sampling régional à chaque étape.
Comment régler strength lorsque les régions se chevauchent ?
Commencez à 1.0 pour les sujets locaux et à 0.3-0.5 pour le fond global. Réduisez la branche secondaire quand le chevauchement augmente et comparez avec un seed fixe.
Pourquoi le prompt ne correspond-il pas aux deux personnes d’OpenPose ?
OpenPose contrôle la pose, les prompts régionaux l’attribution spatiale. Vous devez les aligner manuellement ; les nodes ne savent pas automatiquement quel squelette appartient à quelle région.
Que faire si un node est rouge ou absent ?
Installez ou mettez à jour Impact Pack, Inspire Pack ou Cutoff avec ComfyUI-Manager, redémarrez puis actualisez le navigateur. Vérifiez ensuite la version du workflow et les dépendances Python.

9 min de lecture · Publié le: 28 août 2026 · Mis à jour le: 28 août 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog