您的位置:首页 > 动漫 >

当前速递!我的mayaPython学习之路(十二):关于矩阵实现约束效果

关于矩阵,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骨骼的抵消旋转,矩阵的计算效率非常高。

最最重要的,就是通过矩阵的链接效果可以完全在引擎内实现。

标签: MATRIX WORLDMATRIX TWIST maya HTTPS

相关阅读