GAMES102 Lecture 21 Animation
这里回顾GAMES101 Lecture 21,动画与模拟(基本概念, 质点弹簧系统,运动学)。
课程主页:
课程作业:
课程视频:
本讲内容
计算机动画导论:
- 历史
- 关键帧动画
- 物理模拟
- 运动学
- 索具(Rigging)
动画定义
- “让事物栩栩如生”
- 交流工具
- 审美问题往往主导技术问题
- 建模的扩展
- 将场景模型表示为时间的函数
- 输出:图像序列
- 提供运动感
- 电影:24fps
- 视频(一般):30fps
- 虚拟现实:90fps
计算机动画历史
老师首先介绍了动画的历史,最早出现在壁画:
后来人们用轮盘的形式模拟动画:
关键帧动画
动画师创建关键帧,助手(人或计算机)创建中间帧:
关键帧插值
将每一帧视为参数向量:
线性插值通常不够好:
调用样条以实现平滑/可控的插值:
物理模拟
核心是使用牛顿定律:
使用数值模拟生成运动的物体:
图示:
质点弹簧系统
质点弹簧系统基于弹簧对动态系统进行建模,是一系列连接的质点和弹簧,下面从弹簧开始介绍。
简单弹簧系统
理想弹簧:
计算公式:
小结:
- 力将点拉在一起;
- 强度与位移成正比(胡克定律);
- $k_s$是弹簧系数;
问题:
- 弹簧的长度为零;
非零长度的弹簧
其中$l$为弹簧长度。
问题:
- 永远振荡;
一些记号
- $\boldsymbol{x}$:点的位置;
- $\boldsymbol{\dot x} =\boldsymbol v $:速度;
- $\boldsymbol{\ddot{x}} =\boldsymbol a$ :加速度;
引入能量损失
简单运动阻尼:
公式:
小结:
- 表现得像运动中的粘性阻力;
- 减慢速度方向的运动;
- $k_d$是阻尼系数;
问题:
- 会使所有运动都停下;
- 例如$a, b$同向移动,没有相对位移,弹簧内部应该没有力,但是在此场景下仍然会停下;
弹簧内部阻尼
- 仅阻尼内部的弹簧驱动运动;
- 阻尼仅在弹簧长度变化时存在;
- 不会减慢弹簧系统的整体运动(例如
整体旋转); - 注意:这只是一种特定类型的阻尼;
用弹簧模拟布
最简单的方法如下:
问题:
- 无法对抗剪切;
- 拉伸对角线位置会变成一条线,但布料不会这样;
- 不会抵抗平面外弯曲;
- 布料无法对折后固定;
- 但是这个结构无法做到这点;
改进1:
问题:
- 这种结构将抵抗剪切但具有各向异;
- 这种结构也不会抵抗平面外弯曲;
改进2:
问题:
- 这种结构将抵抗剪切,更少的方向性偏差;
- 这种结构也无法抵抗平面外弯曲;
改进3:
小结:
- 这种结构将抵抗平面外弯曲;
- 红色线应该弱得多;
粒子系统
- 将动力系统建模为大量粒子的集合;
- 每个粒子的运动都由一组物理(或非物理)力定义;
- 图形和游戏中的流行技术
- 易于理解、实现;
- 可扩展:粒子越少速度越快,粒子越多越复杂;
- 挑战
- 可能需要很多粒子(例如液体)
- 可能需要加速结构(例如寻找最近的相互作用粒子)
图示:
粒子系统动画
对于动画中的每一帧
- [如果需要]创建新粒子;
- 计算作用在每个粒子上的力;
- 更新每个粒子的位置和速度;
- [如果需要]去除dead粒子;
- 渲染粒子;
粒子系统作用力
引力和斥力
- 重力、电磁力;
- 弹簧、推进装置;
阻尼力:
- 摩擦力、空气阻力、粘度;
碰撞:
- 墙壁、容器、固定物体;
- 动态对象、角色身体部位;
用ODE模拟鸟群
- 将每只鸟建模为一个粒子;
- 受非常简单的力:
- 对邻居中心的吸引力(attraction);
- 个别邻居的排斥(repulsion);
- 对齐邻居的平均轨迹(alignment);
- 数值模拟大粒子系统的演化;
- 突发的复杂行为(也见于鱼、蜜蜂……);
图示:
正运动学
运动学描述骨骼系统。
铰接骨架:
- 拓扑(什么连接到什么);
- 关节的几何关系;
- 树结构(没有循环);
关节类型:
- Pin(一维旋转);
- 球(二维旋转);
- Prismatic joint(拉长);
图示:
例子
根据参数可以计算右上角尖端的位置:
如果给出每个时间的$\theta_1,\theta_2$,就会形成动画。
小结
优点:
- 直接控制方便;
- 实现简单;
弱点:
- 动画可能与物理不一致;
- 耗费时间;
- 无法直接调整位置;
逆运动学
根据最后的位置反向计算参数,对于之前的例子:
可以看出逆运动学的求解难度较大。
另一个问题是解不唯一:
还有一个问题是可能无解,例如尖端不不可能出现在下图中最底部的半圆里:
小结
一般N-link IK问题的数值解法:
- 选择初始配置;
- 定义误差度量(例如目标和当前位置之间距离的平方);
- 计算误差梯度作为配置的函数;
- 应用梯度下降法(或牛顿法,或其他优化程序);
Rigging
Rigging是对角色进行的一组更高级别的控制,可以更快速、更直观地修改姿势、变形、表情等:
- 就像木偶上的弦;
- 捕获所有有意义的变化;
- 因角色而异;
缺点:
- 成本高;
- 体力劳动;
- 需要艺术和技术培训;
图示:
Blend Shape
代替骨架,直接在表面之间插值。
动作捕捉
动作捕捉是创建动画序列的数据驱动方法:
- 记录真实世界的表现(例如活动的人);
- 从收集的数据中提取作为时间函数的姿势;
图示:
优点:
- 可以快速捕获大量真实数据;
- 更加真实;
缺点:
- 设置复杂且昂贵;
- 捕捉的动画可能不符合艺术需要,需要修改;
动画流程总结
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Doraemonzzz!
评论
ValineLivere