关于矩阵,https://www.zhihu.com/question/22047061可以看看这个大佬的回答,我是数学白痴,就不逼逼了。但是这不影响我们在maya中运用矩阵节点。
骨骼中常用的三个矩阵信息,分别表示:
(资料图)
World Matrix:该物体相对于世界坐标轴,它的位移、旋转和缩放信息。
Parent Matrix:该物体的父级物体相对于世界坐标轴,父级物体的位移、旋转和缩放信息。
Matrix:该物体自身的位移、旋转和缩放信息。
其中,World Matrix和Parent Matrix是继承了他们上一级位移的,即:物体B通过世界矩阵或父子矩阵对另外一个物体X链接,物体B的父级运动时,物体X都会跟着动。
World Matrix:
以世界坐标轴为中心:
Parent Matrix:
以父级物体的相对坐标为中心:
世界坐标轴中心还在,但是不再以它为坐标轴原点,而是重新以选择物体的中心点为坐标原点,重新建立一个三维的坐标系。这就是Parent Matrix。
Matrix:
以物体自身为原点,重新简历坐标系。
一个简单的,不保持偏移的矩阵链接如下:
以上图的链接方式,将骨骼的世界矩阵信息分解为位移、旋转和缩放,得到如下图所示的结果。
Test_Jnt骨骼为被链接的骨骼。
一个约束效果出来了。
需要注意的是,被约束骨骼自身的偏移值。
被约束骨骼的偏移值必须要保证是0,否则,这个偏移值会影响到骨骼的旋转信息。
如果必须保留偏移值的话,我们需要在进行一部操作。
分解出来的位移和缩放可以直接链接,子物体存在偏移值则需要求逆之后与父物体的控制量相乘,以抵消偏移值。
矩阵最直接的用法大概就这些,所有的矩阵运算,无非就是通过节点对欧拉角、矩阵和四元数进行转化,想清楚各个节点的逻辑,知道节点的用法,提供一个比较清晰的思路,计算的问题计算机可以解决。
以小见大,通过矩阵求逆还可以实现双倍位移的抵消,可以创建twist骨骼的抵消旋转,矩阵的计算效率非常高。
最最重要的,就是通过矩阵的链接效果可以完全在引擎内实现。