Guest User

Untitled

a guest
Apr 19th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. # Add distance attribute to motion paths.
  2. import maya.cmds as cmds
  3. attr = "distance"
  4. for mp in set(c
  5. for a in cmds.ls(sl=True)
  6. for b in [a] + (cmds.listRelatives(a, ad=True) or [])
  7. for c in cmds.listConnections(b, t="motionPath") or []
  8. if not cmds.attributeQuery(attr, n=c, ex=True)):
  9. cmds.addAttr(mp, sn=attr, k=True)
  10. for length in (cmds.arclen(a, ch=True) for a in cmds.listConnections(mp, type="nurbsCurve") or []):
  11. clamp, mul = cmds.shadingNode("clamp", au=True), cmds.shadingNode("multiplyDivide", au=True)
  12. for src in cmds.listConnections("%s.uValue" % mp, p=True, d=False) or []:
  13. for crv in cmds.ls(cmds.listHistory(src) or [], type="animCurve"):
  14. cmds.scaleKey(crv, vs=cmds.getAttr("%s.arcLength" % length))
  15. cmds.connectAttr(src, "%s.%s" % (mp, attr), f=True)
  16. for dst in cmds.listConnections("%s.uValue" % mp, p=True, s=False) or []:
  17. cmds.connectAttr("%s.%s" % (mp, attr), dst, f=True)
  18. cmds.connectAttr("%s.arcLength" % length, "%s.input2X" % mul, f=True)
  19. cmds.connectAttr("%s.arcLength" % length, "%s.maxR" % clamp, f=True)
  20. cmds.connectAttr("%s.%s" % (mp, attr), "%s.inputR" % clamp, f=True)
  21. cmds.connectAttr("%s.outputR" % clamp, "%s.input1X" % mul, f=True)
  22. cmds.connectAttr("%s.outputX" % mul, "%s.uValue" % mp, f=True)
  23. cmds.setAttr("%s.operation" % mul, 2)
Add Comment
Please, Sign In to add comment