cwisbg

# Streatchy IK

Sep 27th, 2018
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | None | 0 0
  1. # Streatchy IK
  2. # select ctrl, then root joint
  3. from pymel.core import*
  4. import math
  5. def getPiv(s):
  6.     select(s)
  7.     setToolTo('Move')
  8.     piv = manipMoveContext('Move', q=True, p=True,m=2)
  9.     #piv = s.getTranslation()
  10.     return piv
  11. def getDist(p1,p2):
  12.     dist = math.sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2 + (p1[2] - p2[2])**2)
  13.     return dist      
  14. #sl = selected()
  15. jnt1 = sl[1]
  16. jnt2 = listRelatives(jnt1, c=1)[0]
  17. ctrl = sl[0]
  18.  
  19. jnt1Pos = getPiv(jnt1)
  20. jnt2Pos = getPiv(jnt2)
  21. ctrlPos = getPiv(ctrl)
  22.  
  23. distanceNode = createNode("distanceDimShape")
  24. dStart = spaceLocator(n=str(jnt1)+"_startPoint")
  25. dEnd = spaceLocator(n=str(ctrl)+"_endPoint")
  26.  
  27. move(dStart, jnt1Pos)
  28. pc = pointConstraint(ctrl, dEnd)
  29. dStart.translate >> distanceNode.startPoint
  30. dEnd.translate >> distanceNode.endPoint
  31.  
  32. mD = createNode("multiplyDivide")
  33. setAttr(mD.operation, 2)
  34. distanceNode.distance >> mD.input1X
  35.  
  36. conNode = createNode("condition")
  37. setAttr(conNode.operation, 3)
  38. mD.outputX >> conNode.colorIfTrueR
  39. distanceNode.distance >> conNode.firstTerm
  40.  
  41. jD1 = getDist(jnt1Pos,jnt2Pos)
  42. jD2 = getDist(jnt2Pos,ctrlPos)
  43. setAttr(mD.input2X, jD1+jD2)
  44. setAttr(conNode.secondTerm, jD1+jD2)
  45. conNode.outColorR >> jnt1.scaleX
  46. conNode.outColorR >> jnt2.scaleX
Advertisement
Add Comment
Please, Sign In to add comment