【计算机动画算法与技术】知识点整理

这是我的课程作业,选一本ca领域的经典教材做知识点整理。反正都整理好了,不如发出来分享一下。

我选的是下面这本。

这本书的主要内容如下:

我就根据章节顺序,去掉第一章,从第二章开始讲。

第二章:基础知识

齐次坐标与转换矩阵

齐次坐标:将三维顶点用4元向量描述。

简单的齐次表达方式:

通过这种方式,可以用4*4矩阵来表达基本的旋转、平移、缩放操作。

通常情况下是左乘,但是也有右乘变换矩阵的,只要一致就可以。

复合转换:转换矩阵的累积操作

相当于结合所有的变换矩阵,如下:

基本的转换操作

旋转、平移、缩放的矩阵形式。比较基础,此处不赘述。

显示管线中的转换描述

显示管线转换问题可以解释为基本转换的累积操作。

对象空间==》世界空间==》眼睛空间==》透视==》图像==》屏幕

四元数表达

第三章:插值技术

插值就是定义边界值并对中间细节内容进行填充。

生成函数

  • 插值数据与逼近值
    • 逼近函数:Bezier曲线、B样条曲线
    • 插值函数:抛物线混合、Catmull-Rom样条、Hermite方程

  • 复杂度
    • 三次多项式及以下可以视为低阶多项式,可以提供足够的平滑度和灵活性。
    • 低于三次的多项式无法提供衔接处切线连续。
  • 连续性
    • 0阶连续性:位置连续
    • 1阶连续性:切线值一样
      • 三次Bezier曲线、Hermite、Catmull-Rom
    • 2阶连续性:曲率、切向量瞬间变化连续
      • 三次B样条曲线、复合Hermite曲线

  • 全局控制与局部控制

常用的用来构建空间路径的是Catmull-Rom样条和Bezier曲线

3.2 曲线顶点的移动控制

曲线参数化,用u来对应曲线上的点。通常情况下用弧长进行参数化。

p=P(u)

可以把P(u)看坐三个函数,分别对应(X,Y,Z)=(P_x(u),P_y(u),P_z(u))

弧长参数化有3中方案:

1. 分析法==》可能表达式无法得出,故而有时用数值方案

2. 数值方案1:对曲线超采样,构造数值表,从而在弧长和参数值之间构建对应关系。通常会结合二分法。

3. 数值方案2:高斯求积估算弧长值

高斯求积方案+二分法,类似于上面的这种,构建弧长和参数对应关系。

速度控制

如果实现了弧长参数化,就可以控制曲线途径处的速度。

通过时间+速度求得弧长,通过弧长得到u,通过u得到P。

易入易出

通常用正弦片段实现。

位置-时间对的曲线

可以添加很多约束条件来得到最终的曲线。这是在空间位置和时间上的插值计算。

3.3 方向插值

有时不仅要考虑位置,还要考虑方向。

四元数作为方向的表现方式,可以方便进行插值,避免万向节死锁问题。

给定两个单位四元数定义的方向,中间四元数可以通过对四元数的4个独立元数据实施线性插值。

它不会在单位球体上产生均匀间距。

与路径协同工作

在动画中,物体的运动路径除了位置、速度和方向外,有时还要考虑避开障碍物、数字化路径的平滑操作等,更加复杂。

基于路径的方向

  • Frenet坐标系
    • 它自己根据曲线属性来调整物体方向。
    • 但是在二阶非连续处将出现跳跃。

  • 相机路径移动
    • 让相机始终朝向目标对象的中心位置。

基于路径平滑操作

数字化路径有时会有噪声、误差,因此造成曲线形状不稳定、抖动。

  • 基于邻接值得线性插值平滑方案

  • 基于邻接值的三次插值平滑方案
    • 能保持曲率和数据的平滑特性。

  • 基于卷积积分的平滑操作
    • 就是卷积平滑

沿表面确定路径

