GAMES101.闫令琪.12.动画与模拟(Lecture 21)

  • https://www.bilibili.com/video/av90798049

动画与模拟

  • animation
  • 内容
    • History
    • Keyframe animation
    • Physical simulation
    • Kinematics
    • Rigging

动画

  • 动画的动机:让物体动起来
    • 是一种交流的工具
    • 更关注美学特征,物理上差不多对就行
  • 建模,几何的拓展
    • 时间轴上的扩展
  • 动画的形成:快速播放的图片序列
    • 电影:24 fps
    • 视频:30 fps
    • VR:90 fps
      • 不晕的要求
    • frames per second

动画的历史

早期的壁画

  • 一些图片序列
  • 我们将这些图片截取下来动态的播放,可以看到动态的狩猎图
  • 这说明很早的时候,大家就已经知道动画就是一系列的图片序列而已,只是当时缺少播放设备罢了

Phenakistoscope

  • 1831
  • 圆盘,边上画上画,但是你只能看到一部分区域
  • 转起来则会有动画的效果
  • 小时候玩的小人书,翻页动画

电影

  • 最早用于科学研究
    • 例如:捕捉马的运动形态

动画

  • 白雪公主和七个小矮人
    • Disney, “Snow White and the Seven Dwarfs” (1937)
    • 第一部手绘的长达 40 分钟的动画(电影长度)
      • First Hand-Drawn Feature-Length (>40 mins) Animation
      • feature length,时间大于等于 40 分钟,电影的长度
  • Ivan Sutherland, “Sketchpad” (1963) – Light pen, vector display
    • First Digital-Computer-Generated Animation
    • 可以支持用一根激光笔在显示屏上画出、移动简单的几何体
  • 早期的动画
    • 三维网格显示任务的面目表情
    • Ed Catmull & Frederick Parke, “Computer Animated Faces” (1972)
  • 侏罗纪公园
    • Jurassic Park (1993)
    • 里程碑式的作品
    • 真正把电脑生成的恐龙放到了电影里
  • 玩具总动员
    • Pixar, “Toy Story” (1995)
    • First CG-Generated Feature-Length Film
    • 第一部完全由电脑生成的电影
    • 当时还是使用光栅化技术,没有光线跟踪
  • 天降美食
    • Sony Pictures Animation, “Cloudy With a Chance of Meatballs” (2009)
    • 东西掉进水里的模拟还不是很逼真
      • 涟漪
  • 冰雪奇缘2
    • Walt Disney Animation Studios, “Frozen 2” (2019)
    • 充满大量细节:花瓣、草地、特效

关键帧动画

  • keyframe animation

  • 首先绘制一些重要的位置的场景,这些重要的位置就被称为关键帧
  • 动画制作
    • Animator (e.g. lead animator) creates keyframes
      • 负责人先画出关键帧
    • Assistant (person or computer) creates in-between frames (“tweening”)
      • 助手在将中间的过程补全
  • flash
    • 简单的图案可以从关键帧自动生成

关键帧插值

  • 插值是一门学问,做到自然真实是很难的
  • 连续性
    • \(C1,C2,\cdots\)

物理模拟

  • physical simulation
  • 牛顿定律 \(F=ma\)
    • Force = Mass x Acceleration
  • 简单的匀加速运动

\[ x^{t+\Delta t}=x^t+\Delta tv^t+\dfrac{1}{2}(\Delta t)^2a^t \]

  • 复杂的布料:如果考虑了所有力,就能很好的模拟出结果
  • 模拟得对的话,则不会出现穿模现象
  • 流体的模拟
    • 模拟水滴的位置
    • 然后考虑怎么渲染得更真实
  • 割裂开模拟和真实感渲染这两步

质点弹簧系统

  • Mass Spring System

例子

简单的弹簧绳

  • Mass Spring Rope

头发

  • 很复杂:摩擦力、重力、外力

布料

  • Mass Spring Mesh

  • 关于模拟布料的一篇论文
  • Huamin Wang, Ravi Ramamoorthi, and James F. O'Brien. "Data-Driven Elastic Models for Cloth: Modeling and Measurement". ACM Transactions on Graphics, 30(4):71:1–11, July 2011. Proceedings of ACM SIGGRAPH 2011, Vancouver, BC Canada.

