Podcast Motion: Animatic
상태: 한 편의 스크립트 영상이 제작되어 프로듀서 승인을 받음: 2분 분량, 두 명의 그려진 호스트, 카드, 블루프린트, 16:9. 실제 푸티지와 9:16에 대해서는 테스트 프레임으로만 확인했으므로, 긴 렌더링 전에 해당 결과를 보여주고 결정을 받은 후, 그 결과를 쇼의 STYLES.md에 기록하세요. 먼저 podcast-playbook을 읽으세요: 여기에 사운드, 컷, 게이트 및 마스터 정보가 있습니다.
- 아이디어: 스토리보드에 생명을 불어넣습니다. 토크의 각 포인트는 패널이 되어 실제 음성에 맞춰 단계별 움직임으로 유지되고 움직입니다.
- 최적 대상: 그릴 수 있는 것에 대한 토크와 오디오 전용 쇼.
- 추가 단계: 없음, 매트도 없음.
- 비용: 그림(이미 쇼에 있는 경우는 제외). 발견하는 모든 스틸을 재사용합니다.
얼굴은 자연스럽게 유지
패널은 아이디어와 사물을 그리고, 말하는 사람은 절대 그리지 않습니다. 일러스트 게스트는 이 룩이 절대 해서는 안 되는 것입니다. 게스트의 신뢰성은 쇼의 핵심이며, 양식화된 얼굴은 실제 쇼에서 이미 본 바와 같이 거부당했습니다. 따라서 사람 사진을 절대 제공하지 말고, 생성기에게 사람을 그리도록 요청하지 마세요. 패널 사이에서는 실제 화자를 자연스러운 색상으로 볼 수 있습니다.
단, 이미 캐릭터인 호스트는 예외입니다. 프로듀서가 요청할 때만 해당됩니다. 위의 이유는 실제 사람의 신뢰성에 관한 것입니다. 이 경우 호스트가 화자의 자리를 대신하며, 패널은 여전히 객체와 단어만 보여줍니다. podcast-playbook의 references/scripted-show.md를 참조하세요.
빌드
python3 scripts/build.py episodes/EPxx/full --ratio both --frames
python3 scripts/build.py episodes/EPxx/clips/Cnn_name --ratio both --frames
scripts/는 이 스킬의 폴더입니다. 영화 폴더는 먼저 full_edit.py --render가 완료되어야 하며, build/ 디렉토리에 faces.jsonl과 pass1.json이 있어야 합니다(podcast-playbook의 references/full-episode.md 참조). --frames는 실제 프레임의 접촉 시트를 작성하여 평가할 수 있게 합니다. variant_animatic/ 및 variant_animatic_9x16/을 생성합니다. 렌더링 및 마스터는 podcast-playbook을 따릅니다.
패널
cards.json의 모든 카드는 패널입니다.
- 그림이 있는 카드 (
opts.panel, 또는opts.still이나opts.obj): 연필 스케치로 변환된 그림, 그 아래에 카드 제목이 있고 각 행이 도착할 때마다 이전 행을 대체합니다. - 그림이 없는 카드: 단어를 프레임 안에 글자로 표시합니다.
assets_src/panels/<name>을 찾은 다음, Studio Cut의 스틸, 마지막으로 Pop Studio의 객체를 .png 또는 .jpg로 찾습니다. 찾을 수 없는 이름이 지정된 그림은 단어로 대체되며, 빌드에서 이를 보고합니다.
스케치는 로컬에서 무료로 수행되며, 이 룩을 저렴하게 만드는 요소입니다. 모든 사진이나 도구에서 가져온 그림이 동일한 손글씨 스타일로 나오므로, 혼합된 소스도 하나의 스토리보드처럼 보입니다. 이미 그림이 원하는 스타일로 그려져 있다면 "sketch": false로 설정하세요.
그림 가져오기는 references/storyboard-and-assets.md를 따릅니다. 먼저 견적을 받고, Ideogram이 없으면 프로듀서에게 어떤 대안을 사용할지 물어보세요. 하나의 그림이 여러 카드에 사용될 수 있으므로, 20분 에피소드는 약 20개의 패널로 실행될 수 있습니다. 하나의 명확한 객체로 유지하세요. 복잡한 사진은 스케치할 때 노이즈가 됩니다:
평범한 배경 위에 중앙에 놓인 흰색 컵 하나의 스튜디오 사진. 부드럽고 균일한 조명, 강하고 선명한 윤곽. 텍스트, 글자, 로고, 사람, 손 없음.
assets_src/panels/cup.png로 저장하고, 카드에 {"panel": "cup"}을 작성합니다.
그려진 것처럼 읽히는 이유: 움직임이 초당 6단계로 실행되고(steps()), 컷은 하드 컷입니다. 부드러운 모션은 슬라이드쇼로 변질시키므로, 그대로 두세요.
카드, 모션 및 테마
한 프로듀서가 요청한 것을 한 번에 하나씩 요청했으며, 모든 것이 유지되었습니다. 각각은 쇼가 요청할 때까지 꺼져 있으며, 코드는 scripts/animatic_cards.py에 있고, 상단에 모든 옵션이 나열되어 있습니다.
"looks": {"animatic": {"layout": "card", "blueprint": true, "paper": "#0A1A33", "ink": "#E6F4FF", "pencil": "#9CC4E4", "accent": "#FFB547"}}
"layout": "card"는 화자를 화면에 유지합니다. 전체 프레임 패널은 화자를 숨기며, 프로듀서는 Pop Studio처럼 이미지 카드와 설명 텍스트를 요청했습니다. 카드는 말하는 사람의 반대편을 차지합니다: 먼저 제목, 그 다음 말에 맞춰 도착하고 유지되는 행, 마지막으로 단어가 남긴 공간을 채우는 그림. 현재는 16:9만 지원합니다. 호스트 뒤의 텍스트(Pop Studio의 다른 절반)는 컷아웃이 필요하므로 여기에 포함되지 않습니다.opts.motion은 그림을 스토리에 맞춰 움직입니다. 내장 모션:still,drop,arc,fly,drift,sway,hop,swarm,flipbook. 모든 패널에 느린 푸시인만으로는 프로듀서를 만족시키지 못했습니다. 던져지는 공은 보여주는 것만큼이나 이야기를 잘 전달합니다.moves.py에서 직접 모션을 작성하세요:examples/hail-mary/moves.py에는 세 개의 그림으로 표현된 한 줄의 대사와 영화 초반의 공이 마지막에 착지하는 예제가 있습니다."blueprint": true는 테마를 적용합니다. 스토리에서 테마를 가져와 질문하세요: 네이비 그리드는 우주 영화에 적합했습니다. 모든 스케치를 반전시키고 스크린 모드로 오버레이하여, 움직이는 그림에 테두리가 보이지 않게 합니다.- 생성기가 깔끔하게 제공할 수 없는 것을 그리세요. 18장의 그림으로 구성된 플립북, 걷는 외계인, 견고한 우주선은 비용이 들지 않으며 스케치된 사진보다 더 잘 읽힙니다.
examples/hail-mary/draw_art.py에 방법이 나와 있습니다. 다른 사람의 캐릭터 그림은 여전히 그들의 소유이므로, 게시하기 전에 이 문제를 제기하세요. paper.json의"wide"는 투샷을 제공합니다. 짧은 대사를 주고받는 호스트는 플래너로부터 투샷을 얻지 못하며, 시청자는 초반과 끝 부분에서 두 호스트를 모두 볼 수 있어야 합니다.
이미 지불한 실수
- 카드는 자체 프레이밍 안에 정확히 배치되어야 합니다. 플래너는 샷을 최소 1초 동안 유지하므로, 카드가 0.9초 동안 얼굴 절반을 가릴 수 있습니다. 카드 레이아웃에서 샷은 이제 카드 가장자리와 화자 변경 시 정확히 컷됩니다.
- 프레임 가장자리에 다른 호스트의 조각이 보이면 실수처럼 보입니다. 카드 뒤에 단색 띠를 넣어 가장자리까지 확장합니다.
- 창 안의 그림이 너무 작음: 단어가 남긴 공간을 모두 사용한 다음,
zoom을 사용하세요. 작은 사과 위에 텍스트가 빽빽하게 늘어서면 미완성처럼 보입니다. - 뒤로 날아가는 그림은 뒤집으세요. 우주선의 기수는 온 방향과 반대를 가리키고 있었습니다.
- 매달린 것이 매달린 곳과 연결되는지 확인하세요. 인형의 끈이 끊어진 채 10초 동안 화면에 있었고, 새로운 검토자가 그 사실을 지적했습니다.
- 글자 카드는 움직이는 그림이 있는 영화에서 가장 약한 요소입니다. 숫자에만 사용하고, 나머지는 그림을 그리세요.
카메라 없음
오디오만 있는 쇼의 경우, 녹음에서 일반 비디오를 만들면 전체 파이프라인이 평소처럼 실행됩니다:
ffmpeg -f lavfi -i "color=c=0xF6F7F5:s=1920x1080:r=25" -i EPxx.wav -shortest -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac 1080p/EPxx.mp4
그런 다음 paper.json에 "audio_only": true를 설정하세요. 패널 사이의 프레임은 챕터 이름을 표시합니다. faces.swift는 얼굴을 찾지 못하는데, 이는 정상입니다. 화자는 트랜스크립트에서만 나오므로 pass1.json의 who를 수정하세요. 몇 초마다 패널을 유지하세요: 다른 움직임이 없으면 긴 간격은 정지된 사진처럼 보이며, 12초가 지나면 마스터 체크에 실패합니다.
화면 구성
- 16:9: 패널 사이의 화면은 화자로 가득 차며; 패널은 일반 용지 위의 느슨한 연필 프레임이며, 그 아래에 한 줄의 캡션이 있습니다.
- 9:16: 프레임은 y 170에서 1070 사이에 위치하며, 캡션은 앱의 클리어 영역 안에 그 아래에, 쇼의 마크는 그 아래에 있습니다. 챕터 이름은 패널 사이에서 캡션 자리를 대체합니다.
- 숫자와 평결은 빨간색입니다. 홍수는 없습니다: 연필 프레임 속 빨간 단어는 이미 화면에서 가장 눈에 띄는 요소입니다.
- 종이는 차갑고 약간 회색빛 흰색입니다: 의도적으로 그렇게 합니다. 크림색 용지와 세리프체는 모든 쇼가 피해야 할 룩입니다.
"looks": {"animatic": {"paper": "#F6F7F5", "ink": "#1C2126", "pencil": "#59626A", "accent": "#D3261F", "sketch": true}}
필기체는 Itim이며, 태국어와 라틴어를 지원합니다.
확인 사항
- 각 캡션과 글자 패널을 휴대폰 크기로 읽으세요.
- 스케치가 의도한 대로 읽히는가? 각각을 살펴보세요. 특히 건강이나 법적 사항과 관련된 경우, 제대로 읽히지 않는 그림은 단어보다 나쁩니다: 대신 글자로 표시하세요.
- 패널은 화자를 완전히 가리므로, 화자의 얼굴이 중요한 순간에 패널을 배치하지 마세요.
- 동일한 그림의 반복은 몇 장의 카드에는 괜찮지만, 그 이상이면 지루해집니다.
- 의도적으로 문제 없음:
timeline_track_too_dense(챕터가 많은 타이밍 패널을 포함하기 때문). - 각 카드의 도착 프레임을 프레임별로 검토하세요. 카드의 첫 1초는 프레이밍과 진입 결함이 숨는 곳이며, 몇 초마다 샘플링하면 이를 놓칩니다.