blender_crash_course

第10章:动画基础

开篇段落

动画是赋予3D模型生命的艺术。本章将引导您进入Blender动画的世界,从最基础的关键帧概念开始,逐步掌握时间轴操作、曲线编辑以及经典的动画原则。与静态的CAD设计不同,动画需要您思考时间维度——物体如何随时间变化、运动如何产生情感、节奏如何影响观感。通过本章学习,您将建立扎实的动画基础,为后续的角色动画和复杂动作制作做好准备。

学习目标

完成本章后,您将能够:

关键帧动画原理

什么是关键帧

关键帧(Keyframe)是动画的基石,它记录了物体在特定时间点的状态。Blender会自动计算关键帧之间的过渡,这个过程称为插值(Interpolation)。

时间轴表示:
Frame 1    Frame 10   Frame 20   Frame 30
  [A]--------[B]--------[C]--------[D]
  位置1     位置2      位置3      位置4
  
  [方块] = 关键帧
  ------ = 自动插值

在Blender中,几乎所有属性都可以设置关键帧:

插值类型详解

Blender提供多种插值模式,每种都有其特定用途:

  1. 线性插值(Linear)
    • 匀速运动,机械感强
    • 适用于机器人、机械装置
    速度图:
    |-------- (恒定速度)
    +---------> 时间
    
  2. 贝塞尔插值(Bezier)
    • 默认插值类型,平滑自然
    • 可通过控制手柄精确调整曲线
    速度图:
    |    ___
    |  /     \
    | /       \
    +-----------> 时间
    
  3. 恒定插值(Constant)
    • 无过渡,瞬间跳变
    • 适用于开关、闪烁效果
    值变化:
    |----┐
    |    |
    |    └----
    +---------> 时间
    

设置和管理关键帧

快捷键系统

关键帧类型

自动关键帧: 启用自动关键帧功能后,任何变换操作都会自动创建关键帧。这在制作复杂动画时极大提高效率,但需要谨慎使用避免意外修改。

时间轴与曲线编辑器

时间轴界面

时间轴是动画制作的指挥中心,位于Blender界面底部:

时间轴布局:
┌─────────────────────────────────────────┐
│ ◀ ▶ ⏸ ⏺  | Frame: 24 | Start: 1 | End: 250 │
├─────────────────────────────────────────┤
│ 1    10    20    30    40    50    60   │
│ |═══○═════════════════════════════════| │
└─────────────────────────────────────────┘

○ = 当前帧指示器
═ = 时间范围

核心功能

Dope Sheet(摄影表)

Dope Sheet提供动画的整体视图,显示所有关键帧的分布:

Dope Sheet视图:
Object Name    |1    10    20    30    40
───────────────┼──────────────────────────
Cube           |◆     ◆     ◆     ◆
├─ Location    |◇     ◇           ◇
├─ Rotation    |      ◇     ◇     
└─ Scale       |◇           ◇     ◇

◆ = 汇总关键帧
◇ = 具体属性关键帧

主要用途

Graph Editor(曲线编辑器)

Graph Editor是精确控制动画的核心工具,将动画表现为数学曲线:

F-Curve示例:
值 ↑
   │     ╱╲
   │   ╱    ╲
   │ ╱        ╲___
   │╱              ╲
   └────────────────→ 时间
   
控制点和手柄:
   ○━━━●━━━○
   左柄 关键帧 右柄

关键操作

修改器系统: Graph Editor支持给曲线添加修改器:

NLA Editor基础

NLA(Non-Linear Animation)编辑器允许您像编辑视频一样编辑动画:

NLA轨道结构:
Track 1  |[Walk Cycle][Walk Cycle][Walk Cycle]
Track 2  |         [Jump]     [Land]
Track 3  |                          [Idle Loop]

核心概念

动画十二原则

迪士尼动画师在1930年代总结的十二原则至今仍是动画制作的黄金法则。让我们看看如何在Blender中应用这些原则。

1. 挤压与拉伸(Squash and Stretch)

物体在运动中会产生形变,这赋予了动画生命力和弹性感。

