精彩动态图形
一个从多种来源收集的效果配方库。effects/ 中的每个配方都是一个规范:它看起来像什么、需要什么、用户填写什么,以及精确的布局和时序。
工作流程
- 未给出名称? 列出
effects/中的每个文件及其前置元数据中的一行summary,按tags分组。停止。 - 项目中首次运行? 执行
setup/house-style.md,如果效果的needs包含mask或head-track,则再执行setup/mask-and-head-track.md。跳过已存在的内容(HOUSE_STYLE.md、public/mask/、public/head-track.json)。 - 读取匹配的
effects/<name>.md。用用户的话语填充每个[INPUT]。询问任何仍缺失的信息,特别是真实数字。切勿虚构统计数据、观看次数或徽标。时序以“在单词 X 上”给出:使用单词时间戳转录剪辑并使用它们。 - 将其构建为以该效果命名的独立合成,遵循 HOUSE_STYLE.md。
- 渲染到
out/<name>.mp4,报告路径,并显示 4 张静止帧(开始、两个中间、结束)。
extras/ 包含非效果配方:聊天风格的介绍/结尾(chat-render.md)以及将多个编辑组合成一个完整视频(full-reel.md)。
每个配方的默认值
- 1080×1920,30 fps,源剪辑位于
public/talking.mp4(复制,切勿编辑原始文件)。 - 任何可读内容的安区域:x 120–960,y 260–1700。切勿遮挡面部。
- “线性光”是指:转换为线性,执行模糊/着色/光照,再转换回 sRGB。
- “最后一帧仍在移动”意味着摄像机推近从未完全停止。
当某些看起来不对时
| 症状 | 修复 |
|---|---|
| 剪裁闪烁/头发光晕 | 随时间更平滑地处理遮罩;羽化前腐蚀 1 像素 |
| 太快 | 延长到 4 秒,并缩放每个移动以匹配 |
| 手机上文字难以阅读 | 所有文字增加 20%,在手机大小上检查 |
| 图形触碰面部 | 将其下移,远离面部区域 |
| 移动感觉呆板 | 重新应用 HOUSE_STYLE.md 中的缓动 + 运动模糊 |
| 机器速度慢 | 先以半尺寸预览渲染,确认质量后再全尺寸 |
添加配方
在 effects/ 中新建文件,包含以下前置元数据,主体与其他配方一致(输入、构建、时序):
name: kebab-name
summary: 一行描述观众看到的内容
source: README 中的来源 ID
needs: [mask, head-track, behind-me, reels, music] # 任意子集
duration: 3s
tags: [3d, glass, text, camera, data, layout]