ml_transferKeytimes.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:ml_tools 作者: morganloomis 项目源码 文件源码
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,))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号