质点弹簧系统

  • 一系列相互连接的质点和弹簧

理想的弹簧

  • 没有长度
  • 被拉开多长,就产生多大的力

  • 弹簧力大小的计算
    • 胡克定律 Hooke’s Law
    • 劲度系数 \(k_s\)

\[ \boldsymbol{f_{a\to b}}=k_s(\mathbf{b}-\mathbf{a}) \]

\[ \boldsymbol{f_{b\to a}}=-\boldsymbol{f_{a\to b}} \]

有长度的弹簧

\[ \boldsymbol{f_{a\to b}}=k_s(||\mathbf{b}-\mathbf{a}||-l)\dfrac{\mathbf{b}-\mathbf{a}}{||\mathbf{b}-\mathbf{a}||} \]

  • 胡克定律
    • \(\dfrac{\mathbf{b}-\mathbf{a}}{||\mathbf{b}-\mathbf{a}||}\) 表示方向
  • 问题:由于能量守恒,永远不会停下来
    • 加入一个摩擦力
  • 记号

\[ \begin{aligned} &\boldsymbol{x}\\ &\dot{\boldsymbol{x}}=\boldsymbol{v}\\ &\ddot{\boldsymbol{x}}=\boldsymbol{a} \end{aligned} \]

阻尼

  • damping force

\[ \boldsymbol{f}=-k_d\mathbf{\dot{b}} \]

  • 问题:会引起所有的运动都停下来(Slows down all motion)
    • 表现不了弹簧内部的损耗
  • 表现问题的例子
    • 两个质点和连接它们的弹簧,在光滑的水平面上同步的向右运动,理论上应该不会被停下来,而且弹簧之间应该没有相对运动
    • 但是按照这个模型他们会被停下来
  • 阻尼应该加在弹簧上,即两个质点的相对运动上(相对速度在弹簧方向上的分量)

\[ \boldsymbol{f_{b}}=-k_d\dfrac{\mathbf{b}-\mathbf{a}}{||\mathbf{b}-\mathbf{a}||}\cdot(\mathbf{\dot{b}}-\mathbf{\dot{a}})\cdot \dfrac{\mathbf{b}-\mathbf{a}}{||\mathbf{b}-\mathbf{a}||} \]

  • 式子含义的解释

  • 可以解释圆周运动,速度没有衰减的现象

组合

弹簧模拟布

问题1:切变

  • 布有抵抗切变的力,但是这个模型对角线一拉会形变

问题2:不成平面

  • 如果有一个力让这个结构不成平面,这个结构可能不会恢复
    • 例如上面的结构沿着对角线对折
  • 但是现实的布料是会恢复的

策略

  • 加对角线弹簧
    • 但是变得不对称了
    • 解决不了问题 2

  • 加两个对角线
    • 同样解决不了问题 2(竖直对折)

  • 每一个点和它相隔一个点的点相连
    • skip connection
    • 这样不管如果你把这个结构折成不在一个平面内的结构的话,势必会影响某个弹簧(产生恢复力)
    • 红线的连接相对较弱(劲度系数较小)

有限元方法模拟布料

  • FEM:Finite Element Method
  • 广泛应用于汽车碰撞的模拟
  • 力的作用会传导
  • FEM 写起来很复杂

粒子系统

  • Particle System
  • 把模型看成是很多个粒子的集合
  • 每个粒子的动作都被(非)物理上的力定义
  • 在现代图形学和游戏中广泛应用
    • 实现比较简单和方便
    • 点越多,复杂度越高,模拟得越精细,执行越慢
  • 问题
    • 可能需要大量的粒子(流体)
    • 可能需要一些其他的加速结构
      • 例如要求粒子之间的引力(需要有一个很快得找到周围的粒子的方法)

简单算法

1
2
3
4
5
6
For each frame in animation
[If needed] Create new particles
Calculate forces on each particle
Update each particle’s position and velocity
[If needed] Remove dead particles
Render particles
  • 建模的部分确定有哪些相互作用力
  • 怎么去解作用力
    • 学术界更关心
    • 更难一些
  • 注意:模拟和渲染的过程是分开的

