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"}。
讓它看起來像是手繪的關鍵: 動作以每秒六步的速度執行(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"可提供雙人鏡頭。如果主持人快速交替短台詞,規劃器永遠不會生成雙人鏡頭,而觀眾應該在早期和結尾都能看到兩人。
已付出代價的錯誤
- 卡片必須在其自身的畫面構圖中落地。 規劃器會將一個鏡頭保持至少一秒,因此卡片可能遮蔽半張臉達 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,因為一個章節包含許多定時面板。 - 逐影格檢查每張卡片的出現瞬間。 卡片出現的第一秒是構圖錯誤和入場錯誤最容易隱藏的地方,每隔幾秒抽樣檢查會錯過這些錯誤。