after-effects by dylantarre/animation-principles
npx skills add https://github.com/dylantarre/animation-principles --skill after-effects使用 After Effects 强大的动画工具实现所有 12 条迪士尼动画原理。
// Expression for automatic squash/stretch
s = transform.scale[1];
x = 100 + (100 - s) * 0.5;
[x, s]
或手动操作:
时间轴结构:
在预备动作关键帧上使用缓入缓出以获得平滑的蓄力效果。
技巧:
姿势到姿势(推荐):
逐帧动画:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
// Delay expression for child layers
thisComp.layer("Parent").transform.position.valueAtTime(time - 0.05)
或:
选择关键帧 > F9(缓入缓出)
图表编辑器 > 调整贝塞尔手柄
曲线越陡峭 = 运动越快
曲线越平缓 = 运动越慢
// Custom ease expression ease(time, inPoint, outPoint, startValue, endValue)
技巧:
示例:角色挥手 → 头发跟随 → 衣服摆动
| 帧数 | 感觉 |
|---|---|
| 2-4 | 干脆利落,瞬间完成 |
| 6-8 | 快速,充满活力 |
| 12-15 | 正常节奏 |
| 20-30 | 缓慢,沉重 |
| 40+ | 戏剧性,有分量感 |
调整合成帧率以获得整体感觉(24fps 电影感,30fps 流畅)。
// Overshoot expression
amp = 15;
freq = 3;
decay = 5;
t = time - key(numKeys).time;
if (t > 0) {
value + amp * Math.sin(t * freq * Math.PI * 2) / Math.exp(t * decay);
} else {
value;
}
将数值推到超出真实范围 20-50%:
设计原则:
// Wiggle
wiggle(frequency, amplitude)
// Loop
loopOut("cycle")
// Time remap
timeRemap = linear(time, 0, duration, 0, 1)
// Bounce
n = 0;
if (numKeys > 0) {
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n == 0) t = 0;
else t = time - key(n).time;
amp = 80; freq = 3; decay = 8;
value + amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
每周安装量
108
代码仓库
GitHub 星标数
20
首次出现
2026年1月24日
安全审计
安装于
codex97
opencode96
gemini-cli93
cursor90
github-copilot87
cline77
Implement all 12 Disney animation principles using After Effects' powerful animation tools.
// Expression for automatic squash/stretch
s = transform.scale[1];
x = 100 + (100 - s) * 0.5;
[x, s]
Or manually:
Timeline structure:
Use Easy Ease on anticipation keyframes for smooth wind-up.
Techniques:
Pose to Pose (recommended):
Straight Ahead:
// Delay expression for child layers
thisComp.layer("Parent").transform.position.valueAtTime(time - 0.05)
Or:
Select keyframes > F9 (Easy Ease)
Graph Editor > Adjust bezier handles
Steeper curve = faster movement
Flatter curve = slower movement
// Custom ease expression ease(time, inPoint, outPoint, startValue, endValue)
Techniques:
Example: Character waves → Hair follows → Clothing shifts
| Frames | Feel |
|---|---|
| 2-4 | Snappy, instant |
| 6-8 | Quick, energetic |
| 12-15 | Normal pace |
| 20-30 | Slow, heavy |
| 40+ | Dramatic, weighted |
Adjust composition frame rate for overall feel (24fps cinematic, 30fps smooth).
// Overshoot expression
amp = 15;
freq = 3;
decay = 5;
t = time - key(numKeys).time;
if (t > 0) {
value + amp * Math.sin(t * freq * Math.PI * 2) / Math.exp(t * decay);
} else {
value;
}
Push values 20-50% beyond realistic:
Design principles:
// Wiggle
wiggle(frequency, amplitude)
// Loop
loopOut("cycle")
// Time remap
timeRemap = linear(time, 0, duration, 0, 1)
// Bounce
n = 0;
if (numKeys > 0) {
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n == 0) t = 0;
else t = time - key(n).time;
amp = 80; freq = 3; decay = 8;
value + amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
Weekly Installs
108
Repository
GitHub Stars
20
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex97
opencode96
gemini-cli93
cursor90
github-copilot87
cline77
前端设计技能指南:避免AI垃圾美学,打造独特生产级界面
44,300 周安装