# 🎭 04 — 연출 결정

> **목표**: 선택된 각 샷에 대해 **카메라 앵글·인물 배치·의상·조명** 등 구체적인 연출을 AI가 결정합니다.

---

## 왜 이 단계가 필요한가?

"수리영이 바다를 본다"라는 샷 하나를 **수십 가지로 그릴 수 있습니다**:
- 🔭 뒤에서 수리영 뒷모습 + 광활한 바다
- 👁️ 수리영 얼굴 클로즈업 + 바다는 초점 흐림
- 🚁 위에서 내려다본 수리영 + 바닷가
- 📏 옆모습 + 안개 낀 바다

어떤 선택이 좋은가는 **씬의 맥락**에 달려 있습니다.
AI가 이 선택을 **체계적으로** 하려면 여러 정보를 종합해야 합니다.

---

## 전체 흐름

```mermaid
flowchart TD
    Shots[선택된 샷들] --> SD[🎬 Scene Director<br/>누가 등장? 어디?]
    SD --> Cam[📷 카메라 기법<br/>샷당 앵글 N개]
    Cam --> Dep[🔗 샷 의존성<br/>이전 샷과 연결]
    Dep --> Out[👔 Outlook<br/>의상 3단계]
    Out --> Stage[🎭 Shot Staging<br/>카메라 배치]
    Stage --> Set[🏛️ Set Design<br/>배경 이미지 힌트]
    Set --> Con[🔀 Scene Consistency<br/>샷 간 일관성]
    Con --> Det[📝 Shot Detail<br/>영문 프롬프트]
    Det --> Rev[✅ Cross Validation<br/>최종 검증]

    Rev --> OUT[✓ 샷별 상세 프롬프트]

    style Shots fill:#2a2d35,stroke:#6386FF,color:#fff
    style OUT fill:#2a2d35,stroke:#22c55e,color:#fff
    style Con fill:#a78bfa,color:#000
```

---

## 단계 1: Scene Director (씬 감독)

### 역할

**각 씬에서 "누가 어디 있을지"** 를 결정.

### 결정 내용

- 씬에 **실제로 등장하는 인물** (전체 인물 중 일부만)
- 인물의 **물리적 상태** (빙의, 변신, 사망 등)
- 씬의 **시공간** (회상인지, 실제인지)

### 예시

**씬 S12**: "환영 속 민숙의 시신" 묘사
```
등장 인물:
  - C02 민숙 (시신 상태, dead=true)
  - C01 수리영 (환영을 보는 관찰자)

시공간: 환영 (flashback, not real)
주의: 민숙은 움직이지 않음
```

### 왜 중요한가?

이 결정이 잘못되면 다음과 같은 문제 발생:
- 죽은 사람이 다음 씬에서 걷고 있음 ❌
- 주인공이 본인을 보고 있음 (빙의 처리 실패) ❌
- 단역 엑스트라가 주인공 자리에 ❌

---

## 단계 2: 카메라 기법 (Cinematography)

### 역할

각 샷에 **카메라 각도와 앵글**을 배정.

### 제공되는 기법

- **숏 타입**: 롱샷 / 미디엄샷 / 클로즈업 / 익스트림 클로즈업
- **카메라 높이**: 로우앵글(아래서) / 아이레벨(눈높이) / 하이앵글(위에서)
- **카메라 동작**: 고정 / 팬 / 틸트 / 주밍

### 샷당 N개 생성

**각 샷에 대해 2~3개 변형 앵글**을 생성합니다:
- 앵글 A: 미디엄샷 + 아이레벨
- 앵글 B: 클로즈업 + 로우앵글

나중에 사용자가 **하나를 선택**합니다.

### 극단 구도 방지

**과거 문제**: 위에서 내려다보는 샷(버즈아이뷰)이 계속 나옴
**해결**: AI에게 "극단 구도 남발 금지" 규칙을 주입

---

## 단계 3: 샷 의존성 (Shot Dependency)

### 역할

**현재 샷**과 **이전 샷**의 연결 관계를 정리.

### 왜 필요한가?

