内容目录
- 动画生成技术介绍
- 单个粒子运动的模拟
(1) Explicit Euler method
(2) 数值解法的稳定性分析与改进 - 刚体的模拟
- 流体的模拟
正文
一. 动画中使用到的一些技术
1. 动画的生成
动画的生成一般是用一组静态的图片快速播放来实现。通常,我们称这些图片为序列帧。
类似小时候玩的这种翻页小人书。
视频来源
https://www.bilibili.com/video/av60057208/
通常视频需要达到 30 帧每秒,才不会有特别明显的卡顿。
对于一些虚拟现实的场景,需要达到两眼同时满足90帧每秒以上。
2. 关键帧动画
先画出几张关键的画面
而后通过类似插值的方法
在中间插入画面。
3. 物理仿真
构建基于牛顿定律的一些仿真模型
一些研究示例:
布料仿真
流体仿真
弹簧体仿真(作业8)
毛发仿真
4. 粒子系统
粒子动画大致思路
- 在每一帧画面中创建粒子
- 计算作用在每个粒子上的力
- 更新每个粒子的位置与速度
- 消除掉死亡的粒子
- 渲染粒子
5. Rigging
类似体现木偶的方式,对模型进行操作。
6. 动作捕捉
7. CG动画的产品流水线
预研阶段
方案 -> 场景原画 -> 幻灯片demo -> 进一步设计
生产阶段
场景布置 -> 建模 -> 模型纹理 -> Rigging 让模型运动 -> 动画
后期处理阶段
后期渲染 滤镜 剪辑
二.单个粒子运动的模拟
假设给定起始点 x0 与时间 t , 希望可以得到 t 时刻顶点的位置。
1. 显式欧拉方法
迭代式如下
不足:
- 误差与步长相关。
- 无论选取多大的步长,都可能出现无法收敛的情况。不稳定。
方法改进
2. 中值法
将两式合并
3. 自适应步长法
计算
4. 隐式方法
稳定性好
但需要求微分方程,运算较复杂。
龙格-库塔方法 常微分方程数值解法
RK4
5. 基于非物理的方法
6. 刚体模拟 (Rigid Body Simulation)
7. 流体模拟
模型假设
- 假设水是由许许多多的刚体粒子组成
- 假设水的任何位置都是不可被压缩的(即密度相同,所以只要那个位置密度被改变了, 就可以通过修正的方式来改变粒子的位置)
8. 欧拉方法 vs 拉格朗日方法
粒子模拟中两种不同观察视角的方法。
拉格朗日视角更多从微观角度出发,观察每个粒子的运动规律。
欧拉视角,宏观角度,观察网格区域里粒子的变化情况。
两个中方法结合的一种研究实践
Material Point Method(MPM)