弹球示例:
     ○        正常
     ↓
    ___       挤压(接触地面)
   (   )
     ↑
     |        拉伸(快速运动)
     ○

Blender实现

2. 预备动作(Anticipation)

主要动作前的反向运动,帮助观众预期即将发生的事。

跳跃预备:
站立 → 下蹲(预备) → 跳起
 |        ↓          ↑
 |       ___        / \
 |      /   \      /   \

应用场景

3. 演出布局(Staging)

确保动画意图清晰,观众注意力集中在重要元素上。

Blender技巧

4. 连续动作与姿态到姿态(Straight Ahead & Pose to Pose)

两种动画制作方法:

Pose to Pose工作流:
关键姿势1 ---- 中间帧 ---- 关键姿势2
   A      (自动生成)        B

5. 跟随与重叠动作(Follow Through & Overlapping)

不同部位以不同速率运动,创造自然的延迟效果。

手臂摆动时序:
肩膀先动 → 上臂跟随 → 前臂跟随 → 手掌最后
  1          2          3          4

Blender实现

6. 缓入缓出(Slow In and Slow Out)

运动在开始和结束时较慢,中间较快。

速度曲线:
速度 │      ╱─╲
    │    ╱     ╲
    │  ╱         ╲
    │╱             ╲
    └───────────────→ 时间
    缓入   快速   缓出

Graph Editor调整

7. 弧线运动(Arcs)

自然运动通常沿弧线而非直线。

手臂摆动路径:
     ╱╲
   ╱    ╲    (弧线)
 ╱        ╲
●──────────● (不自然的直线)

Blender技巧

8. 次要动作(Secondary Action)

支撑主要动作的附加动作,增加趣味性。

示例

9. 时间节奏(Timing)

关键帧的间隔决定动作的速度和情绪。

相同距离,不同节奏:
快速(紧张): ●●●●●●●●●
均匀(平稳): ●  ●  ●  ●  ●
缓慢(轻松): ●    ●    ●    ●

10. 夸张(Exaggeration)

适度夸大动作,使其更有表现力。

夸张程度对比

11. 扎实的绘图(Solid Drawing)

在3D中体现为正确的模型结构和权重。

Blender要点

12. 吸引力(Appeal)

让角色和动画具有魅力,不一定是”可爱”,而是”有趣”。

提升吸引力

基础运动规律

理解物理运动规律是创建可信动画的关键。即使是夸张的卡通动画,也需要基于真实物理规律进行艺术化处理。

时间与间距(Timing and Spacing)

时间(Timing)决定动作持续多久,间距(Spacing)决定每帧之间的位置变化。

相同时间,不同间距:
匀速运动:  ●   ●   ●   ●   ●
加速运动:  ●  ●  ● ● ●●●
减速运动:  ●●● ● ●  ●  ●

关键概念

缓入缓出的数学原理

不同的缓动函数创造不同的运动感受:

常见缓动曲线:
Linear:     ╱      (匀速)
Ease In:    ╱      (加速)
           ╱
Ease Out:   ╱      (减速)
           ╱
Ease InOut: ╱      (先加速后减速)
           ╱

Blender中的应用

  1. Graph Editor手柄调整
    • 水平手柄 = 速度为零(停顿)
    • 垂直手柄 = 瞬间变化
    • 斜向手柄 = 持续运动
  2. 插值模式选择
    • T键切换插值类型
    • Shift+E设置缓动强度

弧线与路径

自然界中的运动很少是完美的直线,理解弧线运动对动画至关重要。

投掷物体的轨迹:
      ╱╲
    ╱    ╲
  ╱        ╲
╱            ╲
重力影响下的抛物线

创建弧线运动的方法

  1. 手动关键帧:在中间位置添加关键帧调整
  2. 路径约束:创建曲线路径,物体沿路径运动
  3. IK链:使用反向运动学自然产生弧线
  4. 物理模拟:让重力自然创建弧线

重量与质量表现

不同重量的物体运动方式不同,这通过时间和间距来表现:

重物 vs 轻物:
重物起动:●  ●   ●    ●     ●      (缓慢加速)
轻物起动:●    ●      ●        ●    (快速达到最大速度)