연속된 샷은 **같은 장소·같은 시간** 일 가능성이 큼. 이때:
- 배경은 이전 샷과 동일해야 함
- 인물 의상도 같아야 함
- 이전 샷에 있던 소품은 이어서 보여야 함

### 예시

```
샷 5-B (인우가 어깨 잡음) → 참조: 샷 5-A (인우가 달려옴)
  - 배경 재사용: 부둣가 새벽 안개
  - 인우 의상 동일: 낡은 코트
  - 수리영 의상 동일: 검정 외투
```

### Zoom In Detail (확대 상세)

특정 샷은 **이전 샷의 부분 확대**입니다:
- 샷 7-A: 수리영이 사진을 본다 (미디엄샷)
- 샷 7-B: 사진 속 인물의 얼굴 (클로즈업)

이때 샷 7-B는 "7-A의 사진을 확대" 라는 관계로 연결.

---

## 단계 4: Outlook (의상 시스템)

### Outlook이란?

한 인물이 **여러 의상**을 입는 경우를 관리하는 시스템.

### 3단계 처리

#### Phase 1: 의상 목록 만들기
작품 전체에서 등장하는 모든 의상을 수집.

**예시 (금월도 수리영)**:
```
O01: 평상복 (검정 외투)
O02: 해녀복 (물에 들어갈 때)
O03: 장례복 (엄마 장례식)
```

#### Phase 2: 씬별 의상 매핑
각 씬에서 인물이 **어떤 의상**을 입었는지 매핑.

**예시**:
```
S1 (옥탑방): 수리영 = O01 평상복
S8 (장례식): 수리영 = O03 장례복
S15 (바다): 수리영 = O02 해녀복
```

#### Phase 3: 의상 정리/병합
유사한 의상은 병합, 너무 짧게 등장하는 의상은 제거.

---

## 단계 5: Shot Staging (샷 스테이징)

### 역할

각 샷의 **시각 요소 최종 확정**:
- 인물 **배치** (누가 왼쪽? 오른쪽?)
- 인물 **표정·자세**
- 특정 소품 **위치**
- 조명 분위기

### 예시

```
샷 5-B (인우가 수리영 어깨 잡는 순간)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
카메라: 미디엄샷, 아이레벨
배치:
  - 수리영: 왼쪽, 뒷모습, 약간 얼굴이 돌아감
  - 인우: 오른쪽, 측면, 손이 수리영 어깨 위
표정:
  - 수리영: 놀람, 긴장
  - 인우: 진지, 간절
조명: 새벽 안개, 푸른 톤
배경: 부둣가, 원거리에 여객선
```

---

## 단계 6: Set Design (배경 이미지)

### 역할

샷마다 **어떤 배경 이미지**를 쓸지 지정.

### 왜 필요한가?

**과거 문제**: 같은 장소가 샷마다 다르게 그려짐 (옥탑방이 Shot 1은 파란 벽, Shot 5는 녹색 벽)

**해결**: AI가 **각 장소의 대표 이미지**를 먼저 생성하고, 모든 샷이 그 이미지를 참조.

### 처리 방식

```mermaid
flowchart LR
    Loc[🏠 장소 L01<br/>옥탑방] --> Gen[AI가 배경 이미지 생성]
    Gen --> Ref[참조 이미지 저장]

    Scene[씬 S1 샷 1-1] --> Ref
    Scene2[씬 S1 샷 1-3] --> Ref

    Ref --> Consistent[✓ 모든 샷이<br/>같은 옥탑방]

    style Consistent fill:#22c55e,color:#000
```

---

## 단계 7: Scene Consistency (씬 내 일관성)

### 역할

**같은 씬 안의 여러 샷**에서 공유되는 요소를 **고정**.

### 왜 필요한가?

**과거 문제** (실제 발생):
- 씬 12 샷 1: 죽은 민숙이 **왼쪽**으로 누워 있음
- 씬 12 샷 2: 죽은 민숙이 **오른쪽**으로 누워 있음
- → 사망한 사람이 이리저리 움직이는 말도 안 되는 결과

