Hey Justin,

Right now I'm simply trying to bake out the animation of the controller and 
copying the animation back onto a locator. The problem is that will the 
constrained controller is baked out it only the first is baked over the 
entire time range. So when the controller is suppose to follow whatever was 
constraining it, it just stays in place.

It's not that I wouldn't be able to directly use data from the XML it's 
just that it would take time to load to the data back onto the controllers 
every time the animation is updated. Not only to mention if there are 200 
controllers in the scene I would have to go frame by frame for each 
controller and their attribute and save the data out. It just doesn't seem 
very efficient.

This is a quick and dirty version of my code. The overall code uses just 
simple maya commands, which is why I find it very odd to be having such an 
issue.

import sys, os.path
import maya.standalone as st

##Start Maya Standalone
st.initialize(name='python')

import maya.cmds as cmds

path= 'animatedScene.ma'
##Open File
cmds.file( path, f=1, o=1)

path= os.path.normpath( path)
#print( path)

##Open File
cmds.file( path, f=1, o=1)

##Grab Start Frame
startTime= int( cmds.playbackOptions( q=True, min=True))
#print( startTime)

##Grab End Frame
endTime= int( cmds.playbackOptions( q=True, max=True))
print( endTime)

##Grab all sets
setList= cmds.ls( et= 'objectSet' )
#print( setList)

for set in setList:
ctrl_list= cmds.sets( set, q= 1)
#print( ctrl_list)
 ##Bake controllers from Set Lister
for ctrl in ctrl_list:
##Bake out controls
cmds.bakeResults( ctrl, simulation=0, t=( startTime, endTime), shape=1, 
dic= 0, pok= 0)
 ##Copy animation from controller to locator
for ctrl in ctrl_list:
##Fix namespace
newCtrl= ctrl.replace( ':', '_NmSp_')
#print( newCtrl)
 ##Create locator
sceneAnimLoc= cmds.spaceLocator( n= newCtrl+'_animLoc', p=[0, 0, 0] )[0]
#print( sceneAnimLoc)
 ##Grab attributes
attrList= cmds.listAttr( ctrl, k= 1, u= 1)
#print( ctrl, attrList)
 for attr in attrList:
newAttr= attr.replace( ':','_NmSp_')
newAttr= newCtrl+'_'+ newAttr
#print( newAttr)
 ##Create attribute for locator
cmds.addAttr( sceneAnimLoc, ln= newAttr, at= 'double', k= 1)
 ##Check if controller attribute is keyed
checkKey= cmds.keyframe( ctrl, q= 1, at= attr)
#print( ctrl, attr, checkKey)
 if( checkKey):
##Copy key from at Controller attribute
cmds.copyKey( ctrl, time=[], f=[], attribute= attr)
 ##Paste Controller Attribute onto SceneAnim Loc
cmds.pasteKey( sceneAnimLoc, attribute= newAttr)

##Save File
cmds.file( rn= 'baked_animScene.mb')
cmds.file( s=1, f=1)

currentFile= cmds.file( q=1, exn=1)
print( currentFile)

-- 
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