L21 Animation
1 动画(Animation)
“赋予事物生命力”
- 作为一种沟通工具
-
美学问题往往优先于技术问题
建模的延伸 -
将场景模型表示为时间的函数(即加入时间维度,让静态模型动起来)
输出:连续播放时能产生运动感的图像序列 -
电影:24 帧 / 秒(fps)
- 视频(通用标准):30 帧 / 秒(fps)
- 虚拟现实(VR):90 帧 / 秒(fps)
1.1 History
First Film

第一步手绘剧场版动画(First Hand-Drawn Feature-Length (>40 mins) Animation)(1937)

第一个电子计算机生成的动画(First Digital-Computer-Generated Animation)(1963)

数字恐龙

第一个纯CG(Computer-Generated)电影(First CG Fearute-Length Film)(1995)

1.2 Keyframe Animation

关键帧动画制作流程
- 动画师(如首席动画师)(Animator (e.g. lead animator))负责创建关键帧(keyframes)
- 助理(人工或计算机)(Assistant (person or computer))负责生成中间帧(in-between frames),这个过程称为 “补间(tweening)”
将每一帧(frame)当作一个参数值的向量(Think of each frame as a vector of parameter values)

线性插值通常不够好。回想(recall)一下用于平滑 / 可控制插值(interpolation)的样条曲线(splines)

2 物理模拟(Physical Simulation)
2.1 Newton's law
\(\boldsymbol{F}\): Force(力,矢量)
\(m\): Mass(质量,标量)
\(\boldsymbol{a}\): Acceleration(加速度,矢量)
通过数值模拟(numerical simulation)生成物体的运动

2.2 质点弹簧系统(Mass Spring System)
质点弹簧系统可以用来对绳子、头发、布料进行模拟

2.2.1 Spring
理想弹簧模型(Idealized spring)

- 力的作用是将两个点(a 和 b)拉向彼此
- 力的大小与两点间的位移成正比(符合胡克定律的核心逻辑)
- \(k_s\) 是弹簧系数:代表弹簧的刚度(stiffness)
核心问题:这种理想弹簧会趋向于收缩到零长度(与现实物理不符)
具有非零原长的弹簧模型(Spring with non-zero rest length)
- \(l\):原长(Rest length)(弹簧自然松弛状态下的长度)
核心问题:该模型中的弹簧会永远振荡(oscillates forever)(无能量损耗,与现实物理不符)
导数的点记法(Dot Notation for Derivatives)
如果 \(x\) 是目标点的位置矢量,我们将用点表示法来表示速度和加速度:
\(\boldsymbol{x} \quad \text{:位置矢量(Position vector)}\)
\(\dot{\boldsymbol{x}} = \boldsymbol{v} \quad \text{:一阶导数,速度矢量(Velocity vector)}\)
\(\ddot{\boldsymbol{x}} = \boldsymbol{a} \quad \text{:二阶导数,加速度矢量(Acceleration vector)}\)
2.2.2 Energy Loss
简单运动阻尼(Simple motion damping)

- 表现类似运动中的粘性阻力(viscous drag)
- 会在速度的方向上减慢运动(阻力方向与速度方向始终相反)
- \(k_d\) 是阻尼系数(damping coefficient)
这种阻力无法仅表示弹簧内部的阻力。因为它会影响弹簧整体的运动。
仅阻尼内部由弹簧驱动的运动

红框部分:两点的相对速度在a 到 b 方向上的投影(标量值)。这是因为相对速度在垂直于ab方向上的分量并不会导致阻尼(比如圆周运动)。
核心特点:
- 仅对弹簧长度变化的运动施加粘性阻力
- 不会减慢弹簧系统的整体运动(如整个弹簧组的全局平移或旋转)
- 注意:这只是阻尼的一种特定类型
2.2.3 由弹簧形成的结构(Structures form Springs)
我们想用弹簧系统来模拟布料.

这种结构无法抵抗剪切力(not resist shearing)。

