MetaBox/Scripts/Animation/MotionCapHelper/bin/mocaphelperfacore.py
2025-01-14 03:07:03 +08:00

100 lines
2.7 KiB
Python

import maya.api.OpenMaya as om
import maya.api.OpenMayaAnim as omani
import maya.cmds as cmds
import maya.mel as mel
import mocaphelperutility
refobjsShortFlagName = "-ref"
refobjsLongFlagName = "-refobjs"
def syntaxCreator():
syntax = om.MSyntax()
syntax.addFlag( refobjsShortFlagName, refobjsLongFlagName, om.MSyntax.kString )
return syntax
class FrameAlign(om.MPxCommand):
kPluginCmdName = "moCapHelper_frameAlign"
ref = ""
animcruvechanage = None
def __init__(self):
om.MPxCommand.__init__(self)
@staticmethod
def cmdCreator():
return FrameAlign()
def parseArguments(self,args):
argdata = om.MArgParser(self.syntax(),args)
if argdata.isFlagSet( refobjsShortFlagName ):
self.ref = argdata.flagArgumentString(refobjsShortFlagName,0)
else:
raise Exception("No refence argument!")
def isUndoable(self):
return True
def doIt(self,args):
self.animcruvechanage = omani.MAnimCurveChange()
self.parseArguments(args)
# start = cmds.playbackOptions( q=True,min=True )
# end = cmds.playbackOptions( q=True,max=True )
if mocaphelperutility.objExist(self.ref) == False:
raise Exception("ref obj does not exist!")
selectedobjs = mocaphelperutility.getSelectedNodes()
print(self.ref)
if cmds.keyframe(self.ref,q = True) == None :
raise Exception("ref has no keys!")
else:
framelist = set(cmds.keyframe(self.ref,q = True))
for frame in framelist:
cmds.setKeyframe(selectedobjs,t = (frame,frame),rk= True,hierarchy = "none",i = True,itt = "auto")
for obj in selectedobjs:
objframelist = set(cmds.keyframe(obj,q = True))
for objframe in objframelist:
if objframe in framelist:
continue
else:
mocaphelperutility.cutKey(obj,objframe,objframe)
def undoIt(self):
if self.animcruvechanage != None :
self.animcruvechanage.undoIt()
print("undo success")
else:
print("undo failed:self.animcruvechanage == None")
def redoIt(self):
if self.animcruvechanage != None :
self.animcruvechanage.redoIt()
print("redo success")
else:
print("redo failed:self.animcruvechanage == None")
# def cutlist(sourcelist,splitlist):
# backindex = 0
# forwardindex = 0
# for i in len(sourcelist):
# if sourcelist[i] in splitlist:
# def fastRecord(obj):
# pos = mocaphelperutility.getWorldPos(obj)
# loc = mocaphelperarbcore.createLoc("mocaphelper_fa_temp_loc")