Décrit le contenu du plug-in de commande Maya pour les débutants.
Vous ne voyez pas beaucoup d'informations sur les plug-ins de commande. Au fait, je ne l'ai pas du tout utilisé ... Mon objectif est donc d'écrire un article d'introduction pour moi-même. Quoi qu'il en soit, le contenu est léger car je pense que je vais augmenter le nombre d'articles sur Maya Python.
Aide officielle dit comme ça.
Définissez une nouvelle commande MEL personnalisée et répondez en conséquence maya.cmds Ajoutez des fonctions au module Python à utiliser dans les scripts.
En bref, vous pouvez appeler votre propre module Python directement à partir de cmds.
Quoi qu'il en soit, il est rapide de l'écrire et de l'utiliser. Alors, écrivons la fonction de cmds.ls (sl = True) avec un plug-in de commande. Le code suivant est basé sur (ou copié) de l 'Aide Maya.
command_select.py
# -*- coding: utf-8 -*-
import maya.api.OpenMaya as OpenMaya
def maya_useNewAPI():
pass
class CommandSelection(OpenMaya.MPxCommand):
kPluginCmdName = "selection"
def __init__(self):
OpenMaya.MPxCommand.__init__(self)
@staticmethod
def cmdCreator():
return CommandSelection()
def doIt(self, args):
self.setResult(list(OpenMaya.MGlobal.getActiveSelectionList().getSelectionStrings()))
def initializePlugin(mobject):
plugin = OpenMaya.MFnPlugin(mobject)
plugin.registerCommand(CommandSelection.kPluginCmdName, CommandSelection.cmdCreator)
def uninitializePlugin(mobject):
pluginFn = OpenMaya.MFnPlugin(mobject)
pluginFn.deregisterCommand(CommandSelection.kPluginCmdName)
command_select_doit.py
cmds.selection()
>>> # Result: [u'pPlane2', u'pPlane1'] #
La valeur de retour de la commande n'est pas une instruction de retour! (Préjudice) Quand je vérifie Help, il dit setResult (), donc je l'appelle avec doIt ().
Quand j'ai essayé de setResult () ma propre classe pour l'améliorer un peu, Une erreur se produit avec «# Les résultats de la commande doivent être des chaînes ou des nombres.». Je n'ai pas étudié le cas d'autres classes parentes, mais je me demande si le plug-in de commande ne peut renvoyer que des chaînes ou des nombres.
Les classes préfixées par> ** MPx ** sont appelées classes proxy.
Utilisé pour créer différents types de plug-ins.
J'ai donc regardé la Reference pour voir quelles autres classes sont disponibles. Quel parent doit être hérité en fonction du plug-in que vous souhaitez créer? J'ai besoin de plus d'études.
Class | Description |
---|---|
MPxAttributePatternFactory | Base class for custom attribute pattern factories. |
MPxCommand | Base class for custom commands. |
MPxData | Base Class for User-defined Dependency Graph Data Types. |
MPxGeometryData | Base Class for User-defined Dependency Graph Geometry Data Types. |
MPxGeometryIterator | Base class for user defined geometry iterators. |
MPxNode | Base class for user defined dependency nodes. |
MPxSurfaceShape | Parent class of all user defined shapes. |
Si vous utilisez un plug-in de commande pour le traitement qui semble être utilisé très souvent, la quantité de code sera réduite et cela peut être plus facile. Elle peut également être utilisée comme commande MEL, elle peut donc être utile aux artistes MELer. J'aimerais continuer à étudier en attendant des astuces et des conseils issus de domaines variés.
Recommended Posts