这里回顾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

代替骨架,直接在表面之间插值。

动作捕捉

动作捕捉是创建动画序列的数据驱动方法:

  • 记录真实世界的表现(例如活动的人);
  • 从收集的数据中提取作为时间函数的姿势;

图示:

优点:

  • 可以快速捕获大量真实数据;
  • 更加真实;

缺点:

  • 设置复杂且昂贵;
  • 捕捉的动画可能不符合艺术需要,需要修改;

动画流程总结