Download

In this section, I will try to share tools and plug-ins for maya , in hope to start a collective effort to complement maya default tool-set.

Feedback are more than welcomed : don’t hesitate to ask questions or request additional features   ( I will be more than happy to try my best to reply but keep in mind that nothing  comparable to a full blown commercial support can be provided )

Toggle Node

Toggle Node version 0.1 ( remove ‘.pdf’ from name then extract in a plugin folder )

Description:
A dependency node that output a list of value based on an active index attribute.

Its purpose is to simplify a graph network by enabling user to toggle the state of a large number of elements. All elements will be set to false except for the active index.

Typical  use :
Space switching, visibility toggle etc..

Usage Notes:

import maya.cmds as cmds
cmds.loadPlugin('toggle.py')
tglNode = cmds.createNode('toggle')

# Just a little trick to have a correct number of output when the node is not connected
cmds.addAttr(tglNode, ln='refresh',k=True)
cmds.connectAttr('%s.outState[0]'% tglNode,'%s.refresh'%tglNode)

blendQueue Node

blendQueue Node version 0.1 ( remove ‘.pdf’ from name   )

Description:
A dependency node providing the core functionality of maya pairBlend node but accepts an unlimited number of driver as input.

Its purpose is to simplify a graph network by blending an entire chain or hierarchy inside one node. An additional sequential queue mode is provided to cope with hierarchy used in simulation

Typical  use :
Ik/Fk chain blending, rest pose blending for simulation

(Above: a cleaner node network: notice also the correct type of attributes with no intermediate conversion node )

Usage Notes:

import maya.cmds as cmds

def linkChain (fkList, ikList, boundList, queueNode):
    AttributesA = ["input1_Translate","input1_Rotate","outTranslate"]
    AttributesB = ["input2_Translate","input2_Rotate","outRotate"]

    if len(fkList) != len(ikList) and len(ikList) != len(boundList):
        return None
    else:
        listLength = len(fkList)
        for k in range(listLength):
            cmds.connectAttr('%s.t'%fkList[k],'%s.%s[%s]'%(queueNode,AttributesA[0],k),f=True)
            cmds.connectAttr('%s.r'%fkList[k],'%s.%s[%s]'%(queueNode,AttributesA[1],k),f=True)
            cmds.connectAttr('%s.t'%ikList[k],'%s.%s[%s]'%(queueNode,AttributesB[0],k),f=True)
            cmds.connectAttr('%s.r'%ikList[k],'%s.%s[%s]'%(queueNode,AttributesB[1],k),f=True)

            cmds.connectAttr('%s.%s[%s]'%(queueNode,AttributesA[2],k),'%s.t'%boundList[k])
            cmds.connectAttr('%s.%s[%s]'%(queueNode,AttributesB[2],k),'%s.r'%boundList[k])

# create 3 list(with the same number of element) with the name of a chain element
# invoke the function as follow:
cmds.loadPlugin('blendQueue.py')
QuNode = cmds.createNode('blendQueue')

# select all chain element then
fkList = cmds.ls(sl=True, tr=True,dag=True,ap=True,l=True)

#repeat for the other two
ikList = cmds.ls(sl=True, tr=True,dag=True,ap=True,l=True)

boundList = cmds.ls(sl=True, tr=True,dag=True,ap=True,l=True)
linkChain (fkList, ikList, boundList, QuNode)

Installation :

( blendQueue.py and AEblendQueueTemplate.mel are the only files needed to use this node )

Limitations:
Rotation order are not supported( not yet but can be easily added ).

Quatermain Node

Quatermain Node version 0.1 ( remove ‘.pdf’ from name then extract in a plugin folder )

Description:
A dependency node that behaves like a quaternion based aim constraint and output rotation from an input target position..

Typical use :
Bending limbs, flipping less rigs, torsion extraction..

Usage Notes:

import maya.cmds as cmds
cmds.loadPlugin('quatermainNode.py')
QuatNode = cmds.createNode('quatermainNode')

# connect your target position to the targetPosition attribute
# by default this node rest pose is at 1,0,0 : it use the x axis to extract a quaternion
cmds.connectAttr('%s.t'%aimloc1,'%s.targetPosition'%QuatNode)

#AimGrp --> change by the your driven object name
cmds.connectAttr('%s.outRotate'%QuatNode,'%s.r'%AimGrp)

Side Notes:

The same behavior can be achieved with a regular aim constraint :

Just choose “None” as worldUpType.( thanks to tech-artist forum post for the tip )

Advertisements

One comment on “Download

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s