目录
计算机动画导论
关键帧动画
关键帧插值
物理模拟
质点弹簧系统
简单的弹簧
问题:这个弹簧理想长度为零
非零长度弹簧
问题:由于没有能量损失, 导致一直在振荡
简单运动阻尼
问题:会减慢所有运动至停下
完整公式
弹簧结构
粒子系统
运动学
正向运动学
运动学的优缺点
逆运动学
为什么这个逆运动学的问题很难?
逆运动学的一般N-link IK问题的数值解
绑定
重点
混合形状
动作捕捉
动作捕捉的优缺点
各种类型的动作捕捉设备
光学动作捕捉
动画公司生产流水线
第二十一节课: 动画与模拟
① 历史
② 关键帧动画
③ 物理模拟
④ 运动学
⑤ 绑定 (Rigging)
-动画
“让事物栩栩如生”
• 沟通工具
• 审美问题往往主导技术问题, 建模的扩展
• 将场景模型表示为时间的函数, 输出:当顺序查看时提供运动感的图像序列
• 电影:每秒 24 帧
• 视频(一般):30 fps
• 虚拟现实:90 fps
动画师(例如首席动画师)创建关键帧
助手(人或计算机)创建中间帧(“补间”)
已经运用这项技术: flash插件
将每一帧视为参数值的向量
每个参数的关键帧插值
线性插值通常不够好
调用样条曲线以实现平滑/可控插值
牛顿定律
基于物理的动画
使用数值模拟生成物体的运动
例如: 布料模拟, 流体
动态系统建模示例:
质点弹簧绳
头发
质点弹簧网
理想化的弹簧
① 力将点拉在一起 ② 强度与位移成正比(胡克定律) ③ ks 是弹簧系数:刚度
弹簧的弹力
Rest length: 弹簧长度
导数的点表示法
如果是一个x是点位置的向量,我们将使用点表示法来表示速度和加速度:
引入能量损失
① 表现得像运动中的粘性阻力
② 减慢速度方向的运动
③ kd 是阻尼系数
• 希望弹簧的振动减慢,但它也应该更慢地落到地面上, 而不至于停止
因为上述公式只能描述外部力, 无法解释相对位移, 如果弹簧整个移动, 两端相对位置不变, 则无需停下
-弹簧内部阻尼(摩擦力)
仅阻尼内部的弹簧驱动运动
• 仅在弹簧长度变化时产生粘性阻力
• 不会减慢弹簧系统的组运动(例如组的全局平移或旋转)
• 注意:这只是一种特定类型的阻尼
弹簧质点系统总共有两个力: 弹簧的弹力和阻尼力
公式的各个参数如下:
行为由结构联系决定
① 这种结构不会抵抗切变, 平面外弯曲
② 这种结构将抵抗切变, 但具有各向异性偏差(朝↖拉有弹簧,↗无), 也不会抵抗平面外弯曲
③ 这种结构将抵抗切变, 方向偏差较小, 也不会抵抗平面外弯曲
④ 这种结构将抵抗切变, 方向偏差较小, 也可以抵抗平面外弯曲
他们的行为就像真实的样子
相比青色弹簧, 红色的弹簧相连接的力应该弱得多 (因为青色相连代表布的韧性, 红色则代表布放在桌边, 布会自然下垂, 红色线就会被拉扯)
例子: 质点弹簧裙子+人物
Ps:FEM(有限元法)(右)代替弹簧(左)
① 将动力系统建模为大量粒子的集合
② 每个粒子的运动由一组物理(或非物理)力所定义
③ 图形和游戏中的流行技术
好处:
• 易于理解、实施
• 可扩展性:更少的粒子提高速度,更多的粒子提高复杂度
困难:
• 可能需要许多颗粒(例如流体)
• 可能需要加速结构(例如,寻找最近的粒子进行相互作用)
-粒子系统大概制作过程
对于动画中的每一帧
① [如果需要] 创建新的粒子
② 计算作用于每个粒子的力
③ 更新每个粒子的位置和速度
④ [如果需要] 去除死粒子
⑤ 渲染粒子
-粒子系统相关的力
① 吸引力和排斥力
• 重力、电磁力……
• 弹簧、推进器、……
② 阻尼力
• 摩擦力、空气阻力、粘度……
③ 碰撞力
• 墙壁、容器、固定物体……
• 动态对象、角色身体部位……
-万有引力
牛顿万有引力定律
• 粒子间的引力
-模拟植绒作为 ODE
(植绒是一种粒子算子,它在粒子之间产生力,从而产生不同的粒子组或团块。您可以控制这些组之间的结合强度以及它们在模拟中出现的速度)
将每只鸟建模为一个粒子
受到非常简单的力:
① 对邻居中心的吸引力(不离群)
② 来自个别邻居的排斥力(不靠太近)
③ 与邻居的平均轨迹对齐(一起飞)
数值模拟大粒子系统的演化
出现的复杂行为(也见于鱼、蜜蜂……)
应用例子:
分子动力学 人群+“摇滚”动态
关节式骨架
① 拓扑(什么连接到什么)
② 关节的几何关系
③ 树结构(没有循环)
关节类型
③ 棱柱关节(平移)
示例:2D 中的简单两段臂
动画师提供角度,计算机确定末端执行器的位置 p
动画被描述为作为时间函数的角度参数值
优势
• 直接控制方便
• 实施很简单
弱点
• 动画可能与物理不一致
• 想做动画的艺术家耗时
动画师提供末端执行器的位置p
计算机必须算出满足约束的关节角度
• 配置空间中的多种解决方案
同一个位置p, 两端臂有两种摆放方式
三段臂也是同样的问题
• 解决方案可能并不总是存在
顶点p到达不了第三个半圆外和第一个半圆内
• 选择初始配置
• 定义误差度量(例如目标与当前位置之间距离的平方)
• 计算误差梯度作为配置的函数
• 应用梯度下降(或牛顿法,或其他优化程序)
Rigging 是一组更高级别的角色控制,允许更快速和直观地修改姿势、变形、表情等...
• 就像木偶上的弦
• 捕捉所有有意义的特征变化
• 因角色而异
制作成本高
• 手动操作
• 需要艺术和技术培训
代替骨架,直接在曲面之间进行插值
例如,对一组面部表情进行建模:
最简单的方案:采用顶点位置的线性组合, 用于控制随时间选择权重的样条
数据驱动的方法来创建动画序列
• 记录真实世界的表现(例如执行活动的人)
• 从收集的数据中提取作为时间函数的姿势
优点
• 可以快速捕获大量真实数据
• 真实感可能很高
缺点
• 复杂且成本高昂的设置
• 捕捉的动画可能无法满足艺术需求,需要进行修改
光学的
磁的
感应磁场以推断位置/方向, 束缚
机械的
直接测量关节角度, 限制运动
• 被捕捉者身上的标记
• 来自多个摄像机的三角测量位置
• 8 个以上的摄像头,240 Hz,若出现遮挡问题依然困难
应用例子:
运动数据
(各个标记位置随时间移动的图)