Here's a handy script that can make reading set driven animation curve nodes a little easier. The issue at hand is primarily that when you are using set driven keys on an attribute that has multiple drivers, you will often see the mysterious "animCurveUU##" or "animCurveUL##" show up.
This is because when Maya sets up it's keys, it looks at the connection of the animCurve node to see what the receiving plug from on the output of the animCurve node. Thus, when you hook up a set driven key 1:1 with an attribute, you will see them labelled clearly as what the node is controlling. However, when you start introducing multiple controllers to the input, it generates a blendWeight node which only has .input and .weight plugs on it. It doesn't have a specific attribute that can be seen. Therefore, you get new curves that are generic in naming convention, and sometimes at glance are hard to parse.
Therefore, I've come up with a simple solution for renaming these nodes. I have taken the information of what the driven attribute the blendWeighted node's output is connected to, using listConnections and then using that attribute data to rename the animCurve in question. This script also has a fail safe in it for all the attributes that are already non-generic, it just skips over them to keep their naming in-tact. This sub-string recognition is very easy in Python language.
To use it just mass select all the animCurve nodes that should be non-generic, even the ones that are not (it skips those ones).
#Generic AnimCurve renamer import maya.cmds as cmds for x in cmds.ls(sl=1): if cmds.nodeType(x) == "animCurveUU" or cmds.nodeType(x) == "animCurveUL": blendWeightNode = cmds.listHistory(x,f=1,il=1) newName = cmds.listConnections(blendWeightNode,d=1,s=0,p=1) if "animCurve" in x: newName = newName.replace(".","_") cmds.rename(x,newName) else: print "skipping: " + x + " not a animCurveUU or animCurveUL type"
For a little more information on the breakdown this script:
listHistory with future enabled, interest level set to 1. Future is obvious that it looks to the nodes that only go through the output the animCurve in the connections. Interest level at 1 ensures that we get the blendWeighted node first in the list.
listConnections with destination enabled, source disabled and plugs enabled. We want the connections that the destination plugs (output) on the blendWeighted node are going to. The opposite applies for the source (input) on the blendWeighted node. Plugs allows us to see where the destination is going to. We then use this string this returns to properly label the animCurve in question.
A few caveats of this script could be that your blendWeighted node is connected to multiple attributes. In which this script will only take the first one. Also, if there are existing animCurves that are connected to the same attribute directly, your curve will be appended with a number.
As always, I hope this helps!