Skip to content

Lecture 21: Animation

Animation

动画(Animation)是指在计算机图形学中,通过连续显示一系列静态图像(帧)来创建运动和变化的视觉效果的技术。

Keyframe Animation

关键帧动画(Keyframe Animation)是一种动画技术,通过定义关键帧来表示动画中的重要状态或位置,然后计算这些关键帧之间的过渡,从而生成连续的动画效果。

Interpolation

在动画中,插值用于计算关键帧之间的中间状态,以实现平滑的过渡效果。 常见的插值方法包括线性插值、样条插值和贝塞尔插值。

Mass Spring System

质点弹簧系统(Mass Spring System)是一种物理模拟方法,用于模拟柔性物体的运动和变形。 该系统由质点(表示物体的质量)和弹簧(表示物体的弹性)组成,通过计算质点之间的力和运动来实现动画效果。

A Simple Spring

一个理想化弹簧,两端连接两个质点\(a\)\(b\),弹簧的自然长度为\(L\),弹性系数为\(k\)。 当弹簧被拉伸或压缩时,会产生一个恢复力\(f\),其大小与弹簧的变形量成正比,方向指向弹簧的自然长度位置。

\[ f = -k (|x_b - x_a| - L) \frac{x_b - x_a}{|x_b - x_a|} \]

但这个模型会永远振荡下去,因此我们需要引入阻尼力(Damping Force)来模拟能量的损失。 阻尼力与质点的速度成正比,方向与速度相反。

\[ f_d = -c v \]

其中\(c\)是阻尼系数,\(v\)是质点的速度。

但是这样的模型会让所有运动都减慢,没有考虑模型内部的阻力,内部阻力的作用会希望模型恢复到原来的形状:

\[ f_b = -k_d \frac{b - a}{|b - a|} (v_b - v_a) \cdot \frac{b - a}{|b - a|} \]

其中\(k_d\)是内部阻力系数,\(v_a\)\(v_b\)分别是质点\(a\)\(b\)的速度,,\((v_b - v_a) \cdot \frac{b - a}{|b - a|}\)表示质点\(b\)相对于质点\(a\)在弹簧方向上的速度分量。

方格形状的质点弹簧系统无法抵抗剪切变形,因此我们需要添加对角线弹簧来增强系统的稳定性,但还不能抵抗非平面的形变,如竖向或水平方向的弯曲,为此需要添加skip connections,即连接非相邻质点的弹簧。

Finite Element Method

有限元方法(Finite Element Method, FEM)是一种数值计算方法,用于求解复杂物理系统中的力学行为。 在动画中,FEM可以用于模拟柔性物体的变形和运动,通过将物体划分为小的有限元单元,并计算每个单元的力和变形来实现。

Particle System

粒子系统(Particle System)是一种用于模拟大量小型独立粒子(如烟雾、火花、雨滴等)运动和交互的技术。 每个粒子通常具有位置、速度、生命周期等属性,通过更新这些属性来实现动态效果。

粒子间存在许多类型的力,如引力和斥力、阻力、碰撞等。

Simulatated Flocking as an ODE

模拟群集行为(Flocking Behavior)可以通过常微分方程(Ordinary Differential Equations, ODE)来实现。群集行为通常包括三个主要规则:attraction(吸引)、repulsion(排斥)和alignment(对齐)。 这些规则可以通过ODE来描述每个个体的运动。

Forward Kinematics

正向运动学(Forward Kinematics)是一种计算方法,用于确定机械臂或骨骼系统中各个关节的位置和姿态。 通过给定每个关节的角度或位置,可以计算出末端执行器或骨骼末端的位置。

不同类型的关节有不同的自由度,如Pin(固定点)有一维旋转自由度,Ball(球)有两维旋转自由度。

但是正向运动学无法直接控制末端执行器的位置,因此需要使用逆向运动学。

Inverse Kinematics

逆向运动学(Inverse Kinematics)是一种计算方法,用于确定机械臂或骨骼系统中各个关节的角度或位置,以实现末端执行器或骨骼末端的目标位置和姿态。

逆向运动学通常涉及求解非线性方程组,常用的方法包括数值迭代法和解析法。运算复杂度较高,而且可能存在多个解或无解的情况。

Rigging

绑定(Rigging)是指在3D动画中,为角色模型创建骨骼系统和控制器的过程。 通过绑定,可以实现角色的运动和变形,使其能够进行各种动作和表情。

Blend Shapes(混合形状)是一种用于实现面部表情和细微变形的技术,通过在不同形状之间进行插值来创建平滑的过渡效果,通过设置关键帧来控制混合形状的权重。

Motion Capture

动作捕捉(Motion Capture, MoCap)是一种技术,通过捕捉真人演员的动作数据,并将其应用到3D角色模型上,从而实现逼真的动画效果。 动作捕捉通常使用传感器、摄像头或标记点来记录演员的运动,然后通过软件进行处理和应用。