**해결**:
- 씬 시작 전, AI가 "이 씬에서 고정될 요소"를 먼저 정리
- 모든 샷이 이 고정 요소를 공유

### 고정되는 요소 예시

- 인물의 **자세/위치** (죽은 인물, 부상 등)
- **환경 상태** (깨진 창문, 피웅덩이)
- **소품 위치** (바닥에 떨어진 물건)

### 예시

**씬 12: 민숙의 시신을 발견**
```
고정 요소:
  1. 민숙 자세: 바닥에 왼쪽으로 누움, 왼팔 앞으로 뻗음,
     눈 감음, 피웅덩이가 오른쪽 어깨 아래에
  2. 창문 상태: 왼쪽 유리가 깨짐, 파편 남음
  3. 소품 위치: 민숙의 손목시계가 왼쪽 손목에 부착
```

이 정보가 씬 12의 **모든 샷**에 주입 → 일관성 유지.

---

## 단계 8: Shot Detail (상세 프롬프트)

### 역할

각 샷에 대해 **최종 영문 T2I 프롬프트**를 작성.

### 포함되는 정보

- 등장 인물 (이름 + 설명)
- 인물 배치 / 자세
- 카메라 앵글
- 배경
- 조명 / 분위기
- 고정 요소 (scene_consistency 에서 받은)
- 스타일 (photorealistic / cinematic 등)

### 예시

```
Scene 3, Shot 5-B:

A Korean woman in her late 30s [Suri-young C01] with long straight
black hair, wearing a dark coat [O01], standing with her back
slightly turned, surprised expression. Her shoulder is gripped
by a Korean man in his 50s [In-woo C03], wearing a worn coat,
serious and pleading look on his face. Behind them, a foggy
early-morning harbor with the silhouette of a large ferry.
Cool blue tones, atmospheric mist.

Medium shot, eye level, cinematic composition.
```

---

## 단계 9: Cross Validation (교차 검증)

### 역할

**최종 확인**:
- 프롬프트에 **엔티티 ID가 오염**되지 않았는지 (C01 같은 내부 코드가 출력 이미지에 나오면 안 됨)
- **금지된 요소**가 섞이지 않았는지
- **일관성 규칙**이 지켜졌는지

### 자동 재시도

검증 실패하면 **자동으로 재생성** 시도. 최대 2회까지.

---

## 최종 결과

각 선택된 샷에 대해:
1. ✓ 카메라 앵글 (2~3개 변형)
2. ✓ 등장 인물 + 의상
3. ✓ 배경 지정
4. ✓ 씬 내 일관성 요소
5. ✓ 영문 T2I 프롬프트 (AI 이미지 생성용)

---

## 실제 예시: 금월도 1부

- **최종 샷 수**: 약 90~120개
- **각 샷**: 2~3개 앵글 변형
- **총 생성될 이미지 후보**: 200~360개 (그중 사용자가 선택)

---

## 사용자가 수정할 수 있는 것

- 📷 **카메라 앵글 변경**: 슬라이더로 조정
- 👔 **의상 변경**: 드롭다운으로 다른 Outlook 선택
- 📝 **프롬프트 직접 편집**: 영문 텍스트 수정
- 🚫 **엔티티 추가/제거**: 이 샷에 특정 인물/소품 포함/배제
- 🔗 **의존 관계 변경**: "이 샷은 샷 X와 연결" 수동 지정

---

## 이 단계가 잘못되면?

🚫 **앵글이 모두 같음**:
- 모든 샷이 미디엄샷 + 아이레벨
- **해결**: 카메라 기법 규칙에 "다양성 강제" 추가됨

🚫 **인물 일관성 깨짐**:
- 옷 색깔이 씬마다 바뀜
- **해결**: Outlook 시스템으로 관리

🚫 **죽은 인물이 움직임**:
- 이미 해결: Scene Consistency 단계에서 자세 고정

---

## 다음 단계

이제 **각 샷이 어떻게 보일지** 완전히 정의됐습니다.
다음은 드디어 **실제 AI 이미지 생성**입니다.

→ [05-image-making.md](./05-image-making.md) — 이미지 만들기
