78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
MG-Picker Studio Module
|
|
Animation picker tool for Maya
|
|
"""
|
|
|
|
import os
|
|
import maya.cmds as cmds
|
|
import maya.mel as mel
|
|
|
|
|
|
def get_mgpicker_path():
|
|
"""Get MG-Picker Studio installation path"""
|
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
return current_dir.replace("\\", "/")
|
|
|
|
|
|
def load_plugin():
|
|
"""Load MGPicker plugin"""
|
|
plugin_name = "MGPicker_2023x64"
|
|
|
|
# Check if plugin is already loaded
|
|
if cmds.pluginInfo(plugin_name, query=True, loaded=True):
|
|
print(f"MGPicker plugin already loaded: {plugin_name}")
|
|
return True
|
|
|
|
# Get the plugin path from mgpicker module
|
|
mgpicker_path = get_mgpicker_path()
|
|
plugin_path = os.path.join(mgpicker_path, "MGPicker_Program", "Plug-ins", f"{plugin_name}.mll")
|
|
plugin_path = plugin_path.replace("\\", "/")
|
|
|
|
try:
|
|
cmds.loadPlugin(plugin_path)
|
|
print(f"MGPicker plugin loaded: {plugin_path}")
|
|
return True
|
|
except Exception as e:
|
|
print(f"Failed to load MGPicker plugin: {e}")
|
|
return False
|
|
|
|
|
|
def start(mode=1):
|
|
"""
|
|
Start MG-Picker Studio
|
|
|
|
Args:
|
|
mode (int): 0 for designer mode, 1 for animator mode (default)
|
|
"""
|
|
# Load plugin first
|
|
if not load_plugin():
|
|
cmds.warning("Failed to load MGPicker plugin")
|
|
return
|
|
|
|
# Get MGPicker path
|
|
mgpicker_path = get_mgpicker_path()
|
|
program_path = os.path.join(mgpicker_path, "MGPicker_Program")
|
|
|
|
# Set global variables
|
|
mel.eval(f'global string $MGPicker_ProgramPath = "{mgpicker_path}/"')
|
|
mel.eval('global string $MGPicker_ProgramFolder = "MGPicker_Program"')
|
|
mel.eval('global string $MGPicker_ScriptEntry = "MG_PickerStudio"')
|
|
|
|
# Source the main MEL script
|
|
main_mel = os.path.join(program_path, "MGPicker_WrittenByMiguel.mel").replace("\\", "/")
|
|
|
|
try:
|
|
mel.eval(f'source "{main_mel}"')
|
|
# Open MGPicker window with mode parameter
|
|
# mode 0: designer mode, mode 1: animator mode
|
|
mel.eval(f'MG_PickerStudio {mode}')
|
|
print(f"MG-Picker Studio started in {'designer' if mode == 0 else 'animator'} mode")
|
|
except Exception as e:
|
|
cmds.warning(f"Failed to start MG-Picker Studio: {e}")
|
|
|
|
|
|
__all__ = ['start', 'load_plugin']
|