Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # dynamic off setter v.2
- from pymel.core import*
- import maya.cmds as cmds
- def grpr(name):
- g = ls(name)
- if g:
- delete(g)
- g = group(n=name,em=1)
- return g
- def getPiv(s):
- select(s)
- setToolTo('Move')
- piv = manipMoveContext('Move', q=True, p=True,m=2)
- return piv
- sl = selected()
- for s in sl:
- print s
- ctrl = s
- ctrlGrp = grpr(ctrl+"_master_grp")
- ctrlL = spaceLocator(n=ctrl+"_pGoal_lctr")#particles goal
- pc = pointConstraint(ctrl,ctrlL, n = ctrl+"_goal_pointConstraint")
- t = getPiv(ctrl)
- ctrlB = polyCube(n=ctrl+"_particleFollow_lctr")[0]
- p = nParticle(n=ctrl+"_follower_particle",c=1,p=t)[0]
- goal(p, g = ctrlL, w = .36 , utr=0)
- p.centroid >> ctrlB.translate
- """
- follower = spaceLocator(n=ctrl+"_follower")
- pc2 = pointConstraint(ctrl,follower)
- """
- expression(string="$value=`getAttr -time (frame-5) {0}.rotate`;{1}.rotateX=$value[0];{1}.rotateY=$value[1];{1}.rotateZ=$value[2];".format(ctrl,ctrlB))
- heroL = spaceLocator(n=ctrl+"_follow_lctr")
- pcH = parentConstraint(ctrl, ctrlB, heroL, n = ctrl+"_blend_constraint")
- parent([ctrlL,ctrlB,p,heroL],ctrlGrp)
- # add attributes
- ac = listAttr(ctrl)
- if "dynamicOnOff" not in ac:
- addAttr(ctrl, ln="dynamicOnOff",at="double",min=0,max=1, dv = 1)
- setAttr(ctrl.dynamicOnOff,e = 1,keyable = True)
- if "pdamp" not in ac:
- addAttr(ctrl, ln="pdamp",at="double", dv = .01)
- setAttr(ctrl.pdamp,e = 1,keyable = True)
- if "pGoal" not in ac:
- addAttr(ctrl, ln="pGoal",at="double", dv = 0.35)
- setAttr(ctrl.pGoal,e = 1,keyable = True)
- if "IgnorGravity" not in ac:
- addAttr(ctrl, ln="IgnorGravity",at="long", dv = 1)
- setAttr(ctrl.IgnorGravity,e = 1,keyable = True)
- #setAttr("blend_constraint."+s+"W0", 0)
- #setAttr "test_follow_lctr_parentConstraint1.test_particleFollow_lctrW1" 1;
- # set driven key for turning off dynamics.
- setDrivenKeyframe( ctrl+"_blend_constraint."+ctrl+"W0", cd = ctrl.dynamicOnOff, dv = 0, v = 1)
- setDrivenKeyframe( ctrl+"_blend_constraint."+ctrl+"W0", cd = ctrl.dynamicOnOff, dv = 1, v = 0)
- setDrivenKeyframe( ctrl+"_blend_constraint."+ctrlB+"W1", cd = ctrl.dynamicOnOff, dv = 0, v = 0)
- setDrivenKeyframe( ctrl+"_blend_constraint."+ctrlB+"W1", cd = ctrl.dynamicOnOff, dv = 1, v = 1)
- setDrivenKeyframe( p.getShape()+".isDynamic", cd = ctrl.dynamicOnOff, dv = 0, v = 0)
- setDrivenKeyframe( p.getShape()+".isDynamic", cd = ctrl.dynamicOnOff, dv = .001, v = 1)
- setDrivenKeyframe( p.getShape()+".isDynamic", cd = ctrl.dynamicOnOff, dv = 1, v = 1)
- #set attributes
- scale(ctrlB, .001,.001,.001)
- setAttr(ctrlL.visibility,0)
- setAttr(p.ignoreSolverGravity,0)
- setAttr(p.getShape()+".radius",0)
- setAttr(ctrlB.castsShadows, 0)
- setAttr(ctrlB.receiveShadows, 0)
- setAttr(ctrlB.primaryVisibility, 0)
- setAttr(ctrlB.visibleInReflections, 0)
- setAttr(ctrlB.visibleInRefractions, 0)
- setAttr(ctrl.dynamicOnOff, 1)
- ctrl.pdamp >> p.damp
- ctrl.pGoal >> p.goalWeight[0]
- ctrl.IgnorGravity >> p.ignoreSolverGravity
- select(ctrl)
- # make ctrl sets
- setTest = ls(set=1)
- if not "dynamic_Ctrls" in setTest:
- ss = cmds.sets(n = "dynamic_Ctrls", em=1)
- x = cmds.sets(str(ctrl), im = ss)
- if not x:
- print "adding ", ctrl, " to list"
- print ctrl
- cmds.sets(str(s), add= "dynamic_Ctrls")
- turb = ls("turb")
- if not turb:
- print "creating turbulence"
- turb = turbulence(m = 20,n = "turb" )
- connectDynamic(p,f=turb)
- else:
- connectDynamic(p,f=turb)
- select(cl=1)
- select(ctrl)
Advertisement
Add Comment
Please, Sign In to add comment