在Maya2020里有了offset parent matrix 属性,这样用matrix对物体做约束的时候就可以少很多节点,且结构更清晰简洁,那么下面就实现下这个功能。
首先创建两个locator,一个小球,用来模拟这个小球收到这两个locator的约束,而且是可以切换约束,即可以受locator1约束,也可以受locator2约束。

既然是用matrix来做约束,那么就再创建两个multMatrix节点,用这两个matrix节点的主要目的是做带有便宜值的matrix约束,就类似于Maya的parentConstraint的keep offset功能,首先我们要求出这两个locator和小球的分别的初始偏移值,可以用下面的代码来获得:
import maya.api.OpenMaya as OpenMaya
node = 'pSphere1'
driver = 'locator1'
offset = (
OpenMaya.MMatrix(cmds.getAttr("{}.worldMatrix[0]".format(node)))
* OpenMaya.MMatrix(cmds.getAttr("{}.matrix".format(node))).inverse()
* OpenMaya.MMatrix(cmds.getAttr("{}.worldInverseMatrix[0]".format(driver)))
)
分别获取完他们的初始值,然后需要把这个初始值复值给multMatrix的matrixIn[0]
cmds.setAttr("{}.matrixIn[0]".format(mult),



被折叠的 条评论
为什么被折叠?



