影视级摄像机 是做什么的?
与 remotion-best-practices 和 motion-graphics 配合使用。构建一个连贯的世界,让一台共享摄像机在其中移动,而不是将孤立的弹出面板放入虚空。
强制前置检查
在开始计划或编码之前,请遵循 motion-graphics 的前置检查门控。如果缺失,请询问:
您想要哪种格式:4:3 半屏 Instagram 嵌入 还是 9:16 全屏 Instagram?以及哪种背景:暖光、洁净暗色、浅色网格 或 深色网格?
不要默默地默认选择 9:16 或暗色。如果用户将选择权委托给您,请使用暖光。
绝对视觉禁令
本技能绝不引入:霓虹、发光、光晕、发光的边缘、彩色阴影、渐变球体、径向色彩渐变、青紫渐变、玻璃拟态 或 赛博朋克灯光。摄像机移动不能将一个克制的场景变成由编码美学演示的 AI 氛围。产品点缀保持平面和克制。
强制已核准参考审查门控
在计划或编码之前完成:
- 检查最新 3-5 个与同一项目、产品、宽高比、放置位置或视觉机制相关的已核准渲染。
- 打开源构图,检查摄像机关键帧、时间、间距、排版、颜色、密度、进入、退出和结束停顿。
- 检查实际剪辑或代表性帧;仅文件名是不够的。
- 盘点真实资产:徽标、吉祥物、截图、录制、素材和先前输出。
- 编写一个简短的行板图,解释该剪辑如何延续已核准的系统。
- 如果不存在项目参考,则使用锁定后备方案:暖白色实体/编辑性世界、深色油墨、柔和中性色、一个克制的平面品牌点缀、中性阴影以及零装饰性效果。
参考优先级:同一视频 → 同一产品/系列 → 同一宽高比/使用场景 → 其他已核准仓库示例 → 锁定后备方案。
规范图库:https://github.com/Liamrjohnston/remotion-motion-graphics-skill
最新的已核准作品是基线,而非可选的灵感来源。不要为了新奇而发明新的美学风格。
核心理念
构建一个比视口更大的世界。在动作上紧密开场,在其完成时保持,揭示上下文,移动到对比/收获点,然后稳定下来。
面板可以存在,但它们必须共享一个世界并具有有意义的空间关系。避免孤立的卡片在空白空间中独立出现。
摄像机云台
使用单个共享关键帧时间线来控制焦点和缩放:
const ease = Easing.inOut(Easing.cubic);
const KEY_T = [0, 46, 62, 78, 96, 132, 174, TOTAL_FRAMES];
const fx = interpolate(frame, KEY_T, [/* 焦点 x */], {
easing: ease,
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
const fy = interpolate(frame, KEY_T, [/* 焦点 y */], {
easing: ease,
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
const z = interpolate(frame, KEY_T, [/* 缩放 */], {
easing: ease,
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
<AbsoluteFill style={{backgroundColor: BG}}>
<div
style={{
position: 'absolute',
transform: `translate(${VIEW_W / 2 - fx}px, ${VIEW_H / 2 - fy}px) scale(${z})`,
transformOrigin: `${fx}px ${fy}px`,
}}
>
{/* 整个世界坐标中的场景 */}
</div>
</AbsoluteFill>
- 尺寸来自已确认的格式,而不是隐藏的默认值。
- 世界宽度通常是视口宽度的 2-2.5 倍。
- 重复的相邻关键帧创建停顿。
- 摄像机移动通常需要 14-24 帧。
- 以两个几乎相同的关键帧结束,以实现稳定的编辑器停顿。
- 摄像机、光标、效果和连接的对象保持在一个坐标系中。
编排
- 在已经移动的动作上紧密开场。
- 在主动作完成时保持。
- 揭示其更大的系统。
- 移动到对比/收获点。
- 拉出镜头,同时支持对象以交错序列完成。
- 稳定下来,以便干净地剪切。
规则:
- 摄像机移至下一个动作;动作在停顿期间完成。
- 每个节拍一个主动作。
- 仅使用微动来表示状态:打字、滴答、检查、播放、进度、光标移动。
- 优先使用连续变换而非场景替换。
- 优先使用平滑移动而非急促甩动。
- 运动解释因果关系;它从不弥补薄弱的概念。
真实性和文本
- 尽可能使用真实的徽标、素材、截图、录制、UI 和已验证的数据。
- 绝不使用通用彩色方块、虚假标记、虚构的 UI 或虚假的指标。
- 产品名称、文件名、计数器、命令、进度和真实的 UI 文本是允许的。
- 不要重复叙述的句子或添加说明性徽章,因为画面感觉空旷。
首轮拒绝门控
在准备好之前,不要展示渲染结果,直到每个答案都是“否”:
- 格式或背景是否未经确认?
- 是否有任何霓虹、发光、彩色灯光、渐变冲刷、玻璃面板或 AI 氛围编码式处理?
- 场景是否是虚空中的一组孤立的通用卡片?
- 是否在没有用户选择或已核准参考要求的情况下使用了暗色?
- 摄像机移动是否是在装饰而非引导因果关系?
- 当可获取时,是否缺少真实资产?
- 在选定的 Instagram 放置位置中,关键元素是否不可读?
- 结果是否无法匹配已核准参考的间距、密度、材质和运动节奏?
私下修改,直到通过门控。
质量保证和交付
- 为开场、每个摄像机的目标位置、过渡、收获点和结束停顿渲染静止帧。
- 与已核准参考比较构图、密度、身份、材质克制和精致度。
- 验证真实资产保持可读性。
- 验证 保持→移动→保持 且没有动作在移动过程中被隐藏。
- 检查完整 MP4 中是否有空白移动、裁剪、死帧、通用填充、霓虹/发光和弱的结束停顿。
- 仅当其看起来与相同的已核准视觉系统一致时才交付。
技术约束
- 使用
useCurrentFrame()、spring()和interpolate()驱动运动;不使用 CSS 动画。 interpolate()的输入范围必须严格递增。- 保持世界适中;大型模糊/阴影层代价高昂且通常违反视觉规则。
- 对滴答数据使用表格数字。