论文讲解视频(仪表盘风格)
当用户要求为一篇论文、一个章节(系统模型、定理、结果图)或一个教学概念制作讲解视频、动画或“像FAS那样的视频”时,使用此技能。
输出效果
一个16:9画幅(1920x1080,30帧/秒,白色背景,色彩丰富):
- 顶部:一条灰色的小标题、一个加粗的主标题,以及一行紫色的设置摘要。
- 左侧(约占40%宽度):一个动态的物理场景(波浪、天线、节点、用户、电路)。每帧都会移动,并带有显示决策或结果的标记。
- 右侧:一个2x2的实时数据面板网格。静态曲线一次性绘制完成;一条虚线竖线和点沿着曲线移动。其中一个面板每帧完全重绘(例如,一个实现结果的条形图)。
- 底部:一个黄色的圆角说明框。当扫描的参数穿过阈值时,说明框会改变4-6次内容,然后在最后保持阶段显示包含关键数字的摘要。
- 场景中可选的一个内嵌图(例如,复平面箭头),用于显示关键量。
操作流程
- 阅读论文章节。选择一个能讲述故事的关键扫描参数(如地平线、信噪比、速度、倾斜角、块数等)。写出视频必须传达的单句话信息。
- 使用numpy/scipy根据论文的公式和参数值重新实现模型。在绘制任何内容之前,验证关键数字(闭式解与数值积分、表格值、极限)。如果不匹配,请告知用户。
- 预计算计算量大的部分:在精细网格(约21个点,约20,000次抽样)上计算蒙特卡洛曲线,并缓存结果。
- 对于实现结果面板,使用一个固定的随机抽样子集,该子集随参数平滑变化(例如,固定路径的有限平面波求和,以及一次性抽取的噪声)。扫描种子并选择一个能清晰讲述故事的种子;在旁白说明中注明这一点。
- 时间线:简介停顿(约2秒),缓和扫描(0.5 - 0.5 cos(pi x)),最后停顿(约3秒)。默认17秒;如需配音旁白,则延长至约60秒(例如8 / 42 / 10秒)。
- 使用argparse编写脚本:
--out、--preview(生成3帧PNG)、--dpi。将参数放在脚本顶部(CREDIT、模型值、SEED、时间设置)。使用matplotlib的FFMpegWriter(libx264、yuv420p、比特率6000)进行渲染,采用grab_frame循环。 - 务必先渲染预览并检查。修复重叠问题,然后渲染完整视频。之后,使用ffmpeg提取4帧进行检查。
- 交付.mp4文件、.py文件和一个旁白.md文件(时间 | 说明 | 简单英语的台词 | 面板指南 | 设置 | 易于修改)。版本号从v1、v2...开始。
布局经验(避免这些错误)
- 对于场景坐标轴,使用
set_aspect('equal', adjustable='datalim')并将xlim居中于内容,否则场景会缩小并被裁剪。 - 将长的场景标签放在没有物体移动的地方;检查内嵌图是否覆盖了标签。
- 图例:放在空白区域(对于中断型曲线,通常是右下角)。对于条形面板,使用
ncol=2,并在ylim中为标记留出空间。 - 保持gridspec顶部大约在0.86,这样副标题不会碰到面板标题;底部大约在0.155,这样两行说明不会碰到x轴标签。
- 公式文本放在坐标轴内的空白区域,而不是覆盖在曲线上。
- 完全重绘(cla)仅用于场景和一个实现结果面板;其他面板使用set_data。在1080p下,510帧需要大约4分钟,这是正常情况。
样式常量
蓝色 #1c7ed6,橙色 #e8590c,绿色 #2f9e44,红色 #e03131,青色 #0c8599,紫色 #7048e8,灰色 #868e96,墨色 #212529,金色 #f59f00。标题加粗为11.5pt,基础字体为10pt,顶部/右侧坐标轴边框关闭。
语言
说明和旁白使用简单的英语(B2或以下),句子简短,并带有编号的说明步骤(“1 ·”、“2 ·”...)。