def matchBakeLocators(parent=None, bakeOnOnes=False, constrainSource=False):
#get neccesary nodes
objs = mc.ls(sl=True)
if not objs:
OpenMaya.MGlobal.displayWarning('Select an Object')
return
locs = list()
cutIndex = dict()
noKeys = list()
noKeysLoc = list()
for obj in objs:
name = mc.ls(obj, shortNames=True)[0]
if ':' in name:
name = obj.rpartition(':')[-1]
locator = mc.spaceLocator(name='worldBake_'+name+'_#')[0]
mc.setAttr(locator+'.rotateOrder', 3)
mc.addAttr(locator, longName='ml_bakeSource', attributeType='message')
mc.connectAttr('.'.join((obj,'message')), '.'.join((locator,'ml_bakeSource')))
mc.addAttr(locator, longName='ml_bakeSourceName', dataType='string')
mc.setAttr('.'.join((locator,'ml_bakeSourceName')), name, type='string')
if parent:
locator = mc.parent(locator, parent)[0]
locs.append(locator)
#should look through all trans and rot
if not mc.keyframe(obj, query=True, name=True):
noKeys.append(obj)
noKeysLoc.append(locator)
utl.matchBake(objs, locs, bakeOnOnes=bakeOnOnes)
if not bakeOnOnes and noKeys:
utl.matchBake(noKeys, noKeysLoc, bakeOnOnes=True)
if constrainSource:
mc.cutKey(objs)
for loc, obj in zip(locs, objs):
mc.parentConstraint(loc, obj)
评论列表
文章目录