这种结构能抵抗剪切力(shearing),但存在各向异性偏差(anisotropic bias)。

这种结构将能抵抗剪切力(shearing)。方向性偏差(directional bias)更小。
和前面的结构一样,这种结构也无法抵抗平面外弯曲(out-of-plane bending)。

这种结构将抵抗平面外弯曲(out-of-plane bending),红色弹簧应该弱得多(much weaker),一种比较通俗的名称叫(skip connection)。
其他的方法:有限元法(FEM,Finite Element Method)而非弹簧
2.3 Particle Systems
粒子系统基础
- 将动态系统建模为大量粒子的集合
-
每个粒子的运动由一组物理(或非物理)(physical or non-physical)力定义
在图形学与游戏中的应用特点 -
易于理解与实现:原理直观,开发门槛低
-
可扩展性强:用更少的粒子追求速度,用更多的粒子实现更高复杂度的效果
面临的挑战 -
可能需要海量粒子(如模拟流体、烟雾时)
- 可能需要加速结构(如用于快速查找邻近粒子以计算相互作用)
粒子系统动画渲染流程
在动画的每一帧中执行以下步骤:
- 【按需执行】创建新粒子(补充生命周期结束的粒子,维持效果连续性)
- 计算每个粒子所受的力(如重力、风力、碰撞力等)
- 更新每个粒子的位置和速度(通过积分算法实现运动更新)
- 【按需执行】移除死亡粒子(清理生命周期结束或超出边界的粒子,优化性能)
- 渲染粒子(将粒子绘制到屏幕上)
粒子系统的力与碰撞分类
吸引与排斥力
- 重力(Gravity)、电磁力(electromagnetism)等
-
弹簧力(Springs)、推进力(propulsion)等
阻尼力 -
摩擦力(Friction)、空气阻力(air drag)、粘性阻力(viscosity)等
碰撞 -
墙壁(Walls)、容器(containers)、固定物体(fixed objects)等
- 动态物体(Dynamic objects)、角色身体部位(character body parts)等
模拟与渲染分离
实际应用中是先模拟再渲染,二者互相并不干扰。
2.4 模拟集群行为(Simulated Flocking Behavior)
作为常微分方程的模拟群体行为(Simulated Flocking as an ODE)
群体行为模拟(Flocking Behavior Simulation)
将每只鸟建模为一个粒子(particle),受以下简单力(forces)的驱动:
- 吸引(attraction):向邻近个体(neighbors)的中心位置聚集
- 排斥(repulsion):与过近的邻近个体保持距离,避免碰撞
- 对齐(alignment):与邻近个体的平均运动轨迹(average trajectory)方向保持一致
通过数值方法(numerically)模拟大规模粒子系统的演化(evolution)。涌现(Emergent)出复杂的全局群体行为,这一现象也见于鱼群、蜂群等生物群体

3 运动学(Kinematics)
3.1 Forward Kinematics
关节骨骼(Articulated skeleton)
- 拓扑结构(Topology):定义骨骼各部件的连接关系(如 “哪块骨骼连接到哪块骨骼”)
- 关节的几何关系(Geometric relations from joints):描述骨骼段的长度、初始角度等空间参数
-
树状层级结构(Tree structure):骨骼系统通常为无环路的树状结构(如人体骨骼从脊柱延伸至四肢,避免运动冲突)
关节类型(Joint types) -
销关节(Pin joint):1 维旋转(1D rotation),仅能在单一平面内转动(如人的肘关节、膝关节)
- 球关节(Ball joint):2 维 / 3 维旋转(2D/3D rotation),可在多个平面内转动(如人的肩关节、髋关节)
- 棱柱关节(Prismatic joint):平移(translation),沿固定轴线做直线运动(如机械臂的伸缩关节、手指的滑动关节)

我们可以通过 \(\theta_1\) 和 \(\theta_2\) 等参数计算出end point \(p\)的位置

