def transferKeytimes(source, destinations):
if not isinstance(destinations, (list, tuple)):
destinations = [destinations]
attributes = mc.listAttr(source, keyable=True, unlocked=True)
keytimes = dict()
start = None
end = None
for a in attributes:
currKeytimes = mc.keyframe(source, attribute=a, query=True, timeChange=True)
if not currKeytimes:
continue
if start == None or currKeytimes[0] < start:
start = currKeytimes[0]
if end == None or currKeytimes[-1] > end:
end = currKeytimes[-1]
keytimes[a] = currKeytimes
#allKeyTimes.extend(currKeytimes)
if not keytimes:
return
with utl.IsolateViews():
mc.bakeResults(destinations, time=(start,end), sampleBy=1, preserveOutsideKeys=True, simulation=True)
#euler filter
mc.filterCurve(mc.listConnections(destinations,type='animCurve'))
#go through all keys and delete
for k in keytimes:
for f in range(int(start), int(end)):
if not f in keytimes[k]:
mc.cutKey(destinations, attribute=k, time=(f,))
评论列表
文章目录