11 Animation

11 Animation

概述

动画可以视作是模型的扩展:将场景模型表示为关于时间的函数

输出:一系列图像,按顺序观看时产生动态的感觉

  • 电影:24fps
  • 视频(一般):30 fps
  • 虚拟现实:90 fps

历史

动画最早用作科学用途,随着技术的进步,加速了动画的发展

关键帧动画

给定一些关键的帧,其他中间的过渡部分则通过插值的方式生成出来

关键帧动画本质是一种插值的技术

  • 线性插值的效果通常不太好
  • 会使用更平滑的方式进行插值

物理模拟

通过牛顿定律计算物体的后续位置与速度

只要正确建立了物体之间的相互作用力,自然可以模拟正确的效果

质点弹簧系统

质点弹簧系统用于模拟物体形变和运动的物理模型。

它将物体离散为若干个质点,质点之间通过弹簧连接,通过计算质点之间的相互作用力来模拟物体的物理行为。

  • 质点 :具有质量但忽略大小和形状的物体,是系统的基本组成单元。每个质点的位置、速度和加速度等状态变量都需要被跟踪和计算。
  • 弹簧 :连接两个质点的弹性元件,其力的计算通常遵循胡克定律,即弹簧力与弹簧的形变量成正比,方向与形变方向相反。公式为 F\=-k*(Δl),其中 F 为弹簧力,k 为弹簧的劲度系数,Δl 为弹簧的伸长量或压缩量。
  • 运动方程 :根据牛顿第二定律,质点的加速度与所受合力成正比,与质点质量成反比。通过对质点所受的弹簧力以及其他外力(如重力、阻尼力等)进行求和,得到质点的加速度,进而积分得到质点的速度和位置。

在计算机图形学中,可用于模拟布料、毛发、皮肤等柔性体的运动和形变;在物理模拟中,可用于研究物体的振动、碰撞等物理现象。

对于复杂的面,质点之间会进行额外的连接,以便更好的符合实际情况

有限元方法

除了质点弹簧系统之外,还有其他的模拟方法,例如有限元方法

有限元方法是一种用于求解物理问题和工程问题的数值计算方法。它将连续的物理域离散为有限个单元,通过在单元上建立近似方程,并利用变分原理或加权残值法等方法,将原问题转化为代数方程组进行求解。

粒子系统

粒子系统用于模拟由大量微小粒子组成的复杂现象和效果。

每个粒子具有自己的属性,如位置、速度、颜色、大小等,通过对粒子的更新和绘制,可以生成各种逼真的动态效果。

挑战:

  • 可能需要大量例子
  • 可能需要加速结构(例如,寻找相互作用的最近粒子)

更新: 粒子会在每一帧更新

  • 如有需要,创建粒子
  • 计算每个粒子的作用力
  • 更新每个粒子的位置和速度
  • 如有需要,移除死亡粒子
  • 渲染粒子

粒子系统的力:

  • 吸引力和排斥力:

    • 引力、电磁力
    • 弹力,推力
  • 阻尼力:摩擦力,空气阻力
  • 碰撞:

    • 墙壁,容器,固定物件
    • 动态物体,角色身体部位

运动学

正向运动学

正向运动学是从关节空间到操作空间的映射过程。

它主要研究机械臂(或类似的运动学结构)的各个关节角度(或位置)与末端执行器在空间中的位置和姿态之间的关系。

简单来说,当已知机械臂各个关节的参数(如旋转角度或伸缩长度)时,通过正向运动学可以计算出末端执行器在空间中的具体位置和姿态。

逆向运动学

逆向运动学是正向运动学的逆过程。

它的目标是确定机械臂的关节角度(或位置),使得末端执行器能够准确地到达指定的空间位置和姿态。

也就是说,已知末端执行器期望的位置和姿态,要求解出各个关节的参数,以实现该位置和姿态。

值得注意的是,对于给定的末端位置,可能存在多个解或不一定存在解满足条件

Rigging

Rigging是指为 3D 模型创建骨骼结构和控制系统,以便能够对模型进行动画制作的过程。

  • 骨骼绑定 :将骨骼放置在模型内部,例如在人物模型中,将脊柱、四肢等骨骼放在相应的位置,以模拟人体骨骼的分布。
  • 蒙皮 :也称为权重分配。这是将模型的几何体与骨骼关联起来的过程。通过蒙皮,定义了模型的每个部分受哪些骨骼的控制以及控制的程度。例如,在手臂模型上,赋予手臂骨骼对皮肤的控制权重,使得当骨骼移动时,模型的皮肤也随之变形。
  • 动画控制 :创建各种控制器,如控制面板、滑块、旋钮等,方便动画师控制角色的动作。例如,一个旋转控制器可以用来控制手臂的弯曲角度。

Rigging 是正向运动学和逆向运动学在角色动画中的具体应用。在 Rigging 过程中,会利用正向运动学来计算骨骼的运动关系,例如,当动画师调整手臂骨骼的旋转角度时,模型的手臂会按照正向运动学的原理进行相应的位置变化。

