cwisbg

Maya curve rigger

Jun 25th, 2014
418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.22 KB | None | 0 0
  1. # curve rigger
  2. # cwisbg.com
  3. # select curve and run
  4. # creates ctrl curve at every cv
  5. from pymel.core import *
  6. def zeroGrp(s):
  7.     pap = listRelatives(s,p=1)
  8.     pos = s.getTranslation()
  9.     rot = s.getRotation()
  10.     scl = s.getScale()
  11.     nwGrp = group(em=1, n= s+"_zeroGrp")
  12.     move(s, 0,0,0)
  13.     rotate(s,0,0,0)
  14.     scale(s,1,1,1)
  15.     parent(s,nwGrp)
  16.     move(nwGrp, pos)
  17.     rotate(nwGrp, rot)
  18.     scale(nwGrp, scl)
  19.     if pap:
  20.         parent(nwGrp,pap)
  21.     return nwGrp
  22. def getPiv(s):    
  23.     select(s)
  24.     setToolTo('Move')
  25.     piv = manipMoveContext('Move', q=True, p=True,m=2)
  26.     return piv
  27. def orient(point1, point2):
  28.     point1 = getPiv(point1)
  29.     point2 = getPiv(point2)
  30.     l1 = spaceLocator(p = (0,0,0), n = "point1")
  31.     move(l1, point1, ws=1)
  32.     l2 = spaceLocator(p = (0,0,0), n = "point2")
  33.     move(l2, point2, ws=1)
  34.     aimConstraint(l1,l2)
  35.     axesLctr = spaceLocator(p = (0,0,0), n = "axes")
  36.     p = pointConstraint([l1,l2], axesLctr)
  37.     r = l2.getRotation()
  38.     delete(p)
  39.     delete(l1)
  40.     delete(l2)
  41.     delete(axesLctr)
  42.     return r
  43. def grpr(name):
  44.     g = ls(name)
  45.     if not g:
  46.         g = group(n=name,em=1)
  47.     return g
  48. def rigCrv(s,grp):
  49.     cleanUpGrp = grp
  50.     grpList = []
  51.     i = 0
  52.     for cv in s.cv:
  53.         ctrl = circle(c = (0,0,0),nr=[1,0,0], ch=1, n = "{0}_{1}_ctrl".format(s,cv))[0]
  54.         piv = getPiv(cv)
  55.         zgrp = zeroGrp(ctrl)
  56.         move(zgrp,piv)
  57.         grpList.append(zgrp)
  58.         c = cluster(cv, n = "{0}_cluster_{1}".format(s,i))
  59.         setAttr(c[1].visibility,0)
  60.         #setAttr(s.visibility,0)
  61.         pc = parentConstraint(ctrl,c)
  62.         parent(c,cleanUpGrp)
  63.         parent(zgrp,cleanUpGrp)
  64.         i += 1
  65.     i = 0
  66.     t = []  
  67.     for g in grpList:
  68.         if i == 0:
  69.             r = orient(grpList[i], grpList[i+1])
  70.             rotate(g,r)
  71.         elif i == len(grpList)-1:
  72.             r = orient(grpList[i], grpList[i-1])
  73.             rotate(g,r)
  74.             rotate(g,0,180,0,os=1,r=1)  
  75.         else:
  76.             r = orient(grpList[i+1], grpList[i-1])
  77.             rotate(g,r)    
  78.             t.append(g)
  79.         i += 1
  80.  
  81. sl = selected()
  82. for s in sl:
  83.     cleanUpGrp = grpr(s+"_crtl_grp")  
  84.     rigCrv(s,cleanUpGrp)
Advertisement
Add Comment
Please, Sign In to add comment