Communitygithub.com

theatlasteam/motion-design-skill

创建定向产品动态图形、动态排版、交互式HTML动画原型、iOS风格滚轮选择器和滚动计数器、确定性HyperFrames影片、3D设备发布宣传片及本地MIDI配乐。适用于发布视频、UI展示、动画控件、提示栏镜头移动、HTML到视频工作流,以及与产品动作同步的音乐。

motion-design-skill 是什么?

该技能专注于产品级别的运动设计,旨在创建连贯的叙事故事,而非一系列无关的静态卡片。它支持多种输出形式,包括HTML/CSS/JavaScript原型、MP4视频和MIDI音频,覆盖从iOS风格滚轮和动态排版到3D设备旋转和全片电影等场景。技能强调“导演运动而非装饰”,提供了详细的运动曲线、弹簧物理和确定性渲染参考,确保动画在交互和录制模式下表现一致。它鼓励使用AI辅助(如Gemini)进行创意构思,但要求用户遵守资产权利规则,并始终优先使用自包含的本地资源。通过内置的控件库和可复用的运动核心模块,该技能帮助开发者高效地构建从UI交互到品牌宣传片的高质量动画,同时保持对性能、可访问性和音频同步的精细控制。

兼容平台~Claude Code~Codex CLI✓Cursor✓Gemini CLI
npx skills add theatlasteam/motion-design-skill

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

产品运动设计

制作一个连贯的故事,而非无关精美卡片的幻灯片。通过 意图 → 动作 → 结果 → 产品价值 → 品牌 来保持观众对关注对象的注意力。

选择一个起点

阅读相关示例的README,然后阅读其源代码。路径基于此技能解析;切勿假定先前会话中的文件仍然存在。

任务从这里开始
类似iOS的滚轮、滚动数字、分段、标尺examples/controls/README.md
动态排版、扭曲的UI入场、光标引导展示examples/relay/README.md
大型组合器、打字关联的相机、发送→生成结果examples/composer/README.md
短9:16真3D设备旋转examples/device-studio/README.md
完整的22秒移动端发布examples/milo-launch/README.md
MIDI作曲、采样乐器、混音examples/midi-score/README.md

阅读 references/direction.md 了解场景安排和节奏,references/deterministic-rendering.md 了解视频导出前的准备,以及 references/asset-rights.md 了解发布或重新分发资产前的注意事项。官方第三方灵感链接位于 references/gemini.md 中;这些视频仅供参考,并非捆绑的开源资产。

确立镜头

  1. 复用已提供的产品、受众、宽高比、时长和语调。仅询问缺少且会改变工作的信息。对于虚构产品,选择一个连贯的概念,而非询问每个细节。
  2. 在对产品声明之前,先检查真实的产品/品牌资料。切勿编造能力、指标、用户评价或产品截图。
  3. 对于新的视觉方向,除非明确要求制作完整影片,否则先制作一个2-3秒的HTML镜头。在扩展已批准的编排时保持其风格。
  4. 默认使用自包含的HTML/CSS/JavaScript作为原型。HTML请求并非执行昂贵视频渲染、上传或云发布的许可。仅在需要或要求时更改技术栈。
  5. 在编码前简要说明动作序列和相机交接。保持每个镜头的焦点对象清晰。

导演运动,而非装饰

  • 在实际字体加载后测量文字。当新字到达时,重新排列前面的文字,保持构图中心。
  • 分离位置、不透明度和模糊曲线。使运动早期可见,并在最终过冲前清除模糊。刻意编排退出动作,而非默认淡出。
  • 使用简短、可读的过冲和稳定;不要让每个物体都摇摆。examples/relay/scripts/motion-core.mjs 包含经过测试的文字/相机弹簧、贝塞尔曲线和圆柱翘曲函数。
  • 当需要弯曲效果时,使用多个水平条带翘曲面板;单一平面旋转并非弯曲表面。从一个进度值驱动两个轴上的对角线移动。
  • 缩放至实际动作,而非显示不可读的小仪表盘。在同一个变换坐标系中移动光标和UI,包括热点补偿。
  • 展示悬停→按下→释放→真实状态变化。拖动需要拾取、移动、落点和更新的相关状态。让结果跟随导致它的动作。
  • 保持着色器时间与场景时钟同步。说明WebGL何时回退;切勿将静态渐变称为正在运行的着色器。

