gsee

AM_waveDestroyer py2.7

Feb 25th, 2020
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.32 KB | None | 0 0
  1. #Bake the focal then you have a crash zoom/dezoom with rotate to kill the 'wave'
  2.  
  3. #by Antoine Mallaroni, [email protected]
  4.  
  5. import maya.cmds as mc
  6. import math
  7. import functools
  8.  
  9. def wd_amortie(_):
  10.  
  11.     #check si 3 clefs de la curves sont selectionner plus stocks les variables utiles
  12.  
  13.     sel = mc.ls(selection=True)
  14.     valuesFocalAlpha = []
  15.     valuesFocal = []
  16.     animCurves = mc.keyframe(selected=True, name=True, query=True)
  17.     transfer = mc.intField(trans, query=True, value=True)
  18.     playBack = mc.playbackOptions(minTime=True, query=True), mc.playbackOptions(maxTime=True, query=True)
  19.     cam = []
  20.  
  21.     if animCurves and len(mc.keyframe(animCurves, timeChange=True, query=True, selected=True)) == 3:
  22.  
  23.         camFocal = mc.listConnections(animCurves, plugs=True)[0]
  24.  
  25.         if mc.listConnections(camFocal, type='camera'):
  26.             cam = mc.listConnections(camFocal, type='camera')[0]
  27.  
  28.         else:
  29.             cam = mc.listRelatives(camFocal.rsplit('.',1)[0], parent=True)[0]
  30.  
  31.     if not cam:
  32.         mc.error('Select 3 focal keys')
  33.  
  34.     #store les donnees de clefs pour le wave et aussi pour les clefs hors du bake dans la timeline
  35.  
  36.     selectTimes = mc.keyframe(camFocal, timeChange=True, query=True, selected=True)
  37.     valuesFocal = mc.keyframe(camFocal, valueChange=True, selected=True, query=True)
  38.  
  39.     keyStoreStart = mc.keyframe(camFocal, time=(playBack[0], selectTimes[0]-1), query=True, timeChange=True, valueChange=True)
  40.     keyStoreEnd = mc.keyframe(camFocal, time=(selectTimes[-1]+1, playBack[1]), query=True, timeChange=True, valueChange=True)
  41.  
  42.     #cree un attribut pour avec une connection pour la focal
  43.  
  44.     for v in valuesFocal:
  45.         values = 100 * math.atan(v)
  46.         valuesFocalAlpha.append(values)
  47.  
  48.     mc.addAttr(cam, longName='Alpha', attributeType='double', min=80, max=157, keyable=True)
  49.     camFocalAlpha = cam+'.Alpha'
  50.     mc.setAttr(camFocalAlpha, keyable=True)
  51.  
  52.     mc.cutKey(camFocal)
  53.  
  54.     #place les clefs, recree l'amortie sur l'attribut et bake la focal avec l'expression pour le wave
  55.  
  56.     mc.setKeyframe(camFocalAlpha, time=(selectTimes[0],selectTimes[0]), value=valuesFocalAlpha[0], inTangentType='auto',outTangentType='auto')
  57.     mc.setKeyframe(camFocalAlpha, time=(selectTimes[-2]+transfer,selectTimes[-2]+transfer), value=valuesFocalAlpha[-1], inTangentType='auto',outTangentType='auto')
  58.     mc.setKeyframe(camFocalAlpha, time=(selectTimes[-2],selectTimes[-2]), inTangentType='auto',outTangentType='auto', insert=True)
  59.     mc.keyframe(camFocalAlpha, edit=True,time=(selectTimes[-2]+transfer,selectTimes[-2]+transfer),absolute=True,timeChange=selectTimes[-1])
  60.     mc.keyTangent(camFocalAlpha, itt='auto', ott='auto')
  61.  
  62.     exp='%s = tan(%s/100)' %(camFocal, camFocalAlpha)
  63.     camExp = mc.expression(s=exp)
  64.  
  65.     mc.bakeResults(camFocal, simulation=True, time=(selectTimes[0], selectTimes[-1]),
  66.     sampleBy=True, preserveOutsideKeys=True, sparseAnimCurveBake=0)
  67.  
  68.     # place les clefs hors du bake de la wave si il y en a
  69.  
  70.     if keyStoreStart:
  71.         index=0
  72.         for k in keyStoreStart:
  73.             if index < len(keyStoreStart):
  74.                 mc.setKeyframe(camFocal, time=(keyStoreStart[index],keyStoreStart[index]), value=keyStoreStart[index+1])
  75.                 index +=2
  76.  
  77.     if keyStoreEnd:
  78.         index=0
  79.         for k in keyStoreEnd:
  80.             if index < len(keyStoreEnd):
  81.                 mc.setKeyframe(camFocal, time=(keyStoreEnd[index],keyStoreEnd[index]), value=keyStoreEnd[index+1])
  82.                 index +=2
  83.  
  84.     mc.keyTangent(camFocal, itt='auto', ott='auto')
  85.     mc.deleteAttr(cam, attribute='Alpha')
  86.     mc.deleteUI(window, window=True)
  87.  
  88. # Set window
  89. def close_callback(window, _):
  90.     print "Close!", window
  91.     mc.deleteUI(window, window=True)
  92.  
  93. if mc.window("WaveDestroyer", query=True, exists=True):
  94.     mc.deleteUI("WaveDestroyer", window=True)
  95.  
  96. window = mc.window("WaveDestroyer", title="WaveDestroyer Tool", widthHeight=(100, 100))
  97. mc.columnLayout(adjustableColumn=True)
  98. mc.columnLayout( columnAlign=('center'), rowSpacing=1)
  99. mc.text(label='Put the frame number between last 2 keys of focal (before transfer!)')
  100. trans = mc.intField()
  101. mc.button(label='Destroy Focal!', command=(wd_amortie))
  102. mc.button(label="Close", command=functools.partial(close_callback, window))
  103. mc.setParent('..')
  104. mc.showWindow(window)
Advertisement
Add Comment
Please, Sign In to add comment