骨骼动画属于顶点变换应用的一种,就是在画顶点前用骨骼矩阵 等来求出新顶点位置。 要诀如下: 有骨骼无动画: 新顶点位置 = 原始坐标×转换矩阵1(累级相乘后的矩阵) 有骨骼有动画: 新顶点位置 = 原始坐标×转换矩阵2×权值矩阵 转换矩阵1 = 顶点所在的Mesh,Mesh所在的Frame,Frame的原始矩阵 frame->oldtransformmatrix,此矩阵自顶向下累级 相乘后的矩阵,记为frame->nowtransformmatrix, 跟权值里的那个矩阵无关。 转换矩阵2 = 先计算全部骨骼此时刻的变换矩阵animate->transformmatrix, 然后用它代替原始的Frame->oldTransformmatrix ,然后累级相乘, 得到一个现在的转换矩阵 frame->nowtransformmatrix。 注意的是,转换矩阵1是顶点所在Mesh的转换矩阵, 而转换矩阵二是用此顶点所在骨骼的变换矩阵,都需要自顶向下累级相乘而得到, 在这些Frame->oldtransformmatrix累级相乘前需要将其变换到原始位置, 就是用文件载入得Frame->Transformmatrix将现行得Frame->oldtransformmatrix初始化。 伪码(随手写来的): while_begin update() // 更新顶点坐标 render() // 渲染 while_end update_begin frame->transformmatrix = settime() // 按时间提取Animation里的矩阵更新frame(二叉树型)矩阵 frame->nowtransformmatrix = recursionmatrix() // 将各个frame矩阵进行递归累积得到现在的变换矩阵 my_transformmatirx =frame->nowtransformmatrix * frame->weightmatrix // 变换矩阵乘以权值矩阵 every_vertex = old_vertex * my_transformmatrix // 求当前顶点位置 update_end
 【责编:admin】
|
|
 |
|
多数的Windows程序都需要Windows.h和Windowsx.h这两个头文件,要确保使用它们。当然,你还需要其它......
|
|
|
|
|
为什么要研究攻击行为在人类有记载的5600年的历史中,共计发生了14,400次战争;今天,平均一天要发生............
|
|
|
|
|
|
|
|
|
|
|
|
|