1 - 计算机动画入门

这篇文章简单说说计算机动画入门,从基本概念,质点弹簧系统与运动学等几方面说说。

动画在图形学上可视为对建模或几何的一种拓展,在不同的时间/帧有着不同的模型/几何,也就是多了“时间”这一条维度。

对于时间,电影要求24fps,视频要求30fps,VR要求90fps。

关键帧动画

在一系列动画过程中选取某些关键的动作,作为关键帧,然后在关键帧之间做“过渡动画”。

关键帧的技术就是 插值 ,有线性/曲线/样条插值。

image-20230918180239246

物理模拟

将物理公式加入到动画中,例如用计算出物体在下一帧的位置。

例如布料模拟,流体模拟等方向。

质点弹簧系统

质点弹簧系统(Mass Spring System),由一系列相互连接的质点和弹簧组成。可以用于绳子、头发和布料等的模拟。

该系统最基本的单元——理想化的弹簧如下:

当把弹簧沿着两边拉开时,弹簧劲度系数为,有: 接下来引入弹簧原长,根据胡克定律: 由于这样做会永远让弹簧伸缩,因此还得引入一个阻力:

首先是阻力公式:

其中是阻尼系数。

然后是一些物理量的表示:

综上,阻力可以这样计算:

其中,红色框的意思是相对速度要投影到方向。因为如果是b绕a做圆周运动,那就不应该有阻力。

最后把这两个力都考虑进去就好了。

通过质点弹簧系统的组合,可以得到不同形状的物体:

例如,用各种弹簧模拟一块布:

其中,蓝色部分为抵抗切变的力,红色部分为抵抗折叠的力。

想要更真实点,可以使用有限元方法(FEM,Finite Element Method),常用于汽车碰撞的分析等。

粒子系统

粒子系统(Particle System),模型的动态系统可以看作大量粒子,每个粒子由一组物理(或非物理)的力组成。常用于描述魔法特效,灰尘,烟雾,流体等。

一个较通用的方法如下:

先模拟,后渲染。

粒子系统之间可能有的作用力如下:

粒子系统除了可以描述一些物体流体外,还能描述一些群体与个体间的关系,例如鸟群中的鸟,分子结构,人群等。

运动学(Kinematics)

运动学(Kinematics)指的是物体如何运动,在这里主要描述如何做动画的,它通过骨骼系统实现,它分为正向运动学(Forward Kinematics)和逆向运动学(Inverse Kinematics)。

正向运动学(Forward)

骨骼系统的表示如下:

它有三种关节:

  • 钉子(Pin)关节,1D旋转
  • 球状(Ball)关节,2D旋转
  • Prismatic joint (可以拉长或移动)

正向运动学通过关节的旋转计算出末端p的运动,动画被描述为角度与时间的函数关系。例如两个2D关节的运动:

优缺点:

  • 定义直观,容易实现
  • 艺术家不喜欢太过于物理化的定义

逆向运动学(Inverse)

为了方便动画师,使用逆向运动学,动画师提供末端的位置,计算机计算出满足约束条件的关节角度。

还是以两个2D关节的运动为例,给出p点,去计算两个角度:

可以发现超级难算,而且有时候会出现多解或无解的情况。因此要对其进行优化(梯度下降法):

骨骼绑定(Rigging)

Rigging 是创建角色模型的骨骼结构的过程。这种骨骼结构中有一系列控制点使得我们可以像操纵木偶一样操纵角色模型。

不同的两个动作可以使用Blend Shapes插值。

动作捕捉(Motion Capture)

动作捕捉能够得到真实的动作,但是操作复杂、成本高、有时难以捕捉到好的数据、不能处理夸张的动画效果。其中运用最广泛的是光学方法(Optical)。

动画制作流程

综上,整个动画制作流程大致如下:

参考资料

  • GAMES101-现代计算机图形学入门

  • 21 动画与模拟(基本概念、质点弹簧系统、运动学) (yuque.com)