cwisbg

# dynamic offset wip

Jun 19th, 2015
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.81 KB | None | 0 0
  1. # dynamic off setter v.2
  2. from pymel.core import*
  3. import maya.cmds as cmds
  4. def grpr(name):
  5.     g = ls(name)
  6.     if g:
  7.         delete(g)
  8.     g = group(n=name,em=1)
  9.     return g
  10. def getPiv(s):    
  11.     select(s)
  12.     setToolTo('Move')
  13.     piv = manipMoveContext('Move', q=True, p=True,m=2)
  14.     return piv
  15.  
  16.    
  17. sl = selected()
  18. for s in sl:
  19.     print s
  20.    
  21.     ctrl = s
  22.     ctrlGrp = grpr(ctrl+"_master_grp")
  23.     ctrlL = spaceLocator(n=ctrl+"_pGoal_lctr")#particles goal
  24.     pc = pointConstraint(ctrl,ctrlL, n = ctrl+"_goal_pointConstraint")
  25.     t = getPiv(ctrl)
  26.     ctrlB = polyCube(n=ctrl+"_particleFollow_lctr")[0]
  27.     p = nParticle(n=ctrl+"_follower_particle",c=1,p=t)[0]
  28.    
  29.     goal(p, g = ctrlL, w = .36 , utr=0)
  30.     p.centroid >> ctrlB.translate  
  31.      
  32.     """
  33.    follower = spaceLocator(n=ctrl+"_follower")
  34.    pc2 = pointConstraint(ctrl,follower)
  35.    """
  36.     expression(string="$value=`getAttr -time (frame-5) {0}.rotate`;{1}.rotateX=$value[0];{1}.rotateY=$value[1];{1}.rotateZ=$value[2];".format(ctrl,ctrlB))
  37.    
  38.    
  39.     heroL = spaceLocator(n=ctrl+"_follow_lctr")
  40.     pcH = parentConstraint(ctrl, ctrlB, heroL, n = ctrl+"_blend_constraint")
  41.    
  42.    
  43.     parent([ctrlL,ctrlB,p,heroL],ctrlGrp)
  44.    
  45.     # add attributes
  46.     ac = listAttr(ctrl)
  47.     if "dynamicOnOff" not in ac:
  48.         addAttr(ctrl, ln="dynamicOnOff",at="double",min=0,max=1, dv = 1)
  49.         setAttr(ctrl.dynamicOnOff,e = 1,keyable = True)        
  50.     if "pdamp" not in ac:
  51.         addAttr(ctrl, ln="pdamp",at="double", dv = .01)
  52.         setAttr(ctrl.pdamp,e = 1,keyable = True)  
  53.     if "pGoal" not in ac:
  54.         addAttr(ctrl, ln="pGoal",at="double", dv = 0.35)
  55.         setAttr(ctrl.pGoal,e = 1,keyable = True)  
  56.     if "IgnorGravity" not in ac:
  57.         addAttr(ctrl, ln="IgnorGravity",at="long", dv = 1)
  58.         setAttr(ctrl.IgnorGravity,e = 1,keyable = True)
  59.        
  60.  
  61.    
  62.  
  63.    
  64.     #setAttr("blend_constraint."+s+"W0", 0)
  65.     #setAttr "test_follow_lctr_parentConstraint1.test_particleFollow_lctrW1" 1;
  66.    
  67.  
  68.    
  69.     # set driven key for turning off dynamics.
  70.     setDrivenKeyframe( ctrl+"_blend_constraint."+ctrl+"W0", cd = ctrl.dynamicOnOff, dv = 0, v = 1)
  71.     setDrivenKeyframe( ctrl+"_blend_constraint."+ctrl+"W0", cd = ctrl.dynamicOnOff, dv = 1, v = 0)
  72.     setDrivenKeyframe( ctrl+"_blend_constraint."+ctrlB+"W1", cd = ctrl.dynamicOnOff, dv = 0, v = 0)
  73.     setDrivenKeyframe( ctrl+"_blend_constraint."+ctrlB+"W1", cd = ctrl.dynamicOnOff, dv = 1, v = 1)
  74.    
  75.     setDrivenKeyframe( p.getShape()+".isDynamic", cd = ctrl.dynamicOnOff, dv = 0, v = 0)
  76.     setDrivenKeyframe( p.getShape()+".isDynamic", cd = ctrl.dynamicOnOff, dv = .001, v = 1)
  77.     setDrivenKeyframe( p.getShape()+".isDynamic", cd = ctrl.dynamicOnOff, dv = 1, v = 1)
  78.    
  79.     #set attributes
  80.     scale(ctrlB, .001,.001,.001)
  81.     setAttr(ctrlL.visibility,0)
  82.     setAttr(p.ignoreSolverGravity,0)
  83.     setAttr(p.getShape()+".radius",0)
  84.     setAttr(ctrlB.castsShadows, 0)
  85.     setAttr(ctrlB.receiveShadows, 0)
  86.     setAttr(ctrlB.primaryVisibility, 0)
  87.     setAttr(ctrlB.visibleInReflections, 0)
  88.     setAttr(ctrlB.visibleInRefractions, 0)
  89.     setAttr(ctrl.dynamicOnOff, 1)
  90.     ctrl.pdamp >> p.damp
  91.     ctrl.pGoal >> p.goalWeight[0]
  92.     ctrl.IgnorGravity >> p.ignoreSolverGravity  
  93.     select(ctrl)
  94.    
  95.     # make ctrl sets
  96.     setTest = ls(set=1)
  97.     if not "dynamic_Ctrls" in setTest:
  98.         ss = cmds.sets(n = "dynamic_Ctrls", em=1)
  99.     x = cmds.sets(str(ctrl), im = ss)
  100.     if not x:
  101.         print "adding ", ctrl, " to list"
  102.         print ctrl
  103.         cmds.sets(str(s), add= "dynamic_Ctrls")
  104.  
  105.  
  106.    
  107.    
  108.     turb = ls("turb")
  109.     if not turb:
  110.         print "creating turbulence"
  111.         turb = turbulence(m = 20,n = "turb" )
  112.         connectDynamic(p,f=turb)
  113.     else:
  114.         connectDynamic(p,f=turb)
  115. select(cl=1)
  116.  
  117. select(ctrl)
Advertisement
Add Comment
Please, Sign In to add comment