#!/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']