SkinCluster在Maya中距离原点很远的地方变形


解决方案:

问题是由于全局转换值太大而导致skinCluster失去数值精度。要解决此问题,可以使用multMatrix节点将值从全局值更改为本地值。

  1. 将变形对象父级指向顶级节点。有一个虚拟组是个好主意,但你也可以使用第一个关节。

  2. 为每个关节创建一个multMatrix节点。打开脚本编辑器并为每个关节运行一次此命令:

createNode multMatrix;

  1. 在每个关节和skinCluster之间添加一个multMatrix节点。这可以在脚本编辑器或连接编辑器中完成。例如:

connectAttr joint1.worldMatrix multMatrix1.matrixIn [0]

对每个关节重复此过程,以便每个joint.worldMatrix都连接到自己的multMatrix.matrix [0]

  1. 将顶部节点的worldInverseMatrix(在本例中为joint1或您的虚拟组)连接到每个multMatrix节点的matrixIn [1]中。例如:

connectAttr -f joint1.worldInverseMatrix multMatrix1.matrixIn [1]

对每个mulMatrix节点重复此操作。通过从每个关节矩阵中减去joint1矩阵,迫使该工具在局部空间中计算。

  1. 将multMatrix连接到skinCluster。将相同的关节连接到相同的矩阵索引非常重要。

连接-f multMatrix.matrixSum skinCluster.matrix [0]

如果joint2.matrix连接到skinCluster.matrix [2]并且你将joint2连接到mulMatrix2,那么你需要将multMatrix2.matrixSum连接到skinCluster.matrix [2]


评论
  目录