第一章
动画片的基本原理和概念
- 视觉暂留原理
人的眼睛看到一幅画或一个物体后,大约在0.05~0.1秒内不会消失
- 什么是动画
利用视觉暂留原理,在衣服画还没有小时前播放下一幅画,就会给人造成一种流畅的视觉变化效果
- 帧
动画中每幅画,24帧/秒
动画片制作过程
各个阶段大致在做什么
- 前期筹备
- 中期制作
- 原画创作:绘制关键画面(关键帧)
- 中间插画制作:相邻画面之间补充画面,将原画连贯起来
- 画面测试:测试动作等是否连贯自然
- 后期制作
- 检查各种衔接是否自然,是否存在细节失误
- 拍摄:动画摄影师把一系列画面通过拍摄一次记录在胶片上
- 剪辑:删除多余的画面
第二章
二维复合变换
坐标系间的变换
把坐标系看作是图形的相对变换
先
平
移
T
(
−
x
0
,
−
y
0
)
,
后
旋
转
R
(
−
θ
)
=
[
c
o
s
θ
s
i
n
θ
0
−
s
i
n
θ
c
o
s
θ
0
0
0
1
]
复
合
M
x
y
,
x
′
y
′
=
R
(
−
θ
)
⋅
T
(
−
x
0
,
−
y
0
)
先平移T(-x_0,-y_0),后旋转\\ R(-\theta)=\left[ \begin{matrix} cos\theta & sin\theta & 0\\ -sin\theta & cos\theta & 0\\ 0 & 0 & 1 \end{matrix} \right]\\ 复合M_{xy,x'y'}=R(- \theta) \cdot T(-x_0,-y_0)
先平移T(−x0,−y0),后旋转R(−θ)=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤复合Mxy,x′y′=R(−θ)⋅T(−x0,−y0)
第三章
三维的复合变换
确 定 相 对 于 任 意 平 面 Q : A x + B y + C z + D = 0 的 反 射 变 换 矩 阵 的 形 式 解 、 先 将 平 面 平 移 到 使 其 上 一 点 与 原 点 重 合 , 取 点 D ( 0 , 0 , − D / C ) , 得 平 移 矩 阵 T = [ 1 0 0 0 0 1 0 0 0 0 1 D C 0 0 0 1 ] 然 后 将 平 面 的 法 向 量 N ( A , B , C ) 旋 转 至 于 Z 轴 重 合 , 令 u z ′ = N ∣ N ∣ = ( A , B , C ) A 2 + B 2 + C 2 , 记 为 ( a , b , c ) , u x ′ = u × u y ∣ u × u y ∣ = ( − c c 2 + a 2 , 0 , a c 2 + a 2 ) , u y 为 ( 0 , 1 , 0 ) u y ′ = u x ′ × u z ′ = ( − a b a 2 + c 2 , a 2 + c 2 , − c b a 2 + b 2 ) 由 此 可 以 构 建 旋 转 矩 阵 R = [ u x x ′ u x y ′ u x z ′ 0 u y x ′ u y y ′ u y z ′ 0 u z x ′ u z y ′ u z z ′ 0 0 0 0 1 ] = [ − C A 2 + C 2 0 − A A 2 + C 2 0 − A B ( A 2 + C ) ( A 2 + B 2 + C 2 ) A 2 + C 2 A 2 + B 2 + C 2 − B C ( A 2 + C ) ( A 2 + B 2 + C 2 ) 0 A A 2 + B 2 + C 2 B A 2 + B 2 + C 2 C A 2 + B 2 + C 2 0 0 0 0 1 ] 此 时 平 面 于 x o y 平 面 重 合 , 作 反 射 矩 阵 M = [ 1 0 0 0 0 1 0 0 0 0 − 1 0 0 0 0 1 ] 复 合 变 化 的 矩 阵 为 T − 1 R − 1 M R T 确定相对于任意平面 Q:Ax + By + Cz + D=0 的反射变换矩阵的形式\\ 解、先将平面平移到使其上一点与原点重合,取点D(0,0,-D/C),\\ 得平移矩阵 T=\left[\begin{matrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & \frac{D}{C} \\ 0 & 0 & 0 & 1\\ \end{matrix}\right]\\ 然后将平面的法向量N(A,B,C)旋转至于Z轴重合,\\ 令u_{z}'=\frac{N}{|N|}=\frac{(A,B,C)}{\sqrt{A^2+B^2+C^2}},记为(a,b,c),\\ u_x'=\frac{u \times u_y}{|u \times u_y|}=(- \frac{c}{\sqrt{c^2+a^2}},0,\frac{a}{\sqrt{c^2+a^2}}),u_y为(0,1,0)\\ u_y'=u_x' \times u_z' =(-\frac{ab}{\sqrt{a^2+c^2}},\sqrt{a^2+c^2},-\frac{cb}{\sqrt{a^2+b^2}})\\ 由此可以构建旋转矩阵R=\left[\begin{matrix} u_{xx}' & u_{xy}' & u_{xz}' & 0\\ u_{yx}' & u_{yy}' & u_{yz}' & 0\\ u_{zx}' & u_{zy}' & u_{zz}' &0 \\ 0 & 0 & 0 & 1\\ \end{matrix}\right]=\\ \left[\begin{matrix} -\frac{C}{\sqrt{A^2+C^2}} & 0 & -\frac{A}{\sqrt{A^2+C^2}} & 0\\ -\frac{AB}{\sqrt{(A^2+C^)(A^2+B^2+C^2)}} & \sqrt{\frac{A^2+C^2}{A^2+B^2+C^2 }} & -\frac{BC}{\sqrt{(A^2+C^)(A^2+B^2+C^2)}} & 0\\ \frac{A}{\sqrt{A^2+B^2+C^2}} & \frac{B}{\sqrt{A^2+B^2+C^2}} & \frac{C}{\sqrt{A^2+B^2+C^2}} &0 \\ 0 & 0 & 0 & 1\\ \end{matrix}\right]\\ 此时平面于xoy平面重合,作反射矩阵M=\left[\begin{matrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & 1\\ \end{matrix}\right]\\ 复合变化的矩阵为T^{-1}R^{-1}MRT 确定相对于任意平面Q:Ax+By+Cz+D=0的反射变换矩阵的形式解、先将平面平移到使其上一点与原点重合,取点D(0,0,−D/C),得平移矩阵T=⎣⎢⎢⎡10000100001000CD1⎦⎥⎥⎤然后将平面的法向量N(A,B,C)旋转至于Z轴重合,令uz′=∣N∣N=A2+B2+C2(A,B,C),记为(a,b,c),ux′=∣u×uy∣u×uy=(−c2+a2c,0,c2+a2a),uy为(0,1,0)uy′=ux′×uz′=(−a2+c2ab,a2+c2,−a2+b2cb)由此可以构建旋转矩阵R=⎣⎢⎢⎡uxx′uyx′uzx′0uxy′uyy′uzy′0uxz′uyz′uzz′00001⎦⎥⎥⎤=⎣⎢⎢⎢⎢⎡−A2+C2C−(A2+C)(A2+B2+C2)ABA2+B2+C2A00A2+B2+C2A2+C2A2+B2+C2B0−A2+C2A−(A2+C)(A2+B2+C2)BCA2+B2+C2C00001⎦⎥⎥⎥⎥⎤此时平面于xoy平面重合,作反射矩阵M=⎣⎢⎢⎡1000010000−100001⎦⎥⎥⎤复合变化的矩阵为T−1R−1MRT
坐标系间的变换
第四章
三维观察的概念
定义:场景的描述从三维世界坐标系到设备坐标系的映射
三维观察的流水线
记住下图并详细阐述即可(不考公式,重点是各个阶段做什么)
第五章
三维对象的表示
针对哪些对象
边界表示法
使用一组平面或者曲面来描述三维对象的表面
- 多面体
- 曲面
实体构造法
由简单的物体来构成复杂的物体
- 扫描表示法
- 通过平移、旋转及其他对称变换来构造三维对象
- 平移扫、旋转扫、广义扫
- 实体结构几何法
- 使用集合操作来组合多个三维对象
空间分区表示
描述内部性质,将包含一个对象的空间区域划分成一组较小的、非重叠的连续实体
- 八叉树 (如何构造八叉树)
八叉树
- 用于现实对象内部结构
- 每次使用与笛卡尔坐标平面对齐的三个相互垂直的平面对场景进行分割
- 构造出树形结构后,要求每一个结点对应于一个三维空间区域
基于物理的建模方法
对象形状和表面特征随着对象运动或受到邻近物体影响而改变。
典型——水面
样条
- 插值与逼近的区别在哪
- 插值:曲线通过每个控制点,用作数字化绘图或指定动画路径
- 逼近:部分或者全部控制点不在生成的曲线上。作为设计工具来构造对象形体。
- 构造曲线的时候为什么的分段构造的
- 样条曲线:由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续性条件。更好得逼近想要得形状。
- 三次多项式计算效率更高,可以模拟任何曲线
- 参数曲线两端之间平滑过渡的参数连续性条件
- 0阶参数连续性:曲线相连
- 1阶参数连续性:在交点处有相同的一阶导数
- 2阶参数连续性:在交点处有相同的一阶和二阶导数
第六章
基本概念
- 关键帧动画技术是传统动画和计算机动画制作的常用技术
- 关键帧(原画)- 动画制作过程中,由动画设计师绘制出动画的一些关键画面
- 中间插画制作 – 在关键帧之间需要补充插入一些画面,使得关键帧能够连贯起来
- 关键帧动画技术 - 研究如何制作填充与关键帧之间的画面,使得整个动画更加合理流畅
控制插值点移动速度
插值方法
- 非线性插值(重要)
- 问题: t均匀增加,无法实现匀速曲线运动 ;不便于实现速度的控制
- 处理手段:轨迹曲线
p
=
P
(
u
)
p=P(u)
p=P(u)+移动特性
s
=
F
(
t
)
s=F(t)
s=F(t)–>建立从时间t到对象坐标位置p的关系
详细解决方法
1、路径长度 s s s和路径方程参数(自变量) u u u的关系 s = S ( u ) → u = U ( s ) s=S(u) \rightarrow u=U(s) s=S(u)→u=U(s)
2、路径长度 s s s和时间 t t t的关系 s = F ( t ) s=F(t) s=F(t) 可采用求解解析式和求数值解(常用前向差分法)的方式
3、进一步控制曲线途经处的速度
计算弧长–前向差分法(必须掌握)
形式:类似给出路径方程参数,计算路径长度
本质:取足够小的一段,用直线段去近似曲线弧,再用点斜式求解对应的x值或y值
优点:易于实现, 直观且具有较高的计算速度
缺点:弧长以及参数会一定程度上引入误差
解决方法:在速度和精度之间做出权衡
- 实施超采样,从而减小误差
- 采用高阶插值计算降低误差
速度控制–易入/易出(掌握)
描述:对象从静止位置处加速运动并达到最大速度,最终减速运动至静止处
实现易入/易出移动控制特性的方法:
- 正弦插值(很少匀速)(掌握)
- s = e a s e ( t ) = s i n ( t π − π / 2 ) + 1 2 s=ease(t)=\frac{sin(t \pi -\pi/2)+1}{2} s=ease(t)=2sin(tπ−π/2)+1
- 运动方式:缓慢启动、加速、减速
- 由于斜率处于不断变化中,因而移动过程中呈现出加速或减速状态
- 很少呈现匀速状态
- 正弦片段+直线(匀速+变速)
- 一元三次多项式
- 利用一元三次多项式逼近: s = 2 t 3 + 3 t 2 s=2t^3+3t^2 s=2t3+3t2
- 缺点:未提供匀速的控制方式
- 匀加速(掌握)
- 加速度-时间函数以及速度-时间函数可使用户对最终的移动效果具有较好的控制力
变形(morphing)
已知源对象和目标对象前提下,构造一系列中间对象,从而使得从源对象通过这些中间对象光滑变化到目标对象
- 图像变形:目标对象和源对象都是图像
- 图形变形:目标对象和源对象都是图形
- 对象形状变形:形状之间的转换操作——确定对象的关键形状;形状之间采用插值计算
基本思想
- 确定对象上每个点相对于局部坐标系统的坐标
- 对局部坐标系统实施变形操作
- 将对象上每个点重新映射到新的局部坐标系统
交溶技术(cross-dissolve)——淡入淡出
就是图像的线性插值,容易有重影
基于网格的图像变体技术
几何特征对齐
目标
- 设源图像为和目标图像分别为A和B,需要计算对于任意的实数t,t∈[0,1]所对应的中间帧图像M
- 当=0时,M=A; 当=1时,M=B;
- 当t从0匀速地变换到1时,中间帧图像M从图像A逐渐变换到B
算法(知道算法得原理并描述出来)
- 为源图像和目标图像建立在拓扑上的意义对应的四边形网格——通过标选特征点,并且特征点一一对应
- 连接特征点形成四边形网格,目标图像与源图像的四边形网格一一对应
- 中间帧图像的四边形内部点局部坐标 M i M_i Mi计算——参考投影变换,线性插值的方式——计算方法: M i j ( t ) = ( 1 − t ) A i j + t B i j M_{ij}(t)=(1-t)A_{ij}+tB_{ij} Mij(t)=(1−t)Aij+tBij
- 通过映射关系由 M i j M_{ij} Mij反推导出参数 ( u , v ) (u,v) (u,v),从而求得在源图像和目标图像对应该点的颜色和位置信息
- 利用线性插值获得
M
i
M_i
Mi点在中间帧的颜色值,计算公式如下
{ R M ( t ) = ( 1 − t ) R A + t R B G M ( t ) = ( 1 − t ) G A + t G B B M ( t ) = ( 1 − t ) B A + t B B , t ∈ [ 0 , 1 ] \begin{cases} R_M(t)=(1-t)R_A+tR_B\\ G_M(t)=(1-t)G_A+tG_B\\ B_M(t)=(1-t)B_A+tB_B \end{cases}, t \in [0,1] ⎩⎪⎨⎪⎧RM(t)=(1−t)RA+tRBGM(t)=(1−t)GA+tGBBM(t)=(1−t)BA+tBB,t∈[0,1]
- 基于网格的图像变体算法运算结果的质量取决于最初建立的源图像A和目标图像B的四边形网格的质量
- 四边形网格越精细,则变体结果的图像质量一般也越高
- 四边形网格应当包含图像的尖点和拐点等关键点
- 四边形网格一般要求是凸四边形,如果是凹四边形就划分为凸四边形
- 缺点:算法灵活性不够
自由变形(FFD)(知道基本原理)
基本思想:将需要变形的物体或物体的某部分嵌入到类似于泥巴或塑料的柔性体中,然后假设物体也是非常柔软的,会随着物体外围柔性体的变形而发生变形
物体对于网格的局部坐标不变
实现:
- 将物体全部或部分嵌入到网格
- 然后通过对网格的变形(即改变网格顶点的位置)控制物体的变形
grid
二维网格 ;lattice
三维网格
具体算法
二维
- 将图形嵌入到一个平行四边形中
- 将平行四边形沿边的方向划分为 m × n m\times n m×n个网格(又称控制网格, 顶点称为控制顶点)
- 移动控制顶点,网格发生形变,嵌入的物体也发生形变
设 网 格 外 围 轮 廓 平 行 四 边 形 的 四 个 顶 点 分 别 为 P 0 , 0 , P 0 , n , P m , n , P m , 0 P m , 0 − P 0 , 0 = m S = m ( S x S y ) P 0 , n − P 0 , 0 = n T = n ( T x T y ) P i , j = P 0 , 0 + i S + j T 令 S ^ = ( − S y S x ) , T ^ = ( − T y T x ) , 则 S ^ 与 S 相 互 垂 直 , T ^ 与 T 相 互 垂 直 , 所 以 对 于 网 格 内 任 意 一 点 Q 的 网 格 参 数 坐 标 系 为 : u = ( Q − P 0 , 0 ) ⋅ T ^ m S ⋅ T ^ , v = ( Q − P 0 , 0 ) ⋅ S ^ n T ⋅ S ^ , u ∈ [ 0 , 1 ] , v ∈ [ 0 , 1 ] 设网格外围轮廓平行四边形的四个顶点分别为P_{0,0},P_{0,n},P_{m,n},P_{m,0}\\ P_{m,0}-P_{0,0}= mS=m\left(\begin{matrix}S_x\\S_y\end{matrix}\right)\\ P_{0,n}-P_{0,0}=nT=n\left(\begin{matrix}T_x\\T_y\end{matrix}\right)\\ P_{i,j}=P_{0,0}+iS+jT\\ 令\hat S =\left(\begin{matrix}-S_y\\S_x\end{matrix}\right), \hat T=\left(\begin{matrix}-T_y\\T_x\end{matrix}\right),\\ 则\hat S与S相互垂直, \hat T与T相互垂直,\\ 所以对于网格内任意一点Q的网格参数坐标系为:\\ u=\frac{(Q-P_{0,0})\cdot \hat T }{m S \cdot \hat T},v=\frac{(Q-P_{0,0})\cdot \hat S}{n T \cdot \hat S},u \in [0,1] ,v \in [0,1] 设网格外围轮廓平行四边形的四个顶点分别为P0,0,P0,n,Pm,n,Pm,0Pm,0−P0,0=mS=m(SxSy)P0,n−P0,0=nT=n(TxTy)Pi,j=P0,0+iS+jT令S^=(−SySx),T^=(−TyTx),则S^与S相互垂直,T^与T相互垂直,所以对于网格内任意一点Q的网格参数坐标系为:u=mS⋅T^(Q−P0,0)⋅T^,v=nT⋅S^(Q−P0,0)⋅S^,u∈[0,1],v∈[0,1]
可借助如下图所示的坐标系推导上述公式
当移动网格控制点 P i , j P_{i,j} Pi,j时,网格发生变形,网格上点Q也随之发生变化,其对应的新坐标为:
Q ( u , v ) = ∑ i = 0 m ∑ j = 0 n p i , j B E Z i , m ( u ) B E Z j , n ( v ) 其 中 B E Z i , m ( u ) = C m i u i ( 1 − u ) m − i B E Z j , n ( u ) = C n j v j ( 1 − v ) n − j Q(u,v)=\sum^m_{i=0} \sum^n_{j=0} p_{i,j} BEZ_{i,m}(u)BEZ_{j,n}(v)\\ 其中BEZ_{i,m}(u) = C_m^i u^i(1-u)^{m-i}\\ \qquad BEZ_{j,n}(u)=C_n^j v^j (1-v)^{n-j} Q(u,v)=i=0∑mj=0∑npi,jBEZi,m(u)BEZj,n(v)其中BEZi,m(u)=Cmiui(1−u)m−iBEZj,n(u)=Cnjvj(1−v)n−j
三维
类似二维自由形变,将物体嵌入到平行六面体中,将六面体划分为
l
×
m
×
n
l \times m \times n
l×m×n
网格坐标
新坐标
光照
基本光照模型
包含哪些光
- 反射
- 漫反射:表面将光向各个方向发散出去(粗糙表面)
- 环境光漫反射
- 光源漫反射
- 镜面反射:反射光汇聚在一部分区域(光滑表面)
- 漫反射:表面将光向各个方向发散出去(粗糙表面)
- 环境光:场景中各个表面反射光生成的光照效果
全局光照
全局光照与局部光照区别
- 局部光照:
- 计算对象表面和射向它的光线之间的交点处光照强度
- 只考虑特定对象(光源)和直接射向它的光线
- 全局光照:
- 从其他对象反射出来的光线
- 产生更真实的光照效果
- 需要付出大量额外计算的代价
光线跟踪算法(知道其原理)
跟踪光线在场景中的反射和折射,并计算对光强的作用
基本算法
- 为光线跟踪算法建立一个投影参考点在z轴、投影平面为xy平面的坐标系统
- 从投影参考点出发,穿过每个像素中心进入场景
- 计算与该光线相交的所有表面,找到最近的交点(可见面)
- 计算该光线在此交点上反射和折射光强度
- 构造光线跟踪树
构造的停止条件:
- 该光线不和任意表面相交
- 该光线与一个光源相交且该光源不是一个反射面
- 该树达到最大允许深度(常用)
第八章
基本概念
- 关节:如果两个刚体互相连接且能够发生相对运动,则这两个刚体的关联部分称为关节
- 关节链:将一系列一次相连的刚体通过关节连接而成的开链
- 链杆:关节链中每一段刚体
- 基结点:关节链的起点
- 末端影响器:关节链的自由末端(End effector)
- 状态空间:关节链结构所有可能状态的向量空间
- 状态向量:状态空间中的向量
- 关节链结构的自由度(Degree of freedom - DOF):完全确定关节链结构状态所需的独立变量个数
- 单个自由度关节:允许在一个方向上运动
- 复杂关节:大于一个自由度的关节
正向运动学
掌握计算末端影响器的位置的方法
计算方法
基本思想:分段计算结果
说明:θ以逆时针为正,C位末端影响器,状态空间 ( θ 1 θ 2 θ 3 ) \left(\begin{matrix}\theta_1 \\ \theta_2\\ \theta_3\end{matrix}\right) ⎝⎛θ1θ2θ3⎠⎞
分段计算可以获得如下函数:
{
x
C
=
L
1
c
o
s
θ
1
+
L
2
c
o
s
(
θ
1
+
θ
2
)
+
L
3
c
o
s
(
θ
1
+
θ
2
+
θ
3
)
y
C
=
L
1
s
i
n
θ
1
+
L
2
s
i
n
(
θ
1
+
θ
2
)
+
L
3
s
i
n
(
θ
1
+
θ
2
+
θ
3
)
\begin{cases}x_C=L_1cos\theta_1+L_2cos(\theta_1+\theta_2)+L_3cos(\theta_1+\theta_2+\theta_3)\\ y_C=L_1sin\theta_1+L_2sin(\theta_1+\theta_2)+L_3sin(\theta_1+\theta_2+\theta_3) \end{cases}
{xC=L1cosθ1+L2cos(θ1+θ2)+L3cos(θ1+θ2+θ3)yC=L1sinθ1+L2sin(θ1+θ2)+L3sin(θ1+θ2+θ3)
如果用齐次坐标表示
(
x
y
1
)
=
M
1
,
2
M
1
,
1
M
2
,
2
M
2
,
1
M
3
,
2
M
3
,
1
O
其
中
O
=
[
θ
1
θ
2
θ
3
]
,
M
3
,
1
=
[
1
0
L
3
0
1
0
0
0
1
]
,
M
3
,
2
=
[
c
o
s
θ
3
−
s
i
n
θ
3
0
s
i
n
θ
3
c
o
s
θ
3
0
0
0
1
]
\left(\begin{matrix} x\\y\\1 \end{matrix}\right)=M_{1,2}M_{1,1}M_{2,2}M_{2,1}M_{3,2}M_{3,1}O\\ 其中 O=\left[\begin{matrix}\theta_1 \\ \theta_2\\\theta_3\end{matrix}\right], M_{3,1}=\left[ \begin{matrix} 1 & 0 & L_3\\ 0 & 1 & 0\\ 0 & 0 &1 \end{matrix} \right], M_{3,2}= \left[ \begin{matrix} cos\theta_3 & -sin\theta_3 & 0\\ sin\theta_3 & cos\theta_3 & 0\\ 0 & 0 &1 \end{matrix} \right]
⎝⎛xy1⎠⎞=M1,2M1,1M2,2M2,1M3,2M3,1O其中O=⎣⎡θ1θ2θ3⎦⎤,M3,1=⎣⎡100010L301⎦⎤,M3,2=⎣⎡cosθ3sinθ30−sinθ3cosθ30001⎦⎤
逆向动力学
以目标驱动,如何从末端位置 计算状态向量的位置
意义:动画设计者只需要控制末端位置,而不需要控制整个关节链结构,从而简化动画设计。动画师可以不用从头到尾调试,可只精调生成的结果
计算方法
根据末端影响器位置进行插值运算
通过计算正向动力学的方程(组)求出解
- 解析法(适用于简单系统)
- 数值计算(常见Jacobian)
存在困难:
- 求解有0个、一个或多个:过约束系统(存在过多限制条件且不存在对应解)、欠约束系统(系统约束较少且存在多个解)
- 奇异问题:在一条直线上
解析法
已知:末端影响器位置(X,Y),链杆长度: L 1 , L 2 L_1,L_2 L1,L2
可达空间 L 1 − L 2 ≤ X 2 + Y 2 ≤ L 1 + L 2 L_1 -L_2 \leq \sqrt{X^2+Y^2} \leq L_1+L_2 L1−L2≤X2+Y2≤L1+L2
使用余弦定理求解
θ T = a r c c o s ( X X 2 + Y 2 ) θ 1 = a r c c o s ( L 1 2 + ( X 2 + Y 2 ) − L 2 2 2 L 1 X 2 + Y 2 ) + θ T θ 2 = a r c c o s ( L 1 2 + L 2 2 − ( X 2 + Y 2 ) 2 L 1 L 2 ) \theta_T=arccos(\frac{X}{\sqrt{X^2+Y^2}})\\ \theta_1=arccos(\frac{L_1^2+(X^2+Y^2)-L_2^2}{2L_1\sqrt{X^2+Y^2}})+\theta_T\\ \theta_2=arccos(\frac{L_1^2+L_2^2-(X^2+Y^2)}{2L_1L_2}) θT=arccos(X2+Y2X)θ1=arccos(2L1X2+Y2L12+(X2+Y2)−L22)+θTθ2=arccos(2L1L2L12+L22−(X2+Y2))
Jacobian法(掌握原理)
使用牛顿迭代法
`
求解发 f ( x ) = 0 f(x)=0 f(x)=0
(1)选择接近函数 f ( x ) f(x) f(x)零点的值 x 0 x_0 x0
(2)计算 f ( x 0 ) f(x_0) f(x0)和切线斜率 f ′ ( x 0 ) f'(x_0) f′(x0)
(3)计算经过 ( x 0 , f ( x 0 ) ) (x_0,f(x_0)) (x0,f(x0))并且斜率位 f ′ ( x 0 ) f'(x_0) f′(x0)的直线和 x x x轴的交点 x 1 x_1 x1: f ( x 0 ) = ( x 0 − x ) ∗ f ′ ( x 0 ) f(x_0)=(x_0-x)*f'(x_0) f(x0)=(x0−x)∗f′(x0)
(4)可推出迭代公式 x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n - \frac{f(x_n)}{f'(x_n)} xn+1=xn−f′(xn)f(xn),并利用迭代公式去逼近最优解
牛顿迭代法收敛速度很快,能以较快速度不断靠近方程的根,但是不能保证最优解,只是计算方程的一个近似值
知道:广义逆矩阵
层次结构建模(掌握基本概念)
将角色分解成若干个关节链结构,并形成骨架树
过程
- 人体骨骼抽象成关节和链杆组成的模型
- 取某个关节点为根节点,建立骨架树
- 通过关节链的正向运动学和逆向运动学求解骨架树的正向和逆向运动
第九章
什么是物理动画
追溯现象本身的物理根源,借助其本身较为精确的物理描述才能真实再现其外在的视觉现象
物理动画包含哪些内容
- 物理模拟技术
- 刚体动力学模拟
- 柔体动力学模拟
- 流体动力学模拟
- 碰撞侦测
欧拉公式更新位置信息
采用欧拉方法作数值积分求解任意时刻t的状态
记位置矢量
p
(
t
)
p(t)
p(t),速度矢量
v
(
t
)
v(t)
v(t),加速度矢量
a
(
t
)
a(t)
a(t),其中
lim
Δ
t
→
0
p
(
t
+
Δ
t
)
−
p
(
t
)
Δ
t
=
v
(
t
)
lim
Δ
t
→
0
v
(
t
+
Δ
t
)
−
v
(
t
)
Δ
t
=
a
(
t
)
当
Δ
t
取
很
小
值
,
则
有
:
p
(
t
+
Δ
t
)
≈
p
(
t
)
+
v
(
t
)
Δ
t
v
(
t
+
Δ
t
)
≈
v
(
t
)
+
a
(
t
)
Δ
t
\lim_{\Delta t \rightarrow 0} \frac{p(t+\Delta t)-p(t)}{\Delta t} = v(t)\\ \lim_{\Delta t \rightarrow 0} \frac{v(t+\Delta t)-v(t)}{\Delta t} = a(t)\\ 当\Delta t取很小值,则有:\\ p(t+\Delta t) \approx p(t) + v(t)\Delta t\\ v(t+\Delta t) \approx v(t) + a(t)\Delta t
Δt→0limΔtp(t+Δt)−p(t)=v(t)Δt→0limΔtv(t+Δt)−v(t)=a(t)当Δt取很小值,则有:p(t+Δt)≈p(t)+v(t)Δtv(t+Δt)≈v(t)+a(t)Δt
基本步骤
- 获取(初始)状态信息
- 绘制(需清楚之前绘制的结果)
- 更新状态信息
第十章
什么是粒子系统
粒子系统可看作由大量的微小物质组成的系统,这些微小物质按一定规则运动(变化)
粒子特点
- 粒子的运动状态
- 粒子独立,一般不考虑相互影响,考虑与环境的影响
- 粒子有生命周期,生命结束后消失
- 粒子形状可以是任意形状
- 粒子若处于聚集状态,粒子不向其他粒子的投射阴影,不考虑反射光,只考虑对环境的投射阴影
基本属性
- 运动属性
- 位置
- 速度
- 加速度
- 生命
- 衰减速度
- 颜色
- 大小
粒子系统生成过程
粒子系统的基本思想:
- 将许多简单形状的微小粒子作为基本元素聚集起来形成一个不规则的模糊物体
- 每个粒子均经历出生、成长、衰老和死亡的过程
- 与粒子有关的每一参数均将受到一个随机过程的控制。
动态模糊
掌握作用及概念
运动模糊又叫动态模糊,用来表现场景中物体的移动效果非实时渲染
作用
- 运动变得更平滑,场景更逼真
- 缺乏运动模糊是计算机动画不真实的原因之一,因为计算机产生的图象“棱角分明”,很注目,以致削弱了运动效果
应用
可以模拟哪些现象——模糊不规则物体
云、雨、雾、烟花、火等
第十一章
什么是弹性对象
- 通过施加在对象上的力(如挤压或者拉伸),可改变物体的形状
- 有可能随着力的消失返回初始形态
- 对象上的两个点的相对距离不固定,但是相对距离变化满足一定的约束条件
如何实现弹性对象
- 将一个弹性对象看作由无数个质点构成的物体,质点之间有边作为连接
- 那么这个弹性对象能够发生形变,一定是因为连接质点的边具有发生弹性形变的性质
- 当外部力作用于对象时,作用力会使得质点产生运动,由于质点之间通过弹簧连接,质点之间相互运动产生弹力并作用于其它质点;同时作用力还会反馈到初始移动的质点
- 作用力将沿弹簧边传播,进而使对象富有弹性,并在顶点之间产生持续的相对偏移
弹性网络实现的基本原理
弹簧-质量模型:
- 将对象的顶点作为质点,连接质点的边作为弹簧进行建模-– 质点一般具有质量,质点质量大小总和等于对象质量大小
- 弹簧静止时长度可定义为原始边长
- 弹性系数由用户设定
弹簧-质量-阻尼系统(mass-spring-damper)
- 由于弹簧在没有阻力的情况下,会持续摆动,那么这就会造成弹性对象在受到外力作用后不断发生形变,永不停止
- 为了防止这种现象出现,我们在弹簧上另外附加一个阻尼系统,使得弹簧弹力逐渐减弱
第十二章
维尔莱法积分(掌握)
分析与欧拉方法的误差
第十三章
什么是碰撞检测
通常是指一种判断两个或多个对象是否产生交集的的方法
碰撞检测解决的问题
- 检测碰撞发生的位置
- 计算碰撞之后的反馈信息
高级碰撞检测——分离轴定理
-
2D
存在一条直线使得两个对象位于该直线两边,称该直线为分离线
同时存在一条直线垂直于分离线,该直线称为分离轴
两个多边形在分离轴上的投影是否相交 -
3D
同2D,存在分离面和分离轴,多面体在分离轴上的投影
如何构成分离面
包围盒的三对独立的面构成3+3=6个
包围盒的三组边两两构成一个分离面,供3*3=9个
第十四章
正弦波模型
需要知道推理过程
H
(
x
,
y
,
t
)
=
A
×
s
i
n
(
D
⋅
(
x
,
y
)
×
w
+
t
×
ϕ
)
H(x,y,t)=A \times sin(D\cdot (x,y) \times w + t \times \phi)
H(x,y,t)=A×sin(D⋅(x,y)×w+t×ϕ)
参数 | 说明 |
---|---|
A | 振幅 |
D | 方向向量 |
w | |
ϕ \phi ϕ | 相位差 |
计算法向量
幂指数模型
法向量计算
第十五章
什么是群组动画
群组:在同一物理环境下拥有相同目的的一群个体,他们的行为有别于作为单独个体时的行为
层次
群>组>个体
运动行为的生成 三大原则和优先级
- 碰撞避免原则(Collision Avoidance)
- 避免与相邻的群体成员相碰
- 速度匹配原则(Velocity Matching)
- 尽量保持与周围邻居群体成员的速度匹配
- 群体合群原则(Flock Centering)
- 群体成员尽量靠近