22컷을 점토 캐릭터로 뽑았다 — 시작 프레임이 프롬프트를 이긴 하루

나노 바나나로 시작 프레임 한 장을 먼저 만들고, 힉스필드에는 움직임만 적어 22컷을 뽑았습니다.

이 글은 실제로 완성한 쇼츠 한 편(93.29초 · 22컷)을 어떻게 점토 캐릭터 애니메이션으로 만들었는지, 그날의 실측을 그대로 남긴 제작 기록입니다. 나중에 이 글만 보고도 같은 파이프라인으로 쇼츠 한 편을 완성할 수 있도록, 실패한 시도까지 지우지 않고 다 적었습니다.
영상이 다루는 내용은 네안데르탈의 자작나무 타르 접착제 — 정교한 온도 조절이 아니라 산소 차단이 핵심이었다는 이야기입니다. 완성 영상 보러가기 (2026-09-09 18:00 공개 — 그 전에는 비공개로 보일 수 있습니다).
한 줄 요약
컷마다 나노 바나나로 시작 프레임 한 장(85원)을 먼저 만들고, 그 프레임과 「움직임만」적은 프롬프트를 힉스필드 kling3_0에 넘겨 22컷을 뽑았습니다. 재작업 25% · 편당 재료비 약 11,000원 · 인물이 없는 정물 8컷은 재작업 0건이었습니다. 돈은 결국 「사람」과 「불」이 썼습니다.
왜 이 방식인가 — 전날까지의 자리
| 전(001~028) | 이 편 | |
|---|---|---|
| 영상 도구 | 구글 플로우(Veo) — 사람이 브라우저에서 | 힉스필드 MCP — 에이전트가 직접 호출 |
| 화면 | 유물·도해·실사 재현, 사람은 등장 제한적 | 점토 캐릭터(운영자 본인 얼굴의 클레이 페르소나 me_clay) |
| 시작 프레임 | 프레임 체이닝은 기본에서 제외(2026-08-30) | 전 컷 시작 프레임 — 첫 컷이 프레임 없이 두 번 죽고 나서 |
| 승인 방식 | 컷마다 프롬프트 → 승인 → 생성 | 이미지는 에이전트가 뽑아 묶음으로 보이고, 영상만 컷마다 승인 |
숫자로 본 하루 — 힉스필드 33회 생성 · 285크레딧(잔액 996 → 718.5) · 나노 바나나 38회 호출(35장, 빈 응답 3) 2,980원 · 이미지 시트 4장 · 32프레임 전수 검사 시트 30장.
1. 첫 컷이 두 번 죽었다 — 시작 프레임이 생긴 이유
불 옆에 앉아 껍질 말이를 보는 인물(밤 장면)을 프롬프트만으로 두 번 뽑았습니다(count 2 · 24크레딧).
| A안 | B안 | |
|---|---|---|
| 복장 | 파란 반팔 티 + 검은 장갑 | 상의 없음 — 맨 몸통 |
| 얼굴·안경·머리 | 참조대로 | 참조대로 |
| 점토 연기·불씨 | 정상(점토 리본·주황 덩어리) | 정상 |
밤 조명이 흰 셔츠를 지운 것이 원인이었습니다. 참조(me_clay)는 낮 정면 시트였기 때문에 「밤의 흰 셔츠」를 모델이 스스로 지어냈습니다.
해결책은 나노 바나나로 「밤·흰 셔츠·양손 무릎·점토 잉걸」 정지 화면을 먼저 만들고(85원, 후보 셋 중 하나 선택), 그 그림을 start_image로 주는 것이었습니다. 2차 시도에서 통과했습니다.
이날의 규칙이 됐습니다 — 「모델은 움직이기만 한다. 무엇이 있는지는 그림이 정한다.」 전에 유물 편에서 「실물 사진을 시작 프레임으로」 하며 얻은 규칙의 점토판입니다.
같이 배운 것 — start_image 모드의 푸시인(카메라가 다가가는 것)은 「3초에 멈춰라」를 무시하고 끝까지 밀립니다(두 컷에서 확인). 「느린 연속 푸시인」으로 받아들이고, 쓸 구간을 앞쪽에 두는 편이 낫습니다.
2. 프롬프트가 두 부로 갈라졌다 — 공통부와 컷별 입력부
시작 프레임 프롬프트(나노 바나나)는 공통부 셋 + 컷별 한 문단으로 구성됩니다.
| 공통부 | 무엇 |
|---|---|
| ART STYLE | 점토 재질 · 지문 · 뭉툭한 형태 · 「불과 연기도 점토로 빚었다 — 실제 입자 연기·실제 불꽃이 아니다」 |
| LIGHTING | 밤/낮 · 실내 · 광원 자리 · 「나무·풀·하늘 없음 — 실내다」 |
| CHAR(인물 컷만) | 참조와 같은 얼굴 폭 · 둥근 안경 · 흰 긴소매 셔츠(가장 밝은 물체) · 소매는 팔꿈치 아래 · 차콜 바지 · 몸 전체가 프레임 세로 가운데 3분의 1 안 · 벙어리 손 |
| CLEAN | 모든 표면은 글자 없는 점토 · 단일 정지 화면 · 시트·격자·턴어라운드 아님 |
영상 프롬프트(kling3_0)는 외형을 다시 쓰지 않습니다. Animate the attached start image. Everything visible … stays exactly as it is. 다음에 CAMERA(LOCK/MOVE) · 움직이는 것 하나 · END STATE(시간으로) · LIGHTING · SOUND off · NEGATIVE, 이렇게 여섯 줄만 씁니다. 길이는 1,200~1,700자로, 전날 Veo 프롬프트(1,600~1,900자, 일곱 부)보다 짧습니다 — 그림이 서술을 대신하기 때문입니다.
3. 불이 붙었다 — 세 번 실패하고 네 번째에 「불꽃을 그려 줬다」
이 글의 핵심 실패담입니다. 컷 09 「불을 지켜보는 인물」.
| 회차 | 무엇을 했나 | 결과 |
|---|---|---|
| v1 | 부지깽이로 재를 「손가락 폭만큼」 젓는다 | 0.3~3.0초 실사풍 불꽃 — 3.3초에 꺼짐 |
| v2 | 젓기 삭제 · 「부지깽이는 완전히 정지」 | 같은 불꽃 · 같은 시각 — 부지깽이도 저었다 |
| v3 | 부지깽이를 시작 프레임에서 뺐다(85원 · 양손 무릎) | 1.3초에 잉걸 한가운데서 점화 — 끝까지 |
| v4 | 점토 불꽃 한 덩어리를 시작 프레임에 이미 넣었다(85원) | 20프레임 전부 같은 눈물방울 · 살짝 흔들리기만 |
「잉걸 더미」는 부지깽이가 있든 없든 1.3~1.5초에 불을 켭니다. 부정문(never grow into flames) · 정지 지시 · 원인 제거가 다 안 통했습니다. 모델이 켜고 싶어 하는 것을 미리 켜 준다 — 켤 것이 없으면 그림이 안 변합니다.
비용 — 4회 30크레딧 + 이미지 3장 255원. 첫 컷의 수업료가 나머지 불 컷 다섯을 1차 통과시켰습니다.
같은 원리로 컷 19(그릇 안의 방울)는 프레임 바닥의 잉걸을 아예 뺐습니다(「주황빛만 아래에서 올라온다 · 잉걸 조각은 안 보인다」). 4.25초 동안 발화 0건.
v4 시작 프레임 프롬프트 실물입니다.
standing up out of the middle of the embers is ONE small flame sculpted from clay — a single smooth teardrop-shaped tongue of warm yellow-orange clay, about as tall as his knee, matte and solid … It is a clay object, not a real flame.
4. 끝 프레임이 「없음」이면 사진이 된다 — 옮겨진 위치를 그려 준다
컷 19(방울) — 시작(벽의 방울) + 끝(방울 없음 · 고임만)을 줬더니 5.5초까지 방울이 제자리에 붙어 있다가 마지막 0.5초에 흐릿하게 사라졌습니다(방울 자리 밝기 31 → 31 → … → 40).
시작과 끝이 거의 같으면 보간할 게 없습니다 — 「사진」으로 있다가 막판 디졸브됩니다.
해결책은 끝 프레임을 「방울이 고임 바로 위까지 내려온 그림 + 지나온 자국」으로 바꾸는 것이었습니다. 그러자 첫 프레임부터 고르게 움직였습니다(y좌표 139 → 148 → 152 → 162 → … → 186).
끝 프레임은 PIL로 직접 그렸습니다(비용 0원). 원래 방울 자리는 좌우 기둥 사이를 행마다 보간해 지우고(단순 복사 패치는 밝기 차로 네모가 보임), 새 방울은 검은 눈물방울 + 하이라이트로 그렸습니다.
같은 방식으로 컷 15(온도계) — 다른 컷의 시작 프레임에서 바늘을 지우고 7시 방향으로 다시 그려 끝 프레임을 만들었습니다. 결과: 바늘이 한 바퀴 넘게 돌아 7시에 멈췄는데, 「온도가 널뛰었다」는 내용에 오히려 잘 맞았습니다(다만 4~7초 구간에 크림색 반대 꼬리가 넘어가는 부작용은 있었습니다).
5. 흰 장갑 — 어두운 것을 쥔 손
컷 21(자갈 틈에 흙을 누른다) — 2.5초부터 오른손이 흰 장갑이 됐습니다. 소매의 흰색이 손으로 번진 것입니다.
해결책은 「양손은 첫 프레임부터 끝까지 살색 점토 · 소매 끝은 손목에 머문다 · 손 근처의 어두운 것은 흙뿐」을 긍정문으로 두 번 쓰는 것이었습니다. 끝까지 살색을 유지했습니다.
컷 22(손 초근접) — 인물 참조를 주니 전신이 나왔습니다. 참조가 구도를 이긴 것입니다. 그래서 손 컷은 참조 없이 진행했고, 끝 프레임은 시작 그림을 참조로 한 번에 나왔습니다.
6. 검사는 눈이 아니라 숫자로 했다
32프레임 시트 한 장 + 프레임차 두 줄로 검사했습니다. 카메라가 잠겼는지, 무엇이 언제 변했는지를 코드로 쟀습니다.
# 180×320 회색으로 줄여 0초 프레임과의 평균 절대차를 0.5초마다 찍는다
def frame(t):
... # ffmpeg -ss t -vf scale=180:320,format=gray -f rawvideo ...
print("상단 벽:", [abs(frame(t)[:50] - f0[:50]).mean() for t in ts]) # 인물·불이 없는 위쪽 = 카메라
print("전체 :", [abs(frame(t) - f0).mean() for t in ts])
| 무엇 | 지표 | 실측 |
|---|---|---|
| 카메라 잠금 | 상단 벽 프레임차 ≤ 1 | LOCK 컷 0.5~0.9 · 한 컷은 1.1→2.8(느린 밀림, 1.5초 구간에선 안 보임) |
| 푸시인 | 전체 프레임차 단조 증가 | 한 컷 9→45 · 다른 컷 5→11 |
| 발화 | 불 영역 최대 밝기 180대 → 230~250 | 09 v3: 184 → 230(1.5초) |
| 방울 이동 | 열의 가장 어두운 행 y | 19 v3: 139 → 186 단조 |
| 바늘 각도 | 허브 둘레 링에서 가장 어두운 각 | 15: 18° → 75° → 201° → … → 210° |
「사진이 8초 흐른다」와 「막판 디졸브」는 재생해서는 안 보입니다 — 숫자가 잡아낸 문제였습니다.
7. 결산 — 돈이 어디로 갔나
| 묶음 | 컷 수 | 크레딧 | 재작업 | 배운 것 |
|---|---|---|---|---|
| 첫 시험 | 2 | 72 | 1회 | 시작 프레임 |
| 불 컷 | 7 | 94.5 | 5회 | 점토 불꽃 · 잉걸 제거 · 끝 프레임은 「옮겨진 위치」 |
| 인물 컷 | 5 | 54 | 1회 | 손 색 고정 · 손 컷은 참조 없이 |
| 도해·정물 | 8 | 64.5 | 0회 | 인물 없으면 1차 통과 |
| 합계 | 22 | 285 | 7회(25%) |
여기에 나노 바나나 35장 2,980원을 더하면 총 약 11,000원, 컷당 500원입니다. 이전 유물 편(8클립 · 3,306원 · 컷당 413원)과 단가는 비슷한데 클립 수는 세 배였습니다.
0원으로 처리한 것 — 끝 프레임 둘(PIL) · 얹기 넷 · 배너 5 · 자막 59 · ffmpeg 직접 굽기(캡컷 미사용).
8. 그 뒤 — 업로드에서 걸린 것 둘
얹기(오버레이 텍스트)는 「자막이 말하지 않는 수치」만 남깁니다. 원래 후보 일곱 자리를 넷으로 좁혔는데, 나머지 셋은 자막·배너가 이미 말하는 내용이라 뺐습니다. 남긴 넷은 모두 팩트체크 표에서 나온 값입니다 — 예를 들어 「위 400℃ / 아래 100℃」는 원문의 never reached more than 100 °C에서 그대로 가져온 것입니다.
유튜브 설명란에는 꺽쇠 괄호(< >)가 들어가면 업로드 화면에서 막힙니다. "191,000년 전" 앞에 붙였던 부등호 표기는 "191,000년보다 오래됨"으로 바꿔야 했습니다. 쓰고 나면 grep -n '[<>]'로 한 번 걸러내는 것이 안전합니다.
정리
이 파이프라인의 핵심은 하나입니다 — 모델에게 「무엇을 하지 말라」고 말로 막으려 하지 말고, 그 자리에 이미 있어야 할 것을 그림으로 먼저 그려 주는 것입니다. 불을 끄고 싶으면 불씨가 없는 그림을, 방울을 옮기고 싶으면 옮겨진 그림을 시작·끝 프레임에 직접 넣습니다. 프롬프트는 그 다음부터 「움직임만」 적으면 됩니다.
발행 2026-09-09 · 최종 확인 2026-09-09