Oops accident replied to the wrong person :-)

I formatted this into a gist so its readable:
https://gist.github.com/1110257


On Jul 27, 12:39 am, 张宇 <[email protected]> wrote:
> class fn:
>     def eye_rig(self, eyeObj,eyeTarget,controllers):
>         "Create EyeRig weighted between target (via aimContraint) and
> animation override"
>
>         # Create control hierarchy of groups or locators:
>         #controllers = ['anim','aim','out']
>         controlsList = []
>         testing = 0
>
>         # For each controller, create a locator and add it to the list of
> controllers
>         for control in controllers:
>             objTmp = eyeObj+'_'+control
>             cmds.spaceLocator(n=objTmp)
>             controlsList.append(objTmp)
>
>         #Final control (last item in list) will receive all the rotations
> and pass them to the eye via parentConstraint.
>         #  It will have UD attrs to weight inputs of other controls
>         finalControl = controlsList[-1]
>
>         # For each controller, we'll create a multDiv.  We pipe the
> control's rotation into the md, weight it w/UD attr on 'out' object.
>         #  Rotations coming out of multDivs are added w/pma node and passed
> to 'out' object
>
>         # Create pma node first, so md can be connected when created:
>         sumNodeTmp = cmds.createNode('plusMinusAverage',n=eyeObj+'eyeRo
>  t_sum')
>         print 'sumNodeTmp:',sumNodeTmp
>
>         # Summed rotations piped into 'out.rotate' (This is the last item in
> the 'controlsList' List):
>         cmds.connectAttr(sumNodeTmp+'.output3D',finalControl
> +'.rotate',force=1)
>
>         # Create _md node for each controller rotations, pipe intorotation
> sum
>         count = 0
>         while count < (len(controlsList)-1):
>             nodeTmp = controlsList[count]
>             attrTmp = controllers[count]
>             print 'nodeTmp:',nodeTmp
>             # For each controller, create a MultDiv to weight the rotation.
>             #  They will be weighted by a custom attr on the 'out' object:
>             mdTmp = cmds.createNode('multiplyDivide',n=nodeTmp+'_md')
>             # Connect rotations to multDiv.input1 (more rotationinfluences
> can be added)
>             cmds.connectAttr(nodeTmp+'.rotate',mdTmp+'.input1'  ,force=1)
>             # Pipe the md output to the rotation sum:
>
> connectAttr(mdTmp+'.output',sumNodeTmp+'.input3D['+str(count)+']',force=1)
>
>             # Create UD attrs on 'out' (last item in list)to weight
> therotations of each controller.
>             #   Pipe UD into the corresponding md nodes.
>
>             # Create UD Attrs on 'out'
>
> cmds.addAttr(finalControl,ln=attrTmp,min=0,max=1,dv=1,at='float')
>             cmds.setAttr (finalControl+'.'+attrTmp, e=1, keyable=1)# Ifnot
> keyable, won't show in channel box
>             # Connect Anim, Aim to inputs of respective multDiv:
>             connectAttrsTmp =['2X','2Y','2Z']
>             for tmpConnectAttr in connectAttrsTmp:
>
> cmds.connectAttr(finalControl+'.'+attrTmp,mdTmp+'.input'+tmpConnectAttr)
>
>                 # If test, offset the controllers for visual testing:
>                 if testing:
>                     cmds.setAttr(nodeTmp+'.translateX',count+0.5)
>                 count += 1
>
>         # Group the controllers
>         eyeRigGroupTmp = cmds.group(controlsList, n = eyeObj+'_eyeDir_grp')
>
>         # Position the eyeRig at the eye
>         self.parentUnparent (eyeObj,eyeRigGroupTmp)
>
>         # Setup aimConstraint for eye
>         cmds.aimConstraint (eyeTarget,eyeObj+'_aim',offset = [0, 0, 0],w =
> 1, aimVector = [1,0,0], upVector = [0,1,0], worldUpType ='vector',
> worldUpVector = [0,1,0])
>
>         # Constrain Eye to "out" control
>         cmds.parentConstraint (eyeObj,finalControl, offset = (0, 0,0 ), w =
> 1)
>
>     def parentUnparent(self, parent,children):
>         # Use temporary point-, scale- constraints to snap parent tofuture
> child
>         delete( cmds.pointConstraint (parent, children, offset = (0, 0,0 ),
> w = 1) )
>         delete( cmds.orientConstraint (parent, children, offset = (0,0, 0 ),
> w = 1) )
>         delete( cmds.scaleConstraint (parent, children, offset = (1, 1,1 ),
> w = 1) )
> ins = fn()
> ins.eye_rig('testX_eyeL','testX_eyeL_tgt',['anim','aim','out'])
>
> 2011/7/27 PixelMuncher <[email protected]>
>
>
>
>
>
>
>
>
>
> > Hi all:
> > Perhaps this is too much to ask, but I've been studying up on Python
> > classes and trying to figure out how to use them in my Maya Coding.  I
> > haven't found any good Maya examples.
> > If someone has a few minutes , maybe you could show how this eye
> > rigging code could be written as a class?
> > Thanks much.
>
> > def eye_rig(eyeObj,eyeTarget,controllers):
> >       "Create EyeRig weighted between target (via aimContraint) and
> > animation override"
>
> >       # Create control hierarchy of groups or locators:
> >       #controllers = ['anim','aim','out']
> >       controlsList = []
> >       testing = 0
>
> >       # For each controller, create a locator and add it to the list
> > of controllers
> >       for control in controllers:
> >           objTmp = eyeObj+'_'+control
> >           cmds.spaceLocator(n=objTmp)
> >           controlsList.append(objTmp)
>
> >       #Final control (last item in list) will receive all the
> > rotations and pass them to the eye via parentConstraint.
> >       #  It will have UD attrs to weight inputs of other controls
> >       finalControl = controlsList[-1]
>
> >       # For each controller, we'll create a multDiv.  We pipe the
> > control's rotation into the md, weight it w/UD attr on 'out' object.
> >       #  Rotations coming out of multDivs are added w/pma node and
> > passed to 'out' object
>
> >       # Create pma node first, so md can be connected when created:
> >       sumNodeTmp = cmds.createNode('plusMinusAverage',n=eyeObj
> > +'eyeRo  t_sum')
> >       print 'sumNodeTmp:',sumNodeTmp
>
> >       # Summed rotations piped into 'out.rotate' (This is the last
> > item in the 'controlsList' List):
> >       cmds.connectAttr(sumNodeTmp+'.output3D',finalContr  ol
> > +'.rotate',force=1)
>
> >       # Create _md node for each controller rotations, pipe into
> > rotation sum
> >       count = 0
> >       while count < (len(controlsList)-1):
> >           nodeTmp = controlsList[count]
> >           attrTmp = controllers[count]
> >           print 'nodeTmp:',nodeTmp
> >           # For each controller, create a MultDiv to weight the
> > rotation.
> >           #  They will be weighted by a custom attr on the 'out'
> > object:
> >           mdTmp = cmds.createNode('multiplyDivide',n=nodeTmp+'_md')
> >           # Connect rotations to multDiv.input1 (more rotation
> > influences can be added)
> >           cmds.connectAttr(nodeTmp+'.rotate',mdTmp
> > +'.input1'  ,force=1)
> >           # Pipe the md output to the rotation sum:
> >           connectAttr(mdTmp+'.output',sumNodeTmp
> > +'.input3D['+str(count)+']',force=1)
>
> >           # Create UD attrs on 'out' (last item in list)to weight the
> > rotations of each controller.
> >           #   Pipe UD into the corresponding md nodes.
>
> >           # Create UD Attrs on 'out'
> >           cmds.addAttr(finalControl,ln=attrTmp,min=0,max=1,d
> > v=1,at='float')
> >           cmds.setAttr (finalControl+'.'+attrTmp, e=1, keyable=1)# If
> > not keyable, won't show in channel box
> >           # Connect Anim, Aim to inputs of respective multDiv:
> >           connectAttrsTmp =['2X','2Y','2Z']
> >           for tmpConnectAttr in connectAttrsTmp:
> >               cmds.connectAttr(finalControl+'.'+attrTmp,mdTmp+'.
> > input'+tmpConnectAttr)
>
> >           # If test, offset the controllers for visual testing:
> >           if testing:
> >               cmds.setAttr(nodeTmp+'.translateX',count+0.5)
> >           count += 1
>
> >       # Group the controllers
> >       eyeRigGroupTmp = cmds.group(controlsList, n = eyeObj
> > +'_eyeDir_grp')
>
> >       # Position the eyeRig at the eye
> >       parentUnparent (eyeObj,eyeRigGroupTmp)
>
> >       # Setup aimConstraint for eye
> >       cmds.aimConstraint (eyeTarget,eyeObj+'_aim',offset = [0, 0, 0],
> > w = 1, aimVector = [1,0,0], upVector = [0,1,0], worldUpType =
> > 'vector', worldUpVector = [0,1,0])
>
> >       # Constrain Eye to "out" control
> >       cmds.parentConstraint (eyeObj,finalControl, offset = (0, 0,
> > 0 ), w = 1)
>
> > def parentUnparent(parent,children):
> >       # Use temporary point-, scale- constraints to snap parent to
> > future child
> >       delete( cmds.pointConstraint (parent, children, offset = (0, 0,
> > 0 ), w = 1) )
> >       delete( cmds.orientConstraint (parent, children, offset = (0,
> > 0, 0 ), w = 1) )
> >       delete( cmds.scaleConstraint (parent, children, offset = (1, 1,
> > 1 ), w = 1) )
>
> > eye_rig('testX_eyeL','testX_eyeL_tgt',['anim','aim','out'])
>
> > --
> > view archives:http://groups.google.com/group/python_inside_maya
> > change your subscription settings:
> >http://groups.google.com/group/python_inside_maya/subscribe
>
> --http://thatboy.me

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to