重物停止:●      ●     ●    ●   ●  ● (缓慢减速)
轻物停止:●        ●      ●    ●    (快速停止)

表现技巧

力的传递

动画中的力不是瞬间传递的,而是有延迟和衰减:

链式反应:
冲击点 → 第一节 → 第二节 → 第三节
  ●        ●        ●        ●
  ↓       0.1s     0.2s     0.3s
 立即    轻微延迟  中等延迟  明显延迟

Blender实现

  1. 骨骼链延迟
    # 伪代码示例
    for i, bone in enumerate(bone_chain):
        bone.keyframe_insert(frame=base_frame + i*2)
    
  2. 波浪式传播
    • 使用Wave修改器
    • 手动偏移关键帧
    • 使用动力学模拟

摩擦与阻力

摩擦力影响物体的运动方式:

不同表面的滑动:
冰面:    ●━━━━━━━━━━━━━→ (几乎不减速)
光滑地面:●━━━━━━→        (缓慢减速)
粗糙地面:●━━→            (快速停止)

动画要点

惯性与动量守恒

物体倾向于保持其运动状态:

急停时的惯性表现:
主体停止 → 附属部分继续运动 → 回弹 → 稳定
   ●          ●→●←●
   ↓          头发/衣物/配饰
  停止        继续摆动

实践应用

本章小结

本章我们系统学习了Blender动画的基础知识:

  1. 关键帧系统:理解了关键帧的概念、插值类型和管理方法,这是所有动画的基础。

  2. 编辑器工具:掌握了Timeline、Dope Sheet、Graph Editor和NLA Editor的使用,每个工具都有其特定用途和优势。

  3. 动画十二原则:学习了经典的动画原则并了解如何在Blender中实现,这些原则是创造生动动画的理论基础。

  4. 物理运动规律:理解了时间、间距、重量、惯性等物理概念在动画中的应用,为创建可信的运动打下基础。

关键要点:

练习题

基础题

练习1:弹球动画 创建一个弹球从高处落下并弹跳的动画(5秒)。

参考答案 1. 创建UV球体,位置设在(0, 0, 5) 2. 第1帧:设置位置关键帧 3. 第24帧:球落到地面(0, 0, 0.5),Z轴缩放0.7,XY轴缩放1.2 4. 第26帧:球弹起瞬间,Z轴缩放1.3,XY轴缩放0.9 5. 第36帧:球弹到(0, 0, 3),恢复正常比例 6. 重复递减弹跳高度,每次弹跳时间缩短 7. Graph Editor中调整曲线,使下落加速,上升减速

练习2:摆锤运动 制作一个摆锤的往复运动动画。

参考答案 1. 创建圆柱体作为摆杆,球体作为摆锤 2. 将摆杆轴心点设在顶部(游标移到顶部,设置原点到游标) 3. 第1帧:旋转-45度,设置关键帧 4. 第25帧:旋转45度,设置关键帧 5. 第49帧:旋转-45度,设置关键帧 6. Graph Editor中将插值改为贝塞尔 7. 调整曲线使两端速度慢,中间快(模拟重力) 8. 设置循环修改器实现持续摆动

练习3:简单走路循环 创建一个立方体的”走路”动画。

参考答案 1. 第1帧:立方体在原点,设置位置和旋转关键帧 2. 第12帧:Y轴前进1单位,Z轴上升0.2,X轴旋转15度 3. 第24帧:Y轴前进2单位,Z轴回到0,X轴旋转-15度 4. 第36帧:Y轴前进3单位,Z轴上升0.2,X轴旋转15度 5. Graph Editor中调整使运动流畅 6. 添加轻微的左右摇摆增加生动感

挑战题

练习4:角色起跳动画 为一个简单角色(可用多个基础形状组合)制作起跳动画。

