Files
Nexus/2023/scripts/animation_tools/mgpicker/__init__.py
2025-11-23 23:31:18 +08:00

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']