I like blogs. Today I made this script in Python that takes a bunch of things (for me specifically, it was control curves for a rig I'm making), and groups them, transferring their transformations (heh) on to the group, thereby zeroing out the transformations on the curves themselves. This is especially handy when you're positioning your curves in relation to your character, and you want to zero out their rotations while keeping the local rotation axis. You can't just use Freeze Transformation because it resets the object space rotation axis, which you kind of need to animate easily. It doesn't seem to work 100% perfectly, but it's good enough for me.
Anyway, here it is for anyone to use
# Zeros out controls by grouping them, the group takes the transformations
import maya.cmds as cmds
selection = cmds.ls(sl=True)
rotation = []
trans = []
for object in selection:
rotation = cmds.xform(object, q=True, ws=True, ro=True)
trans = cmds.xform(object, q=True, ws=True, t=True)
cmds.group( em=True, n = object + "ZeroGroup" )
cmds.xform( object + "ZeroGroup", ws=True, t=trans)
cmds.xform( object + "ZeroGroup", os=True, ro=rotation )
parentObject = cmds.listRelatives( object, parent = True )[0] # first find the parent of the given object
cmds.parent( object+"ZeroGroup", parentObject ) # parent the group to the parent of the given object
cmds.parent( object, object+"ZeroGroup" ) # now parent object to the group
Enjoy!
(p.s. if there's anything wrong with it let me know!)
Comments
Post a Comment