播客动态:动态分镜(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/<名称>,然后是 Studio Cut 的静态图片,最后是 Pop Studio 的对象,格式为 .png 或 .jpg。如果找不到指定的图片,则将其作为文字呈现,构建过程会报告这一情况。
素描处理是本地且免费的,这正是成本低廉的原因: 任何照片或来自其他工具的图片,最终都会呈现为同一手绘风格,因此混合来源的素材看起来仍像统一的故事板。如果您的图片已经符合需求,请设置 "sketch": false。
获取图片 遵循 references/storyboard-and-assets.md:先报价,如果没有 Ideogram,询问制片人使用哪个替代方案。一张图片可用于多张卡片,因此20分钟的剧集大约只需20个面板。坚持一个清晰的物体,因为复杂的照片在素描后会变成噪点:
Studio photograph of one single plain white cup, centred, on a plain pale background, soft even light, strong clear outline. No text, no letters, no logos, no people, no hands.
保存为 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"提供双人镜头。快速简短对话的主持人无法从规划器中获得双人镜头,而观众应在早期和结尾看到两人。
已犯过的错误
- 卡片必须落在自己的取景位置上。 规划器对每个镜头至少保留一秒,因此卡片可能遮挡半张脸达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,因为一个章节包含多个时间准确的面板。 - 逐帧检查每个卡片的到达过程。 卡片到达的第一秒是取景和入场缺陷的隐藏处,每几秒采样一次会错过这些缺陷。