Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Bake the focal then you have a crash zoom/dezoom with rotate to kill the 'wave'
- #by Antoine Mallaroni, [email protected]
- import maya.cmds as mc
- import math
- import functools
- def wd_amortie(_):
- #check si 3 clefs de la curves sont selectionner plus stocks les variables utiles
- sel = mc.ls(selection=True)
- valuesFocalAlpha = []
- valuesFocal = []
- animCurves = mc.keyframe(selected=True, name=True, query=True)
- transfer = mc.intField(trans, query=True, value=True)
- playBack = mc.playbackOptions(minTime=True, query=True), mc.playbackOptions(maxTime=True, query=True)
- cam = []
- if animCurves and len(mc.keyframe(animCurves, timeChange=True, query=True, selected=True)) == 3:
- camFocal = mc.listConnections(animCurves, plugs=True)[0]
- if mc.listConnections(camFocal, type='camera'):
- cam = mc.listConnections(camFocal, type='camera')[0]
- else:
- cam = mc.listRelatives(camFocal.rsplit('.',1)[0], parent=True)[0]
- if not cam:
- mc.error('Select 3 focal keys')
- #store les donnees de clefs pour le wave et aussi pour les clefs hors du bake dans la timeline
- selectTimes = mc.keyframe(camFocal, timeChange=True, query=True, selected=True)
- valuesFocal = mc.keyframe(camFocal, valueChange=True, selected=True, query=True)
- keyStoreStart = mc.keyframe(camFocal, time=(playBack[0], selectTimes[0]-1), query=True, timeChange=True, valueChange=True)
- keyStoreEnd = mc.keyframe(camFocal, time=(selectTimes[-1]+1, playBack[1]), query=True, timeChange=True, valueChange=True)
- #cree un attribut pour avec une connection pour la focal
- for v in valuesFocal:
- values = 100 * math.atan(v)
- valuesFocalAlpha.append(values)
- mc.addAttr(cam, longName='Alpha', attributeType='double', min=80, max=157, keyable=True)
- camFocalAlpha = cam+'.Alpha'
- mc.setAttr(camFocalAlpha, keyable=True)
- mc.cutKey(camFocal)
- #place les clefs, recree l'amortie sur l'attribut et bake la focal avec l'expression pour le wave
- mc.setKeyframe(camFocalAlpha, time=(selectTimes[0],selectTimes[0]), value=valuesFocalAlpha[0], inTangentType='auto',outTangentType='auto')
- mc.setKeyframe(camFocalAlpha, time=(selectTimes[-2]+transfer,selectTimes[-2]+transfer), value=valuesFocalAlpha[-1], inTangentType='auto',outTangentType='auto')
- mc.setKeyframe(camFocalAlpha, time=(selectTimes[-2],selectTimes[-2]), inTangentType='auto',outTangentType='auto', insert=True)
- mc.keyframe(camFocalAlpha, edit=True,time=(selectTimes[-2]+transfer,selectTimes[-2]+transfer),absolute=True,timeChange=selectTimes[-1])
- mc.keyTangent(camFocalAlpha, itt='auto', ott='auto')
- exp='%s = tan(%s/100)' %(camFocal, camFocalAlpha)
- camExp = mc.expression(s=exp)
- mc.bakeResults(camFocal, simulation=True, time=(selectTimes[0], selectTimes[-1]),
- sampleBy=True, preserveOutsideKeys=True, sparseAnimCurveBake=0)
- # place les clefs hors du bake de la wave si il y en a
- if keyStoreStart:
- index=0
- for k in keyStoreStart:
- if index < len(keyStoreStart):
- mc.setKeyframe(camFocal, time=(keyStoreStart[index],keyStoreStart[index]), value=keyStoreStart[index+1])
- index +=2
- if keyStoreEnd:
- index=0
- for k in keyStoreEnd:
- if index < len(keyStoreEnd):
- mc.setKeyframe(camFocal, time=(keyStoreEnd[index],keyStoreEnd[index]), value=keyStoreEnd[index+1])
- index +=2
- mc.keyTangent(camFocal, itt='auto', ott='auto')
- mc.deleteAttr(cam, attribute='Alpha')
- mc.deleteUI(window, window=True)
- # Set window
- def close_callback(window, _):
- print "Close!", window
- mc.deleteUI(window, window=True)
- if mc.window("WaveDestroyer", query=True, exists=True):
- mc.deleteUI("WaveDestroyer", window=True)
- window = mc.window("WaveDestroyer", title="WaveDestroyer Tool", widthHeight=(100, 100))
- mc.columnLayout(adjustableColumn=True)
- mc.columnLayout( columnAlign=('center'), rowSpacing=1)
- mc.text(label='Put the frame number between last 2 keys of focal (before transfer!)')
- trans = mc.intField()
- mc.button(label='Destroy Focal!', command=(wd_amortie))
- mc.button(label="Close", command=functools.partial(close_callback, window))
- mc.setParent('..')
- mc.showWindow(window)
Advertisement
Add Comment
Please, Sign In to add comment