粒子系统中力的作用

  • Attraction and repulsion forces(引力与斥力)
    • Gravity, electromagnetism, …
    • Springs, propulsion, …
  • Damping forces(阻尼)
    • Friction, air drag, viscosity, …
  • Collisions(碰撞)
    • Walls, containers, fixed objects, …
    • Dynamic objects, character body parts, …

粒子的扩展

  • 粒子:大规模范围内有很多小的重复的东西,这些东西可以理解为粒子

模拟鸟群

  • http://www.red3d.com/cwr/boids/
  • 引力:和邻居的中心有个引力(任何一只鸟都不想落单,并且试图融入到他们中间去)
  • 斥力:和每只邻居中的鸟都有斥力(任何一只鸟都不希望和其他鸟离的太近)
  • 朝向:邻居的朝向平均值(希望沿着和邻居相同的方向飞)

其他例子

  • 模拟分子结构
    • Molecular Dynamics
  • 人群的模拟
    • Crowds + “Rock” Dynamics

其他笔记

正运动学

  • Forward Kinematics
  • 做出一种动画,用于描述一个骨骼系统,能够表示和人类似的拓扑结构

  • Articulated skeleton(铰接式骨架)
    • Topology (what’s connected to what)
      • 拓扑结构,具体怎么连接
    • Geometric relations from joints
      • 通过关节连接
    • Tree structure (in absence of loops)
      • 树的结构(无环)
  • 关节的类型
    • Pin:允许 1D 的旋转
    • Ball:允许 2D 的旋转(像球一样旋转、可以转到平面外)
    • Prismatic joint:允许拉长
  • Pin(被钉住一样)

  • Prismatic joint(棱柱形关节)

关节的例子

  • Pin 关节连接

\[ \begin{aligned} &p_x=l_1\cos(\theta_1)+l_2\cos(\theta_1+\theta_2)\\ &p_y=l_1\sin(\theta_1)+l_2\sin(\theta_1+\theta_2)\\ \end{aligned} \]

评价

问题

  • 定义太过于物理
  • 不适合与艺术家
    • 艺术家喜欢更加直观简单的定义,例如从哪里移动到哪里(而不是几个参数)

好处

  • 方便计算模拟,实现简单

逆运动学

  • 告诉你运动的结果,然后计算出参数来模拟这个结果
    • 例如给出轨迹,然后计算参数

关节的例子

  • 给你 \(P\) 点的轨迹,求出中间的过程中的 \(\theta_1,\theta_2\) 的值,从而模拟这个运动

  • 解起来很复杂

评价

问题

  • 关节多了很难算
  • 解不唯一

  • 可能无解
    • 解只可能出现实线的圆环上,其他地方无解

解决策略

  • 优化方法求解(梯度下降)

逆运动学例子

  • Grochow et al., Style Based Inverse Kinematics

Rigging

  • 指对于形状的控制
    • 类似于木偶的控制
  • Rigging is a set of higher level controls on a character that allow more rapid & intuitive modification of pose, deformations, expression, etc
  • 一定程度上可以说是对于逆运动学的一个应用
  • Rigging 本身很复杂
    • 建模很复杂

Blend Shape

  • 艺术家对同一个人物形象的两个动作已经做好了,不使用骨架,直接堆表面进行插值出中间的形态
    • 对于控制点进行插值

Motion Capture

  • 动作捕捉
  • 真人的控制点

  • 好处
    • 真实感非常强
    • 实际动作不需要艺术家去调,很方便(快)
  • 缺点
    • 动作演员很辛苦
    • 动画人物的动作和现实人做出的动作还是有差异的
      • 后期调整
    • 捕捉不到很好的数据
    • 成本高
      • 需要很多个摄像机,才能捕捉到完整的信息
    • 人物动作自己遮挡到控制点

其他的控制点模型

  • 光学的方法(不受遮挡的影响)
    • 应用相对广泛
    • 需要很多相机高频捕捉
  • 机械的方法(直接输出数据)
  • 得到的数据
    • 每一个控制点的位置随着时间变化的信息
  • 可以得到非常真实的动画
  • 恐怖谷效应 Uncanny valley
    • 过于真实带来的问题
  • 阿凡达 Avatar
    • 使用了面部捕捉
    • 里程碑式的作品

动画产业的 pipeline

  • VFX:visual effects
  • 开销:美工的开销、渲染的开销
    • 动画电影的开销比请演员还高