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

237 lines
4.6 KiB
Python

# -*- coding: utf-8 -*-
'''
this plugin is created for use with autodesk maya 2018+.
(because it import pyside2 module,and i don't know in which version maya would update this.)
'''
import sys
import maya.api.OpenMaya as om
import mocaphelperui
import mocaphelpersaccore
import mocaphelperfacore
import mocaphelperutility
import PySide2.QtWidgets
from PySide2 import QtCore
version = 1.44
ui = None
translator = QtCore.QTranslator()
def maya_useNewAPI():
"""
The presence of this function tells Maya that the plugin produces, and
expects to be passed, objects created using the Maya Python API 2.0.
"""
pass
# Initialize the plug-in
def initializePlugin(plugin):
pluginFn = om.MFnPlugin(plugin)
try:
pluginFn.registerCommand(
mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName, mocaphelpersaccore.SmoothAnimCurve.cmdCreator,mocaphelpersaccore.syntaxCreator
)
except:
sys.stderr.write(
"Failed to register command: %s\n" % mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName
)
raise
try:
pluginFn.registerCommand(
openui.kPluginCmdName, openui.cmdCreator,openuiSyntaxCreator
)
except:
sys.stderr.write(
"Failed to register command: %s\n" % openui.kPluginCmdName
)
raise
try:
pluginFn.registerCommand(
mocaphelperfacore.FrameAlign.kPluginCmdName, mocaphelperfacore.FrameAlign.cmdCreator,mocaphelperfacore.syntaxCreator
)
except:
sys.stderr.write(
"Failed to register command: %s\n" % mocaphelperfacore.FrameAlign.kPluginCmdName
)
raise
try:
pluginFn.registerCommand(
Eval.kPluginCmdName, Eval.cmdCreator,evalSyntaxCreator
)
except:
sys.stderr.write(
"Failed to register command: %s\n" % Eval.kPluginCmdName
)
raise
# Uninitialize the plug-in
def uninitializePlugin(plugin):
pluginFn = om.MFnPlugin(plugin)
try:
pluginFn.deregisterCommand(mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName)
except:
sys.stderr.write(
"Failed to unregister command: %s\n" % mocaphelpersaccore.SmoothAnimCurve.kPluginCmdName
)
raise
try:
pluginFn.deregisterCommand(openui.kPluginCmdName)
except:
sys.stderr.write(
"Failed to unregister command: %s\n" % openui.kPluginCmdName
)
raise
try:
pluginFn.deregisterCommand(mocaphelperfacore.FrameAlign.kPluginCmdName)
except:
sys.stderr.write(
"Failed to unregister command: %s\n" % mocaphelperfacore.FrameAlign.kPluginCmdName
)
raise
try:
pluginFn.deregisterCommand(Eval.kPluginCmdName)
except:
sys.stderr.write(
"Failed to unregister command: %s\n" % Eval.kPluginCmdName
)
raise
# command
class openui(om.MPxCommand):
kPluginCmdName = "moCapHelper_showUi"
uiLanguageFlagShortName = "lan"
uiLanguageFlagLongName = "language"
lang = None
def __init__(self):
om.MPxCommand.__init__(self)
@staticmethod
def cmdCreator():
return openui()
def parseArguments(self,args):
argdata = om.MArgParser(self.syntax(),args)
if argdata.isFlagSet( self.uiLanguageFlagShortName ):
self.lang = argdata.flagArgumentString(self.uiLanguageFlagShortName,0)
else:
self.lang = None
def doIt(self, args):
self.parseArguments(args)
global ui
if ui != None:
print("saved ui ref:",ui)
print("closing ui:--------",ui.destroy(True,True))
app = PySide2.QtWidgets.QApplication.instance()
app.installTranslator(translator)
dir = mocaphelperutility.getDir()
# translate:
if self.lang == "CN":
translator.load("ui_CN",dir)
ui = mocaphelperui.MoCapHelperUI()
ui.setWindowTitle('动补助手 v'+str(version))
# print(translator.filePath())
# print(translator.translate())
# mocaphelperui.translateUi(ui.ui,ui.ui)
else:
translator.load("")
ui = mocaphelperui.MoCapHelperUI()
ui.show()
def openuiSyntaxCreator():
syntax = om.MSyntax()
syntax.addFlag( openui.uiLanguageFlagShortName, openui.uiLanguageFlagLongName, om.MSyntax.kString )
return syntax
class Eval(om.MPxCommand):
kPluginCmdName = "moCapHelper_eval"
strFlagShortName = "s"
strFlagLongName = "string"
cmd = ""
def __init__(self):
om.MPxCommand.__init__(self)
def parseArguments(self,args):
argdata = om.MArgParser(self.syntax(),args)
if argdata.isFlagSet( self.strFlagShortName ):
self.cmd = argdata.flagArgumentString(self.strFlagShortName,0)
else:
raise Exception("no str input")
@staticmethod
def cmdCreator():
return Eval()
def doIt(self, args):
self.parseArguments(args)
print(self.cmd)
global ui
if ui != None:
exec(self.cmd)
else:
raise Exception("please create ui first.")
def evalSyntaxCreator():
syntax = om.MSyntax()
syntax.addFlag( Eval.strFlagShortName, Eval.strFlagLongName, om.MSyntax.kString )
return syntax