after-effects

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

After Effects Animation Principles

After Effects 动画原则

Implement all 12 Disney animation principles using After Effects' powerful animation tools.
利用After Effects强大的动画工具实现全部12条迪士尼动画原则。

1. Squash and Stretch

1. 挤压与拉伸

javascript
// Expression for automatic squash/stretch
s = transform.scale[1];
x = 100 + (100 - s) * 0.5;
[x, s]
Or manually:
  • Keyframe Scale X and Y inversely
  • When Y compresses, X expands
  • Maintain volume (X * Y ≈ constant)
javascript
// Expression for automatic squash/stretch
s = transform.scale[1];
x = 100 + (100 - s) * 0.5;
[x, s]
或者手动操作:
  • 为Scale X和Scale Y设置反向关键帧
  • 当Y轴压缩时,X轴展开
  • 保持体积不变(X * Y ≈ 恒定值)

2. Anticipation

2. 预备动作

Timeline structure:
  • 0-10f: Wind-up (crouch, pull back)
  • 10-12f: Transition
  • 12-30f: Main action
  • 30-40f: Settle
Use Easy Ease on anticipation keyframes for smooth wind-up.
时间轴结构:
  • 0-10帧:蓄力阶段(下蹲、向后拉)
  • 10-12帧:过渡阶段
  • 12-30帧:主要动作
  • 30-40帧:稳定阶段
为预备动作的关键帧添加Easy Ease,实现流畅的蓄力效果。

3. Staging

3. 舞台布局

Techniques:
  • Use depth of field (Camera > Depth of Field)
  • Apply blur to background layers
  • Use vignettes to direct focus
  • Adjust opacity of secondary elements
  • Light the main subject brighter
技巧:
  • 使用景深效果(Camera > Depth of Field)
  • 为背景图层添加模糊效果
  • 使用暗角引导视觉焦点
  • 调整次要元素的不透明度
  • 为主体设置更亮的灯光

4. Straight Ahead / Pose to Pose

4. 逐帧动画 / 关键姿势动画

Pose to Pose (recommended):
  1. Set keyframes at key poses
  2. Fill in breakdowns
  3. Use Graph Editor to adjust timing
Straight Ahead:
  • Animate frame-by-frame
  • Use Onion Skin (Layer > Onion Skin)
推荐使用关键姿势动画:
  1. 在关键姿势处设置关键帧
  2. 填充过渡帧
  3. 使用Graph Editor调整时间节奏
逐帧动画:
  • 逐帧制作动画
  • 使用洋葱皮工具(Layer > Onion Skin)

5. Follow Through and Overlapping Action

5. 跟随动作与重叠动作

javascript
// Delay expression for child layers
thisComp.layer("Parent").transform.position.valueAtTime(time - 0.05)
Or:
  • Offset child keyframes by 2-5 frames
  • Use parenting with delayed wiggle
  • Apply spring expression to end values
javascript
// Delay expression for child layers
thisComp.layer("Parent").transform.position.valueAtTime(time - 0.05)
或者:
  • 将子图层的关键帧偏移2-5帧
  • 结合父子关系与延迟wiggle效果
  • 为结束值应用弹簧表达式

6. Slow In and Slow Out

6. 缓入缓出

  • Select keyframes > F9 (Easy Ease)
  • Graph Editor > Adjust bezier handles
  • Steeper curve = faster movement
  • Flatter curve = slower movement
javascript
// Custom ease expression
ease(time, inPoint, outPoint, startValue, endValue)
  • 选中关键帧 > 按F9(Easy Ease)
  • 在Graph Editor中调整贝塞尔手柄
  • 曲线越陡峭,运动速度越快
  • 曲线越平缓,运动速度越慢
javascript
// Custom ease expression
ease(time, inPoint, outPoint, startValue, endValue)

7. Arc

7. 弧线运动

Techniques:
  • Draw motion path with Pen tool
  • Use Position property's bezier handles
  • Layer > Transform > Auto-Orient
  • Apply path from shape layer to position
技巧:
  • 使用钢笔工具绘制运动路径
  • 利用Position属性的贝塞尔手柄
  • 图层 > 变换 > 自动定向(Auto-Orient)
  • 将形状图层的路径应用到Position属性

8. Secondary Action

8. 次要动作

  • Animate main action first
  • Add secondary on separate layer/property
  • Offset timing slightly
  • Secondary should complement, not compete
Example: Character waves → Hair follows → Clothing shifts
  • 先制作主要动作动画
  • 在单独图层/属性上添加次要动作
  • 稍微偏移时间节奏
  • 次要动作应辅助而非干扰主要动作
示例:角色挥手 → 头发跟随摆动 → 衣物随之晃动

9. Timing

9. 时间节奏

FramesFeel
2-4Snappy, instant
6-8Quick, energetic
12-15Normal pace
20-30Slow, heavy
40+Dramatic, weighted
Adjust composition frame rate for overall feel (24fps cinematic, 30fps smooth).
帧数感受
2-4明快、瞬间
6-8快速、充满活力
12-15正常节奏
20-30缓慢、沉重
40+戏剧性、有分量
调整合成帧率以营造整体氛围(24fps电影感,30fps流畅感)。

10. Exaggeration

10. 夸张表现

javascript
// 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:
  • Larger scales
  • Wider rotations
  • More dramatic timing
javascript
// 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%:
  • 更大的缩放比例
  • 更夸张的旋转角度
  • 更具戏剧性的时间节奏

11. Solid Drawing

11. 扎实造型

  • Use 3D layers for depth
  • Apply cameras with perspective
  • Animate Z position
  • Use light and shadow
  • Consider volume in all poses
  • 使用3D图层营造深度
  • 应用带透视效果的摄像机
  • 为Z轴位置制作动画
  • 使用灯光与阴影
  • 在所有姿势中考虑体积感

12. Appeal

12. 吸引力

Design principles:
  • Clear silhouettes at every pose
  • Smooth curves over sharp angles
  • Consistent character proportions
  • Pleasing timing patterns
  • Clean, readable motion paths
设计原则:
  • 每个姿势都有清晰的轮廓
  • 优先使用平滑曲线而非尖锐角度
  • 保持角色比例一致
  • 采用令人愉悦的时间节奏模式
  • 简洁、易读的运动路径

Essential Expressions

常用表达式

javascript
// 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);
javascript
// 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);

Export Options

导出选项

  • Lottie: Bodymovin plugin → JSON
  • GIF: Media Encoder
  • Video: H.264, ProRes
  • Sprite Sheet: Scripts > Render Sprite Sheet
  • Lottie:Bodymovin插件 → JSON格式
  • GIF:Media Encoder
  • 视频:H.264、ProRes
  • 精灵图:脚本 > 渲染精灵图(Scripts > Render Sprite Sheet)