同时,也会使用逆向运动学来解决一些复杂的运动问题。比如,在角色行走时,脚部的位置和姿态是已知的,通过逆向运动学可以计算出腿部骨骼的运动角度,以实现自然的行走动作。

动作捕捉

Motion Capture

通过在物体(通常是演员的身体或物体表面)上放置标记点(Marker)或传感器,利用光学、惯性、电磁等技术捕捉这些标记点或传感器的位置和运动数据,然后将这些数据转换为数字信号,用于驱动虚拟角色或物体的运动。

Facial Motion Capture

主要针对演员的面部表情和口型进行捕捉,通过特定的技术获取面部肌肉的运动、五官的变化等数据,将其转化为数字信号,用于驱动虚拟角色的面部表情和口型。

单粒子模拟

已知某个物体在某个时刻的速度和位置,求解一段时间之后它的位置和速度。

很多情况下物体不是匀速运动,粒子在不同的位置具有的速度不一致。

假设存在一个速度场,对于一个粒子来说,只要知道它的位置,就能够知道它的速度。

欧拉方法

取一个很小的时间${\Delta}t$,可以认为,在这个时间里,物体是做匀加速直线运动

那么,可以通过逐步递进的方式,求解最终的物体位置

$x^{t + {\Delta}t} = x^t + v^t {\Delta}t \\ v^{t + {\Delta}t} = v^t + a^t {\Delta}t $

通过上面的公式反复迭代,可以最终得到结果

缺陷:

  • 因为每一次的模拟都是近似,随着迭代次数的增加,误差会逐渐增大
  • 稳定性差,难以适用于曲线:在曲线上的误差会更大,更容易偏离曲线轨迹

中点法

中点法是一种改进方法,思路是算两次欧拉方法

对于一次单独的迭代来说

  • 先算一次,得到路径a
  • 取路径的中点b的速度
  • 应用中点的速度重新算一次,得到路径c

自适应补偿

自适应补偿的思路是:

  • 将步长减半,比较步长减半与不减半的差异
  • 如果差异过大,则继续步长减半的做法,最终得到合适的自适应步长

隐式欧拉方法

原来的欧拉方法,是用上个时刻的速度,加速度来更新位置

而隐式欧拉方法,是用这个时刻的速度和加速度来更新从上一时刻到这一时刻的位置

$x^{t + {\Delta}t} = x^t + v^{t+{\Delta}t} {\Delta}t \\ v^{t + {\Delta}t} = v^t + a^{t+{\Delta}t} {\Delta}t $

这种情况需要提前求解速度和加速度

量化误差

如何确定 / 量化 “稳定性”?

  • 我们使用局部截断误差(每一步) / 总累积误差(整体)
  • 绝对值无关紧要,但相对于步长的阶(order)很重要
  • 隐式欧拉方法具有一阶精度,这意味着:

    • 局部截断误差:$O(h^2)$
    • 全局截断误差:$O(h)$(h 是步长,即 Δt)
  • 对 O(h) 的理解:

    • 如果我们将 h 减半,我们可以期望误差也会减半。

阶数越高越好

Runge-Kutta Families —— RK4

这是一类用于求解常微分方程(ODEs)的先进方法。

  • 特别擅长处理非线性问题。
  • 其四阶版本最为广泛使用,通常被称为 RK4。

Position-Based / Verlet Intergration

思想:

  • 在修改后的欧拉前向步之后,约束粒子的位置,以防止发散和不稳定的行为。
  • 使用约束后的位置来计算速度。
  • 这两种方法都会耗散能量,从而增加稳定性。

优缺点:

  • 快速且简单。
  • 不基于物理原理,会耗散能量(存在误差)。

刚体模拟

刚体不会发生形变,其运动等效于质点,

除了速度和位置之外,还存在角度和角速度

流体模拟

Position-Based

关键思想

  • 假设水由小的刚体球组成
  • 假设水不可被压缩(即密度恒定)
  • 因此,只要某处密度发生变化,就应该通过改变粒子位置来进行“修正”,这象征着水的流动

任何一个点处的密度,都是任何一个其他的小球的位置的函数

使用梯度下降法来实现粒子位置更新

欧拉方法与拉格朗日方法

拉格朗日方法(质点法):假设物体是由多个小粒子组成

欧拉方法(网格法):将空间分割为网格,考虑网格随时间的变化情况

物质点法

Material Point Method, MPM

一种混合方法,结合了欧拉(Eulerian)和拉格朗日(Lagrangian)观点:

  • 拉格朗日观点:考虑携带材料属性的粒子。
  • 欧拉观点:使用网格进行数值积分。
  • 交互过程:粒子将属性传递给网格,网格执行更新,然后通过插值将结果反馈回粒子。


11 Animation
https://enlight3n.github.io/2025/01/09/GAMES101/11 Animation/
作者
Enlight3n
发布于
2025年1月9日
许可协议