ComfyUI 리전 프롬프트 사용법: Set Area, RegionalPrompt, Cutoff로 여러 피사체 분리하기

"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 + RegionalSampler | Impact Pack이 필요하며 node 누락 가능 |
| 단순 색상 블록 마스크 | 단순화된 리전 node | Inspire Pack: Regional Conditioning By Color Mask | Impact 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_Cutoff를custom_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 | 입력 | 출력 | 설명 |
|---|---|---|---|
| RegionalPrompt | mask + advanced_sampler + variation_seed/strength/method | REGIONAL_PROMPTS | 마스크와 sampler를 묶어 리전 prompt 생성 |
| CombineRegionalPrompts | 여러 REGIONAL_PROMPTS | REGIONAL_PROMPTS | 여러 리전 prompt 결합 |
| RegionalSampler | base_sampler + REGIONAL_PROMPTS + overlap_factor + restore_latent | latent | 각 단계에서 영역 샘플링 적용 |
| RegionalSamplerAdvanced | RegionalSampler 입력 + 단계 제어 | latent | denoise 대신 step으로 제어 |
파라미터:
overlap_factor: 영역 밖의 전환 범위를 제어restore_latent: 리전 샘플링 중 마스크 밖의 base latent를 복원해 외부의 추가 노이즈를 줄임
RegionalSampler는 매 단계에서 영역 샘플링을 적용합니다. 반면 TwoSamplersForMask는 전역 샘플링 후 마스크로 결합합니다. 전자는 각 영역의 샘플링 과정을 더 세밀하게 제어합니다.
설치와 문제 해결
설치:
- ComfyUI-Manager에서
ComfyUI Impact Pack검색 - 설치 후 ComfyUI를 재시작하고 브라우저 새로 고침
자주 생기는 문제:
- node가 빨간색이거나 누락 → workflow 가져오기와 누락 node 설치
- Python 의존성 문제 → 후속 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 Mask | IPAdapter 관련 리전 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는 다중 피사체 구도의 한 부분입니다. 자세 제어, 정체성 유지, 참조 이미지 유도, 고해상도 복구에는 다른 도구가 필요합니다.
게시됨:
- workflow 가져오기와 누락 node 설치: custom nodes 설치와 누락 node 문제 해결
- Stable Diffusion prompt 템플릿 가이드: 하나의 prompt로 여러 피사체를 명확히 쓰기 어려울 때의 기초
- ComfyUI ControlNet 가이드: 리전 prompt의 위치 제어와 함께 자세와 구조 제어
- ComfyUI LoRA 가이드: 캐릭터나 스타일을 유지하고 다중 LoRA 번짐과 리전 prompt 번짐을 구분
IPAdapter, FaceID와 얼굴 일관성, LoRA 학습, 고해상도 복구, Inpainting은 별도 글에서 다룹니다. 이런 도구를 리전 prompt와 함께 사용하면 여러 피사체 장면의 불확실성을 더 줄일 수 있습니다.
Set Area로 좌우 피사체 영역 만들기
1024×768 캔버스에서 각 피사체의 positive conditioning을 절반씩 배정하고 낮은 strength의 전역 conditioning으로 분위기를 통일합니다.
⏱️ Estimated time: 20 min
- 1
Step 1: 최종 캔버스 설정
latent 또는 Empty Latent Image를 1024×768로 설정하고 모든 영역 좌표를 이 최종 크기에서 계산합니다. - 2
Step 2: 왼쪽 피사체 prompt 작성
왼쪽 피사체 전용 CLIP Text Encode를 사용하고 색상, 의상, 헤어스타일은 이 로컬 분기에만 작성합니다. - 3
Step 3: 왼쪽 영역 설정
왼쪽 conditioning을 ConditioningSetArea에 연결하고 x=0, y=0, width=512, height=768, strength=1.0으로 설정합니다. - 4
Step 4: 오른쪽 영역 설정
오른쪽 피사체용 두 번째 CLIP Text Encode와 ConditioningSetArea를 만들고 x=512, y=0, width=512, height=768, strength=1.0을 사용합니다. - 5
Step 5: 로컬 conditioning 결합
영역 정보가 붙은 두 conditioning을 ConditioningCombine으로 합치고 출력을 KSampler의 positive에 연결합니다. - 6
Step 6: 낮은 strength의 전역 조건 추가
조명이나 배경을 통일하려면 전체 캔버스 conditioning을 추가하고 로컬 분기를 덮지 않도록 strength 0.3-0.5부터 시작합니다. - 7
Step 7: 자세 제어 정렬
두 사람의 위치나 동작에는 OpenPose, Depth, Canny를 추가하고 pose와 좌우 영역을 수동으로 맞춥니다. - 8
Step 8: 후속 샘플링 확인
upscale, 2차 패스, inpaint 전에 색상과 속성이 다시 섞이지 않도록 리전 conditioning을 유지할지 결정합니다.
FAQ
x, y, width, height는 픽셀인가요, 백분율인가요?
Set Area 좌표를 8의 배수로 맞추는 이유는 무엇인가요?
Cutoff도 리전 프롬프트 도구인가요?
RegionalPrompt와 Set Area는 어떻게 선택하나요?
영역이 겹칠 때 strength는 어떻게 조정하나요?
OpenPose에 두 사람이 있는데 prompt가 구분하지 못하는 이유는 무엇인가요?
node가 빨간색이거나 없으면 어떻게 하나요?
3분 읽기 · 게시일: 2026년 8월 28일 · 수정일: 2026년 8월 28일
ComfyUI와 Stable Diffusion 실전 가이드
검색으로 들어왔다면 같은 시리즈의 이전 글이나 다음 글로 이동하는 것이 가장 빠릅니다.



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