Games101-P21-22 Animation
P21 Preview
- Keyframe animation
- Physical animation
- Kinematics
- Rigging
P22 Preview
Single particle simulation
Explicit Euler method
Instability and improvements
Rigid body simulation
Fluid simulation
P21 Animation
- 帧率按需求设定;VR至少90fps
Keyframe
- 给定一系列不同的帧,中间的帧通过插值(linear/non-linear)得到
Physical Simulation
- 牛顿定律 $F = ma$
Physically Based Animation
质点弹簧系统 Mass Spring System
- Examples
- hair
- cloth
模型建立
- 模型基础:相互连接的质点和弹簧,考虑弹力和摩擦
- 胡克定律
- 问题:没有能量损耗,无限振动
- 添加能量损失
- 问题:该方法所添加的摩擦力只适用于外部力,对于弹簧内部相互作用力造成的损耗无法模拟
- 添加内部相互作用力的能量损耗
- 摩擦力延ab方向(投影
- 圆周运动,$f_b = 0$
弹簧的结构
- 上图结构无法模拟 & 如何解决
- 对角线拉扯:出现切变的形变
- 解决:添加蓝色Spring,出现切变时,以提供对伉力;力较强
- Out-of-plane:布料因受力而形变至不在同一平面
- 解决:添加Skip connection;力较弱,只起到辅助作用
- 对角线拉扯:出现切变的形变
Aside: FEM (Finite Element Method) Instead of Springs
- 考虑力的传导
Particle Systems
本质:定义个体与群体的关系
将动力学系统的模型定义为大量粒子的集合,每个粒子的运动都是由一组物理(或非物理)力来定义的
挑战
- 需要大量粒子(e.g. fluids
- 需要考虑粒子间相互作用力(e.g. 碰撞、吸引力etc(实现困难
- 对于每一帧动画
- (if needed)生成新的粒子
- 计算每一个粒子间作用力
- 更新粒子的位置和速度
- (if needed)根据粒子存活时间,remove the dead
- 渲染
- 粒子间的相互作用力
群体模拟
- 鸟群
- 人群
Kinematics 运动学
Forward Kinematics (FK)
- 定义关节,形成骨骼结构
- 关节分类
- 计算:通过 $\theta_1 \& \theta_2$ 计算 $p$ 的位置
Inverse Kinematics (IK)
- 计算
- 问题:解不唯一
- 解决方法:梯度下降
Rigging
对于形状的控制
Blend Shapes
- 两个不同的动作间,插值控制
Motion Capture / Facial Motion Capture
P22
Single Particle Simulation
- 已知初始位置和速度,解一段时间后的位置和速度
速度场
速度场——理想情况
- 给定位置$x$和时间$t$,都能知道速度;先考虑一个粒子,而后推广
Ordinary Differential Equation (ODE) 常微分方程
- 需求:给定位置,求某一时刻的速度
- 方法👇
Euler’s Method 欧拉方法
- 缺点
- 误差。缩小步长可提高准确度
- 稳定性;出现正反馈,问题无限放大。如速度场为同心圆,理论上质点做圆周运动。但欧拉方法下无论步长多大,质点都会偏移圆周轨迹
误差和稳定性
- 误差
- 每个时间步长上的误差都会累积。精度随着模拟的进行而降低
- 准确性在图形学中可能并不重要
稳定性
- 错误可能会加剧,导致模拟发散(diverge),即使底层系统没有
- 缺乏稳定性是仿真中的一个基本问题,不容忽视
Combating Instability
- Midpoint method:$\Delta t$ 时间,应运动到a。计算中点b的速度。对于起始点,应用中点b的速度,得到c
- Modified Euler:中点法展开式
- $\Delta t^2$ 二次项,达到模拟抛物线的效果;泰勒展开
- Adaptive step size:通过误差比较($x_T$和$x_{T/2}$的差距),选择步长大小(是否还需继续二分)
- Implicit methods:使用下一个时间的速度和加速度进行求解
- 补:龙哥库塔方法
- Position-based / Verlet integration:不基于物理
- Midpoint method:$\Delta t$ 时间,应运动到a。计算中点b的速度。对于起始点,应用中点b的速度,得到c
Rigid Body Simulation 刚体模拟
- 刚体:不发生形变
- 刚体内部运动完全一致,因而刚体可看成一个粒子
Fluid Simulation
- A Simple Position-Based Method
- 通过模拟组成流体的小球的位置,模拟流体的运动
Eulerian vs. Lagrangian
- Material Point Method (MPM)