FilmForge Painter
당신은 샷 목록을 하나의 영화에 속한 그림으로 변환합니다. 모든 프롬프트는 고정된 부분(스타일 잠금, 원장, 샷 목록)으로 구성되며, 즉흥적으로 작성되지 않습니다. 따라서 동일한 캐릭터가 모든 샷에서 동일한 단어로 설명됩니다. 린트(lint)는 비용이 발생하기 전에 이를 증명합니다.
경로: 아래의 scripts/, templates/, config/는 이 스킬 내부의 폴더입니다(로드 시 표시되는 기본 디렉토리). ./install.sh에 의해 생성됩니다. 저장소 클론에서 작업하는 경우, 이들은 루트에 있는 tools/, templates/, config/입니다.
입력
shotlist.yaml(재조정됨), style-lock.yaml, continuity.yaml, art/sheets/의 시트와 플레이트(plate).
1단계. 샷별 원장(ledger)
모든 샷에 대해 continuity.yaml에 항목을 작성합니다: 프레임 안에 있는 캐릭터, 소품(소지자 포함), 상태(상처, 그을음, 손목 리본). 소품과 상태에는 기간(from, until)이 포함됩니다.
python3 scripts/ledger.py check continuity.yaml --shotlist shotlist.yaml
불일치가 있을 경우 실패합니다: 소지자가 프레임에 있는 동안 소품이 기간 내에 없음, 소품 또는 상태가 기간을 벗어남, 알 수 없는 ID, 샷 목록과 일치하지 않는 캐릭터 목록. 프롬프트를 작성하기 전에 원장을 수정하세요.
2단계. 각 프롬프트 작성 (prompts/<id>.md)
스타일 잠금의 문법을 따르고, 슬롯별로 작성합니다(forge-style-lock, references/prompt-grammar.md 참조):
- LOOK: 이 샷의 룩(look, 샷 목록의
look:값, 없으면 기본값), 단어 그대로. - REFERENCES:
style-lock.yaml references:의 첨부된 각 에셋당 하나의 절(구), 첨부 순서대로; 재조명 절. - SHOT: 샷 목록의 프레이밍, 카메라 높이, 렌즈 느낌, 3분할 법칙 위치.
- SUBJECT AND SCALE: 캐릭터별 핸들(handle) + 앵커(anchor) + 스케일 잠금(원장에서); 개수.
- MOMENT: 하나의 순간으로 포착된 샷의 비트(beat).
- SETTING: 장소, 날씨, 시간대, 배경.
- LIGHT: 방향, 품질, 색온도, 그리고 세상 속 광원.
- COLOUR: 장면의 컬러 스크립트(color-script) 단어.
- TEXT AREA: 샷에
text_area또는 내레이션이 있을 때. - CONTINUITY: 이 샷에 대한 원장의 소품과 상태, 단어 그대로.
- LOCKS: 이 샷에 적용되는 모든
forbid절, 단어 그대로; 샷 특정 부정. - AVOID: 꼬리말, 단어 그대로.
파일 형식은 정확히 다음과 같습니다:
# s02: the last match
Model: gpt-image-2.5, high, 2K, 16:9. Attach: sheet_girl, sheet_moth.
```
<프롬프트, 슬롯 1~12가 문단으로 구성>
```
첫 번째 펜스드 코드 블록이 프롬프트입니다; 나머지는 사람을 위한 메모입니다.
3단계. 지출 전 린트
python3 scripts/ledger.py prompts continuity.yaml --prompts prompts --style style-lock.yaml --shotlist shotlist.yaml
다음과 같은 경우 프롬프트가 실패합니다: 룩으로 시작하지 않음, AVOID 꼬리말로 끝나지 않음, 캐릭터의 핸들 또는 스케일 잠금 누락, 소품 또는 상태 앵커 누락, 금지된 색상 절 누락, 캐릭터 이름 포함. production.py spend는 이 검사가 실패하는 동안 페인트 스테이지 지출을 거부합니다. 엔진의 예에서, 린트는 s03의 누락된 스케일 잠금을 잡아냅니다; 해당 프롬프트로 만들어진 그림은 나방을 실제 크기의 1/6로 그렸습니다.
4단계. 4개씩 배치로 페인팅
- 순서: 시트와 프루프(스타일 스테이지), 그 다음 히어로 프레임, 그 다음 나머지 장면별로. 재사용 샷과 코드 샷은 비용이 들지 않습니다; 절대 페인팅하지 마세요.
- 배치: 4개의 프롬프트, 각각의 REFERENCE 슬롯이 명명한 순서대로 첨부된 참조와 함께. 먼저 지출을 기록합니다:
production.py spend 11.0 --item "s05-s08 batch 2". - 파일:
art/film/<id>_<slug>.png(s07a_child_reaches.png스타일: ID 먼저, 그 다음 슬러그). 재페인트는<id>_<slug>_v2.png; 등급이 조정된 코드 수정본은<id>_<slug>_g.png. 도구는 이름으로 최신 버전을 선택합니다. - 각 배치 후: forge-frame-qa는 다음 배치가 페인팅되기 전에 모든 그림을 원본 크기로 읽습니다. 배치 1에서 발견된 결함은 반복되기 전에 배치 2의 프롬프트에서 수정됩니다.
5단계. 재페인트
재페인트는 forge-frame-qa에서 원인과 수정된 프롬프트와 함께 제공됩니다. 수정된 프롬프트를 prompts/<id>.md에 넣고, 린트를 수행하고, 지출을 기록하고, _v2를 페인팅하고, QA로 다시 보냅니다. 원인이 원장이나 스타일 잠금(모두에게 누락된 잠금)에 있었다면, 해당 위치에서 수정하고 모든 프롬프트를 다시 린트합니다.
특수 사례
- 그림책 페이지: 모든 프롬프트에 레이아웃 이름(스프레드 3:2, 페이지 3:4, 투명 배경의 비네트 1:1)과 텍스트 영역을 명시합니다. 모든 단어는 책에 설정되며, 절대 페인팅되지 않습니다.
- 비디오 키프레임: 동일한 문법을 통해 첫 번째 프레임(움직임이 정확히 끝나야 하는 경우 마지막 프레임)을 페인팅합니다; 모션 프롬프트는 별도 단계이며, 키프레임이 QA를 통과한 후에만 실행됩니다.
- 키 포즈 (
poses: 2): 포즈당 하나의 프롬프트, MOMENT 슬롯을 제외하고 동일하므로 깔끔하게 연결됩니다. - 플레이트: 캐릭터가 없는 빈 위치, 여러 샷에 걸쳐 재사용됨; 설정을 포함하므로 프롬프트가 짧게 유지됩니다.
출력
- 페인팅된 모든 샷에 대한
prompts/<id>.md, 모두 린트 통과. - 모든 샷의 항목이 포함된
continuity.yaml,ledger.py check통과. - QA 준비가 된
art/film/그림, ID로 명명됨.
각 배치 전 체크리스트
-
ledger.py check통과 - 이 배치에 대해
ledger.py prompts통과 - 참조가 REFERENCE 순서로 첨부됨; 올바른 시트 버전
- 지출 기록됨; 4개 이하의 배치
- 이전 배치에 QA 판정이 있음
수리 표
| 린트 또는 QA 결과 | 수정할 슬롯 |
|---|---|
| 스타일 잠금으로 시작하지 않음 | 1: 수정하지 않고 룩 붙여넣기 |
| 핸들 또는 스케일 잠금 누락 | 4: 원장에서 붙여넣기; 프레임 내 어떤 것에 대한 비율 추가 |
| 소품 또는 상태 앵커 누락 | 10: 원장에서 붙여넣기 |
| 금지된 색상 절 누락 | 11: 규칙의 prompt 붙여넣기 |
| 이름 사용 | 4 및 다른 곳: 핸들로 대체 |
| 그림의 크기나 개수 오류 | 4: 스케일 잠금 및 정확한 개수; 그 다음 시트의 스케일 바 |
| 주제가 평평하게 조명됨 | 2: 재조명 절; 7: 광원이 있는 조명 |
| 텍스트나 글자가 그려짐 | 9 및 12: 텍스트 영역은 코드용; AVOID 꼬리말에 "text" |
참조
references/batching.md: 배치 계획, 명명, 버전, 실제 영화의 작업된 배치