GAMES101现代计算机图形学入门-闫令琪-随堂笔记-Lecture 21 Animation

写在前面:原始文案来源于凌风同学博客,本文在其基础上增加图片并对文案稍作修改。此系列文章已经私信咨询能否授权发布,但一直尚未得到本人回复。出于工作要求,本人需要记录该系列课程体系,以供后期交流学习使用,不得已在此公开。特在此严谨声明,该系列文章不以盈利为目的,侵权麻烦私信即可删除。

Lecture 21 Animation

一.Keyframe Animation

动画师(例如首席动画师)创建关键帧;助手(人或计算机)创建中间帧(“补间”)
在这里插入图片描述
关键帧动画,通过绘制关键帧,将中间的动画变换过程补充完整。最早是手动一帧帧画出中间的帧,后来可以通过一些动画软件自动插值出来。

(一)Keyframe Interpolation

在这里插入图片描述
将每一帧视为参数值的向量
在这里插入图片描述
线性插值通常不够好,调用样条以实现平滑/可控的插值。用不同的差值方式补全过渡的帧

二.Physical Simulation

用物理的方式去模拟动画。

(一)Mass Spring System: Example of Modeling a Dynamic System

在这里用一个弹簧系统的模拟举例子(质点弹簧系统):
在这里插入图片描述

1.理想化弹簧

力将点拉在一起,强度与位移成正比(胡克定律)。ks是弹簧系数:刚度

首先假设弹簧处于自然伸展状态,左右两个小球,根据胡克定律可以列出以上物理公式。
下面我们考虑弹簧处于不自然伸展状态下的情况(下面考虑被拉伸的情况)

2.非零长度弹簧

在这里插入图片描述
具有非零剩余长度的弹簧
这里 ||b-a||-l 即为弹簧被拉伸的长度,前面用b-a/||b-a||来确定力的方向。
如果这样,弹簧间的运动将永远停不下来(因为没有阻力)
下面就要考虑加上阻力后的情况。

3.引入能量损失

在这里插入图片描述
首先我们定义,若x是位移,那么对x的导数即为速度,在这里记作x上面加一个点,对x的二阶导数为加速度,在这里记作x上面加两个点。

简单运动阻尼
在这里插入图片描述
表现方式同运动中的粘性阻力,沿速度方向减慢运动
kd 是阻尼系数

在这里我们始终将阻力方向表示为运动方向的反方向。但是这种模型只是表示外力的情况,无法表示弹簧的内力。这种结果肯定是欠完善的。因为当弹簧整体向地上落下时,会出现下落的阻力使得弹簧下降越来越慢,显然不对。

4.弹簧内部阻尼

仅阻尼内部的弹簧驱动运动
在这里插入图片描述
粘性阻力仅在弹簧长度变化时产生,不会减慢弹簧系统的群体运动(例如群体的整体平移或旋转)这只是一种特定类型的阻尼
在此我们引入弹簧内力的情况。红框内部算出来的是一个数值,是内力在物体运动方向的分力,最后一项为力的方向。内力的方向同样与物体相对运动方向相反。

(二)Structures from Springs

在这里插入图片描述
这里有一块布,每两个顶点之间都用上弹簧模拟的算法,但是如果拽两个角,整个结构会被拉伸变形。而实际上当我们拽一块布的两个对角的时候,布的结构并不会被拉伸变形。这就是我们下面要考虑的问题。

行为由结构联系决定,下种结构不抵抗剪切,不抵抗平面外弯曲
在这里插入图片描述
下种结构将抵抗剪切,但是有方向性偏差,而且这种结构也不会抵抗平面外弯曲。
在这里插入图片描述
我们通过在每两个对角之间都加上弹簧结构的线,就可以抵挡对任何两个对角施加的力。下种结构将抵抗剪切,减少方向性偏差,但是仍然不抵抗平面外弯曲。
在这里插入图片描述
另一个问题又产生了,如果沿着某条竖线对折,整个结构立马就塌了,也就是说现在的结构很容易让整个布不在一个平面上。但是实际上布就算弯曲也不会完全塌掉。

那么这里我们每隔一个点连一条线,这些红线之间的作用不是很强,但是仍然有作用力,就可以解决上面布会塌掉的问题。
这种结构将抵抗剪切,减少方向性偏差,抵抗平面外弯曲。
在这里插入图片描述
到这里为止我们就可以用弹簧系统解决基本的布料模拟问题了。
在这里插入图片描述

(三)Aside: FEM (Finite Element Method) Instead of Springs

在这里插入图片描述
这种有限元方法也可以描述布料弹簧系统。

三.Particle Systems

将动力系统建模为大量粒子的集合,每个粒子的运动都由一组物理(或非物理)力定义。粒子是图形和游戏中的流行技术,且易于理解,实施。更少的粒子用于速度,更多用于更高的复杂性。粒子系统的挑战在于可能需要很多粒子(例如流体);可能需要加速结构(例如寻找最近的相互作用粒子)

(一)Particle System Animations

