Motion Render 是一个面向代理工作流的影片渲染技能,用于将已锁定的 .motion/brief.md 与 .motion/beats.md 输入转化为影片文件。流程要求先读取锁定输入,检查 ffmpeg、ffprobe、bun、Chrome 二进制(或 CHROME_BIN)、vhs 与 ttyd 等工具,若缺失则如实报告,不得伪造渲染。场景搭建基于 motion-art-direction 模板(composition-grid、kinetic-type、cut-rhythm),在 look.md 与关键帧存在后,再添加外壳、seek 时钟、捕获和编码机制。
核心机制包括:场景使用 DOM、2D canvas 或 WebGL 层,暴露 window.seek(t)、DURATION、FPS、STILLS、ready;seek(t) 必须是纯函数,同一 t 产生相同像素,禁止 CSS 动画、墙钟时间、未播种随机数和帧间状态。渲染阶段分为 stills(默认,每拍一张)、draft、master,预算日志与 --jobs 分块。编码使用 libx264 yuv420p BT.709 faststart,GIF 使用 palettegen/paletteuse,母版运动模糊来自子帧与 tmix。交付方式包括 GitHub 上内联 GIF 与 mp4 链接。终端影片使用 VHS tape 与脚本化演示。验证基于 ffprobe 事实、精确帧数、预算、SSIM、尖峰和色彩标签,要求验证文件而非帧,精确 DURATION x FPS 帧数、h264/yuv420p、预算、与已批准静止帧的 SSIM。
目录结构示例包括 .motion/ 下的 brief.md、beats.md、facts.md、assets.json,scene/index.html 与 lib.js、beats.js|rhythm.js、grid.js、kinetic.js、timeline.js 等经典脚本,capture.js、render.js + encode.js、terminal.tape + terminal-demo.sh,以及 stills/、out/、review/、work/、budget.json。关键规则包括:--stage 默认 stills,未知值退出码 2,在 G1 和 G2 门禁停止;不得编造标志或 API;屏幕数字只来自 .motion/facts.md 并标注示例数据;修复应在场景代码中进行而非反复渲染。最佳实践包括:触碰场景时钟时渲染静止帧两次并校验 contact sha256 不变;硬切放在帧边界 t = k / FPS;超过约 25 秒使用 --jobs;对草稿和母版运行 motion-review 包。禁止事项包括:捕获预览循环或实时录屏;为静止帧或草稿添加运动模糊(仅母版使用 --subframes);无双重渲染 sha256 证明就交付受光 WebGL 节拍;构建交叉淡化或仅不透明度入场;场景文件超过 FUSE_SOLID_MAX_LINES 而不拆分;第 0 帧留空或淡入;提交 .motion/work/ 帧或 Chrome 配置文件;将 Remotion 作为依赖(仅可作为替代方案提及)。