参考答案 1. 预备阶段(1-10帧): - 身体下蹲,高度降低30% - 手臂后摆,准备发力 - 重心轻微前倾 2. 起跳阶段(11-15帧): - 快速伸展身体到最大高度 - 手臂上扬协助起跳 - 添加轻微的挤压变形 3. 空中阶段(16-30帧): - 抛物线运动轨迹 - 最高点时身体舒展 - 可添加空翻或其他动作 4. 落地阶段(31-40帧): - 先脚尖接触地面 - 膝盖弯曲吸收冲击 - 身体继续下沉后回弹 - 手臂张开保持平衡

练习5:多物体连锁反应 创建5个多米诺骨牌的倒塌动画。

参考答案 1. 创建5个扁平立方体排成一排 2. 第一个骨牌(1-10帧):绕底边旋转90度倒下 3. 第二个骨牌(8-18帧):延迟2帧开始倒下 4. 第三个骨牌(16-26帧):继续延迟 5. 依次类推,每个延迟2-3帧 6. 倒下速度:开始慢(重力加速),中间快,触地前略慢 7. 添加轻微弹跳:触地后小幅反弹 8. 可选:添加物理模拟验证动画真实性

练习6:表情变化动画 使用形态键制作一个简单的表情变化。

参考答案 1. 创建基础头部模型(可用细分球体) 2. 添加形态键: - Basis(基础表情) - Smile(嘴角上扬,眼睛眯起) - Surprise(嘴巴张开,眼睛瞪大,眉毛上扬) 3. 动画时间线: - 1-20帧:Smile权重从0到1 - 20-30帧:保持微笑 - 30-35帧:Smile快速降到0,Surprise快速升到1(突然惊讶) - 35-50帧:保持惊讶表情 4. Graph Editor微调过渡曲线 5. 可添加眨眼等细节动作

练习7:机械手臂动画 创建一个三节机械手臂抓取物体的动画。

参考答案 1. 构建机械手臂: - 三个矩形作为臂节 - 圆柱作为关节 - 简单夹爪(两个楔形) 2. 动画序列: - 1-15帧:手臂从休息位置展开 - 16-30帧:移动到目标物体上方 - 31-35帧:下降到抓取位置 - 36-40帧:夹爪闭合 - 41-55帧:提起物体 - 56-70帧:移动到目标位置 3. 关键技巧: - 使用线性或恒定插值模拟机械运动 - 每个关节运动分开处理 - 添加轻微的启停延迟 - 夹爪闭合要快速果断

练习8:风中旗帜 不使用布料模拟,手动制作旗帜飘动动画。

参考答案 1. 创建平面,细分多次(至少8x8) 2. 添加简单骨骼链控制旗帜 3. 动画要点: - 波浪从固定端向自由端传递 - 自由端摆动幅度最大 - 使用正弦波动规律 - 不同部位相位差创造波浪效果 4. 时间设置: - 完整波浪周期约40-60帧 - 垂直和水平方向都要有运动 - 添加次要的小幅抖动 5. 细节提升: - 风力变化影响摆动幅度 - 边缘部分更活跃 - 适当的挤压拉伸表现张力

常见陷阱与错误(Gotchas)

1. 关键帧过多症

问题:每一帧都设置关键帧,导致动画僵硬。 解决:只在关键姿势设置关键帧,让插值处理过渡。

2. 忽视曲线编辑

问题:只在视窗中调整,不查看Graph Editor。 解决:养成在Graph Editor中检查和优化曲线的习惯。

3. 线性思维

问题:所有运动都是直线和匀速。 解决:添加弧线,使用缓入缓出,模仿真实物理。

4. 时序混乱

问题:所有部件同时开始和结束运动。 解决:添加延迟和重叠,创造自然的连锁反应。

5. 过度依赖自动插值

问题:完全依赖默认插值,不做调整。 解决:根据运动类型选择合适的插值模式。

6. 帧率误解

问题:不理解帧率对动画速度的影响。 解决:始终确认项目帧率设置,按需调整。

7. 关键帧类型混淆

问题:不区分不同类型关键帧的用途。 解决:使用击穿帧标记重要中间姿势,极值帧标记极限位置。

8. 循环动画不连贯

问题:循环动画首尾不衔接。 解决:确保最后一帧前的状态与第一帧匹配。

最佳实践检查清单

规划阶段

制作阶段

优化阶段

审核阶段