第二十一章:Animation、Simulation

Animation/Simulation

计算机动画介绍:

  • 历史
  • 基本制作方法:关键帧
  • 物理模拟方法
  • 运动学
  • rigging(绑定动画)

动画最初的定义“让东西动起来”:

  • 一种交流的工具,展示动起来的东西
  • 美学

对于建模或者几何的拓展

  • 把 3D 模型延伸到时间的纬度

动画怎么制作

  • 把很多图按顺序,按一定速度去播放(人眼有视觉暂留的效果)

虚拟现实为了让人们带头戴设备不晕,对帧率要求非常高(2 只眼睛必须达到 90fps)​image

动画的发展​image

电影技术的历史
最早电影技术用于科学研究(比如生物学研究)​image

第一部手绘 Feature-Length 动画​image

第一部数字动画​image

早期计算机动画​image

电脑生成的恐龙​image

玩具总动员(里程碑式的,整个电影都是用 CG 生成的,用光栅化的效果生成阴影)​image

关键帧

关键帧能定义动画的总的走向

10 年前(食破天惊)​image

近年(冰雪奇缘 2)​image

image​关键帧插值​image

线性插值不够连续,所以去要用到一些样条去做到更光滑的插值​image

物理模拟

牛顿第二定律:F=ma,只要知道一些初始条件,比如物体的初始位置,受到的力,可以动态算出物体的位置。

物体仿真

建立正确的受力模型​image

布料的模拟(模拟的不对会发生穿模的现象,比如衣服穿透了人的身体)​image

流体:

分为两步:1.模拟水是怎么运动的,拿到水的形状、位置。2.把结果拿去渲染​image

质点弹簧系统模拟绳子的运动​image
模拟头发的运动

image

用点符号表示求导

一块布可以用很多的质点弹簧进行模拟​image

简单的弹簧

理想的弹簧:a 受到的弹簧把 a 拉向 b 的力 fa->b = ks(b-a),b 受到的力与 a 相反力的大小和 a、b 间的距离成正比(胡克定律),ks 是弹性系数​image

被拉伸的弹簧

a 受到的力等于弹簧质点间的距离绝对值减去弹簧原本长度,再乘以 a 到 b 的方向的单位向量。问题是:弹窗不会停下来。​image

image​质点在运动过程中的能量损失,可以用摩擦系数来计算。表现起来就像是质点运动的时候有一个拉力,使得质点的速度慢下来。​image

但也存在一个问题,这样做摩擦系数他会同时作用于两个质点,让所有的运动都慢下来(比如弹簧从高处落下来降到地上速度也会降低),但我们想要的是质点之间的关系。

我们把弹簧的摩擦系数与质点之间的速度差做乘积,并在物体运动方向做投影,此时阻力仅在质点之间作用,不会影响整体。​image

弹簧结构​

image

模拟一块布的时候,会遇到一些问题:

1.这个结构无法承受对角线方向的剪力

2.这个结构无法抵抗平面外的弯曲(比如把一张纸对折时,基本对折处的节点不会受到周围节点对抗的力,但是对于布而言,显然折叠时,折叠处的节点会受到周围节点的拉力)​image

这个时候可以往剪力作用的方向的垂直方向加一个约束,此时可以对抗一个方向上的剪力,但还是无法对抗平面外的弯曲。​image

再往另一个方向加一个约束,此时可以对抗两个方向的剪力,但还是无法对抗平面外弯曲​image

在节点间跳连,来对抗平面外的弯曲,同时这个连接应该是一种较弱的起辅助作用的连接​image

最后,可以得到一个比较好的对布的模拟:​image

除了质点弹窗系统外,还可以用有限元的方法进行布的运动的模拟,运动从一个位置传递到另一个位置。

粒子系统

有一些运动可以用大量粒子来模拟,比如说雾、沙子,在游戏中有广泛的应用。
粒子系统需要计算每个粒子受到的力,优点是易于理解和实现,可以用少量粒子来体现速度,更多的粒子来体现复杂度。缺点是有一些场景需要大量的粒子,比如说模拟流体,同时一个粒子会受到四周其他粒子的力的作用,这些计算需要用到加速结构。​image

粒子系统动画制作的步骤:
对于每一帧的运动:
1.创造一些粒子

2.计算每个粒子受到的作用力

3.更新粒子的位置和速度

4.移除死掉的粒子

5.渲染

image

粒子系统的受力:

1.引力和斥力

2.摩擦力

3.碰撞

image

粒子间的引力:​image

模拟星云:​image

模拟流体:​image

粒子系统就是对一个群里中的个体的运动进行计算

模拟鸟群,把每只鸟作为一个粒子,鸟的运动遵循一些基本规则:

1.每个鸟会受到周围鸟的吸引

2.每个个体之间有一段距离(斥力)

3.所有鸟基本都朝着一个方向运动​image

模拟分子运动​image

正向运动学

骨骼的表示:
1.拓扑结构(找到每个骨骼相连的骨骼)

2.关节处的几何关系

3.树状结构:

关节的连接类型

1.一维的铰连接

2.二维的球关节

3.平移关节​image

2d 模拟一个两段的手臂:先算出第一个关节的旋转角,再算出第二个关节的旋转角​image

动画可以表示为时间和角度的函数​image

正向运动学的优缺点:
优点:

运动的控制很方便,实现方式也很直接

缺点:物体表示和艺术家们想要的动画效果不一致,花费太多时间​image

逆向运动学

从运动的顶点推测中间的位置​image

image​逆向运动学下的模拟的手臂运动的求解​image

逆向运动学的困难点:

可能有多个解或者没有解​image

image​​image​因此会用到一些优化算法(比如梯度优化算法)​image

逆向运动学的模拟 demo​image

Rigging

就像牵线木偶一样,捕捉所有特征的变化,但制作成本很大,同时需要艺术和技术上的训练:​image

Blend Shapes

对两个面做插值,计算从一个面到另一个面变化的中间态。​image

运动捕捉

记录真实世界的运动,在大量数据中提取某一个动作。​image

运用最多的还是光学的

运动捕捉的优缺点:
优点:可以快速捕捉大量真实数据,效果的真实性很高

缺点:成本很大,捕捉的运动效果无法满足艺术家的需求(动画可以需要更夸张的运动)

运动捕捉设备:光学的、电磁波的、机械的​image

运用最多的还是光学的​image

image​​image​面部的动画模拟​image

当模拟的动画过于接近真实人类时,会有恐怖谷效应

面部表情捕捉​image

电影的生产线​image

下一节课:
怎么通过力、物理理论模拟真实的运动