这是我的课程作业,选一本ca领域的经典教材做知识点整理。反正都整理好了,不如发出来分享一下。
我选的是下面这本。
这本书的主要内容如下:
我就根据章节顺序,去掉第一章,从第二章开始讲。
第二章:基础知识
齐次坐标与转换矩阵
齐次坐标:将三维顶点用4元向量描述。
简单的齐次表达方式:
通过这种方式,可以用4*4矩阵来表达基本的旋转、平移、缩放操作。
通常情况下是左乘,但是也有右乘变换矩阵的,只要一致就可以。
复合转换:转换矩阵的累积操作
相当于结合所有的变换矩阵,如下:
基本的转换操作
旋转、平移、缩放的矩阵形式。比较基础,此处不赘述。
显示管线中的转换描述
显示管线转换问题可以解释为基本转换的累积操作。
对象空间==》世界空间==》眼睛空间==》透视==》图像==》屏幕
四元数表达
第三章:插值技术
插值就是定义边界值并对中间细节内容进行填充。
生成函数
- 插值数据与逼近值
- 逼近函数:Bezier曲线、B样条曲线
- 插值函数:抛物线混合、Catmull-Rom样条、Hermite方程
- 复杂度
- 三次多项式及以下可以视为低阶多项式,可以提供足够的平滑度和灵活性。
- 低于三次的多项式无法提供衔接处切线连续。
- 连续性
- 0阶连续性:位置连续
- 1阶连续性:切线值一样
- 三次Bezier曲线、Hermite、Catmull-Rom
- 2阶连续性:曲率、切向量瞬间变化连续
- 三次B样条曲线、复合Hermite曲线
- 全局控制与局部控制
‘
常用的用来构建空间路径的是Catmull-Rom样条和Bezier曲线
3.2 曲线顶点的移动控制
曲线参数化,用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
- 基于优化的方法
- 基于样例的方法
- 为什么求解困难
- 冗余
- 要求自然的运动控制
- 关节限制
- 最小的抖动
- 运动方式
- 奇异问题
- 病态方程
- 奇异方程
第六章:运动捕捉
整理不动了,算了算了。