粒子系统的实现步骤:对于动画中的每一帧
1.(选做)创建新粒子
2.计算每个粒子上的力
3.根据作用力更新每个粒子的位置和速度
4.(选做)去除死颗粒
5.渲染粒子
在这里插入图片描述

(二)Particle System Forces

粒子之间要考虑吸引力和排斥力,重力,电磁力,阻尼力,摩擦力、空气阻力、粘滞力等;还要考虑和墙壁、容器、固定物体,动态对象、角色身体部位等碰撞;

(三)Gravitational Attraction

牛顿万有引力定律
在这里插入图片描述
粒子之间的引力就用此物理公式去模拟。

(四)Simulated Flocking as an ODE

将每只鸟建模为一个粒子,每只鸟受非常简单的力:对邻居中心的吸引力,个别邻居的排斥;对齐邻居的平均轨迹…….
数值模拟大粒子系统的演化,除鸟群外,也见于鱼、蜜蜂
在这里插入图片描述
粒子间可能会存在某种行为,如聚集attraction、排斥repulsion、同向alignment等。
在这里插入图片描述

四.Forward Kinematics (正向运动学)

在这里插入图片描述
铰接骨架是人骨架的拓扑(什么连接到什么)结构,是抽象化的关节的几何关系。常见为树结构(没有循环)。运动学模拟的是人的真实骨骼运动。

(一)关节类型

pin(一维旋转):仅支持一个平面的旋转(如膝盖)
在这里插入图片描述
ball(二维旋转):支持二维旋转(如手腕)
Prismatic joint:关节伸长
在这里插入图片描述

(二)示例:2D 中的简单两段臂

动画师提供角度,计算机确定末端执行器的位置 p
在这里插入图片描述
比如这里给出了两个关节,第一个关节旋转一个角度,第二个关节也旋转一个角度,我们可以很容易算出尖端点p点位置。
在这里插入图片描述
也就是说,运动学中只要定义了不同关节的连接方式,我们就可以根据这些连接方式算出各个点的位置。
在这里插入图片描述
我们还可以画出旋转角度随时间的不同变化,让整个关节动起来。

(三)Kinematics Pros and Cons

运动学优势:直接控制方便;实施简单明了
运动学劣势:动画可能与物理不一致;对艺术家而言很耗时

运动学的定义非常的“物理”,各种旋转不同的角度,操作起来很麻烦。而艺术家们更希望能直接拽着物体来运动,因此产生了逆运动学。

五.Inverse Kinematics(逆向运动学)

逆运动学通俗来讲就是,我直接去定义物体的运动情况,中间的关节如何运动,由计算机去算
在这里插入图片描述
动画师提供末端执行器的位置,计算机必须确定满足约束的关节角度

直接逆运动学:对于两段臂,可以解析参数
在这里插入图片描述
在这里插入图片描述
反应在图像上来解释就是,固定一个p点,计算机来告诉我们两个θ值。

可以看出,式子非常复杂。为什么这个问题很难?
情况一:配置空间中存在多个解决方案
在这里插入图片描述
情况二:解决方案可能并不总是存在

在这里插入图片描述
情况三:会出现多解和无解的情况
在这里插入图片描述
一般用N-link IK问题的数值解作为逆向运动学优化:
1.选择初始配置
2.定义误差指标(例如目标和当前位置之间的距离平方)
3.计算误差梯度作为配置的函数
4.应用梯度下降(或牛顿方法,或其他优化过程)
因此我们需要用各种优化方法来解决这些问题,而不是按照数学物理的方法直接去暴力计算。

六.Rigging

绑定是对角色的一组更高级别的控件,允许更快速和直观地修改姿势、变形、表情等。
就像木偶上的绳子,捕获所有有意义的控制点进行更改。
在这里插入图片描述
Rigging的概念类似于木偶人,通过在模型上增加一些控制点,来使人们能够方便地调整模型的动作。原理类似于贝塞尔曲线。

Rigging Example
在这里插入图片描述
如上图,通过一些控制器来控制模型运动。

(一)Blend Shapes

直接在物体表面之间插值,而不是骨架之间。例如,对一组面部表情进行建模。最简单的方案是采用顶点位置的线性组合控制随时间变化的样条权重。可以通过各种不同的差值方式,来实现两个关键帧(动作)之间的流畅过渡。
在这里插入图片描述

(二)Motion Capture

动作捕捉,让虚拟人物和真实人物的动作建立某种关系,将真人的动作反应在虚拟人物上。
在这里插入图片描述
优势:可以快速捕获大量真实数据,真实感很高
弱点:复杂且昂贵的设置,捕获的动画可能无法满足艺术需求,需要更改

动作捕捉的好处是效率高且更真实。但是设备本身操作复杂,且捕捉出来的数据点需要再次整理,保证数据合理,甚至有些数据无法捕捉。

不同设备通过各种控制点,来实现捕捉过程。
在这里插入图片描述

(三)Facial Motion Capture

阿凡达这部电影用到的面部捕捉技术是动作捕捉领域里程碑式的标志。
在这里插入图片描述

(四)The Production Pipeline

动画的制作流程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值