Updated
This commit is contained in:
84
Scripts/Animation/aTools/animTools/framePlaybackRange.py
Normal file
84
Scripts/Animation/aTools/animTools/framePlaybackRange.py
Normal file
@ -0,0 +1,84 @@
|
||||
'''
|
||||
========================================================================================================================
|
||||
Author: Alan Camilo
|
||||
www.alancamilo.com
|
||||
Modified: Michael Klimenko
|
||||
|
||||
Requirements: aTools Package
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
To install aTools, please follow the instructions in the file how_to_install.txt
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
To unistall aTools, go to menu (the last button on the right), Uninstall
|
||||
|
||||
========================================================================================================================
|
||||
'''
|
||||
|
||||
from maya import cmds
|
||||
from aTools.generalTools.aToolsGlobals import aToolsGlobals as G
|
||||
from aTools.commonMods import utilMod
|
||||
import importlib
|
||||
|
||||
def toggleframePlaybackRange(onOff):
|
||||
utilMod.killScriptJobs("G.framePlaybackRangeScriptJobs")
|
||||
|
||||
if onOff:
|
||||
G.framePlaybackRangeScriptJobs.append(cmds.scriptJob(runOnce = False, killWithScene = False, event =('ToolChanged', framePlaybackRangeFn)) )
|
||||
G.framePlaybackRangeScriptJobs.append(cmds.scriptJob(runOnce = False, killWithScene = False, event =('SelectionChanged', framePlaybackRangeFn)) )
|
||||
|
||||
framePlaybackRangeFn()
|
||||
|
||||
def getMinMax(rangeStart=None, rangeEnd=None):
|
||||
|
||||
displayNormalized = cmds.animCurveEditor( 'graphEditor1GraphEd', query=True, displayNormalized=True)
|
||||
if displayNormalized: return [-1.1, 1.1]
|
||||
|
||||
if not rangeStart:
|
||||
rangeStart = cmds.playbackOptions(query=True, minTime=True)
|
||||
rangeEnd = cmds.playbackOptions(query=True, maxTime=True)
|
||||
curvesShown = cmds.animCurveEditor( 'graphEditor1GraphEd', query=True, curvesShown=True)
|
||||
keysTimes = []
|
||||
keysValues = []
|
||||
keysShown = []
|
||||
|
||||
if curvesShown:
|
||||
for aCurve in curvesShown:
|
||||
kTimes = cmds.keyframe(aCurve, query=True, timeChange=True)
|
||||
if kTimes:
|
||||
keysTimes.extend(kTimes)
|
||||
keysValues.extend(cmds.keyframe(aCurve, query=True, valueChange=True))
|
||||
for n, key in enumerate(keysTimes):
|
||||
if rangeStart <= key <= rangeEnd:
|
||||
keysShown.append(keysValues[n])
|
||||
|
||||
if not keysShown:
|
||||
keyMax = 0
|
||||
keyMin = 0
|
||||
else:
|
||||
keyMax = max(keysShown)
|
||||
keyMin = min(keysShown)
|
||||
|
||||
total = keyMax - keyMin
|
||||
if total == 0: total = 10
|
||||
border = total * .1
|
||||
|
||||
return [keyMax+border, keyMin-border]
|
||||
else:
|
||||
return [0, 100]
|
||||
|
||||
def framePlaybackRangeFn(rangeStart=None, rangeEnd=None):
|
||||
|
||||
from aTools.commonMods import animMod; importlib.reload(animMod)
|
||||
animMod.filterNonAnimatedCurves()
|
||||
|
||||
if not rangeStart:
|
||||
rangeStart = cmds.playbackOptions(query=True, minTime=True) -1
|
||||
rangeEnd = cmds.playbackOptions(query=True, maxTime=True) +1
|
||||
val = getMinMax(rangeStart, rangeEnd)
|
||||
minVal = val[0]
|
||||
maxVal = val[1]
|
||||
|
||||
cmds.animView('graphEditor1GraphEd', startTime=rangeStart, endTime=rangeEnd, minValue=minVal, maxValue=maxVal)
|
||||
|
||||
|
Reference in New Issue
Block a user