3D 카툰 애니메이션
버전 1.0.1(공개판) · 방식과 룩은 1라운드('중력이 발견된 방법', v3, 2026년 10월 26일)에서 소유자가 승인했습니다. 1.0.1은 모든 컴퓨터에서 도구를 실행할 수 있게 합니다. 영상은 1.0.0과 동일하게 렌더링됩니다.
**'소유자'**는 이 파일들에서 영상을 의뢰하고 승인하는 사람을 의미합니다.
스토리보드 우선(소유자의 규칙, 2026년 10월 27일). 모든 영화와 모든 새 버전은 소유자의 프레임워크 안에서 스토리보드로 시작됩니다. 소유자가 승인하기 전까지 음성 녹음, 상세 제작, 렌더링을 하지 않습니다(스킬 4).
이 패키지는 한 가지 종류의 비디오(짧고, 빠르고, 따뜻한 3D 카툰 설명 영상)를 만드는 완전하고 재사용 가능한 방법입니다. 모든 주제에 적용됩니다. 작업 예시는 중력에 관한 것이지만, 이 방법은 특정 주제에 의존하지 않습니다. 스킬들은 훅을 찾고, 캐릭터를 캐스팅하고, 장소를 구축하고, 각 숫자를 사물로 바꾸고, 모든 동작을 음성에 맞추고, 사운드를 디자인하고, 모든 프레임을 확인하는 방법을 다음 주제가 무엇이든 동일하게 알려줍니다.
완성된 영상의 특징
- 형식: 1080×1920, 30fps, 30
60초. 하나의 나레이션 절 = 하나의 샷(약 1.11.5초마다 새로운 그림). 마지막 대사는 첫 번째 프레임으로 루프됩니다. - 이야기: 처음 2초 안에 질문을 여는 훅; 초기 보상; '당신'에게 전달되는 이해관계; 고조; 2/3 지점의 재훅; 하나의 문자 그대로의 그림으로 보여주는 반전; 루프 엔딩.
- 룩: 부드러운 툰 쉐이딩, 잉크 외곽선, 따뜻한 실용 조명, 림 라이트, 피사계 심도, 라이트 블룸 및 그레인. 피부 톤 얼굴; 브랜드 색상(Rouge Noir, Blue Coral, Cognac, White Sand, Anthracite)이 의류, 소품, 세트에 사용됩니다. 실제 사물은 실제처럼 보입니다(지구는 파란색과 초록색).
- 캐릭터: 공 머리, 콩 몸통, 막대 팔다리, 벙어리장갑 손; 입 모양이 없는 페인트 얼굴; 강세 단어 직전에 눈 깜빡임을 통해 얼굴 전환; 정지 상태는 완전히 고정.
- 카메라: 항상 움직이며, 이동 사이를 서서히 이동하고, 각 문장의 첫 단어에서 6프레임 디졸브로 가속.
- 사실은 사물입니다: 모든 말로 표현된 숫자는 카운터, 달력, 줄자, 게이지 또는 불이 켜진 표지판으로 해당 프레임에 등장합니다.
- 텍스트: 처음 2~3초 동안 상단에 주제 질문('중력은 어떻게 발견되었을까?'), 그리고 70% 높이에 편집용 자막 잠금(
EVERYTHING위에 you know). - 사운드: 음성(ElevenLabs), 그 아래 18 LU의 오리지널 배경 음악, 모든 눈에 보이는 동작에 조용한 foley 사운드, 모든 스토리 비트에 악센트, −14 LUFS로 마스터링.
파이프라인(각 단계는 스킬)
| # | 단계 | 스킬 | 결과물 |
|---|---|---|---|
| 1 | 주제를 영화 아이디어로 전환 | topic-to-film | 각도, 훅, 캐스트, 장소, 숫자 목록, 큰 그림 |
| 2 | 대본 작성 | script-and-retention | 출처가 포함된 script.md |
| 3 | 음성 녹음 및 모든 단어 타이밍 | voiceover-and-timing | vo/voice-final.wav, vo/words-final.json |
| 4 | 모든 샷 스토리보드; 소유자 승인 | storyboard-and-shot-plan | storyboard.md, 스토리보드 스틸, 소유자 보드(storyboard/<v>/<Title> - storyboard <n>.png 및 .html) |
| 5 | 룩 설정 | look-lighting-and-brand | 조명 프리셋, 팔레트, 샷별 렌즈 |
| 6 | 캐스트 구축 | characters-and-faces | 리그, 의상, 얼굴 전환 |
| 7 | 모든 절 연기 | motion-and-acting | 포즈 키, 개그, 물리 |
| 8 | 카메라 이동 | camera-and-transitions | 샷별 궤도 이동 |
| 9 | 숫자를 물리적으로 만들기 | facts-as-objects | 숫자별 장치 |
| 10 | 장소 구축 및 꾸미기 | sets-and-props | 키트에서 가져온 장소, 꾸며짐 |
| 11 | 화면 텍스트 작성 | captions-and-title-hook | 자막 잠금, 제목 질문 |
| 12 | 사운드 디자인 | sound-design-and-mix | 큐 목록, 믹스, 스템 |
| 13 | 모든 프레임 렌더링 및 확인 | render-and-quality-checks | MP4, QA 레코드 |
| 14 | 소유자와 검토 및 학습 | review-rounds-and-learning | 피드백, 다음 버전, 패키지 업데이트 |
이 순서대로 단계를 수행하십시오. 4~11단계는 모두 하나의 파일(film.mjs) 내에서 이루어지므로, 실제로는 스토리보드를 계획한 다음 샷별로 구축하면서 스틸을 렌더링합니다.
불가침 규칙
- 스토리보드 우선. 음성 녹음, 샷 상세 구축, 또는 어떤 렌더링보다 먼저 소유자가 보드를 승인합니다(스킬 4).
- 기법은 복사하되, 콘텐츠는 복사하지 마십시오. 모든 캐릭터, 세트, 표지판, 농담 및 발명된 브랜드 이름은 저희의 것입니다. 실제 역사적 인물은 저희의 툰 캐릭터로 그려집니다. 저작권이 있는 캐릭터는 절대 그리지 마십시오.
- 훅 우선. 처음 2초는 질문을 열어야 합니다. 제목 질문은 주제를 명명합니다.
- 모든 숫자는 사물이 됩니다. 말하는 단어와 함께 등장합니다. 절대 일반 텍스트 오버레이를 사용하지 마십시오.
- 제스처는 단어 4프레임 전에 도착하고, 얼굴은 2프레임 전에 눈 깜빡임을 통해 전환됩니다.
- 모든 눈에 보이는 동작에는 소리가 있습니다. 동작 없는 소리는 없습니다.
- 소유자가 보기 전에 모든 프레임이 확인됩니다(자동 프레이밍 검사 및 점프 스캔, 그 다음 눈으로 확인).
- 사실은 출처가 있어야 합니다. 출처가 일치하지 않을 때는 간단한 말로 애매함을 표현하십시오.
- 소유자의 브랜드: 피부 톤 얼굴, 5가지 브랜드 색상 + Brand Red, 그리고 포함된 폰트: 자막용 TeX Gyre Heros Bold + Instrument Serif Italic, 라벨용 Titan One (또는 소유자가 추가하는 경우 라이선스된 Helvetica Bold + Editorial New Italic, 어떤 것인지 명시). 모두 brand/에 있습니다.
새 주제 빠른 시작
templates/new-film/을examples/<topic-slug>/로 복사합니다.- 새 주제 워크시트(스킬 1)를 작성하고 대본(스킬 2)을
film.mjs의SCRIPT에 씁니다. - 초안 타이밍으로 샷을 구축하고 스토리보드 스틸을 렌더링합니다:
node recipe/tools/render.mjs examples/<slug>/film.mjs <outDir> --stills shots --qa - 스토리보드 우선.
templates/storyboard.json을examples/<slug>/storyboard/v1/storyboard-1.json으로 복사하고, 각 샷의 패널과 그 스틸을 추가합니다.- 보드를 그립니다:
node recipe/tools/storyboard-board.mjs examples/<slug>/storyboard/v1/storyboard-1.json. - 소유자에게 보드를 보여주고 소유자가 승인할 때까지 수정합니다(
storyboard-2, ...). - 그런 다음 음성을 녹음합니다:
ELEVENLABS_API_KEY=… node recipe/tools/voiceover.mjs examples/<slug>(vo/text.txt작성 후).
- 실제 단어에 맞춰 재타이밍(자동), 비디오 렌더링 후 사운드:
node recipe/tools/render.mjs examples/<slug>/film.mjs <out> --video --name silent.mp4python -I recipe/tools/sound.py examples/<slug> <out>/silent.mp4 <out>/shots.json "<out>/<Title>.mp4" - 검사: 프레이밍 보고서,
node recipe/tools/jump-scan.mjs <video> <out>/shots.json,python -I recipe/tools/sfx-levels.py <out> <out>/cue-sheet.txt, 그 다음 모든 프레임을 눈으로 확인(스킬 13).
파일 위치
| 경로 | 내용 |
|---|---|
skills/ | 14단계 스킬 |
recipe/engine/ | 렌더러: core.mjs(룩, 포스트, 자막, 합성, 검사), faces.mjs, character.mjs, props.mjs, props2.mjs, kit.mjs(주제 중립 장소 및 조명 프리셋), places.mjs / places2.mjs(예제의 꾸며진 장소), index.html, vendor/three (three.js r186, MIT), fonts/ |
recipe/tools/ | storyboard-board.mjs (소유자의 스토리보드 보드, PNG 및 클릭 가능한 HTML 페이지), render.mjs, voiceover.mjs, sound.py, jump-scan.mjs, sfx-levels.py, paths.mjs (FFmpeg, Chrome 및 Playwright 위치) |
templates/ | new-film/film.mjs (초안 타이밍으로 실행되는 주제 중립 스타터) 및 워크시트 |
examples/how-gravity-was-found/ | 승인된 영화: 소스, 음성, 최종 비디오, 스토리보드, 큐 시트, 스템, 이전 버전 |
references/ | 참고 연구, 소유자 지시, 엔진 API, 글리치 카탈로그, 피드백 기록, 엔진 노트 |
brand/ | 승인된 영화의 색상 및 폰트: palette.json, palette.css, style-sheet.png (recipe/tools/style-sheet.mjs로 생성) |
evaluation/ | 전달 체크리스트, 수용 기준, 알려진 제한 사항 |
preview/ | style-card.json: 스타일의 이름, 룩 및 형식을 한 장의 카드에 표시하며, 예제의 포스터, 영화 및 스토리보드를 가리킴 |
새 기계 설정
도구 필요 사항:
- Node 22+;
- FFmpeg 6+ (ffprobe 포함), PATH에 설정;
- Python 3.10+ (NumPy 포함);
- Chrome이 WebGL2에 사용할 수 있는 그래픽 카드.
패키지 폴더에서 npm install, npx playwright install chromium 및 pip install -r requirements.txt를 실행하십시오. 전체 단계는 README에 있습니다. FFmpeg가 다른 경로에 있으면 CARTOON_FFMPEG를 설정하십시오. 다른 Chrome을 사용하려면 CARTOON_CHROME를 설정하십시오(recipe/tools/paths.mjs 참조).
영화는 패키지 폴더 안(examples/<slug>/)에 있어야 합니다. 렌더러가 패키지를 브라우저에 제공하기 때문입니다. 음성에는 텍스트 음성 변환 권한이 있는 ElevenLabs API 키가 필요하며, 해당 명령에 ELEVENLABS_API_KEY로 전달하고 파일에 절대 기록하지 마십시오.