骨骼结构是多叉树形的,有一个根,每个骨头有0或多个子骨头。
每个骨头有一个相对父骨头的变换矩阵(这里变换矩阵表达子骨头相对父骨头的平移和旋转)。
每个顶点受若干个骨头的影响,如果一个顶点受m个骨头影响,则所有顶点也要受m个骨头影响,若要表示其中部分顶点只受少于m个骨头影响,需要调整影响系数为0。
顶点受骨头影响用影响系数(即权重)表达,0表示不受影响,1表示完全跟着骨头运动。
当对根骨头进行矩阵变换时,表示整个物体进行变换,这时可以进行移位和旋转。
对其他骨头进行变换时,表示局部变换,这时只能进行旋转,不能移位。
对一个骨头进行变换时,要把该变换传递到该骨头的所有子孙骨头。
骨头变换处理好后,整个骨骼中所有骨头的位置就确定了,接下来处理顶点。
对所有顶点,找到影响它的骨头的变换矩阵,分别乘上权重,然后叠加,形成最终的顶点变换矩阵。