Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # curve rigger
- # cwisbg.com
- # select curve and run
- # creates ctrl curve at every cv
- from pymel.core import *
- def zeroGrp(s):
- pap = listRelatives(s,p=1)
- pos = s.getTranslation()
- rot = s.getRotation()
- scl = s.getScale()
- nwGrp = group(em=1, n= s+"_zeroGrp")
- move(s, 0,0,0)
- rotate(s,0,0,0)
- scale(s,1,1,1)
- parent(s,nwGrp)
- move(nwGrp, pos)
- rotate(nwGrp, rot)
- scale(nwGrp, scl)
- if pap:
- parent(nwGrp,pap)
- return nwGrp
- def getPiv(s):
- select(s)
- setToolTo('Move')
- piv = manipMoveContext('Move', q=True, p=True,m=2)
- return piv
- def orient(point1, point2):
- point1 = getPiv(point1)
- point2 = getPiv(point2)
- l1 = spaceLocator(p = (0,0,0), n = "point1")
- move(l1, point1, ws=1)
- l2 = spaceLocator(p = (0,0,0), n = "point2")
- move(l2, point2, ws=1)
- aimConstraint(l1,l2)
- axesLctr = spaceLocator(p = (0,0,0), n = "axes")
- p = pointConstraint([l1,l2], axesLctr)
- r = l2.getRotation()
- delete(p)
- delete(l1)
- delete(l2)
- delete(axesLctr)
- return r
- def grpr(name):
- g = ls(name)
- if not g:
- g = group(n=name,em=1)
- return g
- def rigCrv(s,grp):
- cleanUpGrp = grp
- grpList = []
- i = 0
- for cv in s.cv:
- ctrl = circle(c = (0,0,0),nr=[1,0,0], ch=1, n = "{0}_{1}_ctrl".format(s,cv))[0]
- piv = getPiv(cv)
- zgrp = zeroGrp(ctrl)
- move(zgrp,piv)
- grpList.append(zgrp)
- c = cluster(cv, n = "{0}_cluster_{1}".format(s,i))
- setAttr(c[1].visibility,0)
- #setAttr(s.visibility,0)
- pc = parentConstraint(ctrl,c)
- parent(c,cleanUpGrp)
- parent(zgrp,cleanUpGrp)
- i += 1
- i = 0
- t = []
- for g in grpList:
- if i == 0:
- r = orient(grpList[i], grpList[i+1])
- rotate(g,r)
- elif i == len(grpList)-1:
- r = orient(grpList[i], grpList[i-1])
- rotate(g,r)
- rotate(g,0,180,0,os=1,r=1)
- else:
- r = orient(grpList[i+1], grpList[i-1])
- rotate(g,r)
- t.append(g)
- i += 1
- sl = selected()
- for s in sl:
- cleanUpGrp = grpr(s+"_crtl_grp")
- rigCrv(s,cleanUpGrp)
Advertisement
Add Comment
Please, Sign In to add comment