【GAMES101笔记速查——Lecture 21 Animation】

动画/模拟

目录

[1 计算机动画历史](#1 计算机动画历史)

[1.1 动画是什么?](#1.1 动画是什么?)

[1.2 动画的历史](#1.2 动画的历史)

第一个动画:公元前,原始壁画

1813年:圆盘画图,按一定速度显示

1878年:第一个电影:一开始是科学研究用,比如研究马的奔跑形态

1937年:白雪公主和七个小矮人:第一部和电影长度一样的动画

1963年:用计算机生成数字动画

1972年:用计算机生成人脸的三维网格模型

1993年:侏罗纪公园,用电脑成的恐龙放到电影里面

1995年:玩具总动员,用电脑生成的完整长度的电影

2009年:水母上的涟漪还不是很真实

2019年:冰雪奇缘,头发、冰的模拟都非常好

[2 动画是如何制作的?](#2 动画是如何制作的?)

[2.1 关键帧动画(Keyframe Animation)](#2.1 关键帧动画(Keyframe Animation))

[3 物理模拟 (Physical Simulation)](#3 物理模拟 (Physical Simulation))

[3.1 物理模拟是什么?](#3.1 物理模拟是什么?)

[3.1.1 牛顿定律:F=ma](#3.1.1 牛顿定律:F=ma)

[3.1.2 物理模拟的例子](#3.1.2 物理模拟的例子)

[3.2 质点弹簧系统(Mass Spring System)](#3.2 质点弹簧系统(Mass Spring System))

[3.2.1 一些例子:绳子、头发、布料](#3.2.1 一些例子:绳子、头发、布料)

[3.2.2 质点弹簧系统概念](#3.2.2 质点弹簧系统概念)

(1)基础模型:一个长度为0的弹簧左右两边连接着两个质点

(2)让弹簧长度不为0

(3)加入摩擦力

(4)加弹簧内部的摩擦力

(5)弹簧的结构:面、网格

解决方法:对角线加弹簧,只能抵抗一个方向上的力,另外一个方向依然可以折叠

改进:再加另外一个方向对角线,但现在水平折叠,也是可以的

进一步改进:跳跃链接任何一个点都和它隔一个点的点连接起来,这样不管怎么弯折平面,都会有一个抵抗的力。

[3.3 粒子系统(Particle Systems)](#3.3 粒子系统(Particle Systems))

[3.3.1 粒子系统模拟](#3.3.1 粒子系统模拟)

[3.2.2 粒子系统的力](#3.2.2 粒子系统的力)

举例:万有引力

[3.3.3 例子:星系模拟、水的模拟](#3.3.3 例子:星系模拟、水的模拟)

[3.3.4 粒子概念延伸](#3.3.4 粒子概念延伸)

例子:用粒子模拟分子结构、人群模拟

[4 运动学](#4 运动学)

[4.1正运动学(Forward Kinematics)](#4.1正运动学(Forward Kinematics))

[4.1.1 基本模型](#4.1.1 基本模型)

[4.1.2 例子:人类行走](#4.1.2 例子:人类行走)

[4.1.3 正向运动学的问题:](#4.1.3 正向运动学的问题:)

[4.2 逆向运动学(Inverse Kinematics)](#4.2 逆向运动学(Inverse Kinematics))

[4.2.1 概念](#4.2.1 概念)

[4.2.2 问题](#4.2.2 问题)

[4.2.3 逆运动学例子](#4.2.3 逆运动学例子)

[5 Rigging](#5 Rigging)

[5.1 Rigging定义](#5.1 Rigging定义)

[5.2 动作捕捉(Motion Capture)](#5.2 动作捕捉(Motion Capture))

[5.2.1 定义](#5.2.1 定义)

[5.2.3 动捕设备](#5.2.3 动捕设备)

[5.2.4 动捕数据](#5.2.4 动捕数据)

[5.2.5 面部模拟的挑战](#5.2.5 面部模拟的挑战)

[6 动画/电影的生成过程](#6 动画/电影的生成过程)


1 计算机动画历史

1.1 动画是什么?

·把物体变成活的

·动画是建模/几何的一种拓展:在不同的时间有不同的图。

·动画:因为有视觉暂留现象,按一定速度连续放送一系列的图片即可。

电影:24帧/秒

平常的视频:30帧/秒

虚拟现实:双眼的采样都要大于90帧/秒

1.2 动画的历史

第一个动画:公元前,原始壁画
1813年:圆盘画图,按一定速度显示
1878年:第一个电影:一开始是科学研究用,比如研究马的奔跑形态
1937年:白雪公主和七个小矮人:第一部和电影长度一样的动画
1963年:用计算机生成数字动画
1972年:用计算机生成人脸的三维网格模型
1993年:侏罗纪公园,用电脑成的恐龙放到电影里面
1995年:玩具总动员,用电脑生成的完整长度的电影
2009年:水母上的涟漪还不是很真实
2019年:冰雪奇缘,头发、冰的模拟都非常好

2 动画是如何制作的?

2.1 关键帧动画(Keyframe Animation)

如图,一个人有3个主要动作

在3个关键动作之间补一些中间过程的运动趋势

具体而言,把每一帧看作一个带参数的向量

每一帧都有一些关键点,这些关键点在其他的帧上也有对应的点。

找出这些关键点和它们之间一一对应的关系,然后对不同帧中的点做插值处理。

线性插值:比较生硬

样条插值:可以控制插值效果

3 物理模拟 (Physical Simulation)

3.1 物理模拟是什么?

3.1.1 牛顿定律:F=ma

模拟/仿真就是在推导/实现这种物理公式,来计算出物体的变化。

只要能正确建立物理模型,就可以正确表示。

3.1.2 物理模拟的例子

布料模拟的例子

流体模拟

一般来说:只要正确建立物体的相互作用力,就可以模拟出正确的物理效果

3.2 质点弹簧系统(Mass Spring System)

这里介绍一个很简单经典的系统:质点弹簧系统

3.2.1 一些例子:绳子、头发、布料

3.2.2 质点弹簧系统概念

质点弹簧系统:是一系列的质点和弹簧

(1)基础模型:一个长度为0的弹簧左右两边连接着两个质点

胡克定律:弹力 = 劲度系数 * 弹簧伸长的长度

基本模型忽略了弹簧的长度,但实际上弹簧是有实际长度的

(2)让弹簧长度不为0

括号里面b点和a点的距离减去初始长度才是弹簧伸长的长度

有什么问题?

动能和势能一直互相转化,永远不会停

这里引入一些记号:

变量上点一个点就是它的一阶导数、变量上点两个点就是它的二阶导数。

(3)加入摩擦力

摩擦力f的方向与速度方向相反,

现在有什么问题?会使所有的运动都停下来,无法表示弹簧内部的力。

(4)加弹簧内部的摩擦力

内部的摩擦力与相对速度有关:

(b的速度-a的速度)越快,力越大,但还要考虑力的方向,只有投影到b-a方向上的力才会在内部产生摩擦力。反例就是固定住a点,然后让b点绕着a点做匀速圆周运动,这样的话,虽然a点和b点之间有速度差,但是并不会在内部产生摩擦力

(5)弹簧的结构:面、网格

现在想用弹簧质点系统模拟一块布,就出现了很多问题:

切变:布料对角线拽的话,结构的形状会变,但实际上的布料可以抵抗这种力

对折:布料很难被折叠,但现在的结构可以被轻易折叠

解决方法:对角线加弹簧,只能抵抗一个方向上的力,另外一个方向依然可以折叠
改进:再加另外一个方向对角线,但现在水平折叠,也是可以的
进一步改进:跳跃链接任何一个点都和它隔一个点的点连接起来,这样不管怎么弯折平面,都会有一个抵抗的力。

这样的一个质点弹簧系统就基本够用了!

例子:

有限元模型也能做这个模拟

3.3 粒子系统(Particle Systems)

粒子系统:建模每一个粒子,粒子之间的力、外部的力等描述出来。

魔法效果、烟雾、灰尘等会用这种粒子系统模拟。

粒子系统存在的问题:

·粒子之间的作用要模拟清楚很复杂,如粒子之间的引力、位置变化等,这是一个有挑战性的工作。

·粒子系统需要考虑的粒子非常多。

3.3.1 粒子系统模拟

这里有一个简单的算法:

·动态生成粒子

·计算粒子的作用力(包括内部和外部)【有点难】

·通过作用力来更新粒子的位置和速度 【也有点难】

·移除死亡的粒子

·渲染粒子

3.2.2 粒子系统的力

引力和斥力:重力,电磁力、弹簧、推力······

摩擦力: 摩擦力、空气阻力、粘滞力······

碰撞处理: 墙壁、容器、固定物体、动态对象、角色身体部位······

举例:万有引力

3.3.3 例子:星系模拟、水的模拟

3.3.4 粒子概念延伸

在一个很大规模的范围内有很多重复的东西,这些东西就可以被看作是粒子

比如模拟一个鸟群,有如下的假设

·任何一只鸟都不想落单,想要融入其他鸟

·鸟和鸟之间不愿意离的太近

·鸟要考虑整体的运动方向

例子:用粒子模拟分子结构、人群模拟

4 运动学

在图形学中,常会将运动学分为正运动学和逆运动学,逆运动学相对来说比较复杂

4.1正运动学(Forward Kinematics)

4.1.1 基本模型

要描述一个类似人类骨骼的骨骼系统,要定义不同的关节。

第一种:pin,可以在钉住的平面上旋转

第二种:Ball,可以空间360度旋转

第三种,可以伸缩

一个简单的情况:两个关节

第一段旋转一个角度,第二段旋转一个角度,那么最后的尖端在哪里?

正向运动学就是计算这些运动的结果。

4.1.2 例子:人类行走

正向运动学很早就得到了广泛应用。

4.1.3 正向运动学的问题:

实现容易,但不直观,艺术家们难以使用这些工具。

4.2 逆向运动学(Inverse Kinematics)

4.2.1 概念

给出最后的位置,也就是固定P点,你要告诉我角度1和角度2.

4.2.2 问题

这个式子会变得很复杂,不好计算。

逆向运动学的解有时候不唯一,有时候无解。

人们会采用一些优化方法来找到中间的位置。

梯度下降法可以解

还有些其他的优化方法,往往不会采用数学公式的计算来解。

4.2.3 逆运动学例子

5 Rigging

5.1 Rigging定义

是什么?通过类似于提线木偶的操作来控制物体的动作

例子

人物的两个动作之间可以通过插值来做

5.2 动作捕捉(Motion Capture)

5.2.1 定义

让真人的动作直接反应到虚拟的人物上,这时候就要建立真人的控制点和虚拟人物控制点之间的映射。

优缺点

真实、动捕的速度快,数据多。

但准备时间长、真人和动画人物的动作风格不一致、有时候捕捉不到有用的数据、有时候有遮挡也会导致数据丢失,总之问题很多。

5.2.3 动捕设备

视觉分析、磁场、机械等方法

运用最广泛的还是光学动作捕捉的方法,贴片/小球

5.2.4 动捕数据

不同的点在不同的时间会出现在三维空间里的哪里。

5.2.5 面部模拟的挑战

通过动捕可以达到非常真实的动画效果,但也造成恐怖谷效应

阿凡达就用了面部捕捉,是个里程碑式的作品

6 动画/电影的生成过程

有个想法 - 开会 - 画草稿 - 放幻灯片给大家看

物体位置 - 场景布置 - 角色建模 - 纹理制作 - 做成动画 - 给光照(渲染)

得到三维图像 - 后期合成 - 2d滤镜 - 颜色确认 - 产品输出

相关推荐
孤邑2 小时前
【Linux】select,poll和epoll
linux·网络·笔记·学习
Layue000003 小时前
学习HTML第三十三天
java·前端·笔记·学习·html
zslefour3 小时前
ComfyUI节点安装笔记
笔记
cwtlw5 小时前
数据库学习记录02
开发语言·数据库·笔记·sql·学习
baijin_cha5 小时前
深度学习基础02_损失函数&BP算法(上)
人工智能·笔记·深度学习
大佬,救命!!!6 小时前
fiddler抓包工具与requests库构建自动化报告
笔记·python·测试工具·fiddler·自动化·requests·开源推荐
半夏知半秋6 小时前
unity中的Horizontal和Vertical介绍
笔记·学习·unity·c#·游戏引擎
乘风对月歌6 小时前
Gradio入门学习笔记
数据库·笔记·学习
为啥我就不胖呢7 小时前
Jira使用笔记二 ScriptRunner 验证问题创建角色
笔记·jira