交互式控件与录制动效

使用内置控件,而非为每个视频重新构建物理效果。

  • setValue(value) 是交互式的:从当前展示位置和速度积分弹簧。允许输入中断它。
  • renderAt(value) 是确定性的:立即设置一个分数组件值。在视频中,从帧/帧率推导此值;捕获期间不要运行实时弹簧或挂钟循环。
  • 对于滚轮,在列表中间显示固定的中心选择窗口和每侧两个弯曲选项。根据到中心的分数距离计算位置、倾斜、缩放和不透明度。
  • 使用指针捕获进行1:1的拖动追踪。释放时,投射动量,吸附到有效项目,并将速度带入稳定过程。应用渐进边界阻力。
  • 支持滚轮/触控板、键盘、聚焦、可访问的名称/当前值、窄视口以及减少运动。没有明确需求时不要播放声音或触觉反馈。
  • 在直接操作时停止外部演示时间线;两个时钟不得为同一组件竞争。

组合器与相机

当输入框为空时,显示两端圆角。在输入过程中扩展有限字段。测量文本和发送位置;跟随增长中的文本,从开始处加速并刹车,停在发送处。保护一个单独的文本区域,使字母永远不会穿过按钮下方。发送后,显示一个独立编排的结果及其内部的有意义动作;不要将输入变形为输出。使用通用Canvas Lab示例进行编排,不要将其作为真实模型行为或延迟的声明。

真3D设备镜头

使用真实的GLB和原始显示网格,而非PNG帧或浮动的DOM屏幕。将屏幕和机身保持在同一骨架中。使用工作室柔光箱反射、分开的金属/玻璃/光学材质、更长焦相机、缓动旋转以及可读的前向暂停。在屏幕纹理中动画化应用动作,使触摸指示器遵循透视。同时捕获DOM排版和WebGL以供视频输出。

参考iPhone GLB 未包含 且并非MIT许可。需要用户单独许可的副本或明确许可的替代品。在使用不同模型前检查网格名称、显示法线、UV、缩放和构图。切勿将示例称为官方Apple CAD、官方Apple渲染或路径追踪。

声音,仅在被请求时

阅读 references/music.md。当要求MIDI/乐器时,优先使用原创多轨MIDI→单独获得的许可SoundFont→渲染的分轨→混音;不要强制使用付费神经API。将稀疏的声音重音与实际画面线索绑定。保持音乐、音效和语音独立可编辑。未经用户聆听/评审,不要声称配乐是好的或已批准的。测量值和提示表并非完成、试听过的音轨。

对于实时HTML,对音频进行手势门控,并使视觉时钟独立于音频 resume() promise 或停滞的音频时钟。音频失败不得冻结动画。对于离线视频,将样本对齐到时间线,而非将实时浏览器音频流作为唯一主轨录制。

验证与交付

  1. 运行相关的数学/功能测试。检查正向、反向、任意和重复寻址;光标命中;状态因果性;键盘/拖动中断;390px布局;以及JS错误。
  2. 尊重用户在视觉审查方面的范围。切勿声称渲染或元数据检查是视觉检查。如果请求视觉QA,实际检查代表性入场/中间/交互/退出帧,并修复重叠、裁剪、不可读的副本以及错误的图层。
  3. 对于MP4,实际渲染并验证时长、尺寸、帧率、帧计数、解码和音频存在。不要交付指令并将其称为导出的视频。
  4. 交付请求的HTML或MP4,以及可重现的源代码、精确设置、资产权利说明和诚实的限制。不要静默添加音乐。
  5. 将私有凭证、会话URL、操作系统资产、下载的商业模型以及包含受限资产的生成包保留在公共仓库之外。根MIT许可涵盖原始代码/文档,而非每个依赖或外部资产。

相关技能