mcpField
D
disney-animation-rule-skill

disney-animation-rule-skill

github.com/vibe-motion创意与媒体1.4k677 次安装3 周前更新
代码仓库

关于 disney-animation-rule-skill

面向设计师和开发者的程序化动画 skill,强调动作意图、重量感、节奏与确定性。它以事件姿势和动作层级组织动画,而非仅依赖物理模拟或缓动曲线。

主要功能

  1. 01规划语义动作阶段
  2. 02选择适用的动画原则
  3. 03确定性地计算每帧状态
  4. 04保持接触与动作连续
  5. 05检查动作可读性

适用场景

  1. 01设计易读的角色跳跃
  2. 02制作按钮按压或镜头运动
  3. 03支持乱序帧渲染

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vibe-motion/skills --skill disney-animation-rule-skill

安装后在 Claude Code 中输入/disney-animation-rule-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
clawd-jump-case-study.md
implementation-patterns.md
twelve-principles.md

详细介绍

程序化动画的迪士尼动画原则

设计动作时,要让意图、重量感、节奏和个性清晰可辨。将物理模拟和插值视为输入,而非最终动画。

不要在每个镜头中都强行套用全部 12 条原则。只选用能解决感知问题的最少原则。

工作流

  1. 在调整动作前,检查场景、代码、输入、渲染器和项目约束。
  2. 用一句话描述动作:主体、意图、力量、目的地和期望的感觉。
  3. 确定主要动作,并按优先级排列所有次要动作。
  4. 先划分语义阶段并确定关键姿势,再选择缓动曲线。
  5. 从 references/twelve-principles.md 中选择相关原则。
  6. 基于帧或时间以及显式输入,定义一个确定性的状态求值器。
  7. 从主要动作或语义事件推导形变、跟随动作、强调效果和特效。
  8. 在具有代表性的帧上调整时序和间距,然后检查完整动作。
  9. 移除那些掩盖姿势薄弱、时序不清、接触不稳或轮廓不佳的特效。

有关详细的工程模式,请阅读 references/implementation-patterns.md。有关作为动机的跳跃对比案例,请阅读 references/clawd-jump-case-study.md。

划分动作

定义事件姿势,例如:

  • 静止或准备
  • 预备动作
  • 发力或起跳
  • 经过姿势
  • 最高点、停顿或决策点
  • 接触或撞击
  • 超调
  • 稳定或恢复

根据动作调整用语。按下按钮的动作可以包含静止、按压、接触、超调和稳定。镜头移动可以包含建立镜头、加速、揭示、减速和稳定。

对于每个阶段,明确指定:

  • 持续时间或时长比例
  • 位置和路径
  • 各边界处的速度
  • 缩放、旋转和支点
  • 接触约束
  • 轮廓或可读性目标
  • 次要动作的滞后
  • 可选的强调效果,例如拖影、眨眼、粒子或镜头抖动

优先使用阶段表或显式常量,而不是不透明的缓动表达式。

构建动作层级

按以下顺序构建:

  1. 保留功能约束、接触、边界和输入行为。
  2. 将主体渲染为简单形状,确保主要路径和时序清晰可辨。
  3. 围绕力量和接触事件添加姿势变化和形变。
  4. 通过受控的相位偏移添加后续动作和重叠动作。
  5. 添加能够强化主要动作、但绝不与之争抢注意力的次要动作。
  6. 只在速度、撞击或清晰度有需要时添加强调效果。

确保主要动作在没有动态模糊、粒子、轨迹或声音的情况下也能成立。

确保确定性

  • 将动画状态计算为 state = f(frameOrTime, inputs, parameters)。
  • 让求值不受先前渲染结果和渲染顺序影响。
  • 在插值和导数计算中保留小数帧。
  • 使用稳定标识符为程序化变化设置种子;渲染时绝不使用未设种子的随机数。
  • 通过解析方式或对纯状态函数采样来推导速度和加速度。
  • 如果后续变化会破坏动作,则在有意设置的承诺事件处对交互输入进行快照。
  • 在挤压、拉伸、反冲或稳定过程中固定接触锚点,除非有意设置滑动效果。
  • 保持各阶段边界处的位置和速度连续,除非有意设置的撞击、剪切或突变需要不连续。
  • 根据主体大小、移动距离、视口或场景比例对阈值和振幅进行归一化。
  • 限制夸张程度,以保护可读性、几何形状和交互约束。

对于 Remotion,应确保每一帧都能独立计算,因为帧可能并行且乱序渲染。对于禁止在 3D 环境中使用 Remotion 的基于浏览器的 3D 工作,请使用项目的 Puppeteer 截图工作流。

根据感知调整

判断间距,而不只是曲线:

  • 样本间距越大,读起来速度越快。
  • 短暂准备后间距大幅变化,会让动作显得有力。
  • 在顶点或决策点附近缩小样本间距,可以突出重点。
  • 快速接触后接着压缩与恢复,会让动作显得有重量。
  • 末端动作延迟,会带来柔韧感和动势。
  • 清晰的轮廓比细节更能让画面一目了然。

有意识地运用不对称。上升和下降相同、所有通道的缓动完全一致,以及各身体部位同步运动,往往会显得机械。

审查清单

  • 仅看几个静止帧,也能正确读懂动作。
  • 确认预备动作指向即将发生的动作方向。
  • 确认路径、朝向和形变与速度和作用力一致。
  • 确认冲击强度会随进入速度或作用力变化。
  • 确认次要动作比主要动作开始得更晚、结束得也更晚。
  • 确认停顿是有意设计的,且不会冻结所有通道。
  • 确认响应式布局在不同缩放比例和终点下保留相同的动作逻辑。
  • 确认没有用特效来弥补薄弱的姿势或不连贯的过渡。
  • 确认相同输入始终会渲染出相同的每一帧。

避免这些默认做法

  • 不要让所有属性都使用同一个线性进度值。
  • 不要认为对称抛物线自然就能形成令人信服的跳跃。
  • 不要在没有明确作用力和支点的情况下添加通用弹跳或弹性缓动。
  • 不要持续应用挤压与拉伸;应集中在加速和接触前后。
  • 不要让次要动作先于主要动作。
  • 不要为了遵循物理真实感而牺牲易读性。
  • 不要同时夸大所有通道。
  • 不要在无法按顺序渲染的渲染器中引入有状态的逐帧模拟。

评论

支持 Markdown