优缺点(Kinematics Pros and Cons)
优点(Strengths)
- 直接控制(Direct control) 便捷:动画师可以直接调整关节角度或关键帧,精准控制角色的每一个动作姿态。
-
实现(Implementation) 简单直接:技术门槛低,无需复杂的物理引擎或反向运动学求解器,开发与制作流程清晰。
缺点(Weaknesses) -
动画效果可能与 物理(physics) 规律不符:纯手工调整的动作可能出现违反物理直觉的效果(如角色跳跃时的重力感不足、肢体运动过于僵硬)。
- 对 动画师(artists) 来说耗时费力:需要逐帧或逐关键帧调整角色姿态,制作复杂动作(如舞蹈、打斗)时工作量极大,且难以保证动作的连贯性与自然性。
3.2 Inverse Kinematics
逆运动学的手要问题是计算复杂。即使是只有两个关节的计算公式就已经非常复杂。
除此之外,还存在多解、无解的问题。

通用 N 连杆反向运动学(IK, Inverse Kinematics)问题的数值解法
- 选择初始配置(Choose an initial configuration):为所有关节设定初始角度,作为迭代优化的起点(通常可使用当前关节状态或自然姿态)。
- 定义误差度量(Define an error metric):例如目标位置(goal)与当前末端位置(current position)的距离平方,用于量化末端点与目标的偏差程度。
- 计算误差关于配置的梯度(Compute gradient of error as function of configuration):分析每个关节角度变化对误差的影响,得到误差的梯度方向(核心是计算雅可比矩阵(Jacobian Matrix))。
- 应用梯度下降(或牛顿法等优化算法)(Apply gradient descent (or Newton’s method, or other optimization procedure)):沿梯度的反方向迭代调整关节角度,逐步减小误差,直到末端点足够接近目标位置。
4 角色动画
4.1 角色绑定(Rigging)
角色绑定(Rigging)是为角色创建的一套高级控制(higher level controls)系统,可让动画师更快速、直观地修改角色的姿态(pose)、形变(deformations)、表情(expression)等。
核心特点(Important)
- 像木偶上的提线(strings on a puppet):控制逻辑类似木偶提线,通过上层控制驱动底层骨骼与形变,无需直接调整每个关节。
- 覆盖所有有意义的角色变化(Captures all meaningful character changes)
-
因角色而异(Varies from character to character)
制作成本高的原因(Expensive to create) -
依赖大量人工操作(Manual effort)
- 要求兼具艺术与技术能力(Requires both artistic and technical training)

4.2 形态键(Blend Shapes)
融合变形(Blend Shape / Morph Target)
不依赖骨骼(skeleton),直接在不同表面(surfaces)之间进行插值。比如建模一系列面部表情:
- 最简单的方案:对顶点位置进行线性组合(linear combination)
- 使用样条曲线(Spline)来控制权重随时间的变化
4.3 动作捕捉(Motion Capture)
数据驱动式动画序列生成(Data-driven approach to creating animation sequences)
- 记录现实世界中的动作表演(Record real-world performances):例如让演员执行目标动作(如跑步、打斗、表情变化)。
- 从采集的数据中提取随时间变化的姿态(Extract pose as a function of time from the data collected)
优点(Strengths)
- 可快速捕捉大量真实数据(Can capture large amounts of real data quickly)
-
真实度极高(Realism can be high)
缺点(Weaknesses) -
设备与场景搭建复杂且成本高昂(Complex and costly set-ups)
- 捕捉的动画可能不符合艺术需求,需要二次修改(Captured animation may not meet artistic needs, requiring alterations)

动捕设备可能通过光学(即视觉)、磁场、机械等方式来采集运动数据。
最一般的方法就是再运动的人体贴上小球,通过相机甚至更高级的设备记录这些小球的运动信息。
《阿凡达》是电影史上的一块里程碑,一部分是因为它最先使用了面部动捕。

VFX:Visual Effects,视觉效果,视效
评论
如果你已登录 GitHub,就可以直接在这里评论。