确定起点终点,如何确定最短路径,或者较有路径。

对于复杂表面网格,贪心算法√,重复选起点终点连线投影上的最优边,并修改起点为最优边的终点。

路径计算

如果不知道移动障碍物的状态和位置,那么这时的最优路径计算会比较困难,有几个核心理念:

  • 引入路点,让路程变短。
  • 把障碍物和物体近似成球体看。
  • 有时要考虑物体躲避障碍物时的方向问题,比如机器人躲开障碍物。
  • 如果障碍物也动,用贪心算法每次移动时躲避障碍物并不断调整移动角度。

第四章:插值动画技术

关键帧系统

就是两帧之间插值合成中间帧。

对象的变形操作

拾取和拖拽

移动一个顶点,偏移量的衰减会导致程度不同,则它对周边顶点、面片的影响程度、影响范围不同。

嵌入空间的变形

  • 二维网格变形
    • 把物体嵌入网格,用户移动网格,物体变形
  • 折线变形
    • 用折线而不是二维网格来控制物体变形过程

  • 整体变形
    • 用一个矩阵来表示两个物体之间的整体形变。

  • 自由变形FFD
    • 三维网格实现三维物体的随意形变。
    • 相当于把物体放在三维网格里,拖动网格就可以对物体进行变形。
  • 复合FFD
    • 用不同分辨率的网格来实现节省空间、保留细节。

  • FFD控制点动画

三维形状插值方案

如果两个三维物体之间可以点点对应,那么顶点-顶点方式插值会很方便。

这里要考虑孔洞结构,这是孔洞数量,对象拓扑结构的重要属性。如果两个对象表面顶点之间存在连续、可逆的一一映射,那么对象间成为同胚(拓扑等价)。

对象的亏格则表示穿越该对象孔洞或通道的数量。

对于三维形状转换问题,可以分成以下两个子问题:

1. 顶点对应问题

2. 插值问题

匹配拓扑结构

如果两个物体的顶点-边拓扑结构一致,那么就可以通过最简单的顶点插值来实现物体变换。

星形多边形

轴向切面

根据中心轴对对象的每一个切面(星形切面)进行插值。

球体映射

大多数0亏格对象可以成功映射到球体上,然后实现彼此映射和变换。(0亏格对象不一定可以切成星形切片)

变形效果(二维)

坐标网格方案

扫描线和二路处理两种方式,都可以对二维图像进行关键帧之间的插值。

特征变形

特征线构造对应数据。对特征线插值,构成中间特征线集。

运动链接

层次结构建模

基于层次建模的数据结构

相当于用树形结构来表现组件之间的结构。相当于每个叶子的变化都根据它父母的位置来进行刻画。根节点是以世界坐标系为依据来刻画。

局部坐标框架

相当于就是以上一层关节的坐标系为基础,来定义当前关节的坐标系。两个坐标系之间的变换要乘上一个4*4矩阵,从而实现方便的子节点和父节点局部坐标空间之间的转换。

四元数通常用来实现旋转,防止出现万向节死锁问题。

前向运动学

从关节空间映射到笛卡尔空间。

计算整棵树所有关节的变化矩阵,从而得到末端影响器实际作用。

复杂度太高,通常用逆向动力学。

逆向运动学

从笛卡尔空间映射到关节空间。

给定初始姿态向量和目标姿态向量,计算关节向量的值。

解的个数:0~正无穷。

逆向运动学解析解

只有关节链非常简单时,才有解析解。

逆向运动学数值解(数值增量法)

  • 逆向雅可比方法
  • 循环坐标下降法 CCD
  • 基于优化的方法

  • 基于样例的方法

  • 为什么求解困难
    • 冗余
    • 要求自然的运动控制
      • 关节限制
      • 最小的抖动
      • 运动方式
    • 奇异问题
      • 病态方程
      • 奇异方程

第六章:运动捕捉

整理不动了,算了算了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值