테마 전환

ComfyUI 리전 프롬프트 사용법: Set Area, RegionalPrompt, 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

"ComfyUI 코어 소스는 ConditioningSetArea, ConditioningSetAreaPercentage, ConditioningCombine의 파라미터와 latent 영역 매핑을 정의합니다."

1024x768 이미지에서 왼쪽에는 빨간 옷을 입은 짧은 머리의 여성, 오른쪽에는 파란 재킷을 입은 남성을 배치하려고 합니다. 결과는 오른쪽 재킷에 빨간색이 들어가고 왼쪽 머리에는 파란색이 번져 두 사람의 옷과 머리색이 섞입니다. 이것은 seed나 모델 성능의 문제가 아닙니다. CLIP text encoder가 문장 전체를 문맥으로 읽기 때문입니다. “red hair, blue jacket”에서 red는 jacket으로, blue는 hair로 이동할 수 있습니다. 영역 conditioning node는 prompt가 latent에서 작용하는 공간을 제한하지만 embedding에는 전역 문맥이 남습니다. 대응 방법은 ConditioningSetArea + Combine의 좌표 영역, Cutoff의 속성 결합, Impact Pack Regional의 마스크 기반 리전 샘플링 세 가지입니다. 각 방법의 용도와 한계가 다릅니다.

여러 피사체의 prompt가 섞이는 이유

CLIP은 전역 문맥을 인코딩합니다

Stable Diffusion의 CLIP text encoder는 단어를 완전히 독립적으로 인코딩하지 않고 문장 전체를 해석합니다. “blue hair, yellow eyes”에서는 embedding을 만들 때 token이 서로 관계를 맺기 때문에 blue가 eyes에 영향을 줄 수 있습니다. ConditioningSetArea는 조건을 latent 영역으로 제한하지만 embedding 자체는 전역 문맥에서 만들어지므로 파란색이 눈으로 이동할 가능성이 남습니다. 리전 prompt는 왼쪽의 빨간색이 오른쪽에 영향을 주는 공간적 번짐은 줄이지만 blue가 eyes에 영향을 주는 token 수준의 속성 번짐은 막지 못합니다.

세 가지 번짐 유형

유형대표 증상해결 방향
공간 번짐왼쪽 빨간 옷이 오른쪽에 영향을 주고 전경의 파란색이 배경에 번짐영역 conditioning (Set Area / RegionalPrompt)
속성 번짐“blue hair, yellow eyes”에서 blue가 눈에 영향을 줌속성 결합 (Cutoff)
정체성 불일치seed를 바꾸면 같은 캐릭터의 얼굴이 달라짐FaceID / LoRA (여기서는 다루지 않음)

선택표: 문제 → 접근법 → 도구 → 맞지 않는 경우

문제권장 접근법Nodes맞지 않는 경우
좌우 캐릭터 분할기본 좌표 영역ConditioningSetArea + ConditioningCombine좌표를 계산해야 하는 복잡한 마스크
색상 또는 의상 번짐속성 결합Cutoff BasePrompt + Set Region + Regions To Conditioning좌표 영역. README에서 SDXL 0.9 효과가 약하므로 SDXL은 테스트 필요
복잡한 마스크 영역마스크 기반 리전 샘플링Impact Pack: RegionalPrompt + CombineRegionalPrompts + RegionalSamplerImpact Pack이 필요하며 node 누락 가능
단순 색상 블록 마스크단순화된 리전 nodeInspire Pack: Regional Conditioning By Color MaskImpact Pack 또는 IPAdapter Plus 의존
잘못된 자세자세 제어ControlNet (OpenPose / Canny / Depth)속성 번짐을 해결하지 않음
정체성 불일치정체성 고정FaceID / ReActor / LoRA리전 prompt를 해결하지 않음

실용적인 조합 순서는 리전 prompt로 위치 지정 → OpenPose로 자세 지정 → strength 0.3-0.5의 전역 conditioning으로 분위기 통일입니다. OpenPose, ControlNet, IPAdapter의 위치는 영역과 수동으로 맞춰야 합니다. node는 왼쪽 OpenPose 인물이 왼쪽 prompt 영역에 속한다고 자동으로 알지 못합니다.

기본 경로: ConditioningSetArea + Combine

좌표 파라미터

파라미터의미단위범위설명
x / y영역의 왼쪽 위 좌표픽셀0 - MAX_RESOLUTION원점은 왼쪽 위
width / height영역 너비와 높이픽셀64 - MAX_RESOLUTION, 8단위latent에 기록할 때 8로 나누므로 UI step은 8
strength영역 conditioning 가중치실수0 - 10, 기본 1.0겹치는 영역의 가중치는 샘플링 때 정규화

step이 8인 이유는 ConditioningSetArea.append()가 latent area를 (height // 8, width // 8, y // 8, x // 8)로 기록하기 때문입니다. 512x512 이미지는 latent 공간에서 64x64가 되므로 좌표를 8의 배수에 맞춥니다. 픽셀을 계산하고 싶지 않다면 0~1을 입력하는 ConditioningSetAreaPercentage를 사용할 수 있습니다.

prompt에서 sampler까지 연결

1024x768 캔버스를 두 피사체로 나누는 예입니다.

1단계: 왼쪽 prompt 영역

  • 왼쪽 피사체 prompt → CLIP Text Encode (conditioning 출력)
  • Conditioning → ConditioningSetArea (x=0, y=0, width=512, height=768, strength=1.0)
  • 영역 정보가 붙은 conditioning 출력

2단계: 오른쪽 prompt 영역

  • 오른쪽 피사체 prompt → CLIP Text Encode (conditioning 출력)
  • Conditioning → ConditioningSetArea (x=512, y=0, width=512, height=768, strength=1.0)
  • 영역 정보가 붙은 conditioning 출력

3단계: conditioning 결합

  • 왼쪽 Set Area 출력 → ConditioningCombine (입력 1)
  • 오른쪽 Set Area 출력 → ConditioningCombine (입력 2)
  • Combine 출력 → KSampler의 positive 조건

선택 단계: 배경 전역 conditioning

  • 배경 prompt → CLIP Text Encode
  • Conditioning → ConditioningSetArea (x=0, y=0, width=1024, height=768, strength=0.3-0.5)
  • 다른 영역 conditioning과 결합하고 낮은 strength로 분위기 통일

핵심은 strength가 “투명도”가 아니라 “노이즈 예측의 가중치”라는 점입니다. 영역이 겹치면 여러 conditioning의 가중치는 샘플링 전에 정규화되므로 합계를 수동으로 계산할 필요가 없습니다.

겹치는 영역과 strength 조정

영역이 겹칠 때 strength는 conditioning의 혼합 비율을 조절합니다. 샘플링은 가중치를 자동으로 정규화합니다. 전경 피사체는 strength=1.0, 전역 배경 conditioning은 strength=0.3-0.5부터 시작합니다. 배경 값을 낮추면 피사체 간섭이 줄지만 완전히 사라지지는 않습니다. 두 캐릭터 prompt에 충돌하는 색상이 있으면 CLIP의 전역 문맥을 통해 계속 영향을 줄 수 있습니다.

속성 결합 경로: Cutoff

적합한 상황과 원리

“blue hair, yellow eyes”에서 CLIP이 문장 전체를 인코딩해 blue가 eyes에 영향을 주는 경우가 대표적입니다. Cutoff는 속성이 prompt의 지정된 일부에만 영향을 주도록 합니다. target token을 가리고 embedding을 다시 만든 뒤 결과 방향을 이용해 속성 관계를 분리합니다.

Cutoff는 좌표 기반 리전 prompt가 아닙니다. 위치가 아니라 token 사이 관계를 처리합니다. node는 Cutoff BasePrompt, Cutoff Set Region, Cutoff Regions To Conditioning, Cutoff Regions To Conditioning (ADV)이며 conditioning > cutoff에 있습니다.

SDXL 주의: README는 SDXL 0.9에서 좋은 효과를 얻지 못했다고 밝힙니다. 현재 SDXL이나 FLUX도 직접 확인해야 하며 Cutoff를 안정적인 만능 해결책으로 볼 수 없습니다.

설치와 사용

설치:

  • ComfyUI-Manager에서 ComfyUI_Cutoff 검색
  • 또는 git clone https://github.com/BlenderNeko/ComfyUI_Cutoffcustom_nodes에 clone
  • 설치 후 ComfyUI 재시작

기본 흐름:

  • BasePrompt에 “blue hair, yellow eyes” 같은 전체 prompt 입력
  • Set Region에서 “blue”를 “hair”에 묶는 식으로 속성 정의
  • Regions To Conditioning으로 conditioning 출력
  • 필요하면 이 conditioning을 Set Area에 연결해 위치 제한

한계와 주의점

Cutoff는 좌표 분할에 적합하지 않습니다. token 속성은 묶지만 “왼쪽은 빨간 옷, 오른쪽은 파란 옷”이라는 위치는 정하지 않습니다. 속성과 공간 번짐을 모두 줄이려면 먼저 Cutoff로 속성을 묶고 Set Area로 영역을 제한합니다.

SDXL 효과는 불확실합니다. README는 SDXL 0.9에서 약한 결과를 언급하며 현재 버전도 테스트가 필요합니다. SDXL을 주로 사용한다면 간단한 색상 예제로 Cutoff를 확인한 뒤 의존 여부를 결정합니다.

마스크 기반 리전 샘플링: Impact Pack Regional

RegionalPrompt와 RegionalSampler node

Node입력출력설명
RegionalPromptmask + advanced_sampler + variation_seed/strength/methodREGIONAL_PROMPTS마스크와 sampler를 묶어 리전 prompt 생성
CombineRegionalPrompts여러 REGIONAL_PROMPTSREGIONAL_PROMPTS여러 리전 prompt 결합
RegionalSamplerbase_sampler + REGIONAL_PROMPTS + overlap_factor + restore_latentlatent각 단계에서 영역 샘플링 적용
RegionalSamplerAdvancedRegionalSampler 입력 + 단계 제어latentdenoise 대신 step으로 제어

파라미터:

  • overlap_factor: 영역 밖의 전환 범위를 제어
  • restore_latent: 리전 샘플링 중 마스크 밖의 base latent를 복원해 외부의 추가 노이즈를 줄임

RegionalSampler는 매 단계에서 영역 샘플링을 적용합니다. 반면 TwoSamplersForMask는 전역 샘플링 후 마스크로 결합합니다. 전자는 각 영역의 샘플링 과정을 더 세밀하게 제어합니다.

설치와 문제 해결

설치:

  • ComfyUI-Manager에서 ComfyUI Impact Pack 검색
  • 설치 후 ComfyUI를 재시작하고 브라우저 새로 고침

자주 생기는 문제:

단순 경로: Inspire Pack Regional Conditioning(선택)

Set Area 좌표를 계산하고 싶지 않다면 색상 블록 마스크로 흐름을 단순화할 수 있습니다. Inspire Pack은 다음 node를 제공합니다.

Node설명
Regional Prompt Simple (Inspire)리전 prompt 입력 단순화
Regional Prompt By Color Mask (Inspire)색상 블록 마스크로 영역 정의
Regional Conditioning Simple (Inspire)리전 conditioning 단순화
Regional Conditioning By Color Mask (Inspire)색상 블록 마스크로 conditioning 영역 정의
Regional IPAdapter Mask / By Color Mask / Encoded MaskIPAdapter 관련 리전 node

일부 node는 Impact Pack 또는 IPAdapter Plus에 의존합니다. 사용 전에 README의 의존성을 확인합니다.

왼쪽 절반은 빨간색, 오른쪽 절반은 파란색인 색상 블록 마스크가 있고 픽셀 좌표를 직접 계산하고 싶지 않을 때 적합합니다.

조합의 한계와 2차 패스 주의점

ControlNet, IPAdapter, LoRA 조합

도구제어 대상해결하지 않는 문제
리전 prompt (Set Area / Regional)위치와 prompt 배정동일 인물 유지, 속성 번짐(Set Area는 해결하지 않음)
ControlNet (OpenPose / Canny / Depth)자세와 구조속성 번짐, 위치 배정
IPAdapter참조 이미지로 스타일과 구도에 영향영역 분리, 정체성 고정(IPAdapter는 전체 스타일에 영향)
FaceID / LoRA정체성 또는 스타일 유지리전 prompt, 속성 번짐

실용적인 순서는 리전 prompt로 위치 → OpenPose로 자세 → 낮은 strength의 전역 conditioning으로 공통 분위기입니다. OpenPose, ControlNet, IPAdapter의 위치는 영역과 수동으로 맞춰야 하며 “왼쪽 사람”을 자동으로 묶을 수 없습니다.

2차 패스, upscale, inpaint에서 색상이 다시 섞일 때

2차 패스, upscale, 얼굴 복구에서 리전 conditioning을 사용하지 않으면 모델이 전역 일관성을 다시 추구해 처음 분리한 머리색이나 의상색을 섞을 수 있습니다. Area Composition 예제도 2차 패스에 리전 prompt가 없으면 머리색이 합쳐질 수 있다고 경고합니다.

후속 패스에서도 리전 conditioning을 사용할지, 로컬 Inpaint로 고칠지 결정합니다. 1차 패스에서 Set Area를 사용했다면 upscale에서도 영역을 다시 설정해 전역 일관성이 피사체 분리를 무너뜨리지 않게 합니다.

다음 단계와 관련 글

리전 prompt는 다중 피사체 구도의 한 부분입니다. 자세 제어, 정체성 유지, 참조 이미지 유도, 고해상도 복구에는 다른 도구가 필요합니다.

게시됨:

IPAdapter, FaceID와 얼굴 일관성, LoRA 학습, 고해상도 복구, Inpainting은 별도 글에서 다룹니다. 이런 도구를 리전 prompt와 함께 사용하면 여러 피사체 장면의 불확실성을 더 줄일 수 있습니다.

Set Area로 좌우 피사체 영역 만들기

1024×768 캔버스에서 각 피사체의 positive conditioning을 절반씩 배정하고 낮은 strength의 전역 conditioning으로 분위기를 통일합니다.

⏱️ Estimated time: 20 min

  1. 1

    Step 1: 최종 캔버스 설정

    latent 또는 Empty Latent Image를 1024×768로 설정하고 모든 영역 좌표를 이 최종 크기에서 계산합니다.
  2. 2

    Step 2: 왼쪽 피사체 prompt 작성

    왼쪽 피사체 전용 CLIP Text Encode를 사용하고 색상, 의상, 헤어스타일은 이 로컬 분기에만 작성합니다.
  3. 3

    Step 3: 왼쪽 영역 설정

    왼쪽 conditioning을 ConditioningSetArea에 연결하고 x=0, y=0, width=512, height=768, strength=1.0으로 설정합니다.
  4. 4

    Step 4: 오른쪽 영역 설정

    오른쪽 피사체용 두 번째 CLIP Text Encode와 ConditioningSetArea를 만들고 x=512, y=0, width=512, height=768, strength=1.0을 사용합니다.
  5. 5

    Step 5: 로컬 conditioning 결합

    영역 정보가 붙은 두 conditioning을 ConditioningCombine으로 합치고 출력을 KSampler의 positive에 연결합니다.
  6. 6

    Step 6: 낮은 strength의 전역 조건 추가

    조명이나 배경을 통일하려면 전체 캔버스 conditioning을 추가하고 로컬 분기를 덮지 않도록 strength 0.3-0.5부터 시작합니다.
  7. 7

    Step 7: 자세 제어 정렬

    두 사람의 위치나 동작에는 OpenPose, Depth, Canny를 추가하고 pose와 좌우 영역을 수동으로 맞춥니다.
  8. 8

    Step 8: 후속 샘플링 확인

    upscale, 2차 패스, inpaint 전에 색상과 속성이 다시 섞이지 않도록 리전 conditioning을 유지할지 결정합니다.

FAQ

x, y, width, height는 픽셀인가요, 백분율인가요?
기본 ConditioningSetArea는 최종 캔버스의 픽셀 좌표를 사용합니다. ConditioningSetAreaPercentage는 0~1 값을 사용합니다.
Set Area 좌표를 8의 배수로 맞추는 이유는 무엇인가요?
ComfyUI는 height, width, y, x를 각각 8로 나눈 뒤 latent area에 기록합니다. 8의 배수는 영역 경계를 latent 격자에 맞춥니다.
Cutoff도 리전 프롬프트 도구인가요?
아닙니다. Cutoff는 색상과 의상 같은 token 속성 관계를 분리하며 공간 좌표를 처리하지 않습니다. 좌우 영역에는 Set Area나 RegionalPrompt를 사용합니다.
RegionalPrompt와 Set Area는 어떻게 선택하나요?
단순한 좌우 또는 상하 사각형 분할에는 Set Area를 사용합니다. 복잡한 형태, 기존 마스크, 단계별 리전 샘플링에는 Impact Pack의 RegionalPrompt와 RegionalSampler가 적합합니다.
영역이 겹칠 때 strength는 어떻게 조정하나요?
로컬 피사체는 1.0, 전역 배경은 0.3-0.5부터 시작합니다. 겹침이 커질수록 보조 분기를 낮추고 고정 seed로 비교합니다.
OpenPose에 두 사람이 있는데 prompt가 구분하지 못하는 이유는 무엇인가요?
OpenPose는 자세를, 리전 prompt는 공간 배정을 제어합니다. 어떤 골격이 어떤 영역에 속하는지는 자동으로 알 수 없으므로 수동으로 맞춰야 합니다.
node가 빨간색이거나 없으면 어떻게 하나요?
ComfyUI-Manager에서 Impact Pack, Inspire Pack, Cutoff를 설치하거나 업데이트한 뒤 재시작하고 브라우저를 새로 고칩니다. 이후 workflow 버전과 Python 의존성을 확인합니다.

3분 읽기 · 게시일: 2026년 8월 28일 · 수정일: 2026년 8월 28일

댓글

GitHub로 로그인하여 댓글을 남기세요

